だから、私はgstreamerをいじり始めて、次のような非常に単純なパイプを行うことができます
gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=640,height=480,framerate=10/1 ! videoconvert ! autovideosink
ここで、私の USB ウェブカメラ (video1、video0 はコンピュータの内蔵カメラ) が h264 をサポートしているため (を使用して確認しlsusb
ました)、h264 フィードを直接取得したいと思います。このフィードが mjpeg に多重化されていることは理解していますが、ウェブを見回すと、それでも gstreamer で取得できるようです。
私の最終的な目標は Beaglebone からストリーミングすることなので、この投稿に記載されている解決策を使用して試みました (別の端末からリスナーを追加する):
#sender
gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-264,width=320,height=90,framerate=10/1 ! tcpserversink host=192.168.148.112 port=9999
しかし、これにより次のエラーが発生します。
WARNING: erroneous pipeline: could not link v4l2src0 to tcpserversink0
ソースをrawからh264に変更して、最初のコマンドと同様のことも試しました(その投稿に基づいて、そこに指定された完全なコマンドを試すと同じエラーメッセージが表示されます)
gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-h264,width=640,height=480,framerate=10/1 ! h264parse ! avdec_h264 ! autovideosink
しかし、これもうまくいきませんでした:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.036309961
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
私はこれが私をかなり夢中にさせていることを認めます.SOまたはウェブ上の他の場所を見ると、私が持っているものとまったく同じウェブカメラ(Logitech C920)で動作させた人がたくさんいるようですが、私は何度も遭遇します.次々と出題。
そのウェブカメラから h264 を抽出するための正しいパイプの例は何でしょうか?