使用 VLC 录制和复制网络摄像头流

Recording and Duplicating a webcam stream with VLC

我正在尝试录制网络摄像头、保存它并将其流式传输到本地网络。 问题是,我想用不同的压缩来做到这一点:
本地网络的流应该只有 <400kbit/s,但是另一个存储到本地文件的流应该是未压缩的或最多 10 Mbit/s

所以我尝试了两种方法来解决这个问题:

首先我玩了一下 VLC Gui。录制网络摄像头非常容易,然后将其转码并保存到文件 or/and 将其流式传输到互联网。命令行如下所示:

vlc v4l2:///dev/video0 :v4l2-standard= :live-caching=300 :sout="#transcode{vcodec=WMV2,vb=380,fps=1,scale=Automatisch,acodec=none}:duplicate{dst=file{dst=stream.asf,no-overwrite},dst=http{dst=:8080/stream.wmv}}" :sout-keep

但我遇到了一个问题,即 Internet 流和文件都被压缩了。所以我将 "duplicate" 和 "transcode" 的顺序更改为:

vlc v4l2:///dev/video0 :v4l2-standard= :live-caching=300 :sout="#duplicate{dst=file{dst=stream.asf,no-overwrite}, dst="transcode{vcodec=WMV2,vb=380,fps=1,scale=Automatisch,acodec=none}:http{dst=:8080/stream.wmv}"}" :sout-keep

我的想法:现在我应该有一个压缩的互联网流和原始文件。但它不会将其流式传输到互联网。

所以我尝试了另一种方法:我想将原始流传输到端口 8080,然后使用另外两个 VLC 实例生成压缩网络流到端口 8008 和原始文件。但是我无法流式传输....

所以,如果有人有其他想法或提示我的问题出在哪里,我将非常感激。 对不起我的英语不好。 祝你有个愉快的一天。

您双引号 :sout。如果您打算在值中使用引号 ",则使用撇号 ' 将整个参数括起来,例如:

:sout='#duplicate{dst=file{...}, dst="transcode{...}:http{dst=:8080/stream.wmv}"}'

如果您在命令末尾添加 -v(详细输出),您也会看到一些其他问题,例如 no-overwrite 未被识别。另外,scale=Automatisch 应该是 scale=auto.

请注意,我只检查了语法,并未检查您的编码参数。