выдает ffmpeg "Немонотонный DTS в выходном потоке"

604
cwinthrop

Поэтому я пытаюсь объединить 3 видеофайла. Я использую Linux, и командная строка выглядит так:

ffmpeg -f concat -safe 0 -i blist.txt -c copy output.mp4 

blist.txt содержит это:

file 'btest/00 - Test Pattern.mp4' file 'btest/01 - In Memoriam.mp4' file 'btest/EndLoop.mp4' 

Как только он начинает обрабатывать второй файл, он выдает такие ошибки, но продолжает работать:

Non-monotonous DTS in output stream 0:0; 

Полученный файл должен иметь длину 4:13, но в итоге он будет иметь длину 9:57. Первый клип воспроизводится отлично, но после этого весь черный экран с нужным звуком для оставшихся 4:13, затем тишина.

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

Подробности о каждом входе и ffmpeg:

ffmpeg version N-92086-gd702769 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609 configuration: --disable-x86asm libavutil 56. 19.101 / 56. 19.101 libavcodec 58. 31.102 / 58. 31.102 libavformat 58. 18.103 / 58. 18.103 libavdevice 58. 4.105 / 58. 4.105 libavfilter 7. 33.100 / 7. 33.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'upload/00 - Test Pattern.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.40.101 Duration: 00:02:26.87, start: 0.000000, bitrate: 243 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 106 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : SoundHandler Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'upload/01 - In Memoriam.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.40.101 Duration: 00:01:32.07, start: 0.000000, bitrate: 219 kb/s Stream #1:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 82 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : SoundHandler Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'upload/99 - End Loop.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.40.101 Duration: 00:00:15.05, start: 0.000000, bitrate: 236 kb/s Stream #2:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 99 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: handler_name : VideoHandler Stream #2:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : SoundHandler At least one output file must be specified 

Может кто-нибудь помочь мне с этим?

1
Это должен быть `mp4` или вы могли бы использовать` mkv`? Вы должны иметь в виду, что вы не всегда можете объединять аудио / видео потоки. Daniel B 6 лет назад 0
Это не должно быть, но это было бы идеально. cwinthrop 6 лет назад 0
Показать полный вывод `ffmpeg -i" 00 - Test Pattern.mp4 "-i" 01 - In Memoriam.mp4 "-i" EndLoop.mp4 "` LordNeckbeard 6 лет назад 0
@LordNeckbeard Слишком долго вставлять сюда. https://paste.ee/p/d7QEr cwinthrop 6 лет назад 0
Каким игроком вы пользуетесь? Как вы создали файлы? Глядя на вывод консоли, я не вижу ничего явно неправильного, может быть, я что-то упустил, но, возможно, если вы предоставите ссылку на входные файлы, я смогу более внимательно посмотреть. LordNeckbeard 6 лет назад 0
Проблема была решена около 15 минут назад путем преобразования файлов в .mkv с помощью этой команды: `ffmpeg -i" input / $ t.mp4 "-c: копия -c: v копия" output / $ o.mkv "` cwinthrop 6 лет назад 0

1 ответ на вопрос

0
cwinthrop

Короче говоря, после долгих испытаний и неудач кто-то был достаточно любезен, чтобы помочь мне изменить формат с .mp4 на .mkv, что прекрасно работает.

Точная команда была:

 ffmpeg -i "input/$t.mp4" -c:a copy -c:v copy "output/$o.mkv" 

Похожие вопросы