示例 1:将音频文件重新编码为 opus

示例 1:将音频文件重新编码为 opus

为了测试,我想将我的 MP3 和 WAV 文件转换为 Opus,请问这样做的步骤是什么?

答案1

在较新的 Ubuntu 版本中,Opus 编解码器包含在libavcodec将安装的库ffmpeg.然后音频编码完成

ffmpeg -i infile.ext <options> outfile.opus

随附的音频转换器opus 工具可以转换 raw、wave 或 AIFF 格式的音频。最小语法使用默认设置:

opusenc input.wav output.opus

我们可能希望通过选项添加更好的比特率作为默认的 96 kbps --bitrate N.nnn(有关所有选项,请参阅 opusenc 的手册页)。

要“即时”转换 mp3。即无需创建临时文件,我们可以将 ffmpeg 的输出通过管道传输到 opusenc,如下所示:

ffmpeg -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus

答案2

Ubuntu 14.04 和 Debian 8 在其存储库中附带了版本 9 libav-tools,并且通过软件包内置了对 Opus 的支持libopus0

示例 1:将音频文件重新编码为 opus

libav-tools安装版本 9 后,libopus0您可以简单地执行以下操作:

avconv -i file.mp3 -map 0:a -codec:a opus -b:a 100k -vbr on file.opus

选项的作用

  • -i file.mp3设置输入文件。
  • -map 0:aa将从输入文件中选择所有音频流 ( ) 0。阅读更多-map关于https://libav.org/avconv.html#Advanced-options
  • -codec:a opus选择音频流的 opus 编码器 ( a)。详细-codec了解https://libav.org/avconv.html#Main-options
  • -b:a 100k将音频比特率设置为 100 千比特/秒。详细-b了解https://libav.org/avconv.html#Codec-AVOptions
  • -vbr on打开可变比特率。这是 libopus 特有的选项。以下是 libopus 的所有选项:

    $ avconv -h full | grep opus -A 11
    avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
      built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
    libopus AVOptions:
    -application       <int>   E..A. Intended application type
       voip                    E..A. Favor improved speech intelligibility
       audio                   E..A. Favor faithfulness to the input
       lowdelay                E..A. Restrict to only the lowest delay modes
    -frame_duration    <float> E..A. Duration of a frame in milliseconds
    -packet_loss       <int>   E..A. Expected packet loss percentage
    -vbr               <int>   E..A. Variable bit rate mode
       off                     E..A. Use constant bit rate
       on                      E..A. Use variable bit rate
       constrained             E..A. Use constrained VBR
    
  • file.opus设置输出文件。

示例 2:从视频文件中抓取音频并将其编码为 opus

取第一个输入的第二个流(-map 0:1),即音频流。使用 libopus 以 100 kbit/s 的速度对其进行编码,并开启可变比特率:

$ avconv -stats -i linuxactionshowep309-432p.mp4 -map 0:1 -c libopus -b 100k linuxactionshowep309-432p-audio-only.opus
avconv version 9.11-6:9.11-3+b2, Copyright (c) 2000-2013 the Libav developers
  built on Apr  6 2014 17:45:45 with gcc 4.8 (Debian 4.8.2-16)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'linuxactionshowep309-432p.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100
  Duration: 01:14:48.45, start: 0.042667, bitrate: 466 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 768x432 [PAR 1:1 DAR 16:9], 330 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, fltp, 128 kb/s
Output #0, ogg, to 'linuxactionshowep309-432p-audio-only.opus':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.20.3
    Stream #0.0(und): Audio: libopus, 48000 Hz, stereo, flt, 100 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (aac -> libopus)
Press ctrl-c to stop encoding
size=   54360kB time=4488.47 bitrate=  99.2kbits/s    
video:0kB audio:53875kB global headers:0kB muxing overhead 0.900602%

安装软件包后mediainfo

$ mediainfo linuxactionshowep309-432p-audio-only.opus
General
Complete name                            : linuxactionshowep309-432p-audio-only.opus
Format                                   : OGG
File size                                : 53.1 MiB
Duration                                 : 1h 14mn
Overall bit rate                         : 99.2 Kbps
Writing application                      : Lavf54.20.3
major_brand                              : isom
minor_version                            : 512
compatible_brands                        : isomiso2avc1mp41

Audio
ID                                       : 2104437746 (0x7D6F2BF2)
Format                                   : Opus
Duration                                 : 1h 14mn
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Writing library                          : Lavf54.20.3

答案3

12.04 作品

然而,在 12.04 (Precise) 上,安装 opus 编解码器和工具存在依赖性问题,因此我发现迄今为止最好的解决方案是最近才出现的解决方案:编译 opus 音频编码器和解码器正如这里所述,并通过在配置选项中ffmpeg添加 opus 支持(如上所列)来构建--enable-opusffmpeg编译指南)。

我知道ffmpeg在 Ubuntu 中已弃用 而改用Libav,但编译是将功能齐全的 opus 编码器/解码器集成到ffmpeg自身中的好方法。然后您可以使用它来转换文件(首先转换为 wav),然后转换为.opus。与 libopus 和 ffmpeg 一起安装的文档将显示可用于转换文件的所有选项。

使用编译后转换文件时ffmpeg,必须指定-acodec libopus否则ffmpeg将不使用 opus 编解码器:

ffmpeg -i pc.wav -ar 48000 -ac 2 -acodec libopus -ab 256k man.opus

然后你可以测试使用

ffplay man.opus

编译提示

没有必要重现指导这里完整地介绍了这一点,但有一两件事值得注意:

  • 您应该首先安装列出的依赖项(我yasm从列表中省略:请参阅我的第二点):

     sudo apt-get -y install autoconf build-essential checkinstall git libass-dev libfaac-dev libgpac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev librtmp-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
    
  • 需要指出一个问题:git build 似乎需要yasm-1.2,但不可用,因此您必须从官方网站,但很简单。只需删除已安装的所有版本yasm,然后将下载的存档解压cd到文件夹,运行./configure && make,然后sudo checkinstall。如果任何其他版本需要早期版本,您只需删除此版本并安装存储库版本即可。

  • 在开始编译之前,有必要删除任何现有的、、、libav或包。ffmpegx264libvpxfdk-aac

  • 这是批判的在构建之前,请编译并安装x264fdk-aac和,因为这些库将在构建中用到。libvpxopusffmpeg

  • 运行编译时不要忘记添加--enable-opus配置选项ffmpeg

  • 编译的opus版本是1.1alpha,因此将来当新版本发布时,您可能需要重新编译opus库和ffmpeg。

  • 您可以使用它ffplay来播放您创建的任何作品文件。

答案4

如果只需要mp3到opus的路由,mpg123可以解码为wav/pcm。

mpg123 -w - input.mp3 | opusenc - output.opus

对于不熟悉的人来说,破折号“-”在左侧充当 stdout,并通过管道传输到右侧的 opusencs stdin。

当然,ffmpeg 对于一般的媒体转换和编辑来说非常出色,但是它的安装大小和通常的分发依赖关系也占用较大的空间。

相关内容