将 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.
它总是报告我无效媒体。
vlc 中的流 + 编解码器信息:
http://s8.postimg.org/vb63fgfwh/codec.png
我的 nginx 配置:http://pastebin.com/9GuAMuBx
html源代码:http://pastebin.com/QGmEamjT
原码推流到: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 演示使用相同的流。
感谢您的提示!
根据 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.
它总是报告我无效媒体。
vlc 中的流 + 编解码器信息: http://s8.postimg.org/vb63fgfwh/codec.png
我的 nginx 配置:http://pastebin.com/9GuAMuBx
html源代码:http://pastebin.com/QGmEamjT
原码推流到: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 演示使用相同的流。
感谢您的提示!