3

gstreamer の gst-launch-1.0 が h264 ストリームを個々の jpeg として出力するように何日も試みてきましたが、1 秒あたり 1 つだけを望み、DirectShow ハードウェア アクセラレーションを使用しています。コマンドを何度も繰り返してみましたが、これが最も近いものです。

gst-launch-1.0 filesrc location=test.h264 ! decodebin ! videorate ! video/x-raw,framerate=1/30 ! jpegenc ! multifilesink location=img%03d.jpg

これにより、10 秒間の h264 ストリームから 300 jpeg が得られ、DirectShow ハードウェア インターフェイスは使用されません。

gst-inspecth264 ( ) の DirectShow デコーダーだと思っていたものを使用しようとしましvideo/x-h264たが、エラーが発生します。また、フレームレートを 1/30 から 30/1 および 1/1 に変更しようとしましたが、常に同じ 30 jpeg/秒の出力が得られます。

decodebin入力ストリームに基づいて最適なデコーダーを自動的に選択することになっていると思っていましたが、テスト マシンの CPU がその間 100% でペグする方法から判断すると、(GPU ハードウェア アクセラレーションではなく) CPU 集中型のデコーダーを使用しているようです。gstreamerプロセスの。

理想的には、ビデオの解像度とは異なる解像度で jpeg を出力したいのですが、試したすべて (幅 = 640、高さ = 480) でエラーが発生するか、jpg のサイズが変更されません。 .

4

1 に答える 1

0

これを事前に作成されたパイプラインとして行う簡単な方法があるかどうかはわかりません。ただし、フレームをカウントし、30 ごとに 29 と言うようにドロップするプローブを作成することはできます (たとえば、カウンター % 30 をインクリメントします)。ここでビデオからサムネイル/プレビューを生成したいと思いますか?

于 2013-08-14T00:23:17.817 に答える