Nginx RTMP 到 HLS 问题

Nginx RTMP 到 HLS 问题

我正在尝试找出在已启用 HLS 的情况下推送到 RTMP 时出现的问题。下面是我使用的命令:

ffmpeg -i hls.m3u8.url -vcodec: copy -acodec libfdk_aac - -f flv rtmp://serverurl/live/test

一切都很好,一切都按预期工作。但是,随着源的动态变化,例如从远端切换到另一个源,如果我通过 RTMP 观看,它会显示正确。但是,如果我使用由 RTMP 模块生成的 HLS 播放列表,视频会出现重影/失真,但声音可以正常播放。直到源视频恢复到原始状态,它才会恢复正常。

如果我使用 HLS 复制而不是使用 RTMP/HLS,那么它可以正常工作。

为什么写入 HLS 文件的 RTMP 模块会使视频混乱?
是否有命令可以修复它?
它不喜欢源动态更改视频并继续将.ts文件写入损坏的文件。我可以停止 RTMP 并重新启动。然后它会清除视频,直到源视频在中间再次更改。

请记住:如果我通过 观看同一个视频rtmp://,视频切换正常。只有生成的 HLS 播放列表显示音频像素化/重影。

使用诸如此类的 HLS 命令-start_number 0 -hls_time 10 -hls_list_size 0可以纠正这些问题。但是,对于 RTMP,没有这样的命令。

这是我的 nginx 配置:

allow play all;
live on;
hls on;
hls_path /home/live;
hls_fragment 10s;
hls_cleanup on;

有人遇到过这个问题吗?

相关内容