Tak*_*kat 31
在较新的 Ubuntu 版本中,Opus 编解码器包含在将与ffmpeg一起安装的libavcodec库中。音频编码然后完成
ffmpeg -i infile.ext <options> outfile.opus
Run Code Online (Sandbox Code Playgroud)
opus-tools附带的音频转换器可以转换成 raw、wave 或 AIFF 格式的音频。最小语法使用默认设置:
opusenc input.wav output.opus
Run Code Online (Sandbox Code Playgroud)
我们可能希望使用选项添加更好的比特率作为默认 96 kbps --bitrate N.nnn(对于所有选项,请参阅 opusenc 的联机帮助页)。
“即时”转换 mp3。即无需创建临时文件,我们就可以像这样将输出从 ffmpeg 传送到 opusenc:
ffmpeg -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
Run Code Online (Sandbox Code Playgroud)
Dan*_*son 13
Ubuntu 14.04 和 Debian 8libav-tools在其存储库中附带了版本 9 ,并且通过软件包libopus0.
安装9libav-tools和9 后,libopus0您可以简单地执行以下操作:
avconv -i file.mp3 -map 0:a -codec:a opus -b:a 100k -vbr on file.opus
Run Code Online (Sandbox Code Playgroud)
-i file.mp3 设置输入文件。-map 0:a将从a输入文件中选择所有音频流 ( ) 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 KB/s。-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
Run Code Online (Sandbox Code Playgroud)file.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%
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 6
12.04 上的作品
但是,在 12.04(精确)上,安装 opus 编解码器和工具存在依赖性问题,因此我发现迄今为止最好的解决方案是最近可用的解决方案:按照此处所述编译 opus 音频编码器和解码器,并ffmpeg通过添加--enable-opus到ffmpeg(如编译指南中列出的)的配置选项来使用 opus 支持进行构建。
我知道这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
Run Code Online (Sandbox Code Playgroud)
然后,您可以测试创建的文件
ffplay man.opus
Run Code Online (Sandbox Code Playgroud)
编译提示
无需在此处完整复制指南,但值得注意的是一两件事:
您应该首先安装列出的依赖项(我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
Run Code Online (Sandbox Code Playgroud)有一个问题需要指出: git build 好像是要的yasm-1.2,那个是没有的,所以得从官网编译源码,不过很简单。只是删除所有已安装的版本yasm,然后解压下载的压缩包,cd文件夹,运行./configure && make,然后sudo checkinstall。如果任何其他构建需要早期版本,您只需删除此版本并安装存储库版本。
这是必要的,以消除任何现有的libav,ffmpeg,x264,libvpx,或fdk-aac包你开始编译之前。
这是至关重要的,你编译和安装x264,fdk-aac,libvpx和opus你建立之前ffmpeg,因为这些图书馆将在构建中使用。
--enable-opus运行ffmpeg编译时不要忘记添加配置选项。
opus编译的版本是1.1alpha,所以以后新版本发布时可能需要重新编译opus库和ffmpeg。
您可以ffplay用来播放您创建的任何 opus 文件。