bkc*_*rad 78 linux ffmpeg screencasts virtual-webcam
我想使用免费的流媒体网站制作我的 linux 桌面的(窗口上的)实时流,使用捕获的视频作为假网络摄像头。Windows 上有很多工具可以做到这一点。ffmpeg 允许我捕获特定窗口上的输入,但我找不到将视频输出到可由 flash 使用的假网络摄像头式设备的方法。
任何人都可以推荐一种方法(或软件)来执行此操作吗?
小智 87
您可以安装v4l2loopback。它是一个模拟网络摄像头的内核模块。加载它:
modprobe v4l2loopback
Run Code Online (Sandbox Code Playgroud)
然后,您需要使用 ffmpeg 之类的程序将视频流发送到设备 /dev/video0。为了捕获桌面并使用 ffmpeg 将其转发到 /dev/video0,您可以使用以下命令行:
ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
Run Code Online (Sandbox Code Playgroud)
如果您想要不同的帧速率,请将 -r 的值从 15 更改为其他值。在 -s 参数中选择分辨率。如果要指定距屏幕左上角的偏移量,请以“-i :0.0+x,y”形式将其传递到 -i 参数中,其中 x 和 y 分别是水平和垂直偏移量。
eri*_*rik 10
make
和su -c 'make install'
),su -c 'modprobe v4l2loopback'
,然后examples/yuv4mpeg_to_v4l2.c
将 v4l2loopback 源文件夹的文件中的一行从
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
Run Code Online (Sandbox Code Playgroud)
到
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
Run Code Online (Sandbox Code Playgroud)并make
在此文件夹中执行。
然后examples
像这样从目录运行它:
mkfifo /tmp/pipe # only needed once, as long as you do not delete the file /tmp/pipe
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Run Code Online (Sandbox Code Playgroud)
您movie.mp4
可以在其中替换为视频文件的名称。并替换/dev/video0
为您的环回设备。
MPlayer 能够播放任何网络流、所有类型的视频文件,甚至来自标准输入!我刚刚使用来自德国新闻网站http://www.tagesschau.de的文件对其进行了测试。
TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Run Code Online (Sandbox Code Playgroud)
您可以放置一个-
(代表标准输入)而不是 $TS 。在 mplayer 前面,您的 ffmpeg 命令将其输出重定向到标准输出。所以像:
./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Run Code Online (Sandbox Code Playgroud)
没有测试最后一个,因为你没有告诉你的 ffmpeg 命令是什么样的。
小智 4
你使用什么发行版?我通过 Arch 下的 WebCamStudio 与基于网络的 Livestream“工作室”的结合取得了成功。不过,自从我使用它以来已经有一段时间了。
你到底想做什么?用x11grab编译的ffmpeg可以记录桌面。我在将其推向 Ustream 方面取得了有限的成功,但同样已经有一段时间了,我认为我所做的事情将不再有效。
如果您只想流式传输文件而不是桌面(我在想,当您说“窗口”时,您的意思是“VLC”),我可以为您指出正确的方向,以使其与 Livestream 一起使用(也许乌流)。我正在笨拙地弄清楚如何通过实验来做到这一点。这不是太棒了,但它可以与 Livestream 配合使用。
Justin.tv 也有可以从 VLC 流式传输到其服务的脚本。
http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API
归档时间: |
|
查看次数: |
112849 次 |
最近记录: |