ffmpeg зависает при использовании -fflags +genpts

ffmpeg зависает при использовании -fflags +genpts

Я пытаюсь перепаковать файл .vob (который я получил с помощью vobcopy) в контейнер mp4 (mkv тоже это сделает) с помощью ffmpeg 4.2.4-ubuntu0.1. Изначально перепаковка завершилась, но я получил эти ошибки:

[mp4 @ 0x560f9a37e5c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly

и несколько тысяч раз

[mp4 @ 0x560f9a37e5c0] pts has no value

Поэтому я попытался исправить это с помощью -fflags +genpts:

ffmpeg -fflags +genpts -i 'video.vob' -c copy 'video.mp4'

После обработки около 90000 кадров ffmpeg каким-то образом зависает (но процессор продолжает работать на 100%) и его можно остановить только с помощью killсочетания клавиш Ctrl+C.

Я попробовал сделать то же самое с другим файлом .vob, и на этот раз ffmpeg завис в другой точке.


При создании полного журнала отладки я заметил, что после прерывания программы вывод всегда показывает один и тот же последний отредактированный кадр (92775). Здесь вы можете его просмотреть:https://paste.ubuntu.com/p/tbhMmpQwff/

решение1

Я исправил проблему, добавив флаг +igndts:

ffmpeg -fflags +genpts+igndts -i 'video.vob' -c copy 'video.mp4'

Это привело к появлению некоторых сообщений об ошибках в точке, где ffmpeg ранее зависал, но созданный видеофайл был в порядке.

[mp4 @ 0x56482f355a00] Invalid DTS: 333993600 PTS: 0 in output stream 0:0, replacing by guess
[mp4 @ 0x56482f355a00] Non-monotonous DTS in output stream 0:0; previous: 334018800, current: 334018800; changing to 334018801. This may result in incorrect timestamps in the output file.

Я не уверен, что вызвало проблему и как +igndtsее исправить, но я рад, что это работает.

Связанный контент