您可以使用 nginx 传输 mp3 文件吗?

您可以使用 nginx 传输 mp3 文件吗?

我有一个在 Nginx 上运行的 Ruby On Rails 应用程序,它使用 JW 播放器提供 MP3。我需要能够设置播放列表项的开始时间和持续时间。据我所知,要做到这一点,我需要流式传输 MP3 文件。我该如何设置 Nginx 来执行此操作?

答案1

Nginx 已内置支持通过HttpFlvStream模块。编译/重新编译 Nginx 时,您必须指定模块。

# ./configure --with-http_flv_module ...SOME-OTHER-OPTS...

然后,您可以配置 nginx.conf 来流式传输 FLV 文件,如下所示:

...
http {
    ...
    server {
        ...
        location ~ \.flv$ {
            flv;
        }
        ...
    }
    ...
}

现在,由于最初的问题是关于流式传输 MP3 文件,这有什么帮助呢?您可以使用 FFMPEG 将 MP3 转换为 FLV 文件,如下所示:

ffmpeg -y -i /home/song.mp3 -f flv -acodec mp3 -ab 64 -ac 1 /home/song.flv

答案2

据我所知,Nginx 是一个 HTTP 服务器。要流式传输音频,您需要 Icecast 之类的软件:http://www.icecast.org/

流媒体和下载之间的技术差异主要在于客户端和服务器。对于最终用户来说,流媒体意味着他们可能无法将媒体保存在自己的机器上。下载和最终用户可能无法立即开始观看。尽管在实践中,大多数数据可以在第一批数据到达客户端后立即查看。

话虽如此,你确定需要流媒体服务器来使用 JWplayer 吗?你不能直接将它指向一个 URL 并让 JW 获取它吗?在这种情况下,Nginx 可以很好地提供音频。

事实上,我很确定我以前用 Apache 做过这样的事。视频经过一点缓冲后开始播放 - 就像 Youtube 一样。

答案3

你也可以使用 mp4 模块实现这一点

 location /mp3/ {
    root data;
    mp4;
    mp4_buffer_size      1m;
    mp4_max_buffer_size  5m;
 }

你不需要转换为 flv 来播放 mp3

相关内容