Как преобразовать звуковой файл в 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 отлично подходит для общего преобразования и редактирования мультимедиа, но его размер установки и обычные зависимости распространения также имеют больший размер.

  1. Найдите компакт-диск (или диск с CDEMU) с тем же содержанием, что и mp3.
  2. Instal opus-tools а также Audex,
  3. Откройте Audex и добавьте новый профиль под названием Opus, добавьте шаблон Command;

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

и суффикс opus

  1. пусть рвет!
Другие вопросы по тегам