De minha própria experiência, se você não quer absolutamente nenhuma perda de qualidade, - sem dúvida é o que você está procurando.
Não tenho certeza sobre avconv
, mas o comando que você digitou parece idêntico ao que eu faço com FFmpeg
. Em FFmpeg
você pode passar o parâmetro assim:
ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv
A maioria dos x265
switches (opções sem valor) podem ser especificados assim (exceto aqueles somente para CLI, aqueles que são usados apenas com x265
binary diretamente).
Com isso fora do caminho, gostaria de compartilhar minha experiência com a codificação x265
. Para a maioria dos vídeos (seja WMV, MPEG ou AVC / H.264) eu uso crf=23
. x265
decide o resto dos parâmetros e normalmente faz um bom trabalho.
No entanto, muitas vezes, antes de me comprometer a transcodificar um vídeo em sua totalidade, eu testo minhas configurações convertendo uma pequena parte do vídeo em questão. Aqui está um exemplo, suponha que um arquivo mkv com fluxo 0 sendo vídeo, fluxo 1 sendo áudio DTS e fluxo 2 sendo um subtítulo:
ffmpeg -hide_banner \
-ss 0 \
-i "INPUT.mkv" \
-attach "COVER.jpg" \
-map_metadata 0 \
-map_chapters 0 \
-metadata title="TITLE" \
-map 0:0 -metadata:s:v:0 language=eng \
-map 0:1 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" \
-map 0:2 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
-metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" \
-c:v libx265 -preset ultrafast -x265-params \
crf=22:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 \
-c:a copy \
-c:s copy \
-t 120 \
"OUTPUT.HEVC.DTS.Sample.mkv"
Note que as barras invertidas interrompem as quebras de linha em um comando longo, eu o faço para me ajudar a rastrear vários bits de uma entrada CLI complexa. Antes de explicá-lo linha por linha, a parte em que você converte apenas uma pequena parte de um vídeo é a segunda linha e a segunda última linha: -ss 0
significa procurar 0 segundo antes de começar a decodificar a entrada e -t 120
significa parar de gravar na saída após 120 segundos. Você também pode usar formatos de hora hh: mm: ss ou hh: mm: ss.sss.
Agora, linha por linha:
-
-hide_banner
impede queFFmpeg
mostre informações de compilação no início. Eu só não quero ver quando eu rola no console; -
-ss 0
procura 0 segundo antes de iniciar a decodificação da entrada. Note que se este parâmetro é dado após o arquivo de entrada e antes do arquivo de saída, ele se torna uma opção de saída e dizffmpeg
para decodificar e ignore a entrada até x segundos e, em seguida, comece a gravar na saída. Como uma opção de entrada, ela é menos precisa (porque a busca não é precisa na maioria dos formatos de contêiner), mas quase não leva tempo. Como uma opção de saída, ela é muito precisa, mas leva um tempo considerável para decodificar todo o fluxo antes do tempo especificado e, para fins de teste, você não quer perder tempo; -
-i "INPUT.mkv"
: especifique o arquivo de entrada; -
-attach "COVER.jpg"
: anexa uma capa (imagem em miniatura, pôster, qualquer que seja) à saída. A arte da capa é geralmente mostrada em exploradores de arquivos; -
-map_metadata 0
: Copie todos os metadados da entrada 0, que no exemplo é apenas a entrada; -
-map_chapters 0
: Copiar informações do capítulo (se presentes) da entrada 0; -
-metadata title="TITLE"
: defina o título do vídeo; -
-map 0:0 ...
: Mapeia o fluxo 0 da entrada 0, o que significa que queremos que o primeiro fluxo da entrada seja gravado na saída. Como esse fluxo é um fluxo de vídeo, ele é o primeiro fluxo de vídeo na saída , portanto, o especificador de fluxo:s:v:0
. Defina sua tag de idioma para inglês; -
-map 0:1 ...
: Similar à linha 8, mapeie o segundo fluxo (áudio DTS) e defina seu idioma e título (para facilitar a identificação ao escolher jogadores); -
-map 0:2 ...
: semelhante à linha 9, exceto que este fluxo é uma legenda; -
-metadata:s:t:0 ...
: define metadados para a capa. Isso é necessário para o formato de contêiner mkv; -
-c:v libx265 ...
: opções de codecs de vídeo. É tão longo que eu quebrei em duas linhas. Essa configuração é boa para vídeo bluray de alta qualidade (1080p) com faixas mínimas no gradiente (com um consumo de x265). É provavelmente um exagero para DVDs e programas de TV e vídeos de telefone. Essa configuração é principalmente roubada de esta postagem do Doom9 ; -
crf=22:...
: Continuação dos parâmetros do codec de vídeo. Veja a postagem no fórum mencionada acima; -
-c:a copy
: copie o áudio; -
-c:s copy
: copiar legendas; -
-t 120
: Pare de gravar na saída após 120 segundos, o que nos dá um clipe de 2 minutos para visualizar a qualidade de trance; -
"OUTPUT.HEVC.DTS.Sample.mkv"
: nome do arquivo de saída. Marcar meus nomes de arquivo com o codec de vídeo e o codec de áudio principal.
Uau. Esta é a minha primeira resposta, por isso, se houver algo que eu tenha perdido, por favor deixe um comentário. Eu não sou um especialista em produção de vídeo, sou apenas um cara com preguiça de assistir a um filme colocando o disco no player.
PS. Talvez essa questão pertença a outro lugar, pois não está strongmente relacionada ao Unix & Linux.