Contexte
FFmpeg prend en charge l'encodage HEVC / H.265 depuis le 2014-2-12 avec libx265. Vous pouvez maintenant utiliser ffmpeg directement pour encoder HEVC ou utiliser un autre encodeur, puis le multiplexer manuellement dans .mp4, .mov ou .mkv à l'aide de FFmpeg.
Encodeurs disponibles
Les codeurs H.265 / HEVC actuels sont:
Seuls le MulticoreWare et le DivX sont suggérés en raison de leur temps de développement et de leur fiabilité.
Deux x265
Une confusion est qu'il y a deux projets indépendants nommés "x265", l'un par un étudiant chinois et est pratiquement mort, et l'autre par une société commerciale appelée MulticoreWare. Bien que le premier ait commencé en premier, il est pratiquement mort maintenant, et le second est en développement actif et est approuvé par VideoLAN (le développeur de x264).
Chronologie de la prise en charge de l'encodage FFmpeg HEVC
- 2013-10-12 Ajout de la prise en charge du multiplexage .mov
53f903b
.
- 2014-02-12 Prise en charge du codage libx265 ajoutée
bb6b173
.
- 2014-03-09 Ajout d'un support de multiplexage Matroska plus complet pour HEVC
38aee64
.
- 09/03/2014 Un support .mov plus complet et un nouveau support de multiplexage .mp4 ajoutés
9563e67
.
tl; dr
Quoi qu'il en soit, ce sont un ensemble complet de possibilités actuelles d'encodage HEVC dans l'ordre de ma recommandation:
Utilisation directe de MulticoreWare libx265 avec FFmpeg. Cela signifie qu'avec la dernière version de Zeranoe, vous pouvez maintenant le faire:
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
Remarque: FFmpeg construit plus récent que 2014-03-09 vous permet de muxer HEVC dans des fichiers .mp4 maintenant (commit 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
Vous pouvez également le multiplexer dans Matroska (.mkv):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
Utilisation de MulticoreWare x265 autonome, puis multiplexer le fichier résultant avec FFmpeg ou MP4Box . Cela fonctionnera avec les anciennes versions de FFmpeg qui ne prennent pas en charge 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
Merci à @Duvrai.
Utilisation de DivX HEVC Encoder puis multiplexage.
La façon de l'utiliser est similaire à l'utilisation de x265 autonome (voir ci-dessus).
Mise à jour: FFmpeg prend désormais en charge le codage HEVC en utilisant MulticoreWare libx265.
Mise à jour 2: FFmpeg prend désormais en charge le multiplexage HEVC dans mp4 ET mov maintenant.
crf=25
représente dans les commandes d'exemple, voici un guide CRF: slhck.info/articles/crf-c:v libx265
en l'état, les exemples ci-dessus sortent en utilisant x264. Pour plus de clarté, codait avecffmpeg -i INPUT -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
x264, maisffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
codé avec x265.ffmpeg a ajouté l'encodage x265 le 12 février 2014 et la prise en charge des conteneurs mp4 le 9 mars:
Remarque:
-c:a copy
(ou remplacezcopy
paraac
,libfdk_aac
oulibfaac
- en fonction de la qualité)--enable-libx265
(et--enable-libfdk-aac
ou--enable-libfaac
si nécessaire)la source
-pix_fmt yuv420p
avant le-c:v
, le résultat était bien.Essayez l'encodeur divx actuel. Il a un support intégré pour h265: http://www.divx.com/
(comme indiqué http://jkdigital.de/h265-hevc-divx-praxisbericht/ )
la source