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
|
||||
|
||||
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>
|
||||
|
||||
"
|
||||
|
||||
|
|
|
@ -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,13 +12,13 @@ function update()
|
|||
|
||||
$(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');
|
||||
});
|
||||
});
|
||||
|
||||
$('#audioit').button().click(function() {
|
||||
$('#audioit').button().click(function() {
|
||||
$('#audiodiv').hide('slow');
|
||||
$('#progressdiv').show('slow');
|
||||
$('#back').hide();
|
||||
|
@ -30,7 +30,7 @@ $('#audioit').button().click(function() {
|
|||
$('#back').show();
|
||||
$('#progressbar').reportprogress(100);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue