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.

Другие вопросы по тегам