我如何解码 mp3 并使用 ezstream 将其编码为 aac

How can i decode an mp3 and encode it as aac with ezstream

这是我当前的 ezstream 配置

<ezstream>
   <url>http://localhost:8000/test</url>
   <sourcepassword>password</sourcepassword>
   <format>MP3</format>
   <filename>playlist.m3u</filename>
   <reencode>
      <enable>1</enable>
      <encdec>
         <format>MP3</format>
         <match>.mp3</match>
         <decode>madplay -b 16 -R 44100 -S -o raw:- "@T@"</decode>
         <encode>lame --preset cbr 32 -r -s 44.1 --bitwidth 16 - -</encode>
      </encdec>
   </reencode>
</ezstream>

它正在安装到 icecast 服务器,它解码和编码 mp3 到较低的比特率,我正在尝试将它编码为 aac 而不是 mp3,希望质量能提高,因为我听说 aac 比 mp3 更好较低的比特率。

我想知道的是,我是否可以使用 FFmpeg 之类的 aac 编码器而不是蹩脚的 mp3 编码器,并为最终用户提供 aac 而不是 mp3,如果可以,我应该将哪些参数传递给 FFmpeg它适用于我当前的配置。

个人推荐Opus编解码器。它比 MP3 好得多,包括尤其是在较低的比特率下。也无需担心购买编码器许可证。

您可以使用 avconv/ffmpeg 而不是 ezstream。

avconv -re -i http://someserver/stream.mp3 -c:a opus -b:a 20k \
       -application audio -vbr on -frame_duration 60 \
       -content_type audio/ogg \
       icecast://source:bar@server:8000/test-20.opus

此示例适用于最新的 avconv 和最新的 Icecast (2.4.1)。
如果您的发行版没有该版本,http://icecast.org/download 上有适用于所有主要发行版的软件包。

顺便说一句:如果你坚持使用 AAC,购买了编码器许可证等。改编上面的例子是微不足道的。

由于许可问题,Icecast 官方 不支持 AAC。

Icecast is a streaming media server which currently supports Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams.

非正式地 it might work 是直通模式,但你需要自己尝试看看。

对于 FFmpeg AAC 编码,您应该使用 Fraunhofer FDK AAC 库 (libfdk_aac)。您还需要 ADTS.

中的 AAC 等可流格式

根据您的示例,它似乎使用 stdout 进行转码。如果您使用 madplay 将 MP3 转换为 PCM,您应该能够使用如下方式将其编码为 AAC:

<encode>ffmpeg -f s16le -ar 44.1k -ac 2 -i - -b:a 32k -ar 44.1k -f adts -</encode>