tło
FFmpeg obsługuje kodowanie HEVC / H.265 od 2014-2-12 z libx265. Teraz możesz użyć ffmpeg bezpośrednio do kodowania HEVC lub użyć innego enkodera, a następnie ręcznie zmiksować go do .mp4, .mov lub .mkv za pomocą FFmpeg.
Dostępne kodery
Aktualne kodery H.265 / HEVC to:
Sugerowane są tylko MulticoreWare i DivX ze względu na ich czas rozwoju i niezawodność.
Dwa x265
Jednym zamieszaniem jest to, że istnieją dwa niezależne projekty o nazwie „x265”, jeden przez chińskiego studenta i praktycznie nie żyje, a drugi przez komercyjną firmę o nazwie MulticoreWare. Chociaż pierwszy z nich zaczął się jako pierwszy, jest teraz praktycznie martwy, a drugi jest w trakcie aktywnego rozwoju i jest wspierany przez VideoLAN (twórca x264).
Oś czasu obsługi kodowania HEF FFmpeg
- 2013-10-12 Dodano obsługę multipleksowania .mov
53f903b
.
- 2014-02-12 Dodano obsługę kodowania libx265
bb6b173
.
- 2014-03-09 Dodano bardziej kompletną obsługę multipleksowania Matroska dla HEVC
38aee64
.
- 2014-03-09 Dodano pełną obsługę .mov i nową obsługę multipleksowania .mp4
9563e67
.
tl; dr
Tak czy inaczej, jest to kompletny zestaw aktualnych możliwości kodowania HEVC w kolejności mojej rekomendacji:
Bezpośrednio za pomocą MulticoreWare libx265 z FFmpeg. Oznacza to, że dzięki najnowszej wersji Zeranoe możesz teraz to zrobić:
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
Uwaga: kompilacje FFmpeg nowsze niż 2014-03-09 pozwalają teraz na multipleksowanie HEVC w plikach .mp4 (zatwierdzenie 9563e67):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mp4
Możesz także multipleksować w Matroska (.mkv):
ffmpeg -i INPUT -c:v libx265 -an -x265-params crf=25 OUT.mkv
Używanie samodzielnego MulticoreWare x265, a następnie multipleksowanie powstałego pliku za pomocą FFmpeg lub MP4Box . Będzie to działać ze starszymi kompilacjami FFmpeg, które nie obsługują 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
Dzięki @Duvrai.
Za pomocą enkodera DivX HEVC, a następnie multipleksować.
Sposób korzystania z niego jest podobny do korzystania z samodzielnego x265 (patrz wyżej).
Aktualizacja: FFmpeg obsługuje teraz kodowanie HEVC za pomocą MulticoreWare libx265.
Aktualizacja 2: FFmpeg obsługuje teraz multipleksowanie HEVC do mp4 ORAZ mov.
crf=25
reprezentuje w przykładowych poleceniach, oto przewodnik CRF: slhck.info/articles/crf-c:v libx265
tak jak jest, powyższe przykłady generują przy użyciu x264. Dla jasności kodowałem zaffmpeg -i INPUT -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
pomocą x264, aleffmpeg -i INPUT -c:v libx265 -c:a copy -x265-params crf=2 OUTPUT_h265.mp4
kodowałem za pomocą x265.ffmpeg dodało kodowanie x265 12 lutego 2014 r. i obsługę kontenerów mp4 9 marca:
Uwaga:
-c:a copy
(lub wymienićcopy
zaac
,libfdk_aac
lublibfaac
- nakazał jakości-wise)--enable-libx265
(i--enable-libfdk-aac
lub w--enable-libfaac
razie potrzeby)źródło
-pix_fmt yuv420p
przed-c:v
, wynik był w porządku.Wypróbuj aktualny koder divx. Ma wbudowaną obsługę h265: http://www.divx.com/
(zgodnie z informacją http://jkdigital.de/h265-hevc-divx-praxisbericht/ )
źródło