我目前正在寻找如何完成我被告知是可能的。
有人告诉我,我们可以使用 vlc 在 linux 中流式传输网络摄像头,这将允许以下内容:
我已经研究了很长一段时间,但一直无法找到可行的解决方案。
我已经可以使用 VLC 录制视频了
vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=file,dst=capture_4.avi}"
这真的可能吗?
最佳答案
如果可能的话,回答你的问题......是的,但它很棘手。我不能回答你所有的观点,只有在 VLC 中流式传输并在 HTML5 中显示的部分
您需要特定的环境设置才能使其工作(服务器上的分段器和正确的 MIME 类型)。我假设你们都在 linux 上;我不是(Mac OS/unix),但它背后的原则在使其工作的工作流程方面保持不变。我会尽力解释 - 希望这有任何帮助。
我成功的设置按以下方式工作:
(1) 流媒体和录制
本地 vlc 流实例流式传输音频和视频 -> 生成 mpegts 流。尝试将您的命令更改为类似
vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=udp, mux=ts, sap, name=live-video, dst=224.0.0.1, port=1234}"
或者
vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:udp{dst=224.0.0.1,port=1234,mux=ts}"
我只是在这里为您提供可在 Mac 上运行的移植命令。我不知道他们是否在 linux 上工作。现在您应该能够通过访问 SAP 公告或直接使用 VLC 播放实时流
vlc -vvv udp://@224.0.0.1:1234
然后您可以使用另一个 vlc 实例来记录流
vlc udp://@224.0.0.1:1234 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=file,dst=capture_4.avi}"
VLC 中有一个重复的命令,我一直在玩,但没有成功。通过这种方式,您可以使用一个实例进行流式传输和录制。也许这适用于Linux。
(2) 分段
mediastreamsegmenter 将您的 mpegts 流分割成可交付的段。我正在使用 Apple 服务器软件。 Apple 为您提供了 mediastreamsegemnter,它可以获取实时 mpegts 流并将其转换为添加到播放列表的片段。我不知道 linux 中的实时分段器。也许别人会。
(3) 交货
html 5 页面链接到包含片段的视频播放列表。 mediastreamsegmenter 将生成一个播放列表 playlist.m3u8,然后可以使用 HTML 5 访问
<video width="640" height="480">
<source src="YOUR_PATH/playlist.m3u8" />
</video>
有关此主题的一些有用教程是:
Info on the setup and basic commands
VLC examples in order to stream
我知道这不是您问题的完整解决方案,但这可能会给您一些很好的起点来研究。
关于google-chrome - VLC 记录网络摄像头并流式传输到 chrome linux,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6297348/