2

私はgstreamer applemedia エンコーダー プラグインに取り組んでおり、VideoToolbox ベースのビデオ エンコーディングを改善しました。次のような gstreamer パイプラインを実行します。

$ gst-launch-1.0 filesrc location=source.avi ! decodebin  ! vtenc_h264 ! h264parse ! qtmux name=mux ! filesink location=sink.mp4

VTCompressionSessionMac OS システムを使用して h264 ビデオをエンコードする場合、CPU 使用率が非常に低いと予想していました。ただし、私がテストしたシステムでは、GeForce 9600M を搭載した 2009 年半ばの Macbook Pro と Radeon HD 6630M を搭載した 2011 年半ばの Mac mini では、エンコーディングは依然として 80% から 130% の CPU を消費します。

どのハードウェア構成で、または特定の圧縮パラメーター (たとえば、どのkVTCompressionPropertyKey_ProfileLevel)でVTCompressionSessionハードウェア アクセラレーション エンコーディングを使用しますか?

4

2 に答える 2

5

http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/sys/applemedia/vtenc.cによると、encoderSpecification パラメーターの VTCompressionSessionCreate() に NULL を渡しています。kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder を kCFBooleanTrue に設定して、エンコーダ仕様辞書を作成します。

于 2014-02-01T02:17:00.533 に答える
1

上記のパイプラインは、実際に高い CPU 使用率の原因となっているのがエンコード プロセスであるかどうかを判断する上ではあまり役に立ちません。ストリーム内のクロックとの同期はありません。つまり、デコード/エンコードのプロセス全体が可能な限り高速になります。

decodebin はおそらくソフトウェア デコーダを使用しているため、発生している CPU 使用率が高いのは、デコード プロセスが原因である可能性が最も高いです。

出力を次のものと比較することをお勧めします。

gst-launch-1.0 videotestsrc is-live=true ! vtenc_h264 ! qtmux ! filesink location=test.mp4

特に「is-live=true」プロパティに注意してください。これは、videotestsrc にライブ ソースとして機能するように指示しているため、一定の速度でバッファをプッシュし、ダウンストリームがそれらを消費できるほど速くはありません。

于 2013-10-17T00:51:40.527 に答える