如何将声音文件转换为Opus


22

为了进行测试,我想将必须转换的MP3和WAV文件转换为Opus,请问该执行哪些步骤?


1
@EvanCarroll因此,显示“用于测试”的部分;)
Luis Alvarado

2
@EvanCarroll这取决于您要实现的目标以及输入材料的质量。如果您正在寻找绝对的发烧友解决方案,那么您可能永远不想首先考虑Opus。当没有解释时,说这是一个可怕的想法只是一个可怕的陈述。
LiveWireBT

1
@LiveWireBT表示,除非在没有解释的情况下寻找绝对的发烧友解决方案,否则在作品中编码mp3并不是一个可怕的主意。
埃文·卡罗尔

2
@EvanCarroll Opus对语音有专门的支持,而MP3没有。这意味着你可以减少你的播客和有声读物显著的大小没有任何质量明显损失。我看不出这是一个多么可怕的主意。
基督教徒

3
@EvanCarroll“语音或音乐的自动检测来决定哪个编码模式,以使用”从opus-codec.org。当然,您将蒙受质量损失。这就是为什么它是有损编解码器。您说过这永远是没有道理的,我给您提供了一个很好的例子,其中规模是一个大问题,次要质量和无损资源不可用。
基督教徒

Answers:


23

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

opusenc input.wav output.opus

我们可能希望使用该选项将更好的比特率添加为默认的96 kbps --bitrate N.nnn(有关所有选项,请参考手册页以获取opusenc)。

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

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

在哪里获得“ opusenc”?
shevy

1
@shevy:它带有opus-tools
塔卡特

@shevy:$ sudo apt install opus-tools
Jose Barakat

1
要做到这一点上一堆FLAC文件:for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(我选择了140比特率,因为根据是绰绰有余的立体声文件。
Joschua

11

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

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

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

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

选项有什么作用

  • -i file.mp3 设置输入文件。
  • -map 0:a将从a输入文件中选择所有音频流()0-maphttps://libav.org/avconv.html#Advanced-options上了解更多信息。
  • -codec:a opus选择音频流的作品编码器(a)。-codechttps://libav.org/avconv.html#Main-options上了解更多信息。
  • -b:a 100k将音频的比特率设置为100 kb / s。-bhttps://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:从视频文件中获取音频并将其编码为作品

取得第一个输入(-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

1
完美在Ubuntu 14.04上运行!您能解释一下-map 0:a吗?(也许
能详细说明

@piña我用对参数的解释和一个附加的示例更新了答案。
Daniel Jonsson 2014年

5

作品于12.04

在12.04(精确),但是,也有与安装OPUS编解码器和工具的依赖问题,所以我迄今为止发现的最好的解决方案是一个已经成为可最近:编译巨著音频编码器和解码器为这里要注意,并ffmpeg通过添加--enable-opus的配置选项ffmpeg(如编译指南中所列)在opus支持下进行构建。

我知道ffmpeg在Ubuntu中不赞成使用Libav,但编译是将功能完整的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 build似乎需要yasm-1.2,而它不可用,因此您必须从官方站点编译源代码,但这很简单。只需删除任何已安装的版本yasm,然后将下载的档案解压缩cd到该文件夹​​中,./configure && make然后运行sudo checkinstall。如果其他任何版本都需要较早的版本,则只需删除此版本并安装存储库版本。

  • 这是必要的,以消除任何现有的libavffmpegx264libvpx,或fdk-aac包你开始编译之前。

  • 这是至关重要的,你编译和安装x264fdk-aaclibvpxopus你建立之前ffmpeg,因为这些图书馆将在构建中使用。

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

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

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


ffmpeg对于任何可替代的东西都是不好的解决方案。
Evan Carroll

2
@EvanCarroll这是什么意思?弃用它只是一个人的决定:ffmpeg仍然和libav一样好,这只是它的一个分支。

1
一个很好的答案,并感谢您对Yasm要求的提醒。x264在上次推送时将最低版本提高到1.2.0。使用Yasm说明更新了指南。
llogan

@Mik我想他想说的是独立编码器会带来更好的结果。
LiveWireBT

我看到有人按照编译ffmpeg的说明提到“找不到作品”错误。我在Ubuntu 12.04中遇到了同样的问题,后来发现PKG_CONFIG_PATH =“ $ HOME / ffmpeg_build / lib / pkgconfig”最后需要一个斜杠。

3

我就是这样的:

  • 首先,在您的音频文件所在的目录中打开一个终端。
  • 然后,键入以下命令:
$ opusenc --bitrate 320 --max-delay 10“ 18-灵魂庇护-失控火车(专辑版).flac”“ 18-灵魂庇护-失控火车(专辑版).opus”

编辑:

对于发烧友:

$ opusenc --bitrate 510 --max-delay 10“ 18-灵魂庇护-失控火车(专辑版).flac”“ 18-灵魂庇护-失控火车(专辑版).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)

超级快!少于8秒,复杂度为10(编码计算复杂度(0-10,默认值:10)。零表示最快的编码但质量较低,而10表示最高的质量但编码较慢),最大延迟时间为10ms(最大容器延迟(以毫秒为单位(0-1000,默认值:1000)),因此,如果您跳过歌曲中的时间,则剪辑效果的持续时间为10ms,因此它是无法察觉的(尝试使用1000,并听到与您的差异跳过时间老鼠)。默认情况下,比特率是VBR。320kbps对我
--bitrate N.nnn有用,因此是可选的,请使用以下数字播放:=>目标比特率,单位为kbit / sec(每个通道6至256个)

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

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

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


它对我不起作用。我知道Error parsing input file: Hardvapour remix-.mp3我使用的是16.04
Sarah Szabo,

问题是关于mp3,而不是flac。
恢复莫妮卡-M.Schröder

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

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

和后缀 opus

  1. 让它撕裂!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.