Nginx rtmp到hls流

问题描述

我的情况是通过ffmpeg从RTSP源中提取数据,将其发送到nginx-rtmp,然后使用nginx提供hls播放。互联网上有很多教程和问答。我遵循了这个:

https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/

但是,它失败了。为了使事情更容易理解,我想问一个核心问题:

谁负责创建m3u8播放列表文件?

我尝试分两个步骤进行实验:首先,尝试推送本地mp4文件并通过HLS播放:

按照上面的教程,我尝试使用ffmpeg将本地mp4文件推送到nginx-rtmp,并使用videojs播放它。浏览器报告错误:

VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media. 

第二,我已经成功将推送到nginx-rtmp的视频文件保存为一系列FLV文件,并且我知道我可以使用 exec_push 调用ffmpeg来将flv转换为与HLS兼容的格式。同样,这里的核心问题是,随着无休止的新视频数据传入,如何创建和更新文件。

就目前而言,我希望专家帮助我解决第一个问题-通过HLS播放静态mp4文件。任何有关m3u8播放列表和mpeg-ts文件的教程也将受到赞赏!

解决方法

nginx-rtmp模块本身会在新片段到达时创建并更新播放列表。

要进行故障排除,请检查.m3u8文件是否在nginx conf的hls_path中指定的文件夹下创建。其余只是nginx使用http为文件提供服务。 如果可行,请尝试直接在safari(safari内置HLS播放器)或启用Chrome(播放HLS M3u8)扩展程序中使用HLS网址。 如果可行,则问题必须出在您的player.html

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...