So schaut es aus ...
vdr-transcode - swiss knife for transcoding
-
-
So, hier nun ein Log; die tausend Wiederholungen frame=... habe ich mal raus gelöscht. Eingegeben hatte ich
vt -i Alle_Nadeln.mp4 -odir _Alle_Nadeln_an_der_Tanne
(absichtlich ein anderes Ziel als in der conf Datei (siehe unten) in der Hoffnung man sieht was Auffälliges)
Code
Alles anzeigenStart 2020-12-21 18:06:47 vdr-transcode ffmpeg Version 2.8.17-0ubuntu0.1 x86_64 ==================================== /etc/vdr-transcode.conf -aaclib libvo_aacenc -odir /tmp/VDR/ ==================================== Parameter: -i Alle_Nadeln.mp4 -odir _Alle_Nadeln PWD: /media/matze/SEAGATE -rw-rw-r-- 1 matze matze 10081237176 2020-12-19 16:14 Alle_Nadeln.mp4 oldsize=9844958 mediainfo missing, trying ffmpeg scantype=not progr deinterlace=yadif ffmpeg -hide_banner -i "Alle_Nadeln.mp4" -map 0:v:0 -map 0:1 -c:v copy -c:1 libvo_aacenc -b:1 96k -map_chapters -1 "2020-12-19.16.14.3-1.rec/00001.ts" Input #0, mpegts, from 'Alle_Nadeln.mp4': Duration: 01:29:16.63, start: 1.416000, bitrate: 15056 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc Stream #0:1[0x101](deu): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s Output #0, mpegts, to '2020-12-19.16.14.3-1.rec/00001.ts': Metadata: encoder : Lavf56.40.101 Stream #0:0: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 50 fps, 50 tbr, 90k tbn, 90k tbc Stream #0:1(deu): Audio: aac (libvo_aacenc), 48000 Hz, stereo, s16, 96 kb/s Metadata: encoder : Lavc56.60.100 libvo_aacenc Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (mp2 (native) -> aac (libvo_aacenc)) Press [q] to stop, [?] for help frame= 583 fps=0.0 q=-1.0 size= 21073kB time=00:00:12.12 bitrate=14236.0kbits/s ... frame=267805 fps=513 q=-1.0 Lsize= 9727692kB time=01:29:16.56 bitrate=14876.9kbits/s video:8929092kB audio:62767kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.183328% =========================================================== Input #0, mpegts, from '2020-12-19.16.14.3-1.rec/00001.ts': Duration: 01:29:16.66, start: 1.400000, bitrate: 14876 kb/s Program 1 Metadata: service_name : Service01 service_provider: FFmpeg Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc Stream #0:1[0x101](deu): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 107 kb/s =========================================================== Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc Stream #0:0: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 50 fps, 50 tbr, 90k tbn, 90k tbc Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 100 tbc Duration: 01:29:16.63, start: 1.416000, bitrate: 15056 kb/s Duration: 01:29:16.66, start: 1.400000, bitrate: 14876 kb/s Diff: 3cs Alt 9844958 Dauer: 00:08:43 Ende 2020-12-21 19:25:30
Code
Alles anzeigen$ cat /etc/vdr-transcode.conf # vdr-transcode configuration #-ac3_stereo aac # -h264enc h264_nvenc # -hevcenc hevc_nvenc # -h264enc h264_vaapi # -hevcenc hevc_vaapi #-aaclib libfdk_aac # -aaclib libfaac -aaclib libvo_aacenc #-aaclib aac # --nohw # -hwaccel cuvid # -hwaccel vaapi -odir /tmp/VDR/
-
-odir wird bei der derzeitigen Version bei Dateieingabe nicht verarbeitet. Bitte etwas Geduld.
-
Bitte etwas Geduld.
Klar, gerne. Wie gesagt, ich habe eine gewisse Hochachtung vor Leuten wie Dir. Die erzeugten Daten manuell zu verschieben ist ja auch nicht so das Problem.
-
Wenn Du Bock hast, kannst Du mal diesen Patch Testen
Diff
Alles anzeigen--- vdr-transcode-x 2020-12-19 17:22:21.339638657 +0100 +++ vdr-transcode 2020-12-21 22:04:35.826813089 +0100 @@ -834,13 +834,14 @@ rec_time=$(date "+%s" -d "$c_t") #exit fi - dest=$(date "+%F.%H.%M" -d @$rec_time)".3-0.rec" + [ "$odir" != "" ] && dp=$odir/$name/ + dest=$dp$(date "+%F.%H.%M" -d @$rec_time)".3-0.rec" d32=0 while [ -e $dest ] do d32=$(($d32+1)) #dest="../"$(date "+%F.%H.%M" -d @$s)".$tr-$d32.rec" - dest=$(date "+%F.%H.%M" -d @$rec_time)".3-$d32.rec" + dest=$dp$(date "+%F.%H.%M" -d @$rec_time)".3-$d32.rec" done ifmt2="file" if [ "$ifmt" == "avi" ] @@ -2481,7 +2482,11 @@ if [ -e $vdr ] then echo genindex - nice $vdr --genindex="./$dest" + #nice $vdr --genindex="./$dest" + #set -x + [[ "$dest" != */* ]] && dest="./"$dest + nice $vdr --genindex=$dest + #set +x [ "$fpso" == "" ] && fpso=$fps li=$(ls -l $dest/index|cut -d ' ' -f 5) fpso=$(grep ^F $dest/info|cut -d \ -f 2)
sonst warten, bis ich das ausgetestet habe, dann kommt die neue Version.
-
Wenn Du Bock hast, kannst Du mal diesen Patch Testen
Vielen Dank erstmal. Ich bin jedoch nicht sicher, ob die Version die man derzeit 'runterladen kann diejenige ist auf die der Patch passt. Jedenfalls ging's schief:
Codepatching file vdr-transcode Hunk #1 FAILED at 834. Hunk #2 FAILED at 2481. 2 out of 2 hunks FAILED -- saving rejects to file vdr-transcode.rej
Da es nicht viel Code ist habe ich gedacht ich ändere das eben "zu Fuß". Die Zeilennummern passten nicht, aber ich habe die Stellen gefunden. Anscheinend geht's jetzt: im angegebenen odir wird ein Unterverzeichnis mit Namen der mp4 Datei erzeugt - ist doch super, dankeschön!
(Ich kann nur noch nicht sagen wie reproduzierbar es ist, ich habe nur einen quick'n'dirty Test gemacht)
-
Ich hatte befürchtet, dass der patch nicht mehr passt, aber Du hast es ja offens. hinbekommen.
-
Ich hatte befürchtet, dass der patch nicht mehr passt, aber Du hast es ja offens. hinbekommen.
Ja, sieht sehr gut aus
(Ich kann nur noch nicht sagen wie reproduzierbar es ist, ich habe nur einen quick'n'dirty Test gemacht)
Ich habe ihn über Nacht rechnen lassen und stichprobenartig geprüft: sieht super aus.
Zwei von drei bereits genannten Fehlermeldungen sind ja im Grunde keine "echten" Fehler (Folgendes erscheint u.a. auf der Konsole):
Code
Alles anzeigen... video:6992801kB audio:63611kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.295642% genindex nice: Unbekannte Option »--genindex=/media/matze/.../2020-12-21.15.30.3-0.rec« „nice --help" liefert weitere Informationen. ls: Zugriff auf '/media/matze/.../2020-12-21.15.30.3-0.rec/index' nicht möglich: Datei oder Verzeichnis nicht gefunden /usr/local/bin/vt: Zeile 2304: /8/50: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist »/8/50«). date: ungültiges Datum »@" /usr/local/bin/vt: Zeile 2655: *100/7760642: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist »*100/7760642«). /usr/local/bin/vt: Zeile 2176: /var/log/vdr-transcode.log: Keine Berechtigung Input #0, mpegts, from 'movie.mp4': Duration: 01:29:14.65, start: 1.408000, bitrate: 12631 kb/s ...
Das mit dem genindex und nice kommt logischerweise daher, dass auf meinem Arbeitsplatzrechenr kein VDR ist.
Die Meldung "Keine Berechtigung" ist, weil ich es nicht als root laufen lasse.
Einzig die Syntax Fehler ... hm, da könnte man mal mit Klammern probieren. Die betreffenden Zeilen sind
Ich probiere gerade mal mit Klammern um die jeweils erste Division bzw. Multiplikation, also
Code2304: si=$((($li/8)/$fpso)) 2655: prz=$((($newsize*100)/$oldsize)) # in meiner Version Zeile 2657
Mal sehen was passiert...
-
Das sind Folgefehler, weil der index nicht generiert wird. Ich müsste eine Konfiguration "ohne vdr" einbauen.
-
Mal sehen was passiert...
"natürlich" ging's schief. Ich war in Eile, in Eile bin ich unkonzentriert, unkonzentriert macht man Fehler
Wenn die Variablen $li und $newsize leer sind geht's auf jeden Fall schief, da helfen auch keine Klammern.
Das sind Folgefehler, weil der index nicht generiert wird. Ich müsste eine Konfiguration "ohne vdr" einbauen.
Das erklärt's natürlich - aber ist die Option überhaupt nötig? Mehr zufällig hatte ich nämlich ab ca. Zeile 2280 gefunden, dass anscheinend schon geprüft wird ob es vdr auf dem System gibt. Allerdings scheint das nicht zu funktionieren. $VDRDIR ist ja z.B. leer, weil es nie gesetzt wird. Vielleicht so:
-
Diff
Alles anzeigen--- vdr-transcode-x2 2020-12-21 22:04:35.826813089 +0100 +++ vdr-transcode 2020-12-22 15:05:49.787819482 +0100 @@ -2479,7 +2479,7 @@ then vdr=$VDRDIR/vdr fi - if [ -e $vdr ] + if [ -x "$vdr" ] then echo genindex #nice $vdr --genindex="./$dest" @@ -2894,7 +2894,7 @@ durs2=$(date -u "+%s" -d "1970-01-01 ${dur:0:8}") durs2ms=$durs2${dur:9:2} echo "Diff:" $(($durs2ms-$durs1ms))"cs" >> "$log_c" -[ "$OUTPUT" == "vdr" ] && date -u -d @$si +"index %T" >> "$log_c" +[ "$OUTPUT" == "vdr" -a "$si" != "" ] && date -u -d @$si +"index %T" >> "$log_c" if [ $oldsize -gt 1 ] then echo "Alt" $oldsize >> "$log_c"
Zwei Änderungen
-
Das funktioniert, vielen Dank.
Es ist allerdings an der Stelle fast egal, ob man auf Existenz (-e) oder Ausführbarkeit (-x) des vdr executable prüft, denn which findet ohnehin nur ausführbare Dateien (Binaries und Scripte). Es funktioniert beides.
Entscheidend sind die Häkchen ("), da habe ich auch lange dran rum geknabbert.
$VDRDIR bleibt aber weiterhin leer, somit ist
eigentlich überflüssig
Nichts für Ungut,
Purzel
-
Bei mir ist $VDRDIR gesetzt.
-
Bei mir ist $VDRDIR gesetzt.
Kann es evtl. sein, dass manche VDR-Distri das setzt? Ich benutze MLD, da ist es nicht gesetzt.
-
Ich nutze keine VDR-Distri, daher kann ich Dir das nicht beantworten.
-
Naja, lassen wir das - das hat ja mit dem eigentlichen Thema nicht mehr so richtig zu tun.
Ich finde es super, dass Du den gefundenen Bug so schnell beseitigen konntest und sage nochmal herzlich DANKESCHÖN!
-
Neue Version
Angekündigte Änderungen sind eingeflossen
Bugfixes
Ausführlicher Changelog folgt noch.
-
Changelog
- Einbau von opus als Audio-Encoder, Tests mit 64kbit für Stereo klingen vielversprechend. Natürlich nicht für vdr geeignet, nur mkv, (mp4)
- Unterstützung HE-AAC, damit erreiche ich ähnliche Kompression wie opus und es wird von vdr unterstützt.
-
--selb # select best audio track
Auswahl der Audiospur mit größter Bitrate - -odir und -mark sollte jetzt gleichzeitig funktionieren
- h264_omx Encoder für Raspis
- Bugfixes
-
Ich habe den Code mal ins Github übertragen:
https://github.com/jsffm/vdr-transcode
Da das für mich absolutes Neuland ist, bin ich für Anregungen dankbar.
-
bei mir funktioniert die Transcodierung nicht mehr nach dem letzten update ...
Ubuntu 20.04.2
boerse_vor_acht.log
Start 2021-01-29 16:05:06 vdr-transcode ffmpeg Version 4.3.2-BM2LTS
x86_64
====================================
/etc/vdr-transcode.conf
-o mp4 #vdr|mp4|mkv # default vdr
-aac_stereo_br 128k # default 96k
-g 50 #<n> # goplength default 50
-crf 21 #<n> # quality h264 default 21, < = better
-quality 80 #-quality <n> # vaapi h264 quality
-cq 28 #<n> # quality hevc default 28, < = better
-gq 30 #<n> # quality vp8 default 30, < = better
-h264enc h264_vaapi #libx264|h264_nvenc|h264_vaapi
-h264_level 4.1 #<level> # default 4.1
-hevcenc hevc_vaapi #hevc_nvenc|hevc_vaapi|libx265|libkvazaar
-hevc_level 4.1 #<level>
-aaclib libfdk_aac #aac|libfdk_aac|libfaac # default aac
-hwaccel vaapi #cuvid|vaapi|vdpau
-vdr /usr/sbin/vdr #<path_to_vdr>
-ffmpeg /usr/bin/ffmpeg #<path_to_ffmpeg>
-ffprobe /usr/bin/ffprobe #<path_to_ffprobe>
-mark _%VT#<mark> # mark at the end of transcoded recordings
-odir /media/hd/plexmedia/transcode #<path> # output directory
-r 25 #<n> # fps
-ac3 aac
-ac3_stereo aac
-eac3 aac
-dts aac
-mp2 aac
-mp3 aac
-h264 hevc
====================================
Parameter:
--auto
====================================
vt.conf
====================================
PWD: /media/hd/recordings/Autotimer/Nachrichten/Börse_vor_acht/2021-01-28.19.55.1-0.rec
insgesamt 367944
-rw-r--r-- 1 root root 376578100 2021-01-28 19:56 00001.ts
-rw-r--r-- 1 root root 148832 2021-01-28 19:56 index
-rw-r--r-- 1 root root 567 2021-01-28 19:50 info
-rw-r--r-- 1 root root 16700 2021-01-28 19:59 markad.log
-rw-r--r-- 1 root root 12 2021-01-28 19:50 markad.vps
-rw-r--r-- 1 root root 68 2021-01-28 19:59 marks
-rw-r--r-- 1 root root 0 2020-11-22 14:25 vt.conf
-rw-r--r-- 1 root root 0 2021-01-29 16:05 vt.err
-rw-r--r-- 1 root root 0 2021-01-29 16:05 vt.lck
-rw-r--r-- 1 root root 0 2021-01-29 16:05 vt.log
oldsize=367948
mediainfo missing, trying ffmpeg
scantype=Progressive
deinterlace=
/usr/bin/ffmpeg -nostdin -hide_banner -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i 00001.ts -map 0:v:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -c:v hevc_vaapi -profile:v main -tier high -level 4.1 -rc_mode ICQ -qp 28 -g 50 -c:1 libfdk_aac -b:1 128k -c:2 libfdk_aac -b:2 128k -c:3 libfdk_aac -b:3 128k -c:4 dvd_subtitle -r 25 -metadata creation_time=2021-01-28T20:55:00 -movflags faststart /media/hd/plexmedia/transcode/Börse_vor_acht.mp4
[AVHWDeviceContext @ 0x555a80752700] libva: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
[AVHWDeviceContext @ 0x555a80752700] Failed to initialise VAAPI connection: -1 (unknown libva error).
Device creation failed: -5.
Failed to set value '/dev/dri/renderD128' for option 'vaapi_device': Input/output error
Error parsing global options: Input/output error
===========================================================
/media/hd/plexmedia/transcode/Börse_vor_acht.mp4: No such file or directory
===========================================================
Video: kb/s Audio: 448kb/s
Diff: 0cs
Alt 367948
Dauer: 00:00:00
Ende 2021-01-29 16:05:06
vt.log:
Code[AVHWDeviceContext @ 0x555a80752700] libva: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null) [AVHWDeviceContext @ 0x555a80752700] Failed to initialise VAAPI connection: -1 (unknown libva error). Device creation failed: -5. Failed to set value '/dev/dri/renderD128' for option 'vaapi_device': Input/output error Error parsing global options: Input/output error 220 192.168.0.35 SVDRP VideoDiskRecorder 2.4.6; Fri Jan 29 16:05:06 2021; UTF-8 250 Message queued 221 192.168.0.35 closing connection
vt.err
Codels: Zugriff auf '/media/hd/plexmedia/transcode/Börse_vor_acht.mp4' nicht möglich: Datei oder Verzeichnis nicht gefunden /usr/local/bin/vdr-transcode: Zeile 2540: /1024: Syntaxfehler: Operator erwartet. (Fehlerverursachendes Zeichen ist "/1024"). /usr/local/bin/vdr-transcode: Zeile 2879: ${#videos}-2: Teilstring-Ausdruck < 0. /usr/local/bin/vdr-transcode: Zeile 2882: ${#audios}-2: Teilstring-Ausdruck < 0. /usr/local/bin/vdr-transcode: Zeile 2886: *8/0: Syntaxfehler: Operator erwartet. (Fehlerverursachendes Zeichen ist "*8/0"). /usr/local/bin/vdr-transcode: Zeile 2887: *8/0: Syntaxfehler: Operator erwartet. (Fehlerverursachendes Zeichen ist "*8/0"). /usr/local/bin/vdr-transcode: Zeile 2902: *100/367948: Syntaxfehler: Operator erwartet. (Fehlerverursachendes Zeichen ist "*100/367948").
dest:
Code/media/hd/recordings/Autotimer/Nachrichten/Börse_vor_acht/2021-01-28.19.55.1-0.rec//media/hd/plexmedia/transcode/Börse_vor_acht.mp4.log
Könnt ihr mir bitte auf die Sprünge helfen, was hier schief geht?
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!