Hintergrund
FFmpeg unterstützt die Codierung von HEVC / H.265 seit dem 12.02.2014 mit libx265. Jetzt können Sie ffmpeg direkt zum Codieren von HEVC verwenden oder einen anderen Encoder verwenden und diesen dann mithilfe von FFmpeg manuell in .mp4, .mov oder .mkv muxen.
Verfügbare Encoder
Aktuelle H.265 / HEVC-Encoder sind:
Aufgrund ihrer Entwicklungszeit und Zuverlässigkeit werden nur MulticoreWare und DivX empfohlen.
Zwei x265
Eine Verwirrung ist, dass es zwei unabhängige Projekte mit dem Namen "x265" gibt, eines von einem chinesischen College-Studenten, der praktisch tot ist, und eines von einer kommerziellen Firma namens MulticoreWare. Obwohl die erste Version als erste gestartet wurde, ist sie jetzt praktisch tot, und die zweite befindet sich in der aktiven Entwicklung und wird von VideoLAN (dem Entwickler von x264) unterstützt.
Zeitleiste der FFmpeg-HEVC-Codierungsunterstützung
- 2013-10-12 .mov Muxing-Unterstützung hinzugefügt in
53f903b
.
- 2014-02-12 libx265 Kodierungsunterstützung hinzugefügt in
bb6b173
.
- 2014-03-09 Vollständigere Matroska-Muxing-Unterstützung für HEVC hinzugefügt in
38aee64
.
- 2014-03-09 Vollständigere .mov- und neue .mp4-Muxing-Unterstützung hinzugefügt in
9563e67
.
tl; dr
Wie auch immer, dies ist ein vollständiger Satz aktueller Möglichkeiten zur Codierung von HEVC in der Reihenfolge meiner Empfehlung:
Direktes Verwenden von MulticoreWare libx265 mit FFmpeg. Dies bedeutet, dass Sie mit dem neuesten Zeranoe-Build Folgendes tun können:
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
Hinweis: Mit FFmpeg-Builds, die neuer als der 09.03.2014 sind, können Sie HEVC jetzt in MP4-Dateien muxen (Commit 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
Sie können es auch in Matroska (.mkv) muxen:
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
Verwenden Sie Standalone-MulticoreWare x265 und muxen Sie die resultierende Datei mit FFmpeg oder MP4Box . Dies funktioniert mit älteren FFmpeg-Builds, die libx265 nicht unterstützen.
# 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
Vielen Dank an @Duvrai.
Mit DivX HEVC Encoder und dann muxen.
Die Verwendung ähnelt der Verwendung von Standalone x265 (siehe oben).
Update: FFmpeg unterstützt jetzt die HEVC-Codierung mit MulticoreWare libx265.
Update 2: FFmpeg unterstützt jetzt das Muxen von HEVC in mp4 AND mov.
crf=25
in den Beispielbefehlen dargestellt wird, finden Sie hier einen CRF-Leitfaden: slhck.info/articles/crf-c:v libx265
So wie es ist, werden die obigen Beispiele unter Verwendung von x264 ausgegeben. Der Übersichtlichkeitffmpeg -i INPUT -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
halber wurde mit x264, aberffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
mit x265 codiert.ffmpeg hat am 12. Februar 2014 die x265-Codierung und am 9. März die MP4-Container-Unterstützung hinzugefügt:
Hinweis:
-c:a copy
(oder ersetzencopy
mitaac
,libfdk_aac
oderlibfaac
- bestellte Qualität her)--enable-libx265
(und--enable-libfdk-aac
oder--enable-libfaac
falls nötig)quelle
-pix_fmt yuv420p
vor dem hinzufügte-c:v
, war das Ergebnis in Ordnung.Probieren Sie den aktuellen DivX-Encoder. Es wurde Unterstützung für h265 eingebaut: http://www.divx.com/
(wie berichtet http://jkdigital.de/h265-hevc-divx-praxisbericht/ )
quelle