2

Raspberry Pi 用の新しいカメラ アドオンの 1 つがあります。まだ video4linux をサポートしていませんが、1080p h264 ストリームを吐き出す小さなプログラムが付属しています。これが機能することを確認し、ビデオを標準出力にプッシュしました:

raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o -

このストリームを処理して、最終的にビデオのスナップショットを 1 秒に 1 回取得したいと考えています。

1080p であるため、H264 エンコーディングには rpi のハードウェア サポートを使用する必要があります。これをサポートするアプリは gstreamer だけだと思う​​ので、ffmpeg または avconv を使用したソリューションは機能しません。http://www.trans-omni.co.uk/pi/GStreamer-1.0/build_gstreamerのビルド スクリプトを使用して、gstreamer とハードウェア H264 エンコーディング用のプラグインを作成しましたが、動作しているように見えます。

root@raspberrypi:~/streamtest# GST_OMX_CONFIG_DIR=/etc/gst gst-inspect-1.0 | grep 264
...
omx:  omxh264enc: OpenMAX H.264 Video Encoder
omx:  omxh264dec: OpenMAX H.264 Video Decoder

そのため、stdin でビデオを取得し、1 秒に 1 回新鮮な jpeg を吐き出す gst-launch パイプラインを構築する必要があります。gstreamer の 'multifilesink' シンクを使用してこれを行うことができることを知っているので、次の短いスクリプトを作成して起動します。

root@raspberrypi:~/streamtest# cat test.sh
#!/bin/bash

export GST_OMX_CONFIG_DIR=/etc/gst

raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o - |  \
gst-launch-1.0 fdsrc fd=0 ! decodebin ! videorate ! video/x-raw,framerate=1/1 ! jpegenc ! multifilesink location=img_%03d.jpeg

問題は、それが機能しないことです: gstreamer は、プリロール状態で永遠に座っているだけで、貴重な jpeg を吐き出すことはありません。

root@raspberrypi:~/streamtest# ./test.sh
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
[waits forever]

gstreamer の -v フラグを設定した出力が役立つ場合は、http://pastebin.com/q4WySu4Lにあります。

誰かが私が間違っていることを説明できますか?

4

1 に答える 1