Comment encoder l'audio avec le codec Opus?

31

Le codec audio Opus ressemble à la meilleure chose jamais conçue pour compresser l'audio. Il a récemment été pris en charge par les derniers lecteurs ffmpeg et VLC. Cependant, il n'y a aucune documentation que je puisse trouver sur la façon d'encoder réellement un média avec. Quelqu'un peut-il me diriger vers lesdits documents, de préférence avec des détails sur les drapeaux ffmpeg et leur utilisation? J'ai beaucoup de livres audio qui prennent beaucoup trop de place et Opus ressemble au format parfait pour les conserver.

MrDrMcCoy
la source
1
Vous n'avez pas mentionné votre système d'exploitation.
llogan

Réponses:

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

Le débit peut être donné comme -b:a 96Kpour 96 kBit / s.

La documentation ffmpeg contient une liste d'options et de descriptions pour libopus. Ici, vous pouvez définir des -vbroptions ou une autre -compression_level.

Assurez-vous d'avoir compilé ffmpeg avec --enable-libopus!

Adam Chance
la source
C'est bien! J'avais compris comment encoder avec ffmpeg, mais je ne connaissais pas les indicateurs -vbr et --compression_level. Ceci est exactement ce que je cherchais!
MrDrMcCoy
6
Cela m'a aidé. NB, vbr onet compression_level 10sont des valeurs par défaut et peuvent probablement être omis. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber
1
En effet, ce sont les valeurs par défaut, et dans la plupart des cas, elles n'ont pas besoin d'être modifiées. Notez également que le débit est en bits / s, pas les kbits / s habituels. Le débit binaire par défaut est 96000 (96 kbits / s), ce qui est (bien sûr sans doute) une bonne valeur. Exemple de commande pour résumer:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double
Voici comment utiliser le paramètre «application» -application voip. En tant que nouvel utilisateur de ffmpeg, j'ai eu un peu de mal à trouver la bonne syntaxe.
tuxayo
15
  1. Télécharger les outils Opus

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

  3. Décoder: (pour jouer dans n'importe quel lecteur multimédia, utile si votre lecteur multimédia ne prend pas encore en charge l'opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling est un nom de chanson)

Options détaillées affichées lors de l'exécution opusencpar lui-même:

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
la source
Merci, mais j'espérais quelque chose d'un peu plus détaillé. Existe-t-il des options de débit binaire variable? Quels autres indicateurs puis-je passer pour optimiser le flux audio?
MrDrMcCoy
1
@nakedhitman L' --vbroption est par défaut. Voir la page de manuel pour opusenc. Vous pouvez également encoder avec ffmpeg mais il doit être compilé avec --enable-libopusaprès l'installation de libopus .
llogan
Pour vous faire une idée (pas pour la conversion par lots), une version en ligne comme celle-ci pourrait être utile. Dans le cas où l'on prévoit de convertir une collection entière, opusinfo (également une partie de opus-tools) pourrait dire si l'outil de codage choisi a bien fonctionné.
Rainer Rillke
3

Les meilleures commandes Opus Codec dans la commande DOS / Windows seraient:

Pour la lib 1.3, la plus petite taille de fichier (qualité de bande):

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

Vous serez:

a- à 24kbits ont toujours une sortie sonore 16kHz (stéréo 32kHz), sur une très petite taille. Toute sortie plus petite et sonique chutera à 11 kHz

b- Augmenter la taille des frames (enregistrer quelques bits de données (environ 6%), sans perte perceptible de qualité)

c- Jetez les informations TAG inutiles et couvrez les images qui ne feront qu'agrandir la taille du fichier.

Pour la lib 1.3, le streaming (proche de la qualité CD) utilise '--bitrate 52' au lieu de '24'.

La valeur par défaut en 1.2 est 48kbits, mais en utilisant 52 en 1.3, avec 'framesize' réglé sur 40, la taille de votre fichier est égale, mais il y a beaucoup moins d'artefacts audibles.

52 kbits avec une taille d'image de 40, est sans doute de qualité égale à 160 kbits MP3, à moins du 1/3 de la taille; tandis que 48 kbits sur 1,2 équivaut à 128 kbits MP3, ou seulement 2,5 fois plus petit.

Pour une qualité presque identique, vous aurez besoin de 80 à 96 kbits. Je ne l'utilise presque jamais, car je veux que mon audio soit aussi petit que possible.

Plus de 96 kbits, n'est bon que pour l'édition, et on ne peut pas entendre de manière audible la différence entre l'original et le fichier encodé Opus.

Cela étant dit, je ne sais pas encore comment tout cela fonctionne sous Linux.

ProDigit
la source
Je suis une erreur en essayant que l' un sur Linux et Windows: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. La version ffmpeg est 4.0.2
sukhmel