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-inspect
h264 ( ) の DirectShow デコーダーだと思っていたものを使用しようとしましvideo/x-h264
たが、エラーが発生します。また、フレームレートを 1/30 から 30/1 および 1/1 に変更しようとしましたが、常に同じ 30 jpeg/秒の出力が得られます。
decodebin
入力ストリームに基づいて最適なデコーダーを自動的に選択することになっていると思っていましたが、テスト マシンの CPU がその間 100% でペグする方法から判断すると、(GPU ハードウェア アクセラレーションではなく) CPU 集中型のデコーダーを使用しているようです。gstreamer
プロセスの。
理想的には、ビデオの解像度とは異なる解像度で jpeg を出力したいのですが、試したすべて (幅 = 640、高さ = 480) でエラーが発生するか、jpg のサイズが変更されません。 .