-fflags +genpts を使用すると ffmpeg がハングする

-fflags +genpts を使用すると ffmpeg がハングする

ffmpeg 4.2.4-ubuntu0.1 を使用して、.vob ファイル (vobcopy を使用して取得) を mp4 コンテナー (mkv でも同じことができます) に再多重化しようとしています。 最初は再多重化は完了しましたが、次のエラーが発生しました。

[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 が何らかの理由で停止し (ただし、CPU は 100% で動作し続けます)、killCtrl + 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何が問題の原因で、どうすれば解決できるのかはわかりませんが、うまく機能したので満足しています。

関連情報