Wie codiere ich Audio mit dem Opus Codec?

30

Der Opus-Audiocodec scheint das Beste zu sein, was es je für die Audiokomprimierung gab. Es wurde kürzlich von den neuesten ffmpeg- und VLC-Playern unterstützt. Es gibt jedoch keine Dokumentation, in der beschrieben wird, wie Medien tatsächlich damit codiert werden. Kann jemand mich bitte zu besagten Dokumenten leiten, vorzugsweise mit Besonderheiten zu ffmpeg-Flags und deren Verwendung? Ich habe viele Hörbücher, die viel zu viel Platz beanspruchen, und Opus scheint das perfekte Format zu sein, um sie zu speichern.

MrDrMcCoy
quelle
1
Sie haben Ihr Betriebssystem nicht erwähnt.
Logan

Antworten:

38
ffmpeg -i <input> -c:a libopus -b:a bitrate <output>

Die Bitrate kann wie -b:a 96Kbei 96 kBit / s angegeben werden.

Die ffmpeg-Dokumentation enthält eine Liste von Optionen und Beschreibungen für libopus. Hier können Sie -vbrOptionen oder ein anderes einstellen -compression_level.

Stellen Sie sicher, dass Sie mit ffmpeg kompiliert haben --enable-libopus!

Adam Chance
quelle
Das ist toll! Ich hatte herausgefunden, wie man mit ffmpeg codiert, wusste aber nichts über die Flags -vbr und --compression_level. Genau das habe ich gesucht!
MrDrMcCoy
6
Das hat mir geholfen. NB, vbr onund compression_level 10sind Standardwerte und können wahrscheinlich weggelassen werden. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber
1
Dies sind in der Tat die Standardwerte, und in den meisten Fällen müssen sie nicht geändert werden. Beachten Sie auch, dass die Bitrate in Bit / s und nicht in den üblichen kbit / s angegeben ist. Die Standard-Bitrate ist 96000 (96 kbit / s), was natürlich ein guter Wert ist. Beispielbefehl zum Zusammenfassen:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double
Hier erfahren Sie, wie Sie den Parameter 'application' verwenden -application voip. Als neuer ffmpeg-Benutzer hatte ich einige Probleme, die richtige Syntax zu finden.
Tuxayo
15
  1. Laden Sie die Opus-Tools herunter

  2. Kodieren:
    opusenc --bitrate 64 What_A_Feeling.wav What_A_Feeling_64.opus

  3. Dekodieren: (zum Abspielen in einem beliebigen Media Player, nützlich, wenn Ihr Media Player Opus noch nicht unterstützt):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling ist ein Songname)

Detaillierte Optionen, die angezeigt werden, wenn Sie opusencalleine ausgeführt werden:

Usage: opusenc [options] input_file output_file.opus

Encodes input_file using Opus.
It can read the WAV, AIFF, FLAC, Ogg/FLAC, or raw files.

General options:
 -h, --help         This help
 -V, --version      Version information
 --quiet            Quiet mode

input_file can be:
  filename.wav      file
  -                 stdin

output_file can be:
  filename.opus     compressed file
  -                 stdout

Encoding options:
 --bitrate n.nnn    Target bitrate in kbit/sec (6-256/channel)
 --vbr              Use variable bitrate encoding (default)
 --cvbr             Use constrained variable bitrate encoding
 --hard-cbr         Use hard constant bitrate encoding
 --comp n           Encoding complexity (0-10, default: 10 (slowest))
 --framesize n      Maximum frame size in milliseconds
                      (2.5, 5, 10, 20, 40, 60, default: 20)
 --expect-loss      Percentage packet loss to expect (default: 0)
 --downmix-mono     Downmix to mono
 --downmix-stereo   Downmix to stereo (if >2 channels)
 --max-delay n      Maximum container delay in milliseconds
                      (0-1000, default: 1000)

Diagnostic options:
 --serial n         Forces a specific stream serial number
 --save-range file  Saves check values for every frame to a file
 --set-ctl-int x=y  Pass the encoder control x with value y (advanced)
                      Preface with s: to direct the ctl to multistream s
                      This may be used multiple times

Metadata options:
 --comment          Add the given string as an extra comment
                      This may be used multiple times
 --artist           Author of this track
 --title            Title for this track
 --album            Album or collection this track belongs to
 --date             Date for this track
 --genre            Genre for this track
 --picture          Album art for this track
                      More than one --picture option can be specified.
                      Either a FILENAME for the picture file or a more
                      complete SPECIFICATION form can be used. The
                      SPECIFICATION is a string whose parts are
                      separated by | (pipe) characters. Some parts may
                      be left empty to invoke default values. A
                      FILENAME is just shorthand for "||||FILENAME".
                      The format of SPECIFICATION is

                      [TYPE]|[MIME-TYPE]|[DESCRIPTION]|[WIDTHxHEIGHT
                      xDEPTH[/COLORS]]|FILENAME

                      TYPE is an optional number from one of:
                      0: Other
                      1: 32x32 pixel 'file icon' (PNG only)
                      2: Other file icon
                      3: Cover (front)
                      4: Cover (back)
                      5: Leaflet page
                      6: Media (e.g., label side of a CD)
                      7: Lead artist/lead performer/soloist
                      8: Artist/performer
                      9: Conductor
                      10: Band/Orchestra
                      11: Composer
                      12: Lyricist/text writer
                      13: Recording location
                      14: During recording
                      15: During performance
                      16: Movie/video screen capture
                      17: A bright colored fish
                      18: Illustration
                      19: Band/artist logotype
                      20: Publisher/studio logotype

                      The default is 3 (front cover). There may only be
                      one picture each of type 1 and 2 in a file.

                      MIME-TYPE is optional. If left blank, it will be
                      detected from the file. For best compatibility
                      with players, use pictures with a MIME-TYPE of
                      image/jpeg or image/png. The MIME-TYPE can also
                      be --> to mean that FILENAME is actually a URL to
                      an image, though this use is discouraged. The
                      file at the URL will not be fetched. The URL
                      itself is stored in the metadata.

                      DESCRIPTION is optional. The default is an empty
                      string.

                      The next part specifies the resolution and color
                      information. If the MIME-TYPE is image/jpeg,
                      image/png, or image/gif, you can usually leave
                      this empty and they can be detected from the
                      file. Otherwise, you must specify the width in
                      pixels, height in pixels, and color depth in
                      bits-per-pixel. If the image has indexed colors
                      you should also specify the number of colors
                      used. If possible, these are checked against the
                      file for accuracy.

                      FILENAME is the path to the picture file to be
                      imported, or the URL if the MIME-TYPE is -->.
 --padding n        Extra bytes to reserve for metadata (default: 512)
 --discard-comments Don't keep metadata when transcoding
 --discard-pictures Don't keep pictures when transcoding

Input options:
 --raw              Raw input
 --raw-bits n       Set bits/sample for raw input (default: 16)
 --raw-rate n       Set sampling rate for raw input (default: 48000)
 --raw-chan n       Set number of channels for raw input (default: 2)
 --raw-endianness n 1 for bigendian, 0 for little (defaults to 0)
 --ignorelength     Always ignore the datalength in Wave headers
Alexey Eromenko
quelle
Danke, aber ich hatte mir etwas Detaillierteres erhofft. Gibt es variable Bitratenoptionen? Welche anderen Flags kann ich übergeben, um den Audiostream zu optimieren?
MrDrMcCoy
1
@nakedhitman Die --vbrOption ist Standard. Siehe die Manpage für opusenc. Sie können auch mit ffmpeg codieren, dies muss jedoch --enable-libopusnach der Installation von libopus kompiliert werden .
Logan
Für eine Idee bekommen (nicht für Batch - Konvertierung), eine Online - Version wie dies könnte hilfreich sein. Für den Fall, dass eine komplette Sammlung konvertiert werden soll, kann opusinfo (ebenfalls Teil von opus-tools) feststellen, ob das ausgewählte Codierungswerkzeug eine gute Leistung erbringt .
Rainer Rillke
3

Die besten Opus Codec-Befehle in DOS / Windows Command wären:

Für lib 1.3, kleinste Dateigröße (Bandqualität):

Opusenc a.wav a.opus --bitrate 24 --framesize 40 --discard-comments --discard-pictures

Du wirst:

A: Bei 24 kbit ist der Schallausgang immer noch 16 kHz (32 kHz Stereo), und das bei einer sehr geringen Größe. Bei kleineren Werten sinkt die Sonic-Ausgabe auf 11 kHz

b- Erhöhen Sie die Framesize (sparen Sie ein paar Datenbits (ca. 6%), ohne wahrnehmbaren Qualitätsverlust)

c- Verwerfen Sie nicht benötigte TAG-Informationen und decken Sie Bilder ab, die nur die Dateigröße vergrößern.

Verwenden Sie für lib 1.3 Streaming (in der Nähe der CD-Qualität) '--bitrate 52' anstelle von '24'.

Die Standardeinstellung in Version 1.2 ist 48 KBit. Wenn Sie jedoch 52 in Version 1.3 und die Framesize-Einstellung 40 verwenden, ist die Dateigröße gleich, es sind jedoch viel weniger Artefakte hörbar.

52 kBit mit Framesize 40 entsprechen in der Qualität wohl 160 kBit MP3 bei weniger als 1/3 der Größe; 48 kbit bei 1.2 entsprechen 128 kbit bei MP3 oder sind nur 2,5x kleiner.

Für nahezu identische Qualität benötigen Sie zwischen 80 und 96 kbit. Ich benutze das selten, da ich mein Audio so klein wie möglich haben möchte.

Über 96 kbit eignet sich nur zum Bearbeiten, und man kann den Unterschied zwischen der Originaldatei und der Opus-codierten Datei nicht hörbar hören.

Trotzdem weiß ich noch nicht, wie das alles unter Linux funktioniert.

ProDigit
quelle
Ich habe einen Fehler versucht , dass man auf Linux und Windows: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. ffmpeg-Version ist 4.0.2
sukhmel