Das Problem mit DVB Zeug ist, dass es soweit mir bekannt kein tool gibt was über CLI genutzt werden kann, was 1. kostenlos nutzbar und 2. mit DVB2 Streams klarkommt. Gibt leider keinen wirkliches Pendant was wie ProjectX für DVB mit DVB-2 klar kommt.
HandbrakeCLI ist ne gute Idee, da Handbrake teilweise etwas robuster im Umgang mit 'kaputten' Streams ist als mencoder&ffmpeg.
DVB-S2 Streams von der Dreambox encoden (Linux only)
-
-
Handbrake test läuft gerade in der GUI Variante. Ich gehe mal davon aus das wenn es mit der GUI geht, das alles auch mit der CLI gehen sollte.
-
Davon würde ich erst mal nicht ausgehen, die meisten Tools bieten über die GUI mehr Möglichkeiten als über die Konsole,...
https://trac.handbrake.fr/wiki/CLIGuide sollte auflisten was geht,.. -
Also der Encode über die GUI hat einwandfrei funktioniert und ist auch perfekt synchron.
Ich werde dann heute abend mal die CLI Variante probieren.
-
Nicht das ich jetzt unbedingt auf die folgende Variante setzen will, aber mir scheint mittlerweile doch der Fehler in meinem Encoding mit x264 zu liegen.
1. TS file in mkv muxen
Das mkv ist nach diesem Step noch synchron
2. Timecodes extrahieren
3. Tracks extrahieren
4. Testweise alles wieder in ein mkv muxen
Codemkvmerge --title "CSI NY" -o CSI_NY2.mkv --timecodes 0:video.tmc video.h264 --track-name 0:german --language 0:ger --timecodes 0:audio.tmc audio.ac3
Dieses mkv ist auch synchron
5. Video track mit x264 encodieren (Normal verwende ich crf 23 und preset slow... dies ist nur für den test)
Codex264 --crf 25 --vbv-maxrate 40000 --vbv-bufsize 30000 --profile high --level 41 --tune film --preset superfast -o video.x264 video.h264
6. Encodierten Video track mit timecode und Audio track muxen
Codemkvmerge --title "CSI NY" -o CSI_NY3.mkv --timecodes 0:video.tmc video.x264 --track-name 0:german --language 0:ger audio.ac3
Dieses mkv ist nun asynchron. Dann habe ich das video mal durchgeklickt und festgestellt das es fast genau doppelt so schnell läuft wie es sollte.
Die Serie geht eigentlich knapp eine Stunde, aber nach ca. 30min ist kein Bild mehr zu sehen nur der Ton kommt noch.Wenn ich jetzt die video.x264 mit der video.h264 vergleiche, fällt mir nichts auf, was der Grund sein könnte.
Links ist die video.h264 und rechts die video.x264.
Code
Alles anzeigenGeneral General Complete name : video.h264 | Complete name : video.x264 Format : AVC Format : AVC Format/Info : Advanced Video Cod Format/Info : Advanced Video Cod File size : 3.74 GiB | File size : 2.74 GiB Video Video Format : AVC Format : AVC Format/Info : Advanced Video Cod Format/Info : Advanced Video Cod Format profile : High@L4.0 | Format profile : High@L4.1 Format settings, CABAC : Yes Format settings, CABAC : Yes Format settings, ReFrames : 4 frames Format settings, ReFrames : 4 frames Format settings, GOP : M=4, N=32 < Width : 1 920 pixels Width : 1 920 pixels Height : 1 080 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Display aspect ratio : 16:9 Frame rate : 25.000 fps Frame rate : 25.000 fps Standard : Component < Color space : YUV Color space : YUV Chroma subsampling : 4:2:0 Chroma subsampling : 4:2:0 Bit depth : 8 bits Bit depth : 8 bits Scan type : Interlaced | Scan type : MBAFF Scan order : Bottom Field First | Writing library : x264 core 120 r215 Color primaries : BT.709 | Encoding settings : cabac=1 / ref=1 / Transfer characteristics : BT.709 < Matrix coefficients : BT.709 <
-
Dann hat möglicherweise der im x264cli genutzte Decoder ein Problem mit dem Eingangsmaterial.
Da hilft meist nur anderer Decoder (--demuxer lavf oder einen externen über pipe).
Fehlt denn auch jedes zweite Bild, wenn Du einzeln durchgehst? Sind in den Timecodes die Abstände 20ms oder 40ms? Wenn Du den ersten Timecode bei mkvmerge als Delay einsetzt und die fps auf 25 stellst, was passiert dann? -
Fehlt denn auch jedes zweite Bild, wenn Du einzeln durchgehst? Sind in den Timecodes die Abstände 20ms oder 40ms? Wenn Du den ersten Timecode bei mkvmerge als Delay einsetzt und die fps auf 25 stellst, was passiert dann?
Das ist immer Unterschiedlich. Meistens sind es 20ms manchmal sind aber auch größere gaps drin.
x264 bringt folgende Meldungen. VIelleicht ist der Fehler am Anfang doch ernster als ich dachte.
Code
Alles anzeigenffms [error]: could not create index lavf [info]: 1920x1080i 1:1 @ 25/1 fps (cfr) x264 [warning]: input appears to be interlaced, enabling tff interlaced mode. If you want otherwise, use --no-interlaced or --bff x264 [warning]: interlace + weightp is not implemented x264 [info]: using SAR=1/1 x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX x264 [info]: profile High, level 4.1 x264 [info]: frame I:1464 Avg QP:18.84 size:105948 x264 [info]: frame P:47341 Avg QP:20.98 size: 47750 x264 [info]: frame B:41204 Avg QP:23.12 size: 12687 x264 [info]: consecutive B-frames: 26.3% 34.8% 9.7% 29.2% x264 [info]: mb I I16..4: 22.5% 54.4% 23.2% x264 [info]: mb P I16..4: 14.3% 16.0% 1.6% P16..4: 56.5% 0.0% 0.0% 0.0% 0.0% skip:11.6% x264 [info]: mb B I16..4: 1.8% 1.0% 0.1% B16..8: 24.7% 0.0% 0.0% direct:17.1% skip:55.4% L0:37.2% L1:50.9% BI:11.9% x264 [info]: field mbs: intra: 37.3% inter:41.6% skip:27.6% x264 [info]: 8x8 transform intra:49.6% inter:51.9% x264 [info]: coded y,uvDC,uvAC intra: 51.6% 63.3% 21.2% inter: 16.6% 26.4% 1.1% x264 [info]: i16 v,h,dc,p: 40% 22% 27% 10% x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 19% 28% 6% 5% 5% 6% 5% 7% x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 32% 12% 6% 4% 5% 6% 5% 7% x264 [info]: i8c dc,h,v,p: 38% 26% 25% 11% x264 [info]: kb/s:6529.10 encoded 90009 frames, 53.69 fps, 6529.10 kb/s
-
20ms würden 50fps entsprechen...
-
Woran kann das liegen das es manchmal 60ms sind?
Einen test mit x264 und --fps 25 und --demuxer lavf lasse ich gerade laufen.
-
--fps ändert nur die Timecodes, sollte hier also keinen Einfluß auf das Ergebnis haben.
-
Dann hat möglicherweise der im x264cli genutzte Decoder ein Problem mit dem Eingangsmaterial.
Da hilft meist nur anderer Decoder (--demuxer lavf oder einen externen über pipe).
Fehlt denn auch jedes zweite Bild, wenn Du einzeln durchgehst?Wie kann ich den einen anderen Demuxer über pipe angeben? so z.B.? "mencoder filename.ts -nosound -ovc copy -of rawvideo | x264"
Wie kann ich sehen ob jedes zweite Bild fehlt?
-
Zitat
mencoder filename.ts -nosound -ovc copy -of rawvideo | x264
Würde eher mit mencoder nach y4m oder i420 dekodieren wenn ich nach x264 pipe,...
Generell ist es vielleicht auch eine gute Idee mal Hybrid an zu gucken und falls das einen synchronen Output erzeugt könnte man sich angucken, welche Command Lines es nutzt (Jobs->Minimize job command lines deaktivieren).Codeffms [error]: could not create index lavf [info]: 1920x1080i 1:1 @ 25/1 fps (cfr) x264 [warning]: input appears to be interlaced, enabling tff interlaced mode. If you want otherwise, use --no-interlaced or --bff x264 [warning]: interlace + weightp is not implemented
-> mal versucht die vorgeschlagenen Änderungen zu machen?Würde ich x264 auch nicht mit RAW H.264 sondern eher mit dem mkv file als Input füttern,..
Cu Selur
-
-> mal versucht die vorgeschlagenen Änderungen zu machen?
Sollte keinen Unterschied machen. Mkvmerge behandelt die x264-Ausgabe hinsichtlich der Timecodes gleich, egal ob interlaced oder progressiv.
Man könnte versuchen, die Timecodes wieder zu glätten und einen durchgängigen Stream zu erzeugen, irgendwie so:
ffmpeg -i filename.ts -r 25 -f yuv4mpegpipe - | x264 - --demuxer y4m -o output.h264Danach ohne die Video-Timecodes muxen.
-
Ich habe endlich rausgefunden wie ich alles synchron bekomme.
Wenn man Schritt 6 nicht so:
Code[COLOR=#333333]mkvmerge --title "CSI NY" -o CSI_NY3.mkv --timecodes 0:video.tmc video.x264 --track-name 0:german --language 0:ger audio.ac3[/COLOR]
sondern so:
Code[/COLOR]mkvmerge --title "CSI NY" -o CSI_NY3.mkv video.x264 --track-name 0:german --language 0:ger -y 0:-229 audio.ac3
macht wird alles synchron. Das Problem scheint also irgendwie beim muxen mit dem timecode file zusammen zu hängen.
Jetzt gebe ich den timecode halt manuell an, den ich vorher aus dem ts stream bekommen habe und alles ist sync.Ich teste das jetzt mal noch mit ein paar anderen Aufnahmen und wenn das soweit funktioniert, dann schreib ich ein Script dafür.
Ich danke nochmal allen die mir hier geholfen haben!
Falls ihr noch weitere Hinweise oder Anregungen habt, immer her damit
-
Würde ich x264 auch nicht mit RAW H.264 sondern eher mit dem mkv file als Input füttern,..
Kannst du mir hierfür noch ein paar mehr Infos oder Hintergründe nennen?
Sorry mein Post zuvor hatte ich geschrieben bevor ich eure 2 Posts heute gelesen hatte.
-
Jetzt gebe ich den timecode halt manuell an, den ich vorher aus dem ts stream bekommen habe und alles ist sync.
Ja, hatte ich ja gestern schon mal geschrieben, daß Du das versuchen sollst.
Aber paß auf: Könnte sein, daß es nun an den Lücken (z.B. 60ms im Timecode) Stück für Stück asynchron wird, Du es aber nur noch nicht gemerkt hast. -
Ich habe immer am Anfang, in der Mitte und am Ende der Aufnahme kontrolliert und das hat alles gepasst, aber das bedeutet ja nicht, das es bei jeder Aufnahme geht.
Ich werde wie schon gesagt mal ein paar mehr tests machen und das kontrollieren.Jetzt hab ich gerade nochmal ein paar Tests fertig und muss sagen so habe ich das beste Ergebnis inkl. Timecodes.
1. TS file in mkv muxen
Das mkv ist nach diesem Step noch synchron
2. Timecodes extrahieren
3. Tracks extrahieren
4. Testweise alles wieder in ein mkv muxen
Codemkvmerge --title "CSI NY" -o CSI_NY2.mkv --timecodes 0:video.tmc video.h264 --track-name 0:german --language 0:ger --timecodes 0:audio.tmc audio.ac3
Dieses mkv ist auch synchron
5. Video track mit x264 encodieren (Normal verwende ich crf 23 und preset slow... dies ist nur für den test)
Codetime x264 --crf 25 --vbv-maxrate 40000 --vbv-bufsize 30000 --profile high --level 41 --tune film --preset superfast -o video.x264 CSI_NY.mkv
6. Encodierten Video track mit timecode und Audio track muxen
Codemkvmerge --title "CSI NY" -o CSI_NY3.mkv --timecodes 0:video.tmc video.x264 --track-name 0:german --language 0:ger audio.ac3
Ich glaub soweit sollte jetzt alles passen, den jetzt meldet x264 auch keinen index Fehler mehr beim starten.
-
Das ist jetzt aber wieder etwas anderes, als Du in Beitrag #34 geschrieben hast?
-
Richtig. Wenn ich nicht den x264 Track direkt mit x264 encodiere sondern das mkv aus Schritt 1 als input angebe, scheint danach alles zu passen wenn ich auch die video Timecodes angebe. Bei diesem Versuch muss ich dann auch keine Audio delay manuell eingeben.
Sorry wenn das etwas Verwirrung stiftet, aber ich hab alles mögliche probiert und dies scheint bisher das beste zu sein was ich hin bekommen habe.
Jetzt stellt sich mir nur noch die Frage wie ich das mit dem crop, cropdetect und Schnitt (avconv options -t und -ss) mache.
-
Also ist der einzige Unterschied zwischen #6 und #37 der, daß Du x264 mit der .mkv anstatt der extrahierten .h264 gefüttert hast?
So ganz glauben kann ich das noch nicht, sind doch laut Deiner Aussage die Timecodes meist 20ms (also 50 fps) lang, und deren Erstellung hat sich nicht geändert, oder? Oder ich übersehe gerade etwas... -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!