首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GStreamer + V4L2loopback作为Chrome兼容摄像头

GStreamer + V4L2loopback作为Chrome兼容摄像头
EN

Stack Overflow用户
提问于 2014-03-16 16:03:42
回答 1查看 8K关注 0票数 9

我正试图用v4l2loopback在Chrome中创建一个虚拟摄像头,其中的视频是通过RTP输入的H264。

我已经取得了一些成功的GStreamer测试视频识别在Chrome与MediaStreamTrack.getSources

代码语言:javascript
复制
$ sudo modprobe v4l2loopback
$ gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video0

这很好,Chrome将显示视频测试源。

但是,当我使用传入的H 264/RTP源时,设备不会出现在MediaStreamTrack.getSources中。例如:

代码语言:javascript
复制
gst-launch-1.0 -v tcpclientsrc host=<IPADDRESS> port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! v4l2sink device=/dev/video0

原因是什么?解决办法是什么?

我曾想过,这可能与视频格式有关,也许需要通过v4l2loopback设置正确的上限。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-26 10:55:35

这看起来像是gstreamer或v4l2loopback中的一个bug。它与可变帧速率的处理方式有某种关系。

我用这种方式复制了它:

启动从网络传输视频到/dev/video0的管道

代码语言:javascript
复制
$ gst-launch-1.0 -v tcpserversrc port=5000 \
    ! gdpdepay ! rtph264depay \
    ! decodebin \
    ! v4l2sink device=/dev/video0

启动管道将视频传输到5000端口

代码语言:javascript
复制
$ gst-launch-1.0 -v videotestsrc \
    ! x264enc ! rtph264pay ! gdppay \
    ! tcpserversink port=5000

尝试从/dev/video0获取视频

代码语言:javascript
复制
$ gst-launch v4l2src device=/dev/video0 ! autovideosink
...
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device '/dev/video1' is not a capture device.

现在,注意第一个管道的调试日志中v4l2sink的上限。

代码语言:javascript
复制
/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0.GstPad:sink: caps = video/x-raw, format=(string)I420, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)bt601, framerate=(fraction)0/1

它提到了framerate=(fraction)0/1。用gstreamer的术语来说,这意味着帧速率是可变的。根据v4l2sink的源代码,它似乎将相同的帧速率提供给v4l2loopback内核模块,但是v4l2loopback不理解零帧速率。

(这只是假设,仍然需要检查是否真的发生了这种情况。)

要解决这个错误,您可以修正帧速率。只需将videorate元素添加到第一个管道:

代码语言:javascript
复制
$ gst-launch-1.0 -v tcpserversrc port=5000 \
    ! gdpdepay ! rtph264depay \
    ! decodebin \
    ! videorate ! video/x-raw, framerate=25/1 \
    ! v4l2sink device=/dev/video0
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22439221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档