【问题标题】:Use gstreamer to stream video and audio of Logitech C920使用 gstreamer 流式传输罗技 C920 的视频和音频
【发布时间】:2014-05-06 21:52:35
【问题描述】:

我是使用 gstreamer 的新手。我想将 C920 网络摄像头中的视频和音频流式传输到另一台 PC,但在组合时总是出错..

我现在可以使用以下方式将 h264 视频从 C920 流式传输到另一台 PC:

gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! rtph264pay pt=127 config-interval=4 ! udpsink host=172.19.3.103

并通过以下方式查看:

gst-launch-1.0 udpsrc port=1234 ! application/x-rtp, payload=127 ! rtph264depay ! avdec_h264 ! xvimagesink sync=false

我还可以从 C920 获取音频并将其与测试图像一起记录到文件中:

gst-launch videotestsrc ! videorate ! video/x-raw-yuv,framerate=5/1 ! queue ! theoraenc ! queue ! mux. pulsesrc device="alsa_input.usb-046d_HD_Pro_Webcam_C920_F1894590-02-C920.analog-stereo" ! audio/x-raw-int,rate=48000,channels=2,depth=16 ! queue ! audioconvert ! queue ! vorbisenc ! queue ! mux. oggmux name=mux ! filesink location=stream.ogv

但我试图让这样的东西(下)工作..这个不工作,大概它甚至是我做的一个非常糟糕的组合!

gst-launch v4l2src device=/dev/video1 ! video/x-h264,width=1280,height=720,framerate=30/1 ! queue ! mux. pulsesrc device="alsa_input.usb-046d_HD_Pro_Webcam_C920_F1894590-02-C920.analog-stereo" ! audio/x-raw-int,rate=48000,channels=2,depth=16 ! queue ! audioconvert ! queue ! x264enc ! queue ! udpsink host=127.0.0.1 port=1234

【问题讨论】:

    标签: gstreamer gst-launch


    【解决方案1】:

    您应该先对视频进行编码,然后再将其链接到多路复用器。另外,我没有看到您声明您正在使用的多路复用器类型,并且您没有将音频放入多路复用器中。

    我不确定是否可以在 gstreamer 中以这种方式通过相同的 rtp 流发送音频和视频。我知道 gstreamer 中的 rtsp server implementation 允许 audio and video together 但即使在其中我也不确定它是否仍然只是从实现中抽象出来的两个流。

    您可能只想使用 分隔流并将它们传递给gstrtpbin element

    【讨论】:

    • 我得到了以下命令:gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-h264,width=1280,height=720,framerate=30/1 ! h264parse ! muxout. pulsesrc device="alsa_input.pci-0000_00_1b.0.analog-stereo" ! queue ! audioconvert ! voaacenc bitrate=65536 ! aacparse ! muxout. mpegtsmux name=muxout ! queue ! tcpserversink host=192.168.2.13 port=5000' 我的意思是,它确实混合了视频和音频并通过网络播放。但是几个小时后,音频消失了,直到我重新启动后才能恢复(我猜是有记忆的东西?)。
    • 图像每秒都会卡顿。我应该如何进行编码?您是否有示例或示例链接?谢谢!
    • @skipx 您可能应该在您的大写过滤器和h264parse 之间放置一个x264enc,以便您实际对其进行编码。是否必须重新启动流媒体或接收器?可能是内存问题。您应该允许它丢弃数据包或在接收器的接收器上设置延迟 max-lateness 以忽略太晚的数据包,而不是增加缓冲区。
    • 您的意思是将h264parsevideo/x-h264,width=1280,height=720,framerate=30/1 ! x264enc ! h264parse 一样放置吗?因为如果我这样做,我会得到“无法将 v4l2src0 链接到 x264enc0”关于重新启动,嗯,计算机.. 现在我使用 `cvlc tcp://172.19.3.106:5000' 作为客户端
    • @skipx 我刚刚看到相机正在将其自动编码为 H264。抱歉,请忽略我所说的关于 x264enc 的内容...如果您的接收器无法及时解码和显示任何缓冲区并不断使用更多内存,则它们可能不允许丢弃任何缓冲区。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2012-11-06
    • 1970-01-01
    • 2011-12-21
    • 2016-06-20
    • 2012-02-25
    • 2013-09-22
    • 2019-01-26
    相关资源
    最近更新 更多