Compare commits

...

7 Commits

5 changed files with 52 additions and 34 deletions

View File

@ -1,6 +1,5 @@
#!/mod/bin/jimsh #!/mod/bin/jimsh
package require sqlite3
package require cgi package require cgi
source /mod/webif/lib/setup source /mod/webif/lib/setup
require ts.class system.class settings.class require ts.class system.class settings.class
@ -10,13 +9,27 @@ jscss audio.js
header header
set s [settings] set s [settings]
set type [$s audiomp3descr [$s audiomp3]] set slow [$s audiomp3]
set type [$s audiomp3descr $slow]
set rfile [cgi_get file] set rfile [cgi_get file]
set ts [ts fetch $rfile] set ts [ts fetch $rfile]
set dir [file dirname $rfile] set dir [file dirname $rfile]
set len [$ts duration 1] set len [$ts duration 1]
# guess output size based on video file size
set asize [$ts size]
# using slight overestimates of typical audio:video size ratio
if {[$ts get mpeglevel] eq 4} {
if {$slow} { # aac-> mp3
set asize [expr $asize*0.12]
} else { # aac-> loas
set asize [expr $asize*0.09]
}
} else { # mp2 -> mp[23] (similar)
set asize [expr $asize*0.07]
}
puts " puts "
<fieldset class=cleft> <fieldset class=cleft>
@ -30,6 +43,7 @@ puts "
<span class=hidden id=params <span class=hidden id=params
dir=\"[cgi_quote_url $dir]\" dir=\"[cgi_quote_url $dir]\"
rfile=\"[cgi_quote_url $rfile]\" rfile=\"[cgi_quote_url $rfile]\"
asize=\"[cgi_quote_url $asize]\"
></span> ></span>
<div id=audiodiv style=\"padding: 1em\"> <div id=audiodiv style=\"padding: 1em\">
@ -45,4 +59,3 @@ Extracting audio: <div id=progressbar></div>
</fieldset> </fieldset>
" "

View File

@ -3,7 +3,7 @@ var handle = 0;
function update() function update()
{ {
$.get('progress.jim?file=' + $('#params').attr('rfile'), $.get('progress.jim?file=' + $('#params').attr('rfile') + '&asize=' + $('#params').attr('asize'),
function(data) { function(data) {
if (handle) if (handle)
$('#progressbar').reportprogress(data); $('#progressbar').reportprogress(data);
@ -12,25 +12,25 @@ function update()
$(document).ready(function() { $(document).ready(function() {
$('#progressbar').reportprogress(0); $('#progressbar').reportprogress(0);
$('#back').button().click(function() { $('#back').button().click(function() {
window.location = '/go/browse?dir=' + $('#params').attr('dir'); window.location = '/go/browse?dir=' + $('#params').attr('dir');
}); });
$('#audioit').button().click(function() { $('#audioit').button().click(function() {
$('#audiodiv').hide('slow'); $('#audiodiv').hide('slow');
$('#progressdiv').show('slow'); $('#progressdiv').show('slow');
$('#back').hide(); $('#back').hide();
handle = setInterval("update()", 1000); handle = setInterval("update()", 1000);
$('#output').load('execute.jim?file=' + $('#params').attr('rfile'), $('#output').load('execute.jim?file=' + $('#params').attr('rfile'),
function() { function() {
clearInterval(handle); clearInterval(handle);
handle = 0; handle = 0;
$('#back').show(); $('#back').show();
$('#progressbar').reportprogress(100); $('#progressbar').reportprogress(100);
});
}); });
});
}); });

View File

@ -1,6 +1,5 @@
#!/mod/bin/jimsh #!/mod/bin/jimsh
package require sqlite3
package require cgi package require cgi
source /mod/webif/lib/setup source /mod/webif/lib/setup
require ts.class system.class settings.class require ts.class system.class settings.class
@ -9,16 +8,12 @@ httpheader
set rfile [cgi_get file] set rfile [cgi_get file]
set ts [ts fetch $rfile] set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
set xstart [clock milliseconds]
set base [file rootname $rfile] set base [file rootname $rfile]
set shname [file tail $base] puts "Processing [file tail $base]]"
puts "Processing $shname"
set slow [[settings] audiomp3] set slow [[settings] audiomp3]
set xstart [clock milliseconds]
set token [system startop -multiple mp3 $rfile] set token [system startop -multiple mp3 $rfile]
puts [$ts mkmp3 $slow] puts [$ts mkmp3 $slow]
@ -26,4 +21,3 @@ system endop $token
set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0] set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
puts "Time taken: $xtime" puts "Time taken: $xtime"

View File

@ -7,16 +7,17 @@ require ts.class
httpheader httpheader
set tsfile [cgi_get file] set tsfile [cgi_get file]
set asize [cgi_get asize]
set rfile [file normalize $tsfile] set rfile [file normalize $tsfile]
set bfile [file rootname $rfile] set bfile [file rootname $rfile]
if {![file exists "${bfile}.mp3"]} { if {![file exists "${bfile}.mp3"]} {
puts "0" puts "0"
} elseif {! ($asize > 0) } {
puts "0"
}
} else { } else {
set sz [file size $rfile] set perc [expr [file size "${bfile}.mp3"] * 100 / $asize]
set nsz [expr [file size "${bfile}.mp3"] / 0.3]
set perc [expr $nsz * 100 / $sz]
if {$perc > 100} { set perc 100 } if {$perc > 100} { set perc 100 }
puts $perc puts $perc
} }

View File

@ -13,6 +13,9 @@ class ts {
title "" title ""
synopsis "" synopsis ""
definition "" definition ""
mpeglevel 2
# discriminate between 2=MPEG Video/MP2 and 4=H.264/AAC, say 260kbyte/s vs 150
_mpegLevelThreshold 205000
channel_num 0 channel_num 0
channel_name "" channel_name ""
start 0 start 0
@ -38,6 +41,7 @@ class ts {
tvdb_data {} tvdb_data {}
} }
ts method bfile {} { ts method bfile {} {
return [file tail [file rootname $file]] return [file tail [file rootname $file]]
} }
@ -67,6 +71,12 @@ ts method _parse {line} {
set synopsis [xconv $synopsis] set synopsis [xconv $synopsis]
set flags [split [string range $flags_list 0 end-1] ,] set flags [split [string range $flags_list 0 end-1] ,]
# discriminate between MPEG Video/MP2 and H.264/AAC
set len [$self duration 1]
if {$len > 0 && ([$self size]/$len < [[ts] get _mpeglevelThreshold])} {
set mpeglevel 4
}
} }
ts method lastmod {} { ts method lastmod {} {
@ -393,7 +403,7 @@ ts method mkmp3 {{slow false} {tmp ""} {v 0} {br 128}} {
set ext mp3 set ext mp3
} else { } else {
set opts [list -c:a copy] set opts [list -c:a copy]
if {$definition eq "HD"} { if {$mpeglevel eq 4} {
set ext loas set ext loas
} else { } else {
set ext mp2 set ext mp2