Ok danke.
Wenn ich ein jpeg aus dem Video extrahiere, frage ich mich was das cropdetect da überhaupt erkannt hat.
Ich sehe nicht wirklich einen schwarzen Rand in diesem Bild.
Ok danke.
Wenn ich ein jpeg aus dem Video extrahiere, frage ich mich was das cropdetect da überhaupt erkannt hat.
Ich sehe nicht wirklich einen schwarzen Rand in diesem Bild.
Kann mir einer von euch kurz sagen wie ich die cropdetect Ausgabe von avconv schnell auf x264 umwandle?
Original resolution: 1920x1080
[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.
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:
GeneralComplete name : video_yuv4.264
Format : AVC
Format/Info : Advanced Video Codec
File size : 3.84 GiB
Video
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : MBAFF
Writing library : x264 core 123 r2189 35cf912
Encoding settings : cabac=1 / ref=1 / deblock=1:-1:-1 / analyse=0x3:0x3 / me=dia / subme=1 / psy=1 / psy_rd=1.00:0.15 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=12 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=tff / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=0 / rc=crf / mbtree=0 / crf=25.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=40000 / vbv_bufsize=30000 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / pb_ratio=1.30 / aq=1:1.00
Alles anzeigen
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.
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.
Track 1: Video, Codec-ID: V_MPEG4/ISO/AVC (h.264-Profil: High @L4.0), Standarddauer: 40.000ms (25.000 Bilder pro Sekunde im Falle eines Video-Tracks), Sprache: und, Pixelbreite: 1920, Pixelhöhe: 1080, Anzeigebreite: 1920, Anzeigehöhe: 1080
Track 2: Audio, Codec-ID: A_AC3, Standarddauer: 32.000ms (31.250 Bilder pro Sekunde im Falle eines Video-Tracks), Sprache: ger, Abtastfrequenz: 48000, Kanäle: 6
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x0bf6df0c
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0xceffd557
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x0bdde29e
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x255cce4f
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x4b6de4c2
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0xe73cd103
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x181edad9
I Frame, Track 2, Zeitstempel 0 (00:00:00.000), Größe 1534, Adler 0x16a6e894
I Frame, Track 1, Zeitstempel 229 (00:00:00.229), Dauer 180.000, Größe 71472, Adler 0x564f07fb
I Frame, Track 2, Zeitstempel 256 (00:00:00.256), Größe 1534, Adler 0xb60fd2b6
I Frame, Track 2, Zeitstempel 256 (00:00:00.256), Größe 1534, Adler 0x5df1f600
Alles anzeigen
Der Stream startet also schon mit einem I-Frame.
WIe könnte ich das den prüfen?
Ich mach gerne alles was zur Klärung dieses Themas führt, aber um ehrlich zu sein bin ich jetzt erstmal richtig happy, dass das Encoding fehlerfrei und synchron funktioniert.
Laut mediainfo ist die Aufnahme nur "interlaced", zumindest steht bei scan type nichts von progressive.
Woher kommen den die restliches Frames her? Den 2*89989 ist 179978 und nicht 180020. Woher kommen also die anderen 42 frames?
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.
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
Das mkv ist nach diesem Step noch synchron
2. Timecodes extrahieren
3. Tracks extrahieren
4. Testweise alles wieder in ein mkv muxen
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)
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
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.
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.
Ich habe endlich rausgefunden wie ich alles synchron bekomme.
Wenn man Schritt 6 nicht so:
[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:
[/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?
Woran kann das liegen das es manchmal 60ms sind?
Einen test mit x264 und --fps 25 und --demuxer lavf lasse ich gerade laufen.
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.
ffms [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
Alles anzeigen
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
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)
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
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.
General 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 <
Alles anzeigen
Also der Encode über die GUI hat einwandfrei funktioniert und ist auch perfekt synchron.
Ich werde dann heute abend mal die CLI Variante probieren.
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.
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.