Beiträge von morlix

    Kann mir einer von euch kurz sagen wie ich die cropdetect Ausgabe von avconv schnell auf x264 umwandle?

    Original resolution: 1920x1080

    Code
    [cropdetect @ 0x1c5c9e0] x1:1 x2:1919 y1:2 y2:1079 w:1904 h:1072 x:10 y:6 pos:0 pts:600120000 t:600.120000 crop=1904:1072:10:6

    Ich habe jetzt mal testweise folgende crop Werte für x264 angewendet.

    crop:8,4,8,4

    Wenn ich allerdings die man page avconv richtig verstehe, sollte es eher so sein.

    crop:10,6,6,2

    Ein andere hatte hier ja noch handbrake vorgeschlagen. Hat das zum Erfolg geführt?

    Ja hat es. Einen CLI test habe ich noch nicht gemacht.

    Basierend auf Beitrag #37 solltest Du:
    1. das Schneiden am sinnigsten direkt nach dem Multiplexen nach mkv mit mkvmerge (siehe: https://www.bunkus.org/videotools/mkv…scription.split ) machen. (Vorteil: Audio&Video&Timecodes werden geschnitten)
    2. croppen im x264 Aufruf machen:

    davon ausgegangen, dass x264 mit lav Unterstützung compiliert ist kann man sich das demuxen des Streams vorher eigentlich sparen,...

    Alles klar, das werde ich probieren und mich dann nochmal melden.
    Kann ich das Schneiden nicht gleich beim muxen des ts machen?

    Das habe ich mir schon angeschaut und wie folgt gemacht.

    Code
    avconv -i csi_ny_20110912\ 2105\ -\ VOX\ HD\ -\ CSI_NY.ts -r 25 -f yuv4mpegpipe - | x264 - --crf 25 --vbv-maxrate 40000 --vbv-bufsize 30000 --profile high --level 41 --tune film --preset superfast --demuxer y4m -o video_yuv4.264

    Herausgekommen ist dabei folgendes:

    Wenn ich dieses Video inkl. den timecodes muxen will, bricht / stürzt mkvmerge ab, da die Anzahl frames in diesem Video nicht der Anzahl aus dem video_yuv4.264 Track entsprechen.

    Das muxen ohne timecode hingegen funktioniert problemlos. Allerdings zeigt VLC kein Bild an und die Dauer ist anscheinen 10h obwohl die Aufnahme nur 1h ist.

    Was hab ich hier falsch gemacht?

    Wenn ich das richtig verstanden habe, sollte ich meine Aufnahmen nicht mit einer VFR speichern. Aber ich hab leider nicht wirklich verstanden was dies für technische Probleme bringt.

    Habt ihr noch irgendwelche Anmerkungen, was ich an meinem Prozess aus #37 ändern soll?
    Wenn nicht, mache ich mich jetzt mal daran irgendwie das croppen und rausschneiden von 5min am Anfang und x Minuten am Ende zu beschäftigen.

    Danke und Gruß morlix

    Hier nochmal eine Variante mit avconv informationen zu den Frames zu bekommen. Da avprobe leider kein -show_frames bietet habe ich diese Lösung gesucht und gefunden.

    Code
    avconv -i [COLOR=#66CC66]<[/COLOR]input [B]file[/B][COLOR=#66CC66]>[/COLOR] -filter:v [COLOR=#0000FF]showinfo[/COLOR]=n:pts:pts_time:pos:sar:s:i:iskey:[COLOR=#000066]type[/COLOR]:checksum:plane_checksum -f matroska - [COLOR=#CC66CC]1[/COLOR][COLOR=#66CC66]>/[/COLOR]dev[COLOR=#66CC66]/[/COLOR]null

    Erklärung dazu findet man unter http://libav.org/avconv.html#showinfo.


    sneaker2: Ich versuche gerade mal deinen Tipp aus #33 und melde mich dann wieder.

    Gruß morlix und danke allen die mir soweit geholfen haben!

    Aber kommt halt ganz drauf an, was man mit seinen TV Aufnahmen machen will.

    Gibt es etwas das du jetzt anderst machen würdest oder wie soll ich das verstehen?

    Selur ich hab leider nur avprobe wo es kein -show_frames gibt. Aber ich konnte es aus dem verlinkten Post mit mkvinfo herausfinden.

    Der Stream startet also schon mit einem I-Frame.

    Ich kann es auch nicht erklären, aber so ist es. Was mir aufgefallen ist, ist das mediainfo bei dem TS 25 fps und 89989 Frames anzeigt. Bei dem aus dem mkv encodierten h264 zeigt er VFR an und keine FrameCount, ich habe aber beim encoding gesehen, das er nicht 89989 frames sondern 180020 frames encodiert.

    Code
    time x264 --crf 25 --vbv-maxrate 40000 --vbv-bufsize 30000 --profile high --level 41 --tune film --preset superfast -o del.x264 CSI_NY.mkv ffms [info]: 1920x1080i 1:1 @ 50045/1001 fps (vfr)
    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 [warning]: MB rate (407959) > level limit (245760)
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
    x264 [info]: profile High, level 4.1
    x264 [info]: frame I:21    Avg QP:24.50  size:164033                             
    x264 [info]: frame P:700   Avg QP:27.03  size: 54598

    Außerdem zeigt die ffms Zeile 50045/1001 fps was ja 49,99fps entspricht. Wenn ich das daraus erstellte x264 ohne timecodes muxe, geht die Aufnahme auf einmal 2h anstatt wie mit timecode nur 1h was auch richtig ist.
    Das timecode file hat außerdem genau 180021 Zeilen, was abzüglich der ersten Header Zeile genau diesen Frames entspricht.

    Ich frage mich nun (wahrscheinlich du auch) warum mediainfo hier nicht 50fps anzeigt.

    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.

    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

    Code
    mkvmerge -o CSI_NY.mkv csi_ny_20110912\ 2105\ -\ VOX\ HD\ -\ CSI_NY.ts

    Das mkv ist nach diesem Step noch synchron

    2. Timecodes extrahieren

    Code
    mkvextract timecodes_v2 CSI_NY.mkv 1:video.tmc 2:audio.tmc

    3. Tracks extrahieren

    Code
    mkvextract tracks CSI_NY.mkv 1:video.h264 2:audio.ac3

    4. Testweise alles wieder in ein mkv muxen

    Code
    mkvmerge --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)

    Code
    time 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

    Code
    mkvmerge --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.

    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 :)

    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?

    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.

    Code
    # timecode format v2229409429449469489509569589

    x264 bringt folgende Meldungen. VIelleicht ist der Fehler am Anfang doch ernster als ich dachte.

    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

    Code
    mkvmerge -o CSI_NY.mkv csi_ny_20110912\ 2105\ -\ VOX\ HD\ -\ CSI_NY.ts

    Das mkv ist nach diesem Step noch synchron

    2. Timecodes extrahieren

    Code
    mkvextract timecodes_v2 CSI_NY.mkv 1:video.tmc 2:audio.tmc

    3. Tracks extrahieren

    Code
    mkvextract tracks CSI_NY.mkv 1:video.h264 2:audio.ac3

    4. Testweise alles wieder in ein mkv muxen

    Code
    mkvmerge --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)

    Code
    x264 --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

    Code
    mkvmerge --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.

    Nicht umsonst lautet die Empfehlung immer: DVB-Streams niemals unvorbearbeitet konvertieren. Es geht nicht nur um das Säubern von eventuellen Übertragungsfehlern, sondern auch um das Schaffen eines sauberen und synchronen Anfangs — also insgesamt um das Herstellen eines zuverlässig decodierbaren Ausgangszustandes.

    Ok, d.h. ich muss mich erstmal damit beschäftigen.

    Kannst du mir eventuell noch weitere Hinweise oder ein Beispiel wie dies geht zeigen?

    Handbrake kenne ich und werde ich mal auf meinem Laptop (mit GUI) testen.