Compare commits

...

7 Commits

5 changed files with 52 additions and 34 deletions

View File

@ -1,6 +1,5 @@
#!/mod/bin/jimsh
package require sqlite3
package require cgi
source /mod/webif/lib/setup
require ts.class system.class settings.class
@ -10,13 +9,27 @@ jscss audio.js
header
set s [settings]
set type [$s audiomp3descr [$s audiomp3]]
set slow [$s audiomp3]
set type [$s audiomp3descr $slow]
set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
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 "
<fieldset class=cleft>
@ -30,6 +43,7 @@ puts "
<span class=hidden id=params
dir=\"[cgi_quote_url $dir]\"
rfile=\"[cgi_quote_url $rfile]\"
asize=\"[cgi_quote_url $asize]\"
></span>
<div id=audiodiv style=\"padding: 1em\">
@ -45,4 +59,3 @@ Extracting audio: <div id=progressbar></div>
</fieldset>
"

View File

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

View File

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

View File

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

View File

@ -13,6 +13,9 @@ class ts {
title ""
synopsis ""
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_name ""
start 0
@ -38,6 +41,7 @@ class ts {
tvdb_data {}
}
ts method bfile {} {
return [file tail [file rootname $file]]
}
@ -67,6 +71,12 @@ ts method _parse {line} {
set synopsis [xconv $synopsis]
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 {} {
@ -393,7 +403,7 @@ ts method mkmp3 {{slow false} {tmp ""} {v 0} {br 128}} {
set ext mp3
} else {
set opts [list -c:a copy]
if {$definition eq "HD"} {
if {$mpeglevel eq 4} {
set ext loas
} else {
set ext mp2