Устранить обнаружение плохого общедоступного атома при использовании копии ffmpeg

У меня есть файл .mov с несколькими потоками аудио и видео, которые я хотел бы демультиплексировать (если это правильный термин) в отдельные файлы (для начала по 1 потоку) без потери качества или разрешения.

Когда я использую команду

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

У меня получается видео файл Vid1.mov но выдает ошибку при попытке воспроизвести в QuickTime, оригинал воспроизводится нормально без ошибок. Во время выполнения копирования отображается следующая ошибка

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

Ниже приведен вывод ffprobe для файла, который я пытаюсь демультиплексировать (разбить на составные части).

>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

Обновление: 4 мая 2016 г. VLC воспроизводит несколько потоков без (очевидной) проблемы. Я заметил, что это было упомянуто в комментариях. Я разделил файл на составляющие его потоки. Mediainfo сообщает, что они имеют разные размеры (высота, ширина в пикселях), но все они имеют скорость 25 000 кадров в секунду.

Если я воспроизвожу кадр за кадром, используя OpenCV и python, отдельные потоки воспроизводятся нормально (но выглядят немного нервно, как будто частота кадров 25 кадров в секунду неверна)

Если я воспроизвожу (используя OpenCV и python) исходный файл, я получаю 1 поток и сообщение [mov, mp4, m4a, 3gp, 3g2, mj2 @ 0000026982a1dea0] Частота кадров тайм-кода 250/1 не поддерживается, указанная в консоли iPython для работы с блокнот Jupyter, который я использую для запуска кода Python

Ответы (2)

Это довольно сложно. Судя по всему, видеодорожка, которую вы пытаетесь скопировать, состоит из нескольких видеопотоков с разными свойствами, сшитых вместе. Мультиплексор MOV ffmpeg (часть, которая копирует поток в новый контейнер) не может надежно обрабатывать такие потоки.

Что вы можете попробовать, так это явно указать выходную частоту кадров.

ffmpeg -i c:\ffmpeg\VideoFile.mov -r 25 -c copy -map 0:v:1 -map 0:d Vid1.mov
Позволит ли полная версия QuickTime демультиплексировать файл?
Не знаю. Используйте обычный QT только для случайного использования.
Пробовал использовать -r 25, но все равно получил ошибку
Добавьте -t 01:06:34.68и проверьте. И еще одна команда с -ss 01:06:34.72перед -iи проверкой.
Каково значение значений, которые вы выбрали для -t и -ss?
Сообщение об ошибке, которое вы получаете для больших кадров в секунду, появляется в 01:06:34.72. Так что я проверяю, есть ли там шов. Для ss2-й команды обрезается оттуда для 2-го извлечения. Сообщение об ошибке, созданное там, должно быть полезным.

Ваш демультиплексированный поток может быть в порядке. QuickTime может быть сбит с толку расширением mov. Вместо этого попробуйте вывести файл .h264. Проверьте воспроизведение с помощью ffplay. Если он воспроизводится, вы можете мультиплексировать его обратно в файл mov для QuickTime.

ffplay более снисходителен к неравномерным потокам. Например, в Snapchat есть такая функция, позволяющая объединять несколько видео в одно без повторного кодирования. VLC отлично их воспроизводит, но другие проигрыватели, такие как WMP, не декодируют их правильно.
Очень верно. Я делаю предположения относительно предполагаемого использования потоков. Также показалось существенным, что ошибка QT произошла до начала воспроизведения.