我如何解码一个MP3并将其编码为aac与ezstream

时间:2015-04-07 19:32:24

标签: ffmpeg streaming http-live-streaming icecast

这是我目前的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更好。

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

2 个答案:

答案 0 :(得分:1)

我个人推荐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,购买了编码器许可证等等。以上的例子很容易适应。

答案 1 :(得分:1)

由于许可,Icecast没有正式支持AAC。

  

Icecast是一种流媒体服务器,目前支持Ogg(Vorbis和Theora),Opus,WebM和MP3音频流。

传递模式中的

非正式 it might work,但您需要亲自尝试一下。

对于FFmpeg AAC ecoding,您应该使用 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>