如何设置nginx与rtmp(mp3)音频?

x0fgdtte  于 2023-01-01  发布在  Nginx
关注(0)|答案(1)|浏览(387)

我有ubuntu18.04和我安装nginx与rtmp模块,当我发送现场音频和视频-音频不工作。编解码器从视频是h 264和音频mp3。如何使音频工作?

7tofc5zh

7tofc5zh1#

快速解答: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流:

  • 实况播放:x1月1x
  • VLC:rtmp://localhost/live/livestream

您可能希望将RTMP转换为其他播放器(如H5或移动电话)的其他协议,让我在下一节中描述它。

播放MP3实时流媒体

观众从字面上从来没有使用ffplay或VLC作为播放器,但使用H5或手机,所以你必须隐藏MP3的RTMP到其他协议,这可能不支持的一些媒体服务器。
HLS是播放器最常用的协议,请注意nginx-rtmp不支持MP3 over HLS,请参阅#181。经过一些研究,我发现nginx-rtmp强制在HLS流中使用AAC,所以您必须通过合并this补丁来修复它。
另一种解决方法是使用SRS,它支持MP3 over HLS和其他协议。有关详细用法,请参阅#296。例如:

  • HLS上的MP3:支持。建议启用hls_acodec mp3;,使第一段写入,而不更改HLS的PMT。
  • 基于HTTP-TS的MP3:支持,您可以使用mpegts.js H5播放器播放直播流,延迟比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

注:注意你也可以做纯音频直播,通过HTTP-MP3传输。如果需要DVR直播,FLV和MP4都可以。

相关问题