1

だから、私は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 を抽出するための正しいパイプの例は何でしょうか?

4

1 に答える 1