FFmpeg: множественные x265-параметры не распознаются
Я использую ffmpeg в x265, и я хочу использовать несколько x265-params
в одной кодировке.
Когда я использую более одного параметра, ffmpeg не распознает их.
Мой сценарий:
ffmpeg -s:v 1440x1080 -r 25 -i incident_10d_1440x1080_25.yuv -c:v rawvideo \
-pix_fmt yuv420p -c:v libx265 -x265-params "--qp=16:--preset=medium:--psnr" \
out_1440x1080_qp16.mp4
Я установил значение параметра квантования равным 16.
Но мой вывод в терминале содержит следующее:
x265 [info]: Main profile, Level-4 (Main tier)
x265 [info]: Thread pool created using 4 threads
x265 [info]: Slices : 1
x265 [info]: frame threads / pool features : 2 / wpp(17 rows)
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge : hex / 57 / 2 / 2
x265 [info]: Keyframe min / max / scenecut / bias: 25 / 250 / 40 / 5.00
x265 [info]: Lookahead / bframes / badapt : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb : 1 / 1 / 0
x265 [info]: References / ref-limit cu / depth : 3 / on / on
x265 [info]: AQ: mode / str / qg-size / cu-tree : 1 / 1.0 / 32 / 1
x265 [info]: Rate Control / qCompress : CRF-28.0 / 0.60
Как видно, я получаю Rate Control / qCompress : CRF-28.0 / 0.60
,
Правильный должен быть x265 [info]: Rate Control : CQP-16
,
Когда у меня есть только этот параметр в x265-params
лайк -x265-params "--qp=16"
это работает правильно.
3 ответа
Примените пресет и настройте снаружи:
-preset medium -tune psnr -x265-params "qp=16:rc-lookahead=18"
Просто установите для параметров, для которых не требуется значение 1. Для меня работает пример ниже.
ffmpeg.exe -i input.mp4 -c:v libx265 -crf 32 -x265-params constrained-intra=1:intra-refresh=1:ctu=32:ref=1:bframes=0:keyint=150:min-keyint=150:aq-mode=2:aq-strength=1.0:qp-adaptation-range=1.0:no-aq-motion=1:qg-size=16:no-cutree=1 output.mp4
Эти единицы для параметров ниже будут проигнорированы, поскольку они не принимают значения
constrained-intra=1
intra-refresh=1
no-aq-motion=1
no-cutree=1
ffmpeg использует"key=value:"
структура для всех-x265-params
передается в libx265, но некоторые параметры x265 не имеют значения.
Это означает, что некоторые параметры в libx265 задаются иначе, чем в документации x265 .
--psnr -> psnr=1
--no-psnr -> psnr=0
--ssim -> ssim=1
--no-ssim -> ssim=0
Я не проверял это с остальными параметрами x265, которые имеют структуру --no-*, но я предполагаю, что это применимо ко всем из них, за некоторыми исключениями, например,--no-asm
, с--asm
принимает значение и не является флагом.
Как вы указали: неправильное включение параметра типа флага в аргументы-x265-params "{args}"
приведет к тому, что libx265 отклонит всю строку, определенную для-265-params
.