Jak przekonwertować plik dźwiękowy na Opus


22

Do testów chcę przekonwertować plik MP3 i WAV na Opus, jakie są kroki, aby to zrobić?


1
@EvanCarroll Stąd część zatytułowana „Do testowania”;)
— Luis Alvarado

2
@EvanCarroll To zależy od tego, co chcesz osiągnąć i jakości materiału wejściowego. Jeśli szukasz absolutnego audiofilskiego rozwiązania, prawdopodobnie nigdy nie chcesz brać pod uwagę Opus. Mówienie, że to okropny pomysł, jest po prostu okropnym stwierdzeniem, gdy nie ma wyjaśnienia.
— LiveWireBT

1
@LiveWireBT Mówi, że kodowanie mp3 w opusie nie jest okropnym pomysłem, chyba że szukasz absolutnego audiofilskiego rozwiązania, to tylko okropne stwierdzenie, gdy nie ma wyjaśnienia.
— Evan Carroll

2
@EvanCarroll Opus specjalizuje się w obsłudze mowy, MP3 nie. Oznacza to, że można zmniejszyć swoje podcasty i audiobooki znacząco pod względem wielkości bez zauważalnej utraty jakości. Nie rozumiem, jak to jest okropny pomysł.
— Christian

3
@EvanCarroll „automatyczne wykrywanie mowy lub muzyki, aby zdecydować, którego trybu kodowania użyć” z opus-codec.org . I oczywiście poniesiesz stratę jakości. Dlatego jest to stratny kodek. Powiedziałeś, że to nigdy nie jest uzasadnione i dałem ci dobry przykład, w którym rozmiar jest ogromnym problemem, jakość drugorzędnego znaczenia i niedostępne źródło bezstratne.
— Christian

Odpowiedzi:


23

Domyślnie konwerter audio dostarczany z opus-tools może konwertować audio w formacie raw, wave lub AIFF. Minimalna składnia wykorzystuje ustawienia domyślne:

opusenc input.wav output.opus

Możemy chcieć dodać lepszą przepływność jako domyślną 96 kb / s z opcją --bitrate N.nnn(wszystkie opcje znajdziesz na stronie man dla opusenc).

Aby przekonwertować mp3 „w locie”. tzn. bez tworzenia pliku tymczasowego możemy przesłać dane wyjściowe z avconv do opusenc w następujący sposób:

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

Gdzie uzyskać „opusenc”?
— shevy

1
@shevy: pochodzi z opus-tools .
— Takkat

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

1
Aby to zrobić na wielu plikach flac: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(Wybrałem 140 jako bitrate, ponieważ zgodnie z tym wystarcza na pliki stereo.
— Joschua

11

Ubuntu 14.04 i Debian 8 są dostarczane z wersją 9 libav-toolsw swoich repozytoriach i ma wbudowaną obsługę Opus poprzez pakiet libopus0.

Przykład 1: Ponownie zakoduj plik audio jako opus

W wersji 9 libav-toolsi libopus0zainstalowanej możesz po prostu na przykład:

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

Co robią opcje

  • -i file.mp3 ustawia plik wejściowy.
  • -map 0:awybierze wszystkie strumienie audio ( a) z pliku wejściowego 0. Przeczytaj więcej -mapna https://libav.org/avconv.html#Advanced-options
  • -codec:a opuswybiera koder opus dla strumieni audio ( a). Dowiedz się więcej -codecna https://libav.org/avconv.html#Main-options .
  • -b:a 100kustawia bitrate audio na 100 kilobitów / s. Dowiedz się więcej -bna https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onwłącza zmienną szybkość transmisji. Jest to opcja specyficzna dla libopus. Oto wszystkie opcje dla 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 ustawia plik wyjściowy.

Przykład 2: Pobierz plik audio z pliku wideo i zakoduj go jako opus

Weź drugi strumień pierwszego wejścia ( -map 0:1), który jest strumieniem audio. Zakoduj go przy użyciu libopus przy prędkości 100 kbit / s ze zmienną przepływnością na:

$ 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%

Po mediainfozainstalowaniu pakietu :

$ 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
Doskonale działa na Ubuntu 14.04! Czy możesz wyjaśnić, co -map 0:arobi? (A może uszczegółowić całą linię?)
— 425nesp

@ piña Zaktualizowałem odpowiedź z wyjaśnieniem argumentów i dodatkowym przykładem.
— Daniel Jonsson

5

Opus 12.04

Jednak w dniu 12.04 (Precyzyjne) występują problemy z zależnością podczas instalowania kodeków i narzędzi opus, więc znalazłem zdecydowanie najlepsze rozwiązanie, które stało się dostępne bardzo niedawno: skompiluj koder i dekoder audio opus, jak wspomniano tutaj , i buduj ffmpegz obsługą opus, dodając --enable-opusdo opcji konfiguracji ffmpeg(wymienionych w przewodniku kompilacji ).

Wiem, że ffmpegjest to przestarzałe w Ubuntu na korzyść Libav, ale kompilacja jest dobrym sposobem na zintegrowanie w pełni działającego kodera / dekodera opus ffmpeg. Następnie możesz go użyć do konwersji plików (najpierw do wav), a następnie do .opus. Dokumentacja zainstalowana z libopus i ffmpeg ujawni wszystkie opcje, których można użyć do konwersji plików.

Podczas konwertowania plików ffmpegpo kompilacji musisz określić -acodec libopuslub ffmpegnie używać kodeka opus:

ffmpeg -i pc.wav -ar 48000 -ac 2 -acodec libopus -ab 256k man.opus

Następnie możesz przetestować plik utworzony za pomocą

ffplay man.opus

Wskazówki dotyczące kompilacji

Nie ma potrzeby reprodukowania tego przewodnika w całości, ale warto zauważyć jedną lub dwie rzeczy:

  • Najpierw powinieneś zainstalować zależności zgodnie z listą (pomijam yasmz listy: patrz mój drugi punkt):

     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
    
  • Jest jedna kwestia, na którą należy zwrócić uwagę: kompilacja git wydaje się być potrzebna yasm-1.2i nie jest dostępna, więc musisz skompilować źródło z oficjalnej strony , ale jest to proste. Wystarczy usunąć wszystkie zainstalowane wersje yasm, a następnie rozpakować pobrane archiwum cddo folderu, uruchomić, ./configure && makea następnie sudo checkinstall. Jeśli jakiekolwiek inne kompilacje wymagają wcześniejszej wersji, możesz po prostu usunąć tę wersję i zainstalować wersję repozytorium.

  • Jest to konieczne, aby usunąć wszelkie istniejące libav, ffmpeg, x264, libvpx, lub fdk-aacpakiety przed rozpoczęciem kompilacji.

  • Jest krytyczny , że skompilować i zainstalować x264, fdk-aac, libvpxa opusprzed budować ffmpeg, jak te biblioteki zostaną wykorzystane w budowie.

  • Nie zapomnij dodać --enable-opusdo opcji konfiguracji po uruchomieniu ffmpegkompilacji.

  • Skompilowana wersja opus to 1.1alpha, więc może być konieczne ponowne skompilowanie biblioteki opus i ffmpeg w przyszłości, kiedy zostanie wydana nowa wersja.

  • Możesz użyć ffplaydo odtworzenia utworzonych plików opus.


ffmpeg jest złym rozwiązaniem dla wszystkiego, co jest zamiennikiem.
— Evan Carroll

2
@EvanCarroll Co przez to rozumiesz? To tylko czyjaś decyzja, żeby go przestać używać: ffmpeg jest nadal tak dobry jak libav, co jest tylko jego rozwidleniem.

1
Świetna odpowiedź i dzięki za przypomnienie o wymaganiu Yasm. x264 zwiększył minimalną wersję do 1.2.0 po ostatnim pchnięciu. Przewodnik zaktualizowany o instrukcje Yasm.
— llogan

@Mik Myślę, że chciał powiedzieć, że samodzielny enkoder da lepsze wyniki.
— LiveWireBT

Widziałem niektóre osoby wspominające o błędzie „nie znaleziono opusa” podczas wykonywania instrukcji kompilacji ffmpeg. Miałem ten sam problem w Ubuntu 12.04, a później dowiedziałem się, że PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" wymaga na końcu ukośnika.

3

Tak to robię:

  • Najpierw otwórz terminal w tym samym katalogu, w którym znajdują się twoje pliki audio.
  • Następnie wpisz to polecenie:
$ opusenc --bitrate 320 - max-delay 10 "18 - Soul Asylum - Runaway Train (Wersja albumu) .flac" "18 - Soul Asylum - Runaway Train (Wersja albumu) .opus"

EDYTOWAĆ:

Dla audiofilów:

$ opusenc --bitrate 510 - max-delay 10 "18 - Soul Asylum - Runaway Train (Wersja albumu) .flac" "18 - Soul Asylum - Runaway Train (Wersja albumu) .opus"

Nie musisz określać --maxdelay 10opcji, ponieważ opusencdomyślnie to rób.

Dane wyjściowe konsoli dla tej konwersji pliku ( --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)

Jest super szybki! Mniej niż 8 sekund ze złożonością 10 (Kodowanie złożoności obliczeniowej (0-10, domyślnie: 10). Zero daje najszybsze kodowanie, ale niższej jakości, podczas gdy 10 daje najwyższą jakość, ale wolniejsze kodowanie) i maksymalny czas opóźnienia 10ms ( Maksymalne opóźnienie kontenera w milisekundach (0-1000, domyślnie: 1000)), więc jeśli pominiesz czas w utworze, efekt przycinania będzie trwał 10 ms, więc będzie niewidoczny (spróbuj z 1000 i usłysz różnicę czasu pomijania z twoim mysz). Domyślnie bitrate to VBR. 320kbps działało dla mnie, więc jest opcjonalne, zagraj z tym numerem:
--bitrate N.nnn=> Docelowa przepływność w kbit / s (6-256 na kanał)

Nawiasem mówiąc, kodowanie z MP3 do OPUS nie jest dobrym pomysłem, nie będzie brzmiało lepiej, ich algorytmy kompresji są zbyt różne. Ale z FLAC, WAV lub dowolnego innego formatu Lossless Audio to inna historia.

Uwaga: Aby zakodować inny plik, wystarczy nacisnąć strzałkę w górę w tym samym terminalu, aby wywołać ostatnie polecenie i zmienić nazwę plików wejściowych i wyjściowych.
Jeśli szukasz GUI ffmpeg / avconv, być może TraGtor jest tym, czego potrzebujesz.

Możesz także sprawdzić różnice w spektrogramach między formatami bezstratnymi i bezstratnymi przy wysokich przepływnościach za pomocą Spek lub Audacity .


Nie działało to dla mnie. Rozumiem Error parsing input file: Hardvapour remix-.mp3, że używam 16.04
— Sarah Szabo

Pytanie dotyczy mp3, a nie flaca.
— Przywróć Monikę - M. Schröder

0
  1. Znajdź płytę CD (lub flac z CDEMU) z taką samą zawartością jak mp3.
  2. Instal opus-toolsi Audex.
  3. Otwórz Audex i dodaj nowy profil o nazwie Opus, dodaj wzór poleceń;

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

i przyrostek opus

  1. pozwól mu zgrać!
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.