forked from hummypkg/webif
Compare commits
7 Commits
master
...
df-audio-e
Author | SHA1 | Date |
---|---|---|
df | dcb062e955 | |
df | 96b8935187 | |
df | e4d795dee0 | |
df | 8733ffe0e8 | |
df | 159a5a58ad | |
df | 74e09fa233 | |
df | 6dc3cc0dc1 |
|
@ -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>
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue