Як конвертувати звуковий файл в Opus


22

Для тестування я хочу перетворити файл MP3 і WAV, який я маю в Opus, які кроки зробити для цього?


1
@EvanCarroll Звідси частина, яка говорить "Для тестування";)
Луїс Альварадо

2
@EvanCarroll Це залежить від того, чого ви хочете досягти, і від якості вхідного матеріалу. Якщо ви шукаєте абсолютне рішення для аудіофілів, ви, мабуть, ніколи не хочете розглядати Opus в першу чергу. Сказати, що це жахлива ідея - це просто жахливе твердження, коли пояснення немає.
LiveWireBT

1
@LiveWireBT Каже, що кодування mp3 в опусі не є жахливою ідеєю, якщо ви не шукаєте абсолютного рішення для аудіофілів - це просто жахливе твердження, коли пояснення немає.
Еван Керролл

2
@EvanCarroll Opus має спеціалізовану підтримку мови, MP3 не підтримує. Це означає , що ви можете зменшити ваші подкасти та аудіокниги значно розміру без помітної втрати якості. Я не бачу, як це жахлива ідея.
Крістіан

3
@EvanCarroll "автоматичне виявлення мови та музики, щоб визначити, який режим кодування використовувати" від opus-codec.org . І звичайно, ви понесете втрату якості. Ось чому це втратний кодек. Ви сказали, що це ніколи не було виправданим, і я дав вам гарний приклад, коли розмір - це величезна проблема, якість вторинної важливості та відсутність джерел без втрат.
Крістіан

Відповіді:


23

За замовчуванням аудіо-конвертер, що постачається разом із інструментами opus, може конвертувати аудіо в сирому, хвильовому або AIFF форматі. Мінімальний синтаксис використовує параметри за замовчуванням:

opusenc input.wav output.opus

Ми можемо захотіти додати кращий бітрейт в якості опції за замовчуванням 96 кбіт / с --bitrate N.nnn(для всіх варіантів зверніться до manpage для opusenc).

Для перетворення mp3 "на льоту". тобто без створення тимчасового файлу ми можемо передавати висновок з avconv в opusenc таким чином:

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

Де взяти "opusenc"?
shevy

1
@shevy: він поставляється з опус-інструментами .
Таккат

@shevy: $ sudo apt встановити opus-tools
Хосе Баракат

1
Для цього на for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done
купі файлових

11

Ubuntu 14.04 і Debian 8 постачаються з версією 9 libav-toolsу своїх сховищах, і вона має вбудовану підтримку для Opus через пакет libopus0.

Приклад 1: Перекодування аудіофайлу як opus

З версією 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#Advanced-options
  • -codec:a opusвибирає кодер opus для аудіо потоків ( a). Детальніше про це читайте -codecна https://libav.org/avconv.html#Main-options .
  • -b:a 100kвстановлює бітрейт звуку до 100 кілобіт / с. Детальніше про -bна https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onвмикає змінний бітрейт. Це варіант, специфічний для лібопуса. Ось усі варіанти лібопуса:

    $ 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), який є аудіопотоком. Кодуйте його лібопусом зі швидкістю 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

1
Працює на Ubuntu 14.04 ідеально! Чи можете ви пояснити, що -map 0:aробить? (А може, докладно
розкрити

@ piña Я оновив відповідь поясненням аргументів та додатковим прикладом.
Даніель Джонсон

5

Опус 12.04

Однак 12.04 (точно), є проблеми залежності при встановленні кодеків та інструментів opus, тому я знайшов, безумовно, найкращим рішенням є те, що стало доступним зовсім недавно: компілюйте кодер і декодер Opus як описано тут , і створити ffmpegз підтримкою opus, додавши --enable-opusдо параметрів налаштування ffmpeg(як зазначено в посібнику з компіляції ).

Я знаю, що ffmpegце застаріле в Ubuntu на користь Libav, але компіляція - це хороший спосіб інтегрувати в ffmpegсебе повністю функціонуючий кодер / декодер opus . Потім ви можете використовувати його для перетворення файлів (спочатку в 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.1 альфа, тому вам може знадобитися знову скласти бібліотеку опусу та ffmpeg знову, коли вийде нова версія.

  • Ви можете використовувати ffplayдля відтворення будь-яких створених файлів opus.


ffmpeg - це погане рішення для всього, на що є заміна.
Еван Керролл

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 --бітрат 320 - макс-затримка 10 "18 - Притулок душі - Побіжний поїзд (версія альбому) .flac" "18 - Притулок душі - Побіжний поїзд (версія альбому) .opus"

Редагувати:

Для аудіофілів:

$ opusenc --бітрет 510 - макс-затримка 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 .


Це не працювало для мене. Я отримую, Error parsing input file: Hardvapour remix-.mp3що я використовую 16.04
Сара Сабо

Питання стосується mp3, а не flac.
Відновіть Моніку - М. Шредер

0
  1. Знайдіть компакт-диск (або flac з CDEMU) з тим самим вмістом, що і mp3.
  2. Встановити opus-toolsта Audex.
  3. Відкрийте Audex та додайте новий профіль під назвою Opus, додайте командний шаблон;

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

і суфікс opus

  1. нехай вона рве!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.