【问题标题】:how to set nginx with rtmp (mp3) audio?如何使用 rtmp (mp3) 音频设置 nginx?
【发布时间】:2022-12-31 14:14:16
【问题描述】:

我有 ubuntu 18.04,我正在安装带有 rtmp 模块的 nginx,当我发送实时音频和视频时 - 音频不工作。来自视频的编解码器是 h 264 和音频 mp3。如何使音频正常工作?

【问题讨论】:

标签: nginx audio rtmp


【解决方案1】:

快速回答:nginx-rtmp 不支持 HLS 上的 mp3,但有一些解决方法。

但是因为你没有把你的使用场景描述的比较详细,所以我就一般的场景来讨论一下。

发布 MP3 直播流

您可以使用 FFmpeg 发布直播流,或者您应该获得支持 MP3 音频编解码器的编码器。例如:

ffmpeg -re -i doc/source.flv -vcodec copy -acodec libmp3lame 
    -f flv rtmp://localhost/live/livestream

不:据我所知,OBS 仅支持 AAC 音频编解码器。

您可以使用nginx-rtmpSRS 作为媒体服务器,然后通过以下方式播放 RTMP 流:

  • FFPLAY:ffplay rtmp://localhost/live/livestream
  • VLC:rtmp://localhost/live/livestream

您可能想将 RTMP 转换为其他播放器(例如 H5 或手机)的其他协议,让我在下一节中介绍。

播放 MP3 直播

观众从不使用 ffplay 或 VLC 作为播放器,而是使用 H5 或手机,因此您必须将 MP3 over RTMP 转换为其他协议,某些媒体服务器可能不支持。

HLS 是播放器最常用的协议,请注意 nginx-rtmp 不支持 HLS 上的 MP3,请参阅#181。经过一些研究,我发现 nginx-rtmp 强制在 HLS 流中使用 AAC,所以你必须通过合并 this 补丁来修复它。

另一种解决方法是使用SRS,它支持基于 HLS 和其他协议的 MP3。详细用法请看#296。例如:

  • 基于 HLS 的 MP3:支持。建议启用hls_acodec mp3;,使第一段写入时不改变 HLS 的 PMT。
  • HTTP-TS 上的 MP3:支持。可以使用mpegts.jsH5播放器播放直播,延迟比HLS低。
  • 将 MP3 转换为 WebRTC(Opus):支持。使用WebRTC 播放直播,是另一种解决方案。

但是,您可以通过 FFmpeg 将 MP3 编解码器转换为 AAC,因为 AAC 现在被广泛使用,几乎所有的服务器和播放器都支持 AAC,但是它会消耗更多的 CPU(每个流大约 2%)用于音频转码:

ffmpeg -i rtmp://localhost/live/livestream -vcodec copy -acodec aac 
    -f flv rtmp://localhost/live/livestream-aac

PS:请注意,您也可以通过 HTTP-MP3 传输进行纯音频直播。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2013-12-11
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多