我正在尝试录制网络摄像头,保存并将其流式传输到本地网络。
问题是,我想用不同的压缩来做到这一点:
本地网络的流应该只有<400kbit / s,而另一个存储到本地文件的流应该是未压缩的或最高10 Mbit / s
所以我尝试了两种方法来解决这个问题:
首先我和VLC Gui玩了一下。记录网络摄像头非常容易,然后对其进行转码并将其保存到文件或/并将其传输到互联网。命令行如下所示:
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
但我遇到了互联网流和文件都被压缩的问题。所以我将“复制”和“转码”的顺序更改为:
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的压缩网络流和原始文件。但我不能流一个流......
所以我真的很感激,如果有人有另一个想法或暗示我的问题在哪里。 对不起我的英语不好。 祝你有愉快的一天。
答案 0 :(得分:0)
您是双引:sout
。如果您打算在值中使用引号"
,请使用撇号'
将整个参数括起来:
:sout='#duplicate{dst=file{...}, dst="transcode{...}:http{dst=:8080/stream.wmv}"}'
如果在命令末尾添加-v
(详细输出),您会看到一些其他问题,例如no-overwrite
无法识别。此外,scale=Automatisch
应为scale=auto
。
请注意,我只检查了语法而不是编码参数。