Фиктивное видеоустройство - 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 в качестве бэкенда, так что вы сможете настроить его в любом формате тебе нравится