Como especificar o nível de compressão flac ao converter com avconv?

4

Estou tentando converter alguns arquivos aac em arquivos flac, porque o aac não é suportado por outro dispositivo que eu uso. Depois de várias tentativas de encontrar uma solução, pesquisando na Internet, eu finalmente li que o ffmpeg foi substituído pelo avconv e que o avconv é um fork do ffmpeg. Então eu procurei como converter para flac usando avconv e encontrei esta linha:

avconv -i (input file) -f flac (output file path)

Isso funciona bem, no entanto, não vejo nenhum nível de compactação flac nesse comando e preciso ter um nível de compactação de 2 ou menor, devido aos recursos da CPU no dispositivo de destino. Eu verifiquei o man-page para avconv, mas ele não parece mencionar os níveis de compactação do flac.

Então, minha pergunta é: Como eu especifico o nível de compressão flac ao converter de qualquer formato de entrada para flac usando avconv?

    
por Zelphir 02.11.2014 / 11:11

2 respostas

0

Existe um atributo -compression_level . Página man dá seu formato como

-compression_level[:stream_specifier] integer (output,audio,video)

Você provavelmente não precisará especificar o fluxo, pois você tem apenas um único no arquivo, por isso -compression_level 2 é seu amigo.

No futuro, você pode querer verificar a página do manual para as ferramentas.

  1. Abra o terminal.
  2. Digite man (name of program) . Por exemplo, man avconv .
  3. Para pesquisar o manual, pressione '/' e digite a string a ser pesquisada. Neste caso eu fiz '/ compressão', esta foi a segunda coisa que foi encontrada.
por v010dya 09.11.2014 / 23:48
9

A opção é -compression_level e pode ser definida com avconv ou FFmpeg :

ffmpeg -i input.wav -c:a flac -compression_level 12 output.flac

Curiosamente, o codificador flac de linha de comando oferece níveis de compressão de 0 a 8, mas o FFmpeg / avconv oferece 0 a 12. A documentação pode ser vista em 3 lugares:

1. Código fonte:

As opções para compactação flac podem ser vistas em flacenc.c :

/* set compression option defaults based on avctx->compression_level */
if (avctx->compression_level < 0)         <-------------
    s->options.compression_level = 5;     <-------------
else
    s->options.compression_level = avctx->compression_level;

level = s->options.compression_level;
if (level > 12) {                         <-------------
    av_log(avctx, AV_LOG_ERROR, "invalid compression level: %d\n",
           s->options.compression_level);
    return AVERROR(EINVAL);
}

Eu tenho 'flechado' nas seções relevantes!

2. Man pages:

As opções de compactação também podem ser vistas em man ffmpeg-all em vez de man ffmpeg :). Esta página man mostra:

compression_level
Sets the compression level, which chooses defaults for many other options
if they are not set explicitly. Valid values are from 0 to 12, 5 is the default.

Um pouco confuso com várias páginas man agora disponíveis para o FFmpeg!

3. Documentação online:

Como "Miso Soup" apontou, há também alguma documentação disponível on-line para as opções mais profundas de codificação flac, incluindo as opções de compressão:

compression_level
Sets the compression level, which chooses defaults for many
other options if they are not set explicitly. Valid values
are from 0 to 12, 5 is the default.

O mesmo que as páginas do manual, mas talvez seja um pouco mais fácil para alguns encontrarem e lerem!

Referências:

por andrew.46 17.04.2016 / 12:18