Iフレームのみを含むmp4/h.264ビデオがあります。ビデオ全体を再エンコードせずに、これらのIフレームの1つをスキップしたいと思います。私はこれを試しました:
ffmpeg -i "file.mp4" -vf select='not(eq(n\,10))' "out.mp4"
しかしもちろん、これは実際には再エンコードを行います。
ソリューションでffmpegを使用することをお勧めしますが、Linuxで実行されるプログラムであれば問題ありません。
明確にするために、ビデオにはPまたはBフレームが含まれていません。
単一のIフレームを削除する場合は、ビットストリームをAnnex B形式に抽出する必要があります(例:ffmpeg -i input.mp4 -c:v copy -an output.h264
、次に バイトを検索 NALユニットを表す)削除するフレームが含まれています。次の開始コードまでそれらのバイトを削除し、ストリームを保存します。
または、-frames:v
オプションを使用して最初のnフレームを抽出することにより、ビデオをスプライスすることができます。
ffmpeg -i input.h264 -c:v copy -frames:v n output.h264
次に、-ss
パラメータを使用して、最初からやり直したい位置を探し、そこから同じ方法で切り取ることができます。 n + 1にフレームレートを掛けることで位置を見つけることができます。
再エンコードしたくない場合、私が知っている簡単な方法はありません。