So konvertieren Sie eine Audiodatei in Opus

21

Zum Testen möchte ich eine MP3- und WAV-Datei, die ich zu Opus habe, konvertieren. Was sind die Schritte dazu?

Luis Alvarado
quelle
1
@EvanCarroll Daher der Teil, der sagt "Zum Testen";)
Luis Alvarado
2
@EvanCarroll Das hängt davon ab, was Sie erreichen möchten und von der Qualität des Eingangsmaterials. Wenn Sie nach einer absolut audiophilen Lösung suchen, sollten Sie Opus wahrscheinlich nie in Betracht ziehen. Zu sagen, dass es eine schreckliche Idee ist, ist nur eine schreckliche Aussage, wenn es keine Erklärung gibt.
LiveWireBT
1
@LiveWireBT Sagt, dass das Kodieren einer MP3-Datei in Opus keine schreckliche Idee ist, es sei denn, Sie suchen nach einer absolut audiophilen Lösung, es ist nur eine schreckliche Aussage, für die es keine Erklärung gibt.
Evan Carroll
2
@EvanCarroll Opus bietet spezielle Sprachunterstützung, MP3 nicht. Dies bedeutet, dass Sie Ihre Podcasts und Hörbücher ohne spürbaren Qualitätsverlust erheblich verkleinern können. Ich verstehe nicht, wie schrecklich das ist.
Christian
3
@EvanCarroll "Automatische Erkennung von Sprache oder Musik, um zu entscheiden, welcher Codierungsmodus verwendet werden soll" von opus-codec.org . Und natürlich werden Sie einen Qualitätsverlust erleiden. Deshalb ist es ein verlustbehafteter Codec. Sie sagten, dies sei jedoch niemals gerechtfertigt, und ich gab Ihnen ein gutes Beispiel, in dem Größe ein großes Problem darstellt, Qualität von untergeordneter Bedeutung und eine verlustfreie Quelle nicht verfügbar sind.
Christian

Antworten:

23

Standardmäßig kann der mit den Opus-Tools gelieferte Audiokonverter Audio im RAW-, WAV- oder AIFF-Format konvertieren. Die Minimalsyntax verwendet Standardeinstellungen:

opusenc input.wav output.opus

Möglicherweise möchten wir eine bessere Bitrate als die Standardrate von 96 KBit / --bitrate N.nnns mit der Option hinzufügen (Informationen zu allen Optionen finden Sie auf der Manpage für opusenc).

Mp3 "on the fly" konvertieren. dh ohne eine temporäre Datei zu erstellen, können wir die Ausgabe von avconv wie folgt an opusenc leiten:

avconv -i input.mp3 -f wav - | opusenc --bitrate 256 - output.opus
Takkat
quelle
Wo bekomme ich "opusenc"?
Shevy
1
@shevy: es kommt mit den opus-tools .
Takkat
@shevy: $ sudo Apt Opus-Tools installieren
Jose Barakat
1
Um dies zu tun auf einem Bündel von FLAC - Dateien: for f in *.flac; do ffmpeg -i "$f" -f wav - | opusenc --bitrate 140 - "${f%.flac}.opus"; done(Ich wählte 140 als Bitrate , weil nach dieser , es ist mehr als genug für Stereo - Dateien.
Joschua
11

Ubuntu 14.04 und Debian 8 werden mit Version 9 von libav-toolsin ihren Repositories ausgeliefert, und es hat eine eingebaute Unterstützung für Opus durch das Paket libopus0.

Beispiel 1: Codieren Sie eine Audiodatei als Opus neu

Mit Version 9 von libav-toolsund libopus0installiert können Sie zum Beispiel einfach Folgendes tun:

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

Was machen die Optionen?

  • -i file.mp3 Legt die Eingabedatei fest.
  • -map 0:awählt alle Audio-Streams ( a) aus der Eingabedatei aus 0. Weitere Informationen finden Sie -mapunter https://libav.org/avconv.html#Advanced-options
  • -codec:a opusWählt den Opus-Encoder für die Audio-Streams ( a). Weitere Informationen finden Sie -codecunter https://libav.org/avconv.html#Main-options .
  • -b:a 100kStellt die Bitrate des Audios auf 100 Kilobit / s ein. Weitere Informationen finden Sie -bunter https://libav.org/avconv.html#Codec-AVOptions
  • -vbr onschaltet die variable Bitrate ein. Dies ist eine für libopus spezifische Option. Hier sind alle Optionen für 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 Legt die Ausgabedatei fest.

Beispiel 2: Holen Sie sich das Audio aus einer Videodatei und kodieren Sie es als Opus

Nehmen Sie den zweiten Stream des ersten Eingangs ( -map 0:1), bei dem es sich um den Audio-Stream handelt. Codiere es mit libopus bei 100 kbit / s mit variabler Bitrate auf:

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

Mit dem mediainfoinstallierten Paket :

$ 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
Daniel Jonsson
quelle
1
Funktioniert auf Ubuntu 14.04 einwandfrei! Könnten Sie erklären, was -map 0:amacht? (Und vielleicht die gesamte Zeile detaillieren?)
425nesp
@ piña Ich habe die Antwort mit einer Erklärung der Argumente und einem zusätzlichen Beispiel aktualisiert.
Daniel Jonsson
5

Opus vom 12.04

Ab 12.04 (Precise) gibt es jedoch Abhängigkeitsprobleme bei der Installation der Opus-Codecs und -Tools. Daher habe ich mit Abstand die beste Lösung gefunden, die seit kurzem verfügbar ist: Kompilieren Sie den Opus-Audio-Codierer und -Decodierer wie hier angegeben . und erstellen Sie ffmpegmit Opus-Unterstützung, indem Sie --enable-opusdie Konfigurationsoptionen von ffmpeg(wie im Kompilierungshandbuch aufgeführt ) hinzufügen .

Ich weiß, dass dies ffmpegzugunsten von Ubuntu veraltet ist Libav, aber das Kompilieren ist ein guter Weg, um einen voll funktionsfähigen Opus-Encoder / Decoder in ffmpegsich zu integrieren . Sie können es dann verwenden, um Dateien (zuerst in WAV) und dann in zu konvertieren .opus. Die mit libopus und ffmpeg installierte Dokumentation zeigt alle Optionen, die zum Konvertieren von Dateien verwendet werden können.

Wenn Sie Dateien ffmpegnach der Kompilierung konvertieren , müssen Sie den Opus-Codec angeben -acodec libopusoder ffmpegwerden ihn nicht verwenden:

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

Sie können dann die mit erstellte Datei testen

ffplay man.opus

Kompilierungstipps

Es ist nicht erforderlich, den Leitfaden hier vollständig wiederzugeben, es sollten jedoch ein oder zwei Punkte beachtet werden:

  • Sie sollten zuerst die aufgeführten Abhängigkeiten installieren (ich lasse yasmdie Liste aus: siehe meinen zweiten 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
    
  • Es gibt ein Problem, auf das hingewiesen werden sollte: Der Git-Build scheint es zu wollen yasm-1.2, und das ist nicht verfügbar, daher müssen Sie den Quellcode von der offiziellen Website kompilieren , aber es ist einfach. Entfernen Sie einfach alle installierten Versionen von yasm, entpacken Sie das heruntergeladene Archiv cdin den Ordner, führen Sie es aus ./configure && makeund dann sudo checkinstall. Wenn andere Builds die frühere Version erfordern, können Sie diese Version einfach entfernen und die Repository-Version installieren.

  • Es ist notwendig , eine bestehende zu entfernen libav, ffmpeg, x264, libvpx, oder fdk-aacPakete , bevor Sie kompilieren beginnen.

  • Es ist entscheidend , dass Sie kompilieren und installieren x264, fdk-aac, libvpxund opusbevor Sie bauen ffmpeg, da diese Bibliotheken in der Build verwendet werden.

  • Vergessen Sie nicht --enable-opus, die Konfigurationsoptionen zu erweitern, wenn Sie die ffmpegKompilierung ausführen .

  • Die kompilierte Opus-Version war 1.1alpha, daher müssen Sie die Opus-Bibliothek und das ffmpeg möglicherweise in Zukunft erneut kompilieren, wenn eine neue Version veröffentlicht wird.

  • Sie können ffplayalle von Ihnen erstellten Opus-Dateien abspielen.


quelle
ffmpeg ist eine schlechte Lösung für alles, wofür es einen Ersatz gibt.
Evan Carroll
2
@EvanCarroll Was meinst du damit? Es ist nur die Entscheidung von jemandem, es abzulehnen: ffmpeg ist immer noch so gut wie libav, was nur eine Abzweigung davon ist.
1
Eine großartige Antwort und vielen Dank für die Erinnerung an die Yasm-Anforderung. x264 erhöhte die Mindestversion bei ihrem letzten Druck auf 1.2.0. Anleitung mit Yasm-Anweisungen aktualisiert.
Logan
@Mik Ich denke, er wollte sagen, dass der Standalone-Encoder bessere Ergebnisse liefert.
LiveWireBT
Ich habe einige Leute gesehen, die den Fehler "opus not found" erwähnt haben, als sie den Anweisungen zum Kompilieren von ffmpeg gefolgt sind. Ich hatte das gleiche Problem in Ubuntu 12.04 und fand später heraus, dass PKG_CONFIG_PATH = "$ HOME / ffmpeg_build / lib / pkgconfig" am Ende einen Schrägstrich benötigt.
3

So mach ich es:

  • Öffnen Sie zunächst ein Terminal in demselben Verzeichnis, in dem sich Ihre Audiodateien befinden.
  • Geben Sie dann diesen Befehl ein:
$ opusenc --bitrate 320 --max-delay 10 "18 - Soul Asylum - Ausreißer (Album Version) .flac" "18 - Soul Asylum - Ausreißer (Album Version) .opus"

BEARBEITEN:

Für Audiophile:

$ opusenc --bitrate 510 --max-delay 10 "18 - Soul Asylum - Ausreißer (Album Version) .flac" "18 - Soul Asylum - Ausreißer (Album Version) .opus"

--maxdelay 10Option muss nicht angegeben werden, da opusencdies standardmäßig erfolgt.

Konsolenausgabe für diese Dateikonvertierung ( --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)

Es ist super schnell! Weniger als 8 Sekunden bei einer Komplexität von 10 (Komplexität der Codierung (0-10, Standard: 10). Null gibt die schnellsten Codierungen bei geringerer Qualität an, während 10 die höchste Qualität bei langsamerer Codierung bietet.) Und eine maximale Verzögerungszeit von 10 ms ( Maximale Verzögerung des Containers in Millisekunden (0-1000, Standard: 1000). Wenn Sie also die Zeit in einem Song überspringen, dauert der Clipping-Effekt 10 ms, sodass er nicht wahrnehmbar ist Maus). Die Bitrate ist standardmäßig VBR. 320kbps funktionierten bei mir also ist optional, spiele mit dieser Nummer:
--bitrate N.nnn=> Zielbitrate in kbit / sec (6-256 pro Kanal)

Übrigens ist das Codieren von MP3 zu OPUS keine gute Idee, es wird nicht besser klingen, ihre Kompressionsalgorithmen sind viel zu unterschiedlich. Aber von FLAC oder WAV oder einem anderen verlustfreien Audioformat ist das eine andere Geschichte.

Hinweis: Um eine andere Datei zu kodieren, drücken Sie einfach den Aufwärtspfeil im selben Terminal, um den letzten Befehl aufzurufen und den Namen der Eingabe- und Ausgabedateien zu ändern.
Wenn Sie nach einer ffmpeg / avconv- Benutzeroberfläche suchen, ist TraGtor vielleicht das Richtige für Sie.

Sie können auch die Spektrogrammunterschiede zwischen den Formaten Lossless und Lossy mit hoher Bitrate mit Spek oder Audacity überprüfen .

Jose Barakat
quelle
Es hat bei mir nicht funktioniert. Ich bekomme Error parsing input file: Hardvapour remix-.mp3ich mit 16.04
Sarah Szabo
Die frage geht um mp3, nicht um flac.
Wiedereinsetzung von Monica - M. Schröder
0
  1. Finde eine CD (oder flac mit CDEMU) mit dem gleichen Inhalt wie mp3.
  2. Instal opus-toolsund Audex.
  3. Öffnen Sie Audex und fügen Sie ein neues Profil mit dem Namen Opus hinzu. Fügen Sie ein Befehlsmuster hinzu.

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

und Suffix opus

  1. Lass ihn ruhen in frieden!
Joel Garcia
quelle