forked from hummypkg/webif
Centralise code for mp3 & mpg generation. Update to ffmpeg 2.8
This commit is contained in:
parent
40c54af482
commit
19a2eaf8db
@ -18,27 +18,12 @@ set base [file rootname $rfile]
|
|||||||
set shname [file tail $base]
|
set shname [file tail $base]
|
||||||
puts "Processing $shname"
|
puts "Processing $shname"
|
||||||
|
|
||||||
set cmd [list ffmpeg -y -benchmark -v 0 -i "$rfile" -f mp3 -vn]
|
set slow [[settings] audiomp3]
|
||||||
|
|
||||||
if {![[settings] audiomp3]} {
|
|
||||||
lappend cmd -acodec copy
|
|
||||||
}
|
|
||||||
lappend cmd "${base}.mp3"
|
|
||||||
|
|
||||||
#puts "$cmd"
|
|
||||||
set token [system startop -multiple mp3 $rfile]
|
set token [system startop -multiple mp3 $rfile]
|
||||||
puts [exec {*}$cmd]
|
puts [$ts mkmp3 $slow]
|
||||||
system endop $token
|
system endop $token
|
||||||
|
|
||||||
if {[system pkginst id3v2]} {
|
|
||||||
puts [exec /mod/bin/id3v2 \
|
|
||||||
--song "[$ts get title]" \
|
|
||||||
--comment "[$ts get synopsis]" \
|
|
||||||
--album "[$ts get channel_name]" \
|
|
||||||
--year "[clock format [$ts get start] -format {%Y}]" \
|
|
||||||
"${base}.mp3"]
|
|
||||||
}
|
|
||||||
|
|
||||||
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"
|
||||||
|
|
||||||
|
@ -5,10 +5,6 @@ source /mod/webif/lib/setup
|
|||||||
|
|
||||||
httpheader
|
httpheader
|
||||||
|
|
||||||
if {[file exists /mod/bin/ffmpeg]} {
|
set file [cgi_get file]
|
||||||
set file [cgi_get file]
|
puts [exec /mod/bin/ffprobe -hide_banner $file]
|
||||||
puts [exec /mod/webif/lib/bin/ffmpeg -i $file]
|
|
||||||
} else {
|
|
||||||
puts "Install ffmpeg package for more information..."
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -13,7 +13,8 @@ foreach file [readdir $dir] {
|
|||||||
if {[file extension $file] ne ".mp3"} continue
|
if {[file extension $file] ne ".mp3"} continue
|
||||||
|
|
||||||
if {[catch {
|
if {[catch {
|
||||||
set lines [exec ffprobe -v error -show_streams "$dir/$file"]
|
set lines [exec ffprobe -hide_banner -v error \
|
||||||
|
-show_streams "$dir/$file"]
|
||||||
}]} continue
|
}]} continue
|
||||||
|
|
||||||
foreach line $lines {
|
foreach line $lines {
|
||||||
|
@ -14,15 +14,8 @@ set len [$ts duration 1]
|
|||||||
|
|
||||||
set xstart [clock milliseconds]
|
set xstart [clock milliseconds]
|
||||||
|
|
||||||
set base [file rootname $rfile]
|
|
||||||
set shname [file tail $base]
|
|
||||||
puts "Processing $shname"
|
|
||||||
|
|
||||||
set token [system startop -multiple mpg $rfile]
|
set token [system startop -multiple mpg $rfile]
|
||||||
puts [exec /mod/bin/ffmpeg -y -benchmark -v 0 \
|
$ts mkmpg
|
||||||
-i $rfile \
|
|
||||||
-map 0:0 -map 0:1 \
|
|
||||||
-vcodec copy -acodec copy "${base}.mpg"]
|
|
||||||
system endop $token
|
system endop $token
|
||||||
|
|
||||||
set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
|
set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
|
||||||
|
@ -17,11 +17,6 @@ proc ::mp3::dequeue {q ts} {
|
|||||||
return {"DEFER" "Not decrypted"}
|
return {"DEFER" "Not decrypted"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[$ts get definition] eq "HD"} {
|
|
||||||
# Cannot extract a useful MP3 from a HD recording.
|
|
||||||
return {"FAILED" "Cannot process high-definition recording"}
|
|
||||||
}
|
|
||||||
|
|
||||||
if {[::auto::inuse $ts]} {
|
if {[::auto::inuse $ts]} {
|
||||||
return {"DEFER" "Recording in use"}
|
return {"DEFER" "Recording in use"}
|
||||||
}
|
}
|
||||||
@ -38,34 +33,16 @@ proc ::mp3::dequeue {q ts} {
|
|||||||
log " MP3: $file" 0
|
log " MP3: $file" 0
|
||||||
log " Converting... [$::auto::settings \
|
log " Converting... [$::auto::settings \
|
||||||
audiomp3descr $mp3mode]" 0
|
audiomp3descr $mp3mode]" 0
|
||||||
if {[catch {
|
if {[catch {set msg [$ts mkmp3 $mp3mode "$tmp/mp3"]} msg]} {
|
||||||
set cmd [list nice -n 19 \
|
|
||||||
/mod/bin/ffmpeg -y -benchmark -v 0 -i "$file.ts" \
|
|
||||||
-f mp3 -vn]
|
|
||||||
if {!$mp3mode} { lappend cmd -acodec copy }
|
|
||||||
lappend cmd "$tmp/mp3.mp3"
|
|
||||||
foreach line [split [exec {*}$cmd] "\n"] {
|
|
||||||
log [string trim $line] 0
|
|
||||||
}
|
|
||||||
} msg]} {
|
|
||||||
system notify "$file - auto-mp3 - error $msg."
|
system notify "$file - auto-mp3 - error $msg."
|
||||||
system endop mp3
|
system endop mp3
|
||||||
return [list "FAILED" $msg]
|
return [list "FAILED" $msg]
|
||||||
}
|
}
|
||||||
|
|
||||||
if {[system pkginst id3v2]} {
|
foreach line [split $msg "\n"] {
|
||||||
catch {
|
log [string trim $line] 0
|
||||||
log [exec /mod/bin/id3v2 \
|
|
||||||
--song "[$ts get title]" \
|
|
||||||
--comment "[$ts get synopsis]" \
|
|
||||||
--album "[$ts get channel_name]" \
|
|
||||||
--year "[clock format [$ts get start] -format {%Y}]" \
|
|
||||||
"$tmp/mp3.mp3"] 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Move the MP3 into the local directory
|
|
||||||
file rename $tmp/mp3.mp3 $file.mp3
|
|
||||||
set summary [::auto::endclock [$ts size]]
|
set summary [::auto::endclock [$ts size]]
|
||||||
system endop mp3
|
system endop mp3
|
||||||
|
|
||||||
|
@ -30,22 +30,17 @@ proc ::mpg::dequeue {q ts} {
|
|||||||
|
|
||||||
log " MPG: $file" 0
|
log " MPG: $file" 0
|
||||||
log " Converting..." 0
|
log " Converting..." 0
|
||||||
if {[catch {
|
|
||||||
foreach line [split \
|
|
||||||
[exec nice -n 19 /mod/bin/ffmpeg -y -benchmark -v 0 \
|
|
||||||
-i $file.ts \
|
|
||||||
-map 0:0 -map 0:1 \
|
|
||||||
-vcodec copy -acodec copy $tmp/mpg.mpg] "\n"] {
|
|
||||||
log $line 0
|
|
||||||
}
|
|
||||||
} msg]} {
|
|
||||||
system notify "$file - auto-mpg - error $msg."
|
|
||||||
system endop mpg
|
|
||||||
return [list "FAILED" $msg]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Move the MPG into the local directory
|
if {[catch {set msg [$ts mkmpg "$tmp/mpg"]} msg]} {
|
||||||
file rename $tmp/mpg.mpg $file.mpg
|
system notify "$file - auto-mpg - error $msg."
|
||||||
|
system endop mpg
|
||||||
|
return [list "FAILED" $msg]
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach line [split $msg "\n"] {
|
||||||
|
log [string trim $line] 0
|
||||||
|
}
|
||||||
|
|
||||||
set summary [::auto::endclock [$ts size]]
|
set summary [::auto::endclock [$ts size]]
|
||||||
system endop mpg
|
system endop mpg
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -x /mod/bin/ffprobe ]; then
|
|
||||||
/mod/bin/ffprobe "$@" 2>&1 | sed '
|
|
||||||
1,10d
|
|
||||||
'
|
|
||||||
else
|
|
||||||
/mod/bin/ffmpeg "$@" 2>&1 | sed '
|
|
||||||
1,8d
|
|
||||||
$d
|
|
||||||
'
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
|
|
@ -364,9 +364,82 @@ ts method mkthm {{offset 0}} {
|
|||||||
exec /bin/echo -n " " >> $bfile.thm~
|
exec /bin/echo -n " " >> $bfile.thm~
|
||||||
file rename -force $bfile.thm~ $bfile.thm
|
file rename -force $bfile.thm~ $bfile.thm
|
||||||
file tdelete $bfile.bmp
|
file tdelete $bfile.bmp
|
||||||
|
$self setflag thumbnail
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# From MontysEvilTwin
|
||||||
|
# - https://hummy.tv/forum/threads/7787/page-2#post-106826
|
||||||
|
# ffmpeg -i "File 1.ts" -c:a mp3 -b:a 128k "File 1.mp3"
|
||||||
|
# ffmpeg -i "File 1.ts" -c:a copy "File 1.mp2"
|
||||||
|
# ffmpeg -i "File 1.ts" -c:a copy "File 1.loas"
|
||||||
|
ts method mkmp3 {{slow false} {tmp ""} {v 0} {br 128}} {
|
||||||
|
set rfile [file rootname $file]
|
||||||
|
|
||||||
|
if {$slow} {
|
||||||
|
set opts [list -c:a mp3 -b:a ${br}k]
|
||||||
|
set ext mp3
|
||||||
|
} else {
|
||||||
|
set opts [list -c:a copy]
|
||||||
|
if {$definition eq "HD"} {
|
||||||
|
set ext loas
|
||||||
|
} else {
|
||||||
|
set ext mp2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set cmd [list /mod/bin/ffmpeg \
|
||||||
|
-y -benchmark -vn -v $v \
|
||||||
|
-i $file {*}$opts \
|
||||||
|
]
|
||||||
|
|
||||||
|
if {$tmp eq ""} {
|
||||||
|
lappend cmd "${rfile}.$ext"
|
||||||
|
} else {
|
||||||
|
lappend cmd "$tmp.$ext"
|
||||||
|
}
|
||||||
|
|
||||||
|
set output [exec {*}$cmd]
|
||||||
|
|
||||||
|
if {$tmp ne ""} {
|
||||||
|
file rename "$tmp.$ext" "${rfile}.mp3"
|
||||||
|
} elseif {$ext ne "mp3"} {
|
||||||
|
file rename "${rfile}.$ext" "${rfile}.mp3"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec /mod/bin/id3v2 \
|
||||||
|
--song $title \
|
||||||
|
--comment $synopsis \
|
||||||
|
--album $channel_name \
|
||||||
|
--year "[clock format $start -format {%Y}]" \
|
||||||
|
"${rfile}.mp3"
|
||||||
|
|
||||||
|
return $output
|
||||||
|
}
|
||||||
|
|
||||||
|
ts method mkmpg {{tmp ""}} {
|
||||||
|
set rfile [file rootname $file]
|
||||||
|
|
||||||
|
set cmd [list /mod/bin/ffmpeg \
|
||||||
|
-y -benchmark -v 0 \
|
||||||
|
-i $file \
|
||||||
|
-map 0:0 -map 0:1 \
|
||||||
|
-vcodec copy -acodec copy]
|
||||||
|
|
||||||
|
if {$tmp eq ""} {
|
||||||
|
lappend cmd "${rfile}.mpg"
|
||||||
|
} else {
|
||||||
|
lappend cmd "$tmp.mpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
set output [exec {*}$cmd]
|
||||||
|
|
||||||
|
if {$tmp ne ""} {
|
||||||
|
file rename "$tmp.mpg" "${rfile}.mpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output
|
||||||
|
}
|
||||||
|
|
||||||
proc {ts renamegroup} {from to} {
|
proc {ts renamegroup} {from to} {
|
||||||
global tsgroup
|
global tsgroup
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user