Come codificare l'audio con il codec Opus?


29

Il codec audio Opus sembra la cosa migliore di sempre per la compressione dell'audio. Recentemente è stato supportato negli ultimi lettori ffmpeg e VLC. Tuttavia, non c'è documentazione che posso trovare su come codificare effettivamente i media con esso. Qualcuno può indirizzarmi a detti documenti, preferibilmente con informazioni specifiche sui flag e sull'utilizzo di ffmpeg? Ho molti audiolibri che occupano troppo spazio e Opus sembra il formato perfetto per tenerli dentro.


1
Non hai menzionato il tuo sistema operativo.
Llogan,

Risposte:


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

Il bitrate può essere dato come -b:a 96Kper 96 kBit / s.

La documentazione di ffmpeg ha un elenco di opzioni e descrizioni per libopus. Qui puoi impostare le -vbropzioni o un'altra -compression_level.

Assicurati di aver compilato ffmpeg con --enable-libopus!


Questo è fantastico! Avevo capito come codificare con ffmpeg, ma non sapevo delle bandiere -vbr e --compression_level. Questo e 'esattamente quello che stavo cercando!
MrDrMcCoy

6
Questo mi ha aiutato. NB, vbr one compression_level 10sono valori predefiniti e probabilmente possono essere omessi. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber

1
In effetti, questi sono i valori predefiniti e nella maggior parte dei casi non devono essere modificati. Inoltre, nota che il bitrate è in bit / s, non i soliti kbit / s. Il bitrate predefinito è 96000 (96 kbit / s), che è (ovviamente discutibile) un valore eccellente. Esempio di comando per riassumere:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double

Ecco come utilizzare il parametro 'application' -application voip. Come nuovo utente di ffmpeg ho faticato un po 'a trovare la sintassi giusta.
tuxayo,

15
  1. Scarica Opus-tools

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

  3. Decodifica: (da riprodurre su qualsiasi lettore multimediale, utile se il lettore multimediale non supporta ancora l'opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling è il nome di una canzone)

Opzioni dettagliate visualizzate quando si esegue opusencda solo:

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

Grazie, ma speravo in qualcosa di un po 'più dettagliato. Esistono opzioni di velocità in bit variabile? Quali altri flag posso passare per ottimizzare il flusso audio?
MrDrMcCoy

1
@nakedhitman L' --vbropzione è predefinita. Vedi la pagina man per opusenc. Puoi anche codificare con ffmpeg ma deve essere compilato --enable-libopusdopo l'installazione di libopus .
Llogan,

Per avere un'idea (non per la conversione batch), una versione online come questa potrebbe essere utile. Nel caso in cui il proprio piano sia convertire un'intera collezione, opusinfo (anche parte di opus-tools) potrebbe dire se lo strumento di codifica scelto ha funzionato bene.
Rainer Rillke,

3

I migliori comandi Opus Codec nel comando DOS / Windows sarebbero:

Per lib 1.3, dimensione file minima (qualità nastro):

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

Desideri:

a- a 24kbit ha ancora un'uscita sonora a 16kHz (32kHz stereo), su dimensioni super ridotte. Qualsiasi uscita più piccola e Sonic scenderà a 11kHz

b- Aumentare la dimensione dei frame (salvare alcuni bit di dati (circa il 6%), senza perdita percepibile di qualità)

c- Eliminare le informazioni TAG non necessarie e le immagini di copertina che ingrandiranno solo le dimensioni del file.

Per lib 1.3, lo streaming (vicino alla qualità del CD) usa '--bitrate 52' invece di '24'.

Il valore predefinito in 1.2 è 48kbit, ma usando 52 in 1.3, con 'framesize' impostato su 40, la dimensione del file è uguale, ma si possono udire molti meno artefatti.

52 kbit con dimensione del frame 40, è probabilmente uguale in qualità a 160kbit MP3, a meno di 1/3 della dimensione; mentre 48kbit su 1.2 equivalgono a 128kbit MP3 o solo 2,5 volte più piccoli.

Per una qualità quasi identica, avrai bisogno tra 80 e 96kbit. Non lo uso quasi mai, poiché voglio che il mio audio sia il più piccolo possibile.

Oltre 96kbit, è buono solo per l'editing e non si può sentire in modo udibile la differenza tra il file codificato originale e Opus.

Detto questo, non so ancora come funziona tutto su Linux.


Ho ottenuto un errore nel tentativo che uno sia su Linux e Windows: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. La versione di ffmpeg è la 4.0.2
sukhmel il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.