Как преобразовать звуковой файл в Opus
Для тестирования я хочу конвертировать файлы MP3 и WAV, которые у меня есть, в Opus, как это сделать?
5 ответов
По умолчанию аудио конвертер поставляется с opus-tools может конвертировать аудио в формате raw, wave или AIFF. Минимальный синтаксис использует настройки по умолчанию:
opusenc input.wav output.opus
Мы можем захотеть добавить лучшую скорость передачи данных как 96 кбит / с по умолчанию с опцией --bitrate N.nnn
(для всех вариантов обратитесь к странице man для opusenc).
Конвертировать mp3 "на лету". т.е. без создания временного файла мы можем передать вывод из avconv в opusenc следующим образом:
avconv -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
Ubuntu 14.04 и Debian 8 поставляются с версией 9 libav-tools
в своих репозиториях, и он имеет встроенную поддержку Opus через пакет libopus0
,
Пример 1: перекодировать аудиофайл в опус
С версией 9 libav-tools
а также libopus0
Установив, вы можете просто, например, сделать:
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
, Узнайте больше о-map
на https://libav.org/avconv.html-codec:a opus
выбирает кодер opus для аудиопотоков (a
). Узнайте больше о-codec
на https://libav.org/avconv.html.-b:a 100k
устанавливает битрейт аудио на 100 килобит / с. Узнайте больше о-b
на https://libav.org/avconv.html-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 кбит / с с переменной скоростью передачи данных:
$ 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
Опус 12.04
Однако 12.04 (Precise) существуют проблемы с зависимостями при установке кодеков и инструментов opus, поэтому я обнаружил, что наилучшим решением является то, которое стало доступно совсем недавно: скомпилируйте аудиокодер и декодер opus, как указано здесь, и построить ffmpeg
с поддержкой опуса, добавив --enable-opus
к настройке параметров ffmpeg
(как указано в руководстве по составлению).
я знаю это 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
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 вы создаете.
Вот как я это делаю:
- Сначала откройте терминал в той же директории, где находятся ваши аудиофайлы.
- Затем введите эту команду:
$ 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 дает самое высокое качество, но более медленное кодирование) и максимальное время задержки 10 мс (Максимальная задержка контейнера в миллисекундах (0-1000, по умолчанию: 1000)), поэтому, если вы пропустите время в песне, эффект отсечения будет иметь продолжительность 10 мс, поэтому он незаметен (попробуйте с 1000 и услышите время пропуска разницы с вашим мышь). Битрейт - это VBR по умолчанию. У меня работало 320кбит / с, так что необязательно, играйте с этим номером:--bitrate N.nnn
=> Целевой битрейт в кбит / с (6-256 на канал)
Между прочим, кодирование из MP3 в OPUS не очень хорошая идея, лучше не будет звучать, их алгоритмы сжатия слишком разные. Но из FLAC, WAV или любого другого формата аудио без потерь, это другая история.
Примечание. Чтобы кодировать другой файл, просто нажмите стрелку вверх в том же терминале, чтобы вызвать последнюю команду и изменить имя входного и выходного файлов.
Если вы ищете графический интерфейс ffmpeg / avconv, возможно, TraGtor - то, что вам нужно.
Вы также можете проверить различия в спектограммах между форматами Lossless и Lossy при высоких битрейтах с помощью Spek или Audacity.
Если нужен только маршрут из mp3 в opus,
mpg123
может сделать декодирование в wav/pcm.
mpg123 -w - input.mp3 | opusenc - output.opus
Для незнакомых чертёж "-" функционирует как stdout слева, который направляется на opusencs stdin справа.
Конечно, ffmpeg отлично подходит для общего преобразования и редактирования мультимедиа, но его размер установки и обычные зависимости распространения также имеют больший размер.
- Найдите компакт-диск (или диск с CDEMU) с тем же содержанием, что и mp3.
- Instal
opus-tools
а такжеAudex
, Откройте Audex и добавьте новый профиль под названием Opus, добавьте шаблон Command;
opusenc $i --comment="TRACKNUMBER="$trackno"" --artist "$artist" --album "$title" --title "$ttitle" --date "$date" --picture "$cover" $o
и суффикс opus
- пусть рвет!