Antecedentes
O FFmpeg suporta codificação HEVC / H.265 desde 2014-2-12 com libx265. Agora você pode usar o ffmpeg diretamente para codificar HEVC ou usar outro codificador, em seguida, multiplicar manualmente para .mp4, .mov ou .mkv usando o FFmpeg.
Codificadores disponíveis
Os codificadores atuais H.265 / HEVC são:
- MulticoreWare x265
- chinês x265
- Codificador DivX HEVC
- Kvazaar
Apenas o MulticoreWare e DivX são sugeridos devido ao tempo de desenvolvimento e confiabilidade.
Dois x265's
Uma confusão é que existem dois projetos independentes, ambos chamados "x265", um por um estudante universitário chinês e praticamente morto, e outro por uma empresa comercial chamada MulticoreWare. Embora o primeiro tenha começado primeiro, ele está praticamente morto agora, e o último está em desenvolvimento ativo e é endossado pelo VideoLAN (o desenvolvedor do x264).
Linha de tempo do suporte à codificação HEVC do FFmpeg
- 2013-10-12 Suporte para muxing de .mov adicionado em
53f903b
. - 2014-02-12 suporte à codificação libx265 adicionado em
bb6b173
. - 2014-03-09 Mais completo suporte ao Matrix Muxing para HEVC adicionado em
38aee64
. - 2014-03-09 Mais completo .mov e novo suporte para muxing .mp4 adicionado em
9563e67
.
tl; dr
De qualquer forma, este é um conjunto completo de possibilidades atuais de codificação de HEVC na ordem da minha recomendação:
-
Usando diretamente o MulticoreWare libx265 com o FFmpeg. Isso significa que, com a mais recente versão do Zeranoe, você pode fazer isso agora:
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mov # With audio ffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=25 OUT.mov
Nota: O FFmpeg constrói mais recente que 2014-03-09 e permite que você muxe HEVC em arquivos .mp4 agora (commit 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
Você também pode muxá-lo em Matroska (.mkv):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
-
Usando o MulticoreWare x265 autônomo e, em seguida, mux o arquivo resultante com FFmpeg ou MP4Box . Isso funcionará com versões mais antigas do FFmpeg que não possuem suporte à libx265.
# Decode input using FFmpeg and encode using x265 using pipe ffmpeg -i INPUT -f yuv4mpegpipe -pix_fmt yuv420p - | \ x265 --y4m -o encoded.265 - # Mux the resulting encoded .265 file into an .mp4 or .mov # Using ffmpeg: only works with newer builds that support muxing HEVC # Muxing to .mp4 supported since 03-09-2014 ffmpeg -i encoded.265 -c copy out.mp4 # With audio ffmpeg -i encoded.265 -i INPUT -map 0 -map 1:a -c copy out.mp4 # Using MP4Box MP4Box -add raw.265 out.mp4 # With audio MP4Box -add {INPUT}#audio -add raw.265 out.mp4
Obrigado ao @Duvrai.
-
Usando o DivX HEVC Encoder e, em seguida, mux it.
A maneira de usá-lo é semelhante ao uso de x265 independente (veja acima).
Atualização: O FFmpeg tem suporte à codificação HEVC usando o MulticoreWare libx265 agora.
Atualização 2: O FFmpeg agora tem suporte para migrar o HEVC para o mp4 AND mov agora.