@@ -57,6 +57,8 @@ confs=/etc/vdr-transcode-s.conf
5757runs=/var/run/vt_server.pid
5858vtc=vt.conf
5959lck=vt.lck
60+ declare -a lang
61+ declare -a langa
6062
6163# exit
6264
@@ -438,7 +440,6 @@ read_configuration() {
438440 # exit
439441}
440442
441- declare -a lang
442443
443444set_lang () {
444445 # set -x
@@ -545,7 +546,8 @@ status() {
545546 dur=$( echo $dur | cut -d \ -f 2)
546547 dur=${dur: 0: 8}
547548 durs=$( date -u " +%s" -d " 1970-01-01 $dur " )
548- fps1=$( grep " Video:" $log | head -n 1)
549+ # fps1=$(grep "Video:" $log|head -n 1)
550+ fps1=$( grep " Video:" $log | tail -n 1)
549551 # Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc Stream #0:0(eng): Video: hevc (hevc_nvenc) (Main), cuda, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 2000 kb/s, 50 fps, 1k tbn, 50 tbc
550552 fps1=${fps1% fps,* }
551553 nw=$( echo $fps1 | wc -w)
@@ -635,7 +637,7 @@ input_file() {
635637 fi
636638 ls_iso $INPUT > $old
637639 # -rw-r--r-- 1 ftp ftp 4084731329 13. Mai 2014 exq-12years-720p.mkv
638- oldsize=$( ls -l $INPUT | cut -d \ -f 5)
640+ oldsize=$( ls -lL $INPUT | cut -d \ -f 5)
639641 oldsize=$(( $oldsize / 1024 ))
640642 echo " oldsize=" $oldsize >> $old
641643 ffmpeg_i=" -i $INPUT "
@@ -921,13 +923,15 @@ input_dvd() {
921923 # dest="../"$(date "+%F.%H.%M" -d @$s)".$tr-$d32.rec"
922924 dest=$( date " +%F.%H.%M" -d @$s ) " .$tr -$d32 .rec"
923925 done
926+ else
927+ which mediainfo 2> /dev/null
928+ if [ $? -eq 0 ]
929+ then
930+ [ " $nochapt " != " 1" ] && chapt_mediainfo $dvd_path " VTS_" $tr2 " _0.IFO"
931+ fi
924932 fi
925- OPT_G=" $OPT_G -fflags +genpts"
926- which mediainfo 2> /dev/null
927- if [ $? -eq 0 ]
928- then
929- [ " $nochapt " != " 1" ] && chapt_mediainfo $dvd_path " VTS_" $tr2 " _0.IFO"
930- fi
933+ # OPT_G="$OPT_G -fflags +genpts"
934+ OPT_G=" $OPT_G -fix_sub_duration"
931935 # exit
932936}
933937
@@ -955,6 +959,16 @@ chapt_tsmuxer() {
955959 dur=$(( $dur + $durs ))
956960 # exit
957961 fi
962+ if [ " ${line: 0: 9} " == " Track ID:" ]
963+ then
964+ tid=$( echo $line | cut -d ' :' -f 2)
965+ tid=$( echo $tid )
966+ fi
967+ if [ " ${line: 0: 12} " == " Stream lang:" ]
968+ then
969+ l1=$( echo $line | cut -d ' :' -f 2)
970+ langa[$tid ]=$( echo $l1 )
971+ fi
958972 done < $temp
959973 # exit
960974 ch=0
@@ -1002,6 +1016,11 @@ BD_size() {
10021016 fn=0
10031017 sum=0
10041018 f=$( printf " $1 /BDMV/STREAM/%05d.m2ts" $fn )
1019+ if [ ! -e $f ]
1020+ then
1021+ fn=1
1022+ f=$( printf " $1 /BDMV/STREAM/%05d.m2ts" $fn )
1023+ fi
10051024 while [ -e $f ]
10061025 do
10071026 s=$( ls -l $f | cut -d \ -f 5)
@@ -1305,9 +1324,17 @@ set_vp9() {
13051324 fi
13061325}
13071326
1327+ set_av1 () {
1328+ aopt=" -row-mt 1"
1329+ # aopt="$aopt -tiles 4x1"
1330+ aopt=" $aopt -tiles 2x2"
1331+ aopt=" $aopt -threads 8"
1332+ video=" -c:v libaom-av1 -cpu-used 8 -crf $crf $aopt -strict experimental"
1333+ }
13081334
13091335set_aac () {
1310- if [ " $atyp " != " stereo" ]
1336+ # '[' 2 '!=' stereo ']'
1337+ if [ " $atyp " != " stereo" -a " $atyp " != " 2" ]
13111338 then
13121339 audio_t=" -c:$stro $aaclib -b:$stro $aac_6ch_br "
13131340 else
@@ -1337,7 +1364,7 @@ analyze() {
13371364 fi
13381365 echo " deinterlace=$deinterlace " >> $log_c
13391366 [ " $deinterlace " != " " ] && add_vf $deinterlace
1340- [ " $vf " != " " ] && vf=" -vf $vf "
1367+ # [ "$vf" != "" ] && vf="-vf $vf"
13411368 # exit
13421369 # vdr
13431370 # Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc
@@ -1363,6 +1390,8 @@ analyze() {
13631390 # mpg
13641391 # Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, fcc/bt470bg/bt470bg, top first), 480x576 [SAR 8:5 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
13651392 # Stream #0:1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16p, 128 kb/s
1393+ #
1394+ # Stream #0:3(ger): Audio: eac3, 48000 Hz, 2 channels, fltp
13661395
13671396 # set -x
13681397 map=" -map 0:v:0"
@@ -1379,7 +1408,12 @@ analyze() {
13791408 # if [ "$ifmt" == "vdr" -o "$ifmt" == "dvd" -o "$ifmt" == "mpg" -o "$ifmt" == "ts" -o "$ifmt" == "m2ts" -o $ifmt == "BD" -o $ifmt == "MTS" ]
13801409 if [[ " $str1 " == * [* ]]
13811410 then
1411+ # set -x
13821412 str= ${str1%% [* }
1413+ trid= ${line#* [}
1414+ trid= ${trid%% ]* }
1415+ # [ "${langa[$(($trid))]}" != "" ] && metal="$metal -metadata:s:$stro language=${langa[$(($trid))]}"
1416+ # exit
13831417 else
13841418 str= ${str1%% (* }
13851419 str= ${str%%:* }
@@ -1411,6 +1445,16 @@ analyze() {
14111445 nw=$( echo $fps1 | wc -w)
14121446 fps=$( echo $fps1 | cut -d \ -f $nw )
14131447 ivcodec=$codec
1448+ if [ " $OUTPUT " == " vdr" ]
1449+ then
1450+ # [ "$fps" == "23.98" ] && add_vf "fps=25"
1451+ # [ "$fps" == "29.97" ] && add_vf "fps=50"
1452+ # [ $fps -lt 25 ] && add_vf "fps=25" && fpso=25
1453+ [ " $fps " " <" " 25" ] && add_vf " fps=25" && fpso=25
1454+ # [ $fps -gt 25 ] && add_vf "fps=50" && fpso=50
1455+ [ " $fps " " >" " 25" -a " $fps " != " 50" ] && add_vf " fps=50" && fpso=50
1456+ fi
1457+ [ " $vf " != " " ] && vf=" -vf $vf "
14141458 # exit
14151459 fi
14161460 if [ " $typ " == " Audio:" ]
@@ -1425,7 +1469,7 @@ analyze() {
14251469 nw=$( echo $ar1 | wc -w)
14261470 ar1=$( echo $ar1 | cut -d \ -f $nw )
14271471 # set -x
1428- [ " ${lang[$str]} " != " " ] && OPT=" $OPT -metadata:s:$str language=${lang[$str]} "
1472+ [ " ${lang[$str]} " != " " ] && OPT=" $OPT -metadata:s:$stro language=${lang[$str]} "
14291473 [ " ${streamo[$str]} " != " " ] && str=${streamo[$str]}
14301474 # exit
14311475 fi
@@ -1472,6 +1516,9 @@ analyze() {
14721516 " vp9" )
14731517 set_vp9
14741518 ;;
1519+ " av1" )
1520+ set_av1
1521+ ;;
14751522 * )
14761523 echo " -h264 $h264 wrong"
14771524 exit 8
@@ -1494,6 +1541,9 @@ analyze() {
14941541 " copy" )
14951542 nix=
14961543 ;;
1544+ " av1" )
1545+ set_av1
1546+ ;;
14971547 * )
14981548 echo " -hevc $hevc wrong"
14991549 exit 8
@@ -1700,6 +1750,7 @@ analyze() {
17001750 stro1=$(( $stro1 + 1 ))
17011751 ;;
17021752 " dvd_subtitle" |" subrip" |" ass" )
1753+ [ " $OUTPUT " == " vdr" ] && continue
17031754 map=" $map -map 0:$str "
17041755 subt=" $subt -c:$stro copy"
17051756 stro1=$(( $stro1 + 1 ))
@@ -1728,7 +1779,7 @@ transcode() {
17281779 # opt="-hide_banner $OPT_G $ffmpeg_i -map 0 -c copy $OPT $name.$fmt"
17291780 # opt="-hide_banner $OPT_G $ffmpeg_i -map 0 $video $audio $subt $OPT $name"
17301781 [ -e ffmetadata ] && ffmpeg_i=" $ffmpeg_i -i ffmetadata"
1731- opt=" -hide_banner $OPT_G $HWACC $OPT_I $ffmpeg_i $map $video $audio $subt $OPT $name "
1782+ opt=" -hide_banner $OPT_G $HWACC $OPT_I $ffmpeg_i $map $video $audio $subt $OPT $metal $ name"
17321783 echo ffmpeg $opt >> $log_c
17331784 # exit
17341785 if [ " $quiet " == 1 ]
@@ -1742,6 +1793,11 @@ transcode() {
17421793 # ffprobe -hide_banner -i $name 2>> $log_c
17431794 ffprobe -hide_banner -i $name 2> $t
17441795 cat $t >> $log_c
1796+ # set -x
1797+ line=$( grep " Video:" $t )
1798+ fps1=${line% fps* }
1799+ nw=$( echo $fps1 | wc -w)
1800+ fpso=$( echo $fps1 | cut -d \ -f $nw )
17451801}
17461802
17471803log_conf () {
@@ -1818,6 +1874,7 @@ copy_vdr() {
18181874 analyze $ffmpeg_i
18191875 # OPT="$OPT -mpegts_flags system_b"
18201876 # OPT="$OPT -mpegts_flags latm"
1877+ OPT=" $OPT -map_chapters -1"
18211878 transcode $dest /00001.ts
18221879 # if [ -e info ]
18231880 # then
@@ -1903,6 +1960,12 @@ copy_vdr() {
19031960 then
19041961 echo genindex
19051962 nice $vdr --genindex=" ./$dest "
1963+ [ " $fpso " == " " ] && fpso=$fps
1964+ li=$( ls -l $dest /index| cut -d ' ' -f 5)
1965+ fpso=$( grep ^F $dest /info| cut -d \ -f 2)
1966+ # si=$(($li/200*25/$fpso))
1967+ si=$(( $li / 8 / $fpso ))
1968+ # date -u -d @$si +"index %T" >> $log_c
19061969 else
19071970 echo $vdr " not found" >> $log_c
19081971 fi
@@ -2139,7 +2202,9 @@ sek=$(($ende-$start))
21392202echo " ===========================================================" >> $log_c
21402203[ -e $vtc ] && mv $vtc $vtc .rdy
21412204cp -p $log_c $t
2205+ grep " Video:" $t >> $log_c
21422206grep " Duration:" $t >> $log_c
2207+ [ " $OUTPUT " == " vdr" ] && date -u -d @$si +" index %T" >> $log_c
21432208echo " Alt" $oldsize >> $log_c
21442209prz= $(( $newsize * 100 / $oldsize ))
21452210echo " Neu" $newsize $prz " %" >> $log_c
0 commit comments