虚拟摄像头

最近在搞IM视频,需要多个摄像头用于调试,但没有硬件。所以在网上找了些虚拟摄像头。

windows:

VCam 虚拟摄像头:http://cn.e2esoft.cn/   需要注册,不过不注册好象也没啥限制。不管,反正测试用不了多长时间。

linux:

环境:ubuntu22.04

sudo apt install v4l2loopback-dkms

环境: ubuntu11.10

v4l2loopback:     https://github.com/umlaeute/v4l2loopback

apt-get install module-assistant
m-a prepare
m-a update
m-a a-i v4l2loopback

cd /usr/src

dpkg -i v4l2loopback-modules-3.0.0-12-generic_0.4.0-1+3.0.0-12.20_i386.deb(在/usr/src目录下)

# modprobe v4l2loopback devices=4

ls /dev/video0

 如果需要开机自启动,则需要把它放到:/etc/modules 中

sudo vim /etc/modules

v4l2loopback devices=4
 

测试:

生产者:

ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1

参数:

re:实时视频

消费者:

直接查看:

ffplay -f video4linux2 -i /dev/video1

或者另存为fvl:

ffmpeg -f video4linux2 -s 640x360 -i /dev/video1 -r 30 -vcodec libx264 -vpre placebo -b 800k -coder 0 -g 2 -bf 0 -ab 64k -f flv /tmp/flash.flv

v4l2loopback源码位置:

https://github.com/umlaeute/v4l2loopback

Linux上桌面共享,远程直播,虚拟摄像头

http://www.jeapedu.com/blog/?p=91

     

在做远程教学的时候,需要录制屏幕并且共享给学生。

基于flash的rtmp(red5)、rtmfp的方案较多,但是他们都是共享摄像头给远程用户。

我们教学往往需要共享桌面给学生。因此我们必须找到一款将屏幕录制并虚拟成摄像头的软件。

我最近使用的一款还不错。webcamstudio。

他是java+虚拟video0的驱动。

我在ubuntu(12.04)安装下载的 0.57 beta4 版本。

1. 查看下载地址:

http://code.google.com/p/webcamstudio/downloads/list

2. 使用 dpkg -i  webcamstudio_0.57beta4_all.deb  可以按转此软件。

安装时,系统会提示需要安装依赖库。

3. 可以使用 aptitude install 安装。

4. 启动 webcamstudio; 我的系统会报错,因为java路径不对。

修改:/usr/bin/webcamstudio

JAVA_DIR=/usr/lib/jvm/java-6-openjdk-i386/bin
if [ -f $JAVA_DIR/java ]
then
JAVA_DIR=/usr/lib/jvm/java-6-openjdk-i386/bin

5.  启动后菜单选择 sources-》desktop 就可以录制屏幕了

http://apt-blog.net/virtual_simulate_webcam_in_linux

配置Linux下的虚拟摄像头

Posted on 2010/04/24 byPTNo Comments ↓

最近随着chatroulette、tinychat等的Flash P2P视频应用的普及,突然想念起以前Win下softcam之类的软件,Google了一圈找到个AVLD,Another Video Loopback Device。[请翻墙]

AVLD是作为内核模块起作用的,挂载avld,就会生成/dev/videoX,于是Flash、Pidgin、Skype(貌似不行)就能打开这个设备作为摄像头;而AVLD的输入则是对/dev/videoX文件的写入,可以用mencoder、ffmpeg之类的工具把其他视频流转换特定格式后写到/dev/videoX,这就完成整个“虚拟”的过程了。

我在Archlinux下用yaourt从AUR里面安装avld,很快很方便,下面一些例子命令:

#把自己加入video组,方便以后写video设备
sudo gpasswd -a boypt video
 
#挂载avld模块
sudo modprobe avld
 
#查看video设备,我的本本自带的摄像头是video0,虚拟的为video1
ls -l /dev/video*
 
#设置虚拟摄像头的分辨率等参数,后面输入的视频必须跟这参数一致,否则会报错,报错信息运行dmesg|tail查看
echo "width=320 height=240 fps=25" > /dev/video0
 
#用mencoder给虚拟摄像头写入数据
#其中-vf的scale参数设置输出的分辨率,format设置视频颜色参数;
#读取端的颜色参数需要跟这里一致画面才正常
#-ss参数可以设置视频从某时间开始播放
mencoder "myvideofile.avi" -cache 8192 -nosound -ovc raw -vf scale=320:240,format=rgb24 -of rawvideo -o /dev/video1 -ss 0:5:0
 
#从另外的终端运行mplayer查看输出
mplayer tv:// -tv "driver=v4l:device=/dev/video1:noaudio:outfmt=rgb24"
sudo gpasswd -a boypt video
 
#挂载avld模块
sudo modprobe avld
 
#查看video设备,我的本本自带的摄像头是video0,虚拟的为video1
ls -l /dev/video*
 
#设置虚拟摄像头的分辨率等参数,后面输入的视频必须跟这参数一致,否则会报错,报错信息运行dmesg|tail查看
echo "width=320 height=240 fps=25" > /dev/video0
 
#用mencoder给虚拟摄像头写入数据
#其中-vf的scale参数设置输出的分辨率,format设置视频颜色参数;
#读取端的颜色参数需要跟这里一致画面才正常
#-ss参数可以设置视频从某时间开始播放
mencoder "myvideofile.avi" -cache 8192 -nosound -ovc raw -vf scale=320:240,format=rgb24 -of rawvideo -o /dev/video1 -ss 0:5:0
 
#从另外的终端运行mplayer查看输出
mplayer tv:// -tv "driver=v4l:device=/dev/video1:noaudio:outfmt=rgb24"

上面echo的命令是可以动态修改虚拟摄像头的输出参数的,也可以在挂载时候用参数设置;默认挂载的参数是320x240。
其中fps帧速可以有如下取值:

  • fps = 0:不设置帧速,输出帧速跟写入的一致;
  • fps > 0:固定输出某个帧速;
  • fps < 0:帧速由输出程序决定(当没有输出读取程序就暂停)。

因为摄像头设备同时只能被一个程序读取,退出mplayer后可以打开视频Flash,或者其他摄像头应用查看效果。

webcam in chatroulette

PS:尝试使用ffmpeg对X11抓屏发送到摄像头,没完全成功,理论上的命令应该如下:

ffmpeg -y -t 30 -f x11grab -qscale 2 -r 15 -s 1024x768 -i :0.0 -s 320x240 -f rawvideo -vcodec rawvideo -pix_fmt rgb24 /dev/video1 -y -t 30 -f x11grab -qscale 2 -r 15 -s 1024x768 -i :0.0 -s 320x240 -f rawvideo -vcodec rawvideo -pix_fmt rgb24 /dev/video1

即对X进行1024x768, 15fps的抓图,转换成320x240大小,按rawvideo,rgb24方式写到video1,这样的效果仅仅是更新目标图像上面一部分,可能跟ffmpeg的rawvideo输出设置有关,但还没找出什么原因。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值