如何将声音文件转换为Opus

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

默认情况下, opus-tools附带的音频转换器 安装opus-tools 可以转换原始,波形或AIFF格式的音频。 最小语法使用默认设置:

opusenc input.wav output.opus 

我们可能希望使用选项--bitrate N.nnn添加更好的比特率作为默认的96 kbps(对于所有选项,请参阅opusenc的联机帮助页)。

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

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

Ubuntu 14.04和Debian 8在其存储库中libav-tools了第9版libav-tools ,它通过libopus0包内置了对Opus的支持。

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

安装了libav-toolslibopus0第9版,您可以简单地执行以下操作:

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

选项有什么作用

  • -i file.mp3设置输入文件。
  • -map 0:a将从输入文件0选择所有音频流( a )。 在https://libav.org/avconv.html#Advanced-options上阅读有关-map更多信息
  • -codec:a opus选择音频流的opus编码器( a )。 在https://libav.org/avconv.html#Main-options上阅读有关-codec更多信息。
  • -b:a 100k将音频的比特率设置为100千比特/秒。 在https://libav.org/avconv.html#Codec-AVOptions上阅读有关-b更多信息
  • -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  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  E..A. Duration of a frame in milliseconds -packet_loss  E..A. Expected packet loss percentage -vbr  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:从video文件中抓取音频并将其编码为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: LR Sampling rate : 48.0 KHz Compression mode : Lossy Writing library : Lavf54.20.3 

这就是我这样做的方式:

  • 首先,在音频文件所在的同一目录中打开终端。
  • 然后,键入以下命令:
  $ opusenc --bitrate 320 --max-delay 10“18  -  Soul Asylum  -  Runaway Train(Album Version).flac”“18  -  Soul Asylum  -  Runaway Train(Album Version).opus” 

编辑:

对于发烧友:

  $ opusenc --bitrate 510 --max-delay 10“18  -  Soul Asylum  -  Runaway Train(Album Version).flac”“18  -  Soul Asylum  -  Runaway Train(Album Version).opus” 

无需指定--maxdelay 10选项,因为opusenc默认情况下执行此操作。

此文件转换的控制台输出( --bitrate 320 ):

  Encoding using libopus 1.1.2 (audio) ----------------------------------------------------- Input: 44.1kHz 2 channels Output: 2 channels (2 coupled) 20ms packets, 320kbit/sec VBR Preskip: 356 Encoding complete ----------------------------------------------------- Encoded: 4 minutes and 22.4 seconds Runtime: 8 seconds (32.8x realtime) Wrote: 10955530 bytes, 13120 packets, 13124 pages Bitrate: 317.691kbit/s (without overhead) Instant rates: 1.2kbit/s to 510.4kbit/s (3 to 1276 bytes per packet) Overhead: 4.89% (container+metadata) 

这超级快! 复杂度为10秒不到8秒(编码计算复杂度(0-10,默认值:10).Zero提供最快的编码但质量较低,而10提供最高质量但编码较慢)和最长延迟时间10ms(最大容器延迟(以毫秒为单位)(0-1000,默认值:1000)),因此如果您在歌曲中跳过时间,剪辑效果的持续时间将为10毫秒,因此不易察觉(尝试使用1000并听取与您的差异跳过时间)老鼠)。 Bitrate默认为VBR。 320kbps为我工作所以是可选的,玩这个数字:
--bitrate N.nnn =>目标比特率,单位为kbit / sec(每通道6-256)

顺便说一句,从MP3到OPUS的编码不是一个好主意,它听起来不会更好,他们的压缩算法太不同了。 但是从FLAC或WAV或任何其他无损音频格式 ,这是另一个故事。

注意:要编码另一个文件,只需按下同一终端中的向上箭头即可调用最后一个命令并更改输入和输出文件的名称。
如果您正在寻找ffmpeg / avconv GUI,也许TraGtor就是您所需要的。

您还可以使用Spek或Audacity以高比特率检查无损和有损格式之间的频谱差异。

Opus于12.04

然而,在12.04(精确),安装opus编解码器和工具存在依赖性问题,所以我发现到目前为止最好的解决方案是最近可用的解决方案:编译如此处所述的opus音频编码器和解码器,并通过在ffmpeg的configure选项中添加--enable-opus来构建支持--enable-opusffmpeg (如编译指南中所列)。

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

在编译后使用ffmpeg转换文件时,必须指定-acodec libopusffmpeg不使用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构建似乎需要yasm-1.2 ,而这是不可用的,所以你必须从官方网站编译源代码,但这很简单。 只需删除任何已安装的yasm版本,然后解压缩下载的存档, cd到文件夹,运行./configure && make然后再运行sudo checkinstall 。 如果任何其他版本需要早期版本,您只需删除此版本并安装存储库版本即可。

  • 在开始编译之前,必须删除任何现有的libavffmpegx264libvpxfdk-aac软件包。

  • 在构建ffmpeg之前编译和安装x264fdk-aaclibvpxopus 至关重要 ,因为这些库将在构建中使用。

  • 运行ffmpeg编译时,不要忘记将--enable-opus添加到configure选项。

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

  • 您可以使用ffplay播放您创建的任何opus文件。

  1. 找到与mp3相同内容的CD(或带有CDEMU的flac)。
  2. 安装opus-toolsAudex
  3. 打开Audex并添加一个名为Opus的新配置文件,添加命令模式;

    opusenc $i --comment="TRACKNUMBER="$trackno"" --artist "$artist" --album "$title" --title "$ttitle" --date "$date" --picture "$cover" $o

和后缀opus

  1. 让它撕裂!