2010-12-11 6 views
4

非常に長い時間(数分から数時間)シーンの変化が非常に少ないビデオストリームがあるとします。 FFmpegを使用して、生のビデオをh.264にトランスコードすると、メガの冗長性を利用するためにどのような設定を行うことができますか?非常に小さなシーン変更のある非常に長いシーンのための積極的なh.264圧縮設定

最小キーフレーム間隔の設定をmax(それが何であれ)に設定するのは簡単ですか?

FFmpegを拡張してシーンを変更せずに非常に長い時間を有効に利用できるようにするためのスペースがh.264仕様にありますか?

+0

は、ビデオストリームのためにそれはありますが、またはビデオファイルですか? – osgx

+0

ビデオストリームです。私は非常にまれにしか変化しないMJPEGストリームをトランスコードしたいと思います(ほとんど動きのないホールをビデオカメラが見ていると想像してください)。 MJPEGは、1〜5分(超低帯域幅のカメラ)ごとに1回のみ良好な品質であり、圧縮ノイズはほとんどありません。 – michael

+0

他の制約のために、私はh.264にトランスコードしています。 – michael

答えて

4

まず、FFmpeg自体がh264をエンコードするのではなく、x264がエンコードすることに注意してください。

はい、異常に長いと定義すると、動きがほとんどないか、まったくない動画のサイズが大幅に縮小されます(keyframe)。どうして? 「キーフレーム」はすべてのビデオデータ(スナップショット)を含むフレームです。他のすべてのフレームはキーフレームとの差分です。これを行うには、中間フレームに何らかの破損があると、次のキーフレームが表示されるまでビデオが破損することに注意してください。

FFmpegでエンコードする際にキーフレーム間隔を明示的に設定するには、-gスイッチを使用します。ビデオが毎秒25フレームで、ビデオの1分に1回キーフレームを表示したい場合は、FFmpegのコマンドラインに-g 1500を追加してください。 (25 F/SX 60秒= 1500 f)は

ここに文書化されているその多くは、あなたがあなたに興味があるかもしれに関するキーフレームを制御することができ、他の興味深い側面、があります。x264 ffmpeg mapping and options guide

+0

キーフレームの間隔には注意が必要です。キーフレーム間の長さが長すぎる場合は、検索するフレームと前のキーフレームとの間のすべてのフレームがデコードされる必要があるため、シークまたは検索の高速化が難しく時間がかかります。 – Serafeim

関連する問題