2017-10-26 17 views
0

からH264ストリームを抽出し、私はのgstreamerで遊ぶために始めていると私は、このようなだからUSBウェブカメラ(ロジクールC920)

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からそれをストリーミングすることですので、私は(別の端末からリスナーを追加)this postに与えられた溶液を用いた試みをした:

#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 

私も

012( that postに基づいて、そこに与えられた完全なコマンドをしようとすると、同じエラーメッセージが表示されます)生から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を抽出する正しいパイプの例は何ですか?

答えて

0

ワイヤに当たる前に必ずペイロードを使用する必要があります。たとえばrtph264payです。ここでは、ハードウェアを使用できないためテストできない例を示します。これがあなたを正しい方向に向けることができない場合は、代替ソースからのudpの例を使用しています。

サーバー

gst-launch v4l2src device=/dev/video1 \ 
! video/x-264,width=320,height=90,framerate=10/1 \ 
! x264enc \ 
! queue \ 
! rtph264pay, config-interval=3, pt=96, mtu=1500 \ 
! queue \ 
! tcpserversink host=127.0.0.1 port=9002 

クライアント

gst-launch tcpserversrc host=127.0.0.1 port=9002 \ 
! application/x-rtp, media=video, clock-rate=90000, encoding-name=H264, payload=96 \ 
! rtph264depay \ 
! video/x-h264 \ 
! queue \ 
! ffdec_h264 \ 
! queue \ 
! xvimagesink 
関連する問題