Como codificar áudio com o codec Opus?


30

O codec de áudio Opus parece a melhor coisa para comprimir áudio. Recentemente, tornou-se suportado nos mais recentes players ffmpeg e VLC. No entanto, não há documentação que eu possa encontrar sobre como realmente codificar a mídia com ela. Alguém pode me encaminhar para esses documentos, de preferência com detalhes sobre sinalizadores e uso do ffmpeg? Tenho muitos audiolivros que ocupam muito espaço e o Opus parece o formato perfeito para mantê-los.


1
Você não mencionou seu sistema operacional.
llogan

Respostas:


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

A taxa de bits pode ser dada como -b:a 96Kpor 96 kBit / s.

A documentação do ffmpeg possui uma lista de opções e descrições para o libopus. Aqui você pode definir -vbropções ou um diferente -compression_level.

Certifique-se de compilar o ffmpeg com --enable-libopus!


Isso é ótimo! Eu tinha descoberto como codificar com ffmpeg, mas não sabia sobre os sinalizadores -vbr e --compression_level. Era exatamente isso que eu estava procurando!
precisa saber é o seguinte

6
Isso me ajudou. NB, vbr one compression_level 10são padrões e provavelmente podem ser omitidos. ffmpeg.org/ffmpeg-codecs.html#Option-Mapping
Joshua Huber

1
Na verdade, esses são os valores padrão e, na maioria dos casos, não precisam ser modificados. Além disso, observe que a taxa de bits está em bits / s, não nos kbits / s comuns. A taxa de bits padrão é 96000 (96 kbits / s), que é (obviamente sem dúvida) um bom valor. Exemplo de comando para resumir:ffmpeg -i input.flac -acodec libopus -b:a 128000 output.opus
Gras Double

Aqui está como usar o parâmetro 'application' -application voip. Como novo usuário do ffmpeg, lutei um pouco para encontrar a sintaxe correta.
tuxayo 26/04

15
  1. Download de ferramentas Opus

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

  3. Decodificação: (para reproduzir em qualquer media player, útil se o seu media player ainda não suportar opus):
    opusdec What_A_Feeling_64.opus What_A_Feeling_opus64.wav

(What_A_Feeling é um nome de música)

Opções detalhadas exibidas ao executar opusencpor si só:

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

Obrigado, mas eu esperava algo um pouco mais detalhado. Existem opções de taxa de bits variável? Quais outros sinalizadores posso passar para otimizar o fluxo de áudio?
precisa saber é o seguinte

1
@nakedhitman A --vbropção é o padrão. Veja a página de manual para opusenc. Você também pode codificar com ffmpeg, mas ele precisa ser compilado --enable-libopusapós a instalação do libopus .
llogan

Para ter uma ideia (não para conversão em lote), uma versão online como essa pode ser útil. Caso o plano de alguém seja converter uma coleção inteira, o opusinfo (também parte de opus-tools) pode dizer se a ferramenta de codificação escolhida teve bom desempenho.
Rainer Rillke

3

Os melhores comandos do Opus Codec no comando DOS / Windows seriam:

Para a lib 1.3, o menor tamanho de arquivo (qualidade da fita):

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

Você irá:

a 24kbits ainda tem uma saída sônica de 16kHz (32kHz estéreo), em um tamanho super pequeno. Qualquer menor, e a saída do Sonic cairá para 11kHz

b- Aumentar o tamanho do quadro (economize alguns bits de dados (cerca de 6%), sem perda perceptível na qualidade)

c- Descarte informações desnecessárias de TAG e cubra as fotos que aumentarão apenas o tamanho do arquivo.

Para a lib 1.3, o streaming (quase com qualidade de CD) usa '--bitrate 52' em vez de '24'.

O padrão em 1.2 é 48kbits, mas usando 52 em 1.3, com 'tamanho de quadro' definido como 40, o tamanho do arquivo é igual, mas há muito menos artefatos audíveis.

52 kbits com tamanho de quadro 40, é sem dúvida igual em qualidade a 160kbits MP3, com menos de 1/3 do tamanho; enquanto 48kbits em 1,2 é igual a 128kbits em MP3, ou apenas 2,5x menor em tamanho.

Para uma qualidade quase idêntica, você precisará entre 80 e 96kbits. Quase nunca uso isso, pois quero que meu áudio seja o menor possível.

Acima de 96kbits, é bom apenas para edição e não se pode ouvir audivelmente a diferença entre o arquivo original e o Opus.

Dito isto, ainda não sei como tudo funciona no Linux.


Eu tenho um erro ao tentar que um em Linux e Windows: Unrecognized option '-framesize'. Error splitting the argument list: Option not found. A versão do ffmpeg é 4.0.2
sukhmel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.