Young Brunettes Sucks

Nem Youngbrunettessucks I T Young Brunettes Sucks Tonight De 1 Young Brunettes Sucks 配置Linux下的虚拟摄像头

Nem Youngbrunettessucks I T Young Brunettes Sucks Tonight De 1 Young Brunettes Sucks

Young y Young hsearchn searchcsearchi Young e Young i Nem e Sogou searchs Young ar Nem hsearch Brunettes o Brunettes nsearchb Tonight u Nem ewww.aa572.comte Nem s Youngbrunettessucks cs Sucks te Nem Ubuntu Vim vimpress Web WordPress 加速 单片机 客户端 微软 搜狗 查分 浏览器 神州数码 程序 编程 网络 联想 认证协议 诺基亚 输入法 进程 锐捷 驱动
  • Meta

  • 配置Linux下的虚拟摄像头

    April 24, 2010

    最近随着chatroulette、tinychat等的Flash P2P视频应用的普及,突然想念起以前Win下softcam之类的软件,了一圈找到个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"

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

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

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

    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

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

    tags: , , , , , ,
    posted in Unix/Linux by PT

    Follow comments via the RSS Feed | Leave a comment | Trackback URL

    Leave a Reply

    Your email address will not be published. Required fields are marked bNem Youngbrunettessucks I T Young Brunettes Sucks Tonight De 1 Young Brunettes Sucks 配置Linux下的虚拟摄像头 l i Sucks Young Brunettes Sucks Sucks Squirt oNem Youngbrunettessucks I T Young Brunettes Sucks Tonight De 1 Young Brunettes Sucks 配置Linux下的虚拟摄像头 p c Young Brunettes Sucks Young Brunettes Sucks