webrtc - 虚拟视频设备 - v4l2loopback - webRTC

标签 webrtc webcam v4l2 vline v4l2loopback

我需要播放多个视频来测试视频服务器。我正在使用 lubuntu 14.04 并已安装 V4l2loopback制作设备文件(/dev/videoN )

我正在使用 mplayer 从该设备播放视频,如 mplayer cam 所述

我已经对源代码进行了修改,并成功播放了视频,并使用 xawtv 和 flashplayer(在 firefox 28 上)观看了视频。我曾尝试使用 webRtc 查看,但无法正常工作。

你有什么想法吗?在 examples/yuv4mpeg_to_v4l2.c 中定义了一些特定的像素格式?

......

我正在尝试使用此脚本直接访问资源来查找问题:

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">

    <title>Test rtc</title>
    <script type="text/javascript" charset="utf-8">

    navigator.getUserMedia = 
    ( 
        navigator.getUserMedia ||
        navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia ||
        navigator.msGetUserMedia
    );

    var constraints = 
    {
        audio: true,
        video:true,
        video: 
        {               
            mandatory: 
            {
              minWidth: 640,
              minHeight: 360
            }
        }
    };

    if( navigator.getUserMedia ) 
    {
        navigator.getUserMedia(

            // constraints
            constraints ,

            // successCallback
            function(localMediaStream) 
            {

                var video = document.querySelector('video');
                video.src = window.URL.createObjectURL(localMediaStream);

                video.play();

                console.log( video );
                console.log( localMediaStream );
            },

            // errorCallback
            function(err) 
            {
                console.log("The following error occured: " + err);
            }
        );
    } 
    else 
    {
        console.log("getUserMedia not supported");
    }

    </script>

</head> 
<body>
    <video>   
</body> 
</html>

视频约束取自 mplayer 输出:
VIDEO:  640x360  25.000 fps  555.0 kbps (69.4 kB/s)
[swscaler @ 0x7f83633f3640]BICUBIC scaler, from yuv420p to yuv420p using MMXEXT
VO: [yuv4mpeg] 480x360 => 640x360 Planar YV12 

但问题仍然存在:“发生以下错误:启动视频失败”..

使用 xawtv 和 flashplayer 可以正确播放和查看视频。

最佳答案

有两件事:

  • 你需要一个足够新的 v4l2loopback 模块,IIRC 你必须至少使用 0.7.1$ dmesg | grep v4l2loopback[0000123.456] v4l2loopback driver version 0.8.0 loaded
  • 如果某些(其他)应用程序正在向其写入视频数据,v4l2loopback -device 只会显示为适当的网络摄像头。例如
    gst-launch videotestsrc ! v4l2sink device=/dev/video0
  • 关于webrtc - 虚拟视频设备 - v4l2loopback - webRTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23877809/

    相关文章:

    c++ - 如何在 Qt 4.8 (C++) 中使用 Video4Linux2 (v4l2) 在 OpenCV 2.4 中捕获视频?

    linux - 获取 v4l2 视频设备的最大分辨率

    OpenCV:无法设置视频捕获的分辨率

    javascript - 如何使 getUserMedia() 在所有浏览器上工作

    node.js - 将 Node.js 服务器设置为 WebRTC 对等点,并将视频从 USB 摄像头发送到客户端浏览器

    python pygame.camera.init() 没有视频捕捉

    javascript - 上传从网络摄像头拍摄的图片

    node.js - 当 Node 服务器重新启动时,如何存储/保留套接字连接

    android - WebRTC Android,无法得到我应该做什么?

    linux - 无法检测到USB摄像头