Кодировщик x265 имеет несколько алгоритмов управления скоростью, в том числе:
Целевой битрейт за 1 проход (устанавливая -b:v)
Целевой битрейт за 2 прохода
Коэффициент постоянной скорости (CRF)
В этом руководстве мы сосредоточимся на CRF и двухпроходном кодировании, поскольку однопроходное кодирование с целевым битрейтом не рекомендуется.
Коэффициент фиксированной скорости передачи данных (CRF)
Настройки качества (и управления скоростью) кодировщика по умолчанию. Диапазон значений от 0 до 51. Чем ниже значение, тем лучше качество результата. В то же время, чем больше выходной файл, чем выше значение, тем выше степень сжатия, но вы можете обнаружить, что значение равно определенной точке. Пора заметить существенную потерю качества.
Для x264 общее значение составляет от 18 до 28. Для x265 значение CRF по умолчанию - 28:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
ffmpeg -i input -c:v libx265 -crf 26 -preset fast -c:a aac -b:a 128k output.mp4
Двухпроходное кодирование
Этот метод обычно используется, если вы нацелены на определенный размер выходного файла, а качество вывода от кадра к кадру имеет меньшее значение. Это лучше всего объяснить на примере. Ваше видео длится 10 минут (600 секунд), а желаемый объем – 200 МиБ. Поскольку bitrate = file size / duration:
(200 МБ * 8192 [конвертирует МБ в кбит]) / 600 секунд = общий битрейт ~ 2730 кбит/с 2730 - 128 кбит/с (желаемый битрейт аудио) = 2602 кбит/с битрейт видео
Linux
ffmpeg -y -i input -c:v libx265 -b:v 2600k -x265-params pass=1 -an -f null /dev/null && \
ffmpeg -i input -c:v libx265 -b:v 2600k -x265-params pass=2 -c:a aac -b:a 128k output.mp4
Windows
ffmpeg -y -i input -c:v libx265 -b:v 2600k -x265-params pass=1 -an -f null NUL && ^
ffmpeg -i input -c:v libx265 -b:v 2600k -x265-params pass=2 -c:a aac -b:a 128k output.mp4
1080p в 720p scale ffmpeg
ffmpeg -i input.mp4 -c:v libx265 -crf 26 -preset fast -c:a aac -b:a 192k -vf scale=-2:720 06-01.mp4
Небольшой поиск видео формата avi в папке и его конвертация(для себя, язык python)
# Создать папку 'c' в каталоге с фидео import os import fnmatch import glob # print(os.curdir) path = (os.curdir) configfiles = [os.path.join(dirpath, f) for dirpath, dirnames, files in os.walk(path) for f in fnmatch.filter(files, '*.avi')] print(configfiles) for configfiless in configfiles: stri = str('ffmpeg -i' + ' ' + '"' + configfiless + '"' + ' ' + "-c:v libx265 -crf 26 -preset fast -c:a aac -b:a 128k"+' ' + '"' + "c/" + configfiless + '.mp4' + '"') clerstri = stri.replace(".\\" ,'').replace("\\" , '/').replace('.avi.mp4','.mp4') file_1 = open("conver.bat", "a", encoding='utf-8') file_1.write(str(clerstri) + '\n') file_1.close()
Encode AVI to h.265 Video (NVIDIA GPU Encoding)
ffmpeg -i input.avi -c:v hevc_nvenc output.mp4
Получить информацию о параметрах кодировщика можно командой
ffmpeg -h encoder=hevc_nvenc
Кодировщики с аппаратным ускорением не поддерживают -crf!
ffmpeg -hwaccel cuda -i 03.mp4 -c:v hevc_nvenc -preset fast -b:v 550K -c:a aac -b:a 128k 03_gpu-bitrate550.mp4
Альтернативой crf при кодировании gpu можно использовать -cq:v 25 (от 1 до 51)
ffmpeg -hwaccel cuda -i 03.mp4 -c:v hevc_nvenc -preset fast -tune ull -rc vbr -cq 33 03_exp_26.mp4
Можно поиграться с параметрами переменного битрейта и квантования указав их диапазоны
-qmin:v 33 -qmax:v 28
-b:v 550K -maxrate:v 800K
Кодировка высокого качества используя gpu 265/HEVC 10-bit
ffmpeg.exe -hwaccel cuda -i in_video.mp4 -pix_fmt p010le -c:v hevc_nvenc -preset slow -rc vbr_hq -b:v 6M -maxrate:v 10M -c:a aac -b:a 320k out_video.mp4
Конвертация всех видео с разрешением 1280:720:
ffmpeg -f concat -safe 0 -i mylist.txt -c:v hevc_nvenc -vf "scale=1280:720" output.mp4
Параметры
-hwaccel cuda используем NVidia CUDA GPU ускоритель
-pix_fmt p010le YUV 4:2:0 10-бит
-c:v hevc_nvenc кодек HEVC/h265 использует gpu
-preset slow Кодировка HQ gpu
-rc vbr_hq использует опцию RC для включения кодирования с переменным битрейтом с кодированием GPU
-qmin:v 19 -qmax:v 14 устанавливает минимальное и максимальное значения квантования (необязательно)
-b:v 6M -maxrate:v 10M устанавливает средний и максимальный битрейт, разрешенный для кодировщика
Encoder hevc_nvenc [NVIDIA NVENC hevc encoder]: General capabilities: dr1 delay hardware Threading capabilities: none Supported hardware devices: cuda cuda d3d11va d3d11va Supported pixel formats: yuv420p nv12 p010le yuv444p p016le yuv444p16le bgr0 rgb0 gbrp gbrp16le cuda d3d11 hevc_nvenc AVOptions: -presetE..V....... Set the encoding preset (from 0 to 18) (default p4) default 0 E..V....... slow 1 E..V....... hq 2 passes medium 2 E..V....... hq 1 pass fast 3 E..V....... hp 1 pass hp 4 E..V....... hq 5 E..V....... bd 6 E..V....... ll 7 E..V....... low latency llhq 8 E..V....... low latency hq llhp 9 E..V....... low latency hp lossless 10 E..V....... lossless losslesshp 11 E..V....... lossless hp p1 12 E..V....... fastest (lowest quality) p2 13 E..V....... faster (lower quality) p3 14 E..V....... fast (low quality) p4 15 E..V....... medium (default) p5 16 E..V....... slow (good quality) p6 17 E..V....... slower (better quality) p7 18 E..V....... slowest (best quality) -tune E..V....... Set the encoding tuning info (from 1 to 4) (default hq) hq 1 E..V....... High quality ll 2 E..V....... Low latency ull 3 E..V....... Ultra low latency lossless 4 E..V....... Lossless -profile E..V....... Set the encoding profile (from 0 to 4) (default main) main 0 E..V....... main10 1 E..V....... rext 2 E..V....... -level E..V....... Set the encoding level restriction (from 0 to 186) (default auto) auto 0 E..V....... 1 30 E..V....... 1.0 30 E..V....... 2 60 E..V....... 2.0 60 E..V....... 2.1 63 E..V....... 3 90 E..V....... 3.0 90 E..V....... 3.1 93 E..V....... 4 120 E..V....... 4.0 120 E..V....... 4.1 123 E..V....... 5 150 E..V....... 5.0 150 E..V....... 5.1 153 E..V....... 5.2 156 E..V....... 6 180 E..V....... 6.0 180 E..V....... 6.1 183 E..V....... 6.2 186 E..V....... -tier E..V....... Set the encoding tier (from 0 to 1) (default main) main 0 E..V....... high 1 E..V....... -rc E..V....... Override the preset rate-control (from -1 to INT_MAX) (default -1) constqp 0 E..V....... Constant QP mode vbr 1 E..V....... Variable bitrate mode cbr 2 E..V....... Constant bitrate mode vbr_minqp 8388612 E..V....... Variable bitrate mode with MinQP (deprecated) ll_2pass_quality 8388616 E..V....... Multi-pass optimized for image quality (deprecated) ll_2pass_size 8388624 E..V....... Multi-pass optimized for constant frame size (deprecated) vbr_2pass 8388640 E..V....... Multi-pass variable bitrate mode (deprecated) cbr_ld_hq 8388616 E..V....... Constant bitrate low delay high quality mode cbr_hq 8388624 E..V....... Constant bitrate high quality mode vbr_hq 8388640 E..V....... Variable bitrate high quality mode -rc-lookahead E..V....... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0) -surfaces E..V....... Number of concurrent surfaces (from 0 to 64) (default 0) -cbr E..V....... Use cbr encoding mode (default false) -2pass E..V....... Use 2pass encoding mode (default auto) -gpu E..V....... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any) any -1 E..V....... Pick the first device available list -2 E..V....... List the available devices -delay E..V....... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX) -no-scenecut E..V....... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false) -forced-idr E..V....... If forcing keyframes, force them as IDR frames. (default false) -spatial_aq E..V....... set to 1 to enable Spatial AQ (default false) -spatial-aq E..V....... set to 1 to enable Spatial AQ (default false) -temporal_aq E..V....... set to 1 to enable Temporal AQ (default false) -temporal-aq E..V....... set to 1 to enable Temporal AQ (default false) -zerolatency E..V....... Set 1 to indicate zero latency operation (no reordering delay) (default false) -nonref_p E..V....... Set this to 1 to enable automatic insertion of non-reference P-frames (default false) -strict_gop E..V....... Set 1 to minimize GOP-to-GOP rate fluctuations (default false) -aq-strength E..V....... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8) -cq E..V....... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0) -aud E..V....... Use access unit delimiters (default false) -bluray-compat E..V....... Bluray compatibility workarounds (default false) -init_qpP E..V....... Initial QP value for P frame (from -1 to 51) (default -1) -init_qpB E..V....... Initial QP value for B frame (from -1 to 51) (default -1) -init_qpI E..V....... Initial QP value for I frame (from -1 to 51) (default -1) -qp E..V....... Constant quantization parameter rate control method (from -1 to 51) (default -1) -qp_cb_offset E..V....... Quantization parameter offset for cb channel (from -12 to 12) (default 0) -qp_cr_offset E..V....... Quantization parameter offset for cr channel (from -12 to 12) (default 0) -weighted_pred E..V....... Set 1 to enable weighted prediction (from 0 to 1) (default 0) -b_ref_mode E..V....... Use B frames as references (from 0 to 2) (default disabled) disabled 0 E..V....... B frames will not be used for reference each 1 E..V....... Each B frame will be used for reference middle 2 E..V....... Only (number of B frames)/2 will be used for reference -a53cc E..V....... Use A53 Closed Captions (if available) (default true) -s12m_tc E..V....... Use timecode (if available) (default true) -dpb_size E..V....... Specifies the DPB size used for encoding (0 means automatic) (from 0 to INT_MAX) (default 0) -multipass E..V....... Set the multipass encoding (from 0 to 2) (default disabled) disabled 0 E..V....... Single Pass qres 1 E..V....... Two Pass encoding is enabled where first Pass is quarter resolution fullres 2 E..V....... Two Pass encoding is enabled where first Pass is full resolution -ldkfs E..V....... Low delay key frame scale; Specifies the Scene Change frame size increase allowed in case of single frame VBV and CBR (from 0 to 255) (default 0) -extra_sei E..V....... Pass on extra SEI data (e.g. a53 cc) to be included in the bitstream (default true) -udu_sei E..V....... Pass on user data unregistered SEI if available (default false) -intra-refresh E..V....... Use Periodic Intra Refresh instead of IDR frames (default false) -single-slice-intra-refresh E..V....... Use single slice intra refresh (default false) -constrained-encoding E..V....... Enable constrainedFrame encoding where each slice in the constrained picture is independent of other slices (default false)