我正在使用 dvswitch 测试两个网络摄像头:
dvswitch -h localhost -p 2000
使用 avconv 生成 dv 流,将它们传送到 dvsource-file:
avconv -y -f video4linux2 -s 640x480 -r 15 -i /dev/video0 -f s16le -ar 48000 -ac 2 -i /dev/zero -target pal-dv - | buffer -u 100 | dvsource-file -h localhost -p 2000 /dev/stdin
(仅用于一个网络摄像头的命令,使用缓冲区命令,因为命名管道会产生错误的结果)
我可以用 dvswitch gui 中的两个源查看和画中画,完全没有问题。我还可以使用 dvsink-command 来捕获 dvswitch 生成的流并将其通过 v4l2sink 输出通过管道传输到 gst-launch 管道:
dvsink-command -h localhost -p 2000 -- gst-launch -v fdsrc fd=0 ! dvdemux ! dvdec ! tee name=t_vid ! queue ! v4l2sink sync=false device=/dev/video2
(也尝试使用“v4l2sink sync=true device=/dev/video2”...)
并用 vlc 打开 /dev/video2 显示 dvswitch 生成的视频:
vlc v4l2:///dev/video2
但是当他们尝试打开 video2 环回设备时,ekiga、skype 和 xawtv 崩溃了!
使用vlc“工具->编解码器信息”菜单,我看到“packed yuv 4:2:2 (yuy2)”具有正确的分辨率,但帧速率超过 4.200(超过 1.000 的 4 倍......),即使视频以正常速度出现。
我认为 vlc 和 (xvimagesink of gst-launch) 可以显示来自这个虚拟设备的视频,但是 ekiga 等人不能这样做,因为帧率非常大而且数字很奇怪......
关于将帧速率降低到 15 或 30 fps 的任何想法?我尝试了一些带有 videorate 的 gst-launch 管道,但没有运气。
非常感谢,
弗朗切斯科