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- Start 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
-
-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- --- 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:
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- ...
- 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
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
- --- 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.