将 H.264 直播流发送到 Nginx 并发布为 HLS 以嵌入网站

Sending H.264 live stream to Nginx and publish as HLS to embed into website

根据 this post 我正在尝试在网页上显示来自网络摄像机(AXIS M1145-L + CamStreamer 插件)的 H.264 实时流而不使用任何外部浏览器插件(仅纯 HTML5)和桌面。

正如我在那里读到的那样,可以使用 video.js 和 HLS 来做到这一点,所以这是我尝试过的:

Stream from camera (push to rtmp with CamStreamer) --> to nginx (rtmp module) --> 
nginx serves HLS --> display with video.js and videojs-hls plugin in browser

在使用它的 hls URL (http://192.168.1.105:8080/hls/movie.m3u8) 在 VLC 中观看流时,我没有任何问题或滞后,但我无法在浏览器中使用 video.js.

它总是报告我无效媒体

原码推流到:rtmp://192.168.1.105:1935/hls/movie

192.168.1.105是nginx所在的机器运行ning。

然后可以在 http://192.168.1.105:8080/hls/movie.m3u8

上访问 Hls 流

我完全想避免的是重新编码视频的需要,因为稍后 运行 所在的机器没有能力这样做,而且它也将是一个完整的高清流.这就是我放弃 FFmpeg 的原因(需要重新编码 Mp4 以进行直播)。而且机器不能连续上网,所以也不能在线转码。

请帮忙。谢谢!

我 运行 遇到了类似的问题,试图让 Video.js 播放器(使用 HLS contrib 模块)在 PC/Chrome 中加载 HLS 流。播放器会显示 "The media could not be loaded... because the format is not supported."

我后来发现它在 Mac/Safari 和 PC/MS Edge 浏览器中运行良好。

仍然相当缺乏对 HLS 的完整浏览器支持。 https://www.jwplayer.com/html5/#adaptive-streaming

我在 Bitmovin 的播放器 Bitdash 上取得了成功,并意识到这是浏览器问题(不是流或 nginx 问题)。

终于明白了

使用 hls.js 库 (https://github.com/dailymotion/hls.js) 独立 没有 video.js 成功了。该视频现在在 Windows 7 上的 Chrome/Opera 中播放良好。尚未与其他人一起尝试。

所以我猜这是 video.js 的 player/codec 依赖问题。

带有播放器的 html 页面需要在服务器上(不是本地文件系统!)否则浏览器安全限制将会到位,从而阻止视频播放。注意到在浏览器中从本地 html 页面尝试时,hls.js 演示使用相同的流。

感谢您的提示!