2

Windows画面(連続スクリーンショット)をキャプチャしてx264にエンコードしようとしています。そのために、libavcodecで使用可能なavcodec_encode_video2関数を使用しています。ただし、かなりの時間がかかります。個々のフレームをエンコードする時間は、25〜1800ミリ秒の間で変動します。

画面にビデオを録画して、1080pと720pの両方を試してみました。

これらは私が使用している設定です。これは、4GBのRAMを搭載したWindows7、win32リリースビルドでテストされました。

bit_rate = 2000、width = 1920、height = 1080 qmin = 0、qmax = 0、max_b_frames = 0、frame_rate = 25、pixel_format = YUV 4:4:4。残りの設定はデフォルトであり、avcodec_get_context_defaults3()を使用してフェッチされます。

250フレームのセットで20フレーム(連続してランダムに選択)のサンプルデータ(ミリ秒単位)。{121、106、289、126、211、30、181、58、213、34、245、50、56、364、247、171、254、83、82、229}

アプリケーションの場合、少なくとも15fpsをキャプチャする必要があります。フレームレートを改善するためにオプションを使用できるかどうかを誰かが教えてくれますか?ロスレスでエンコードする必要がありますが、ファイルサイズがいくらか大きくなる可能性があります。

前もって感謝します。

4

1 に答える 1

1

この問題の簡単な解決策は、avcodecを経由するのではなく、libx264を直接使用することです。これにより、x264をより適切に制御できるようになり、エンコード速度が向上します。avcodecを使用すると、不要な処理も実行されます。これはlibx264で回避できます。

話の教訓は、x264APIを直接使用することです。

于 2012-12-20T06:13:50.263 に答える