FFmpeg でミリ秒単位の精度でビデオを分割する

FFmpeg でミリ秒単位の精度でビデオを分割する

非常に正確な時間値を持つビデオの一部を抽出しようとしています。次の方法を試しましたが、成功しませんでした。

ffmpeg -y -i <input_mp4> -ss 0.570 -f lavfi -i aevalsrc=0 -t 6.690000 -strict -2 -c:v libx264 -preset faster -crf 28 -acodec aac -map_metadata -1 -movflags faststart <output_mp4>
ffmpeg -y -ss 0 -i <input_mp4> -ss 0.570 -f lavfi -i aevalsrc=0 -t 6.690000 -strict -2 -c:v libx264 -preset faster -crf 28 -acodec aac -map_metadata -1 -movflags faststart <output_mp4>
ffmpeg -y -ss 0 -accurate_seek -i <input_mp4> -ss 0.570 -f lavfi -i aevalsrc=0 -t 6.690000 -strict -2 -c:v libx264 -preset faster -crf 28 -acodec aac -map_metadata -1 -movflags faststart <output_mp4>

これらのコマンドすべてで、長さが 6.690000 秒のビデオを抽出したかったのですが、実際に生成されたビデオの長さは 6.712000 秒でした。 これカットされていない出力ですFFmpeg

FFprobe以下は、出力ビデオの長さを取得するために使用したコマンドです。

ffprobe -i <extracted_video> -show_entries format=duration -v quiet -of csv="p=0"

私が言及していたのは求めるのドキュメントFFmpeg。上記のコマンドに何か問題がありますか、または正確な時間の長さでビデオを抽出する別の方法はありますか?

  • 入力ビデオフレームレート: 60 fps
  • 入力ビデオビットレート: 25380 kbps

答え1

このSOの質問を見てくださいffmpeg: ビデオセグメントの非常に正確な抽出
によって提案されましたマルビア

関連情報