Обрезать видео и объединить с помощью ffmpeg-получение "немонотонных DTS в потоке вывода" ошибок

у меня есть два видео, и мне нужно отбросить оба конца для обоих видео и оставить только среднюю часть, а затем объединить средние части вместе. Оба видео имеют одинаковое происхождение-одинаковый FPS и одинаковый кодек.

что я пытаюсь сделать:

ffmpeg -i 0.mp4 -c:v h264_nvenc -preset fast -rc vbr -qmin 1 -qmax 1 -filter_complex "[0:v]trim=start=01.00:duration=03.00,setpts=PTS-STARTPTS[vmiddle]" -map [vmiddle] middle_0.mp4
ffmpeg -i 1.mp4 -c:v h264_nvenc -preset fast -rc vbr -qmin 1 -qmax 1 -filter_complex "[0:v]trim=start=01.00:duration=03.00,setpts=PTS-STARTPTS[vmiddle]" -map [vmiddle] middle_1.mp4

эти две команды вырезают только среднюю часть из каждого видео, начиная с 01.00 и заканчивая 04.00.

затем я объединить видео:

ffmpeg -y -f concat -i concat.txt -c copy concat.mp4

С concat.txt файл, очевидно, содержит:

file 'middle0.mp4'
file 'middle1.mp4'

но это не работает. Выход видео concat.mp4 содержит странные глюки и я получаю много ошибок в консоли:

[mov,mp4,m4a,3gp,3g2,mj2 @ 00000000025ead60] Auto-inserting h264_mp4toannexb bitstream filter
[concat @ 0000000000dd6bc0] DTS 34666 < 45568 out of order
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45568, current: 34666; changing to 45569. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45569, current: 35050; changing to 45570. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45570, current: 35434; changing to 45571. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45571, current: 35818; changing to 45572. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45572, current: 36202; changing to 45573. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45573, current: 36586; changing to 45574. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45574, current: 36970; changing to 45575. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45575, current: 37354; changing to 45576. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45576, current: 37738; changing to 45577. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45577, current: 38122; changing to 45578. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45578, current: 38506; changing to 45579. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45579, current: 38890; changing to 45580. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45580, current: 39274; changing to 45581. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45581, current: 39658; changing to 45582. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45582, current: 40042; changing to 45583. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45583, current: 40426; changing to 45584. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45584, current: 40810; changing to 45585. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45585, current: 41194; changing to 45586. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45586, current: 41578; changing to 45587. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45587, current: 41962; changing to 45588. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45588, current: 42346; changing to 45589. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45589, current: 42730; changing to 45590. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45590, current: 43114; changing to 45591. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45591, current: 43498; changing to 45592. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45592, current: 43882; changing to 45593. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45593, current: 44266; changing to 45594. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45594, current: 44650; changing to 45595. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45595, current: 45034; changing to 45596. This may result in incorrect timestamps in the output file.
[mp4 @ 0000000000ddbfe0] Non-monotonous DTS in output stream 0:0; previous: 45596, current: 45418; changing to 45597. This may result in incorrect timestamps in the output file.

Примечание, я уже устанавливаю временную метку презентации с setpts=PTS-STARTPTS каждое видео начинается в 00.00. Но как исправить эту немонотонную DTS? Я действительно застрял, пожалуйста, помогите.

Я знаю, что я мог бы исправить это с перекодирования видео во время конкатенации, но я действительно не могу себе этого позволить. Этот шаг является частью долгосрочной трубопровод и время имеет решающее значение, я должен сделать это с помощью копирования.

добавлено:

просила ffprobe выход для видео. Я мало что знаю о ffprobe выход, не могли бы вы объяснить, что происходит и почему существует расхождение и что это значит? (512 шагов в 1-м видео и 384 шага во 2-м видео)

Middle0 (первое видео)

Middle1 (второе видео)

9
задан Alexey Petrenko
02.05.2023 19:28 Количество просмотров материала 3587
Распечатать страницу

2 ответа

использовать

ffmpeg -i 0.mp4 -c:v h264_nvenc -preset fast -rc vbr -qmin 1 -qmax 1 -filter_complex "[0:v]trim=start=01.00:duration=03.00,setpts=PTS-STARTPTS[vmiddle]" -video_track_timescale 18000 -map [vmiddle] middle_0.mp4

эти цифры в показании ffprobe являются временными метками представления и сообщают игроку, когда отображать каждый кадр. Они выражены в терминах частоты. Таким образом, ППС 600 с разверткой от 1/1200 (или приблизительно 1200), значит времени дисплей 600 * 1/1200 = 0,5 секунды, как это делает ППС 700 с приблизительно 1400. Теперь, когда присоединились два видео с разных timebases, результат не будет корректным, т. к. ffmpeg будет принять развертки из первое видео как окончательная стоимость. Я добавил параметр, чтобы сделать эти формы.

2
отвечен Gyan 2023-05-04 03:16

по состоянию на https://trac.ffmpeg.org/wiki/Concatenate

у меня была такая же проблема. Я запускаю ffmpeg версии 2.6.3 на mac. Я преобразовал мои исходные клипы в.Формат MTS с добавленным тегом-q 0, обновил расширения в текстовом файле и установил мой выходной файл в a .MTS, когда я запустил команду concat в ffmpeg. Это сработало как заклинание. Вот мой рабочий процесс.

ffmpeg -i clip-1.MOV -q 0 clip-1.MTS

ffmpeg -i clip-2.MOV -q 0 clip-2.MTS

обновление текстовом файле (списке "мой список".txt) читать:

file clip-1.MTS
file clip-2.MTS

затем выполните команду concat следующим образом:

ffmpeg -f concat -i mylist.txt -c copy output.MTS

работал на меня! Вы можете преобразовать окончательный вывод.МТС к любому формату вам.

0
отвечен Duncan Lindsey 2023-05-04 05:33

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх