¿Cómo codificar audio con el códec Opus?

31

El códec de audio Opus se ve como lo mejor para comprimir audio. Recientemente se ha admitido en los últimos reproductores ffmpeg y VLC. Sin embargo, no hay documentación que pueda encontrar sobre cómo codificar los medios con él. ¿Alguien puede dirigirme a dichos documentos, preferiblemente con detalles para ffmpeg flags y uso? Tengo muchos audiolibros que ocupan demasiado espacio y Opus parece el formato perfecto para guardarlos.

MrDrMcCoy
fuente
1
No mencionaste tu sistema operativo.
llogan

Respuestas:

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

La tasa de bits se puede dar como -b:a 96Kpara 96 ​​kBit / s.

La documentación de ffmpeg tiene una lista de opciones y descripciones para libopus. Aquí puede establecer -vbropciones o una diferente -compression_level.

¡Asegúrate de haber compilado ffmpeg con --enable-libopus!

Adam Chance
fuente
¡Esto es genial! Había descubierto cómo codificar con ffmpeg, pero no sabía sobre los indicadores -vbr y --compression_level. ¡Esto es exactamente lo que estaba buscando!
MrDrMcCoy
66
Esto me ayudo. NB, vbr ony compression_level 10son valores predeterminados y probablemente se pueden omitir. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber
1
De hecho, estos son los valores predeterminados, y en la mayoría de los casos no tienen que modificarse. Además, tenga en cuenta que la tasa de bits está en bits / s, no en los kbits / s habituales. La tasa de bits predeterminada es 96000 (96 kbits / s), que es (por supuesto) un buen valor. Ejemplo de comando para resumir:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double
Aquí se explica cómo usar el parámetro 'aplicación' -application voip. Como nuevo usuario de ffmpeg, luché un poco para encontrar la sintaxis correcta.
tuxayo
15
  1. Descargar Opus-tools

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

  3. Decodificación: (para reproducir en cualquier reproductor multimedia, útil si su reproductor multimedia aún no es compatible con opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling es el nombre de una canción)

Opciones detalladas que se muestran cuando se ejecuta opusencsolo:

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
fuente
Gracias, pero esperaba algo un poco más detallado. ¿Hay opciones de velocidad de bits variable? ¿Qué otras banderas puedo pasar para optimizar la transmisión de audio?
MrDrMcCoy
1
@nakedhitman La --vbropción es la predeterminada. Consulte la página de manual de opusenc. También puede codificar con ffmpeg, pero debe compilarse --enable-libopusdespués de instalar libopus .
llogan
Para tener una idea (no para la conversión por lotes), una versión en línea como esta podría ser útil. En caso de que el plan de uno sea convertir una colección completa, opusinfo (también parte de opus-tools) podría determinar si la herramienta de codificación elegida funcionó bien.
Rainer Rillke
3

Los mejores comandos de Opus Codec en DOS / Windows Command serían:

Para lib 1.3, el tamaño de archivo más pequeño (calidad de cinta):

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

Vas a:

a- a 24kbits todavía tienen una salida sónica de 16kHz (estéreo de 32kHz), en un tamaño súper pequeño. Cualquier menor, y la salida de Sonic caerá a 11kHz

b- Aumente el tamaño del marco (guarde algunos bits de datos (alrededor del 6%), sin pérdida perceptible de calidad)

c- Descarte la información TAG innecesaria y cubra las imágenes que solo aumentarán el tamaño del archivo.

Para lib 1.3, la transmisión (casi calidad de CD) usa '--bitrate 52' en lugar de '24'.

El valor predeterminado en 1.2 es 48kbits, pero usando 52 en 1.3, con 'frameize' establecido en 40, el tamaño de su archivo es igual, pero hay muchos menos artefactos audibles.

52 kbits con frameize 40, es posiblemente igual en calidad a 160kbits MP3, a menos de 1/3 del tamaño; mientras que 48 kbits en 1.2 equivalen a 128 kbits MP3, o solo 2.5 veces más pequeños.

Para una calidad casi idéntica, necesitará entre 80 y 96 kbits. Casi nunca uso esto, ya que quiero que mi audio sea lo más pequeño posible.

Más de 96 kbits, solo es bueno para la edición, y no se puede escuchar de forma audible la diferencia entre el archivo codificado original y el Opus.

Dicho esto, todavía no sé cómo funciona todo en Linux.

ProDigit
fuente
Tengo un error al intentar que uno tanto en Linux y Windows: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. La versión de ffmpeg es
4.0.2