Фиктивное видеоустройство - v4l2loopback - webRTC

Мне нужно воспроизвести несколько видео для проверки видеосервера. Я использую 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.

3 ответа

Есть две вещи:

  • вам нужно достаточно недавно v4l2loopback модуль, IIRC вы должны использовать по крайней мере 0.7.1

    $ dmesg | grep v4l2loopback
    [0000123.456] v4l2loopback driver version 0.8.0 loaded

  • v4l2loopback-устройство будет отображаться только как правильная веб-камера, если какое-либо (другое) приложение записывает на нее видеоданные. например

    gst-launch videotestsrc ! v4l2sink device=/dev/video0

Я смог заставить это работать, используя ffmpeg. Это была команда, которую я использовал:

ffmpeg -re -f lavfi -i "movie=my_video_file.mp4" -f v4l2 /dev/video0

После этого я смог получить доступ к этой виртуальной веб-камере, которая бесконечно зацикливала видеофайл, из моего приложения WebRTC.

Не уверен, поможет ли это или нет, но вы можете попробовать использовать webcamstudio - он также создает петлевое устройство и может микшировать исходные тексты - насколько я помню, он использует ffmpeg в качестве бэкенда, так что вы сможете настроить его в любом формате тебе нравится

Другие вопросы по тегам