我目前正在寻找如何实现我被告知的可能性。
我被告知我们可以使用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}"
这真的有可能吗?
答案 0 :(得分:16)
如果可能的话,回答你的问题......是的,但它很棘手。我无法回答你的所有观点,只有在VLC中流式传输并在HTML5中显示的部分
您需要一定的环境设置才能使用(Segmenter并更正服务器上的MIME类型)。我假设你们都在linux上;我不是(Mac OS / unix),但其背后的原则与使其工作的工作流程保持一致。我会试着解释一下 - 希望这会有所帮助。
我成功的设置以下列方式工作:
(1)STREAMING&记录
本地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)SEGMENTING
mediastreamsegmenter将您的mpegts流细分为可交付的细分市场。我正在使用Apple Server Software。 Apple为您提供了mediastreamsegemnter,它可以采用实时mpegts流并将其转换为添加到播放列表的段。我不知道linux中的live segmenter。也许其他人也这么做。
(3)交付
html 5页链接到包含片段的视频播放列表。 mediastreamsegmenter将生成一个播放列表播放列表.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
我知道这不是你问题的完整解决方案,但这可能会给你一些很好的起点。