如果可能的话,回答你的问题......是的,但它很棘手。我不能回答你的所有观点,只有在 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
我知道这不是您问题的完整解决方案,但这可能会给您一些不错的起点来研究。