Behebung eines fehlerhaften öffentlichen Atoms, das bei Verwendung von ffmpeg copy gefunden wurde

Ich habe eine .mov-Datei mit einer Reihe von Audio- und Video-Streams, die ich (wenn das der richtige Begriff ist) in separate Dateien demuxen möchte (zunächst 1 pro Stream), ohne an Qualität oder Auflösung zu verlieren

Wenn ich den Befehl verwende

ffmpeg -i c:\ffmpeg\VideoFile.mov -c copy -map 0:v:1 -map 0:d Vid1.mov

Ich erhalte eine Videodatei Vid1.mov, aber sie wirft einen Fehler, wenn ich versuche, sie in QuickTime abzuspielen, das Original wird ohne Fehler wiedergegeben. Während der Kopierausführung wird der folgende Fehler aufgelistet

fps 600 is too large1 q=-1.0 size= 1455730kB time=01:06:34.72 bitrate=2985.3kbits/s speed= 470x

Unten ist die ffprobe-Ausgabe für die Datei, die ich versuche zu demuxen (in Komponenten zerlegen)

>ffprobe c:\ffmpeg\VideoFile.mov ffprobe version N-78964-g5061579 Copyright (c) 2007-2016 the FFmpeg developers built with gcc 5.3.0 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 19.100 / 55. 19.100 libavcodec 57. 28.100 / 57. 28.100 libavformat 57. 28.100 / 57. 28.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 39.102 / 6. 39.102 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0000026982a1dea0] multiple edit list entries, a/v desync might occur, patch welcome Last message repeated 8 times [mov,mp4,m4a,3gp,3g2,mj2 @ 0000026982a1dea0] Using non-standard frame rate 250/1 [aac @ 0000026982a22020] element type mismatch 1 != 0 [h264 @ 0000026982a22dc0] Increasing reorder buffer to 1 [h264 @ 00000269850ea500] Increasing reorder buffer to 1 [h264 @ 0000026982a2f920] Increasing reorder buffer to 1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'c:\ffmpeg\VideoFile.mov': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt creation_time : 2015-11-14 19:26:59 Duration: 01:08:02.11, start: 0.240040, bitrate: 14867 kb/s Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/bt709), 702x576, 3226 kb/s, SAR 59:54 DAR 767:576, 25 fps, 25 tbr, 25k tbn, 50 tbc (default) Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler encoder : H.264 timecode : 01:10:08:99 Stream #0:1(eng): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 74 kb/s (default) Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler Stream #0:2(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2992 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default) Metadata: rotate : 0 creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler encoder : H.264/AVC Side data: displaymatrix: rotation of -0.00 degrees Stream #0:3(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 157 kb/s Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler Stream #0:4(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 3005 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default) Metadata: rotate : 0 creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler encoder : H.264/AVC Side data: displaymatrix: rotation of -0.00 degrees Stream #0:5(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 157 kb/s Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler Stream #0:6(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 5020 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default) Metadata: rotate : 0 creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler encoder : H.264/AVC Side data: displaymatrix: rotation of -0.00 degrees Stream #0:7(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 157 kb/s Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler Stream #0:8(eng): Data: none (tmcd / 0x64636D74) (default) Metadata: creation_time : 2015-11-14 19:26:59 handler_name : Apple Alias Data Handler reel_name : CUSTOM TimeCode track [P 1] timecode : 01:10:08:99 Unsupported codec with id 0 for input stream 8

Update: 4. Mai 2016 VLC spielt mehrere Streams ohne (offensichtliche) Probleme. Ich habe gesehen, dass es in den Kommentaren erwähnt wurde. Ich habe die Datei in ihre Komponentenströme aufgeteilt. Mediainfo gibt an, dass sie unterschiedliche Größen haben (Höhe, Breite in Pixel), aber alle haben 25.000 fps.

Wenn ich Bild für Bild mit OpenCV und Python wiedergebe, werden die einzelnen Streams in Ordnung wiedergegeben (sehen aber etwas sprunghaft aus, als wäre die Bildrate von 25 Bildern pro Sekunde nicht korrekt).

Wenn ich die Originaldatei wiedergebe (mit OpenCV und Python), erhalte ich 1 Stream und die Meldung [mov,mp4,m4a,3gp,3g2,mj2 @ 0000026982a1dea0] Timecode-Bildrate 250/1 nicht unterstützt wird in der iPython-Konsole aufgeführt das Jupyter-Notebook, das ich verwende, um den Python-Code auszuführen

Antworten (2)

Das ist etwas knifflig. Anscheinend besteht die Videospur, die Sie zu kopieren versuchen, aus mehreren Videostreams mit möglicherweise unterschiedlichen Eigenschaften, die zusammengefügt wurden. Der MOV-Muxer von ffmpeg (der Teil, der den Stream in einen neuen Container kopiert) verarbeitet solche Streams nicht zuverlässig.

Was Sie versuchen können, ist die Ausgabe-Framerate ausdrücklich anzugeben.

ffmpeg -i c:\ffmpeg\VideoFile.mov -r 25 -c copy -map 0:v:1 -map 0:d Vid1.mov
Würde mir die Vollversion von QuickTime erlauben, die Datei zu demuxen?
Weiß nicht. Verwenden Sie normales QT nur für den gelegentlichen Gebrauch.
Habe es mit -r 25 versucht, aber immer noch den Fehler bekommen
Hinzufügen -t 01:06:34.68und prüfen. Und noch ein Befehl mit -ss 01:06:34.72before -iund check.
Welche Bedeutung haben die Werte, die Sie für -t und -ss ausgewählt haben?
Die Fehlermeldung, die Sie für große fps erhalten, tritt bei auf 01:06:34.72. Also überprüfe ich, ob da ein Stich ist. Die ssfür die 2. Befehle trimmen von dort aus für die 2. Extraktion. Die dort erzeugte Fehlermeldung sollte nützlich sein.

Ihr demuxter Stream ist möglicherweise in Ordnung. QuickTime kann durch die mov-Erweiterung verwirrt werden. Versuchen Sie stattdessen, eine .h264-Datei auszugeben. Überprüfen Sie die Wiedergabe mit ffplay. Wenn es abgespielt wird, können Sie es wieder in eine mov-Datei für QuickTime muxen.

ffplay verzeiht ungleichmäßige Streams besser. Snapchat zum Beispiel verfügt über diese Funktion, mit der Sie mehrere Videos ohne Neucodierung zu einem zusammenfügen können. VLC spielt diese gut ab, aber andere Player wie WMP decodieren sie nicht richtig.
Sehr richtig. Ich mache Annahmen über die beabsichtigte Verwendung der Streams. Es schien auch bedeutsam, dass der QT-Fehler auftrat, bevor die Wiedergabe begann.