Самым безопасным способом будет CRF с ограничением битрейта:
ffmpeg -i input -c:v libx264 -preset veryslow -crf 23 -maxrate X -bufsize 2M output.mp4
Где Х - это максимальный битрейт в мега
битах в секунду, например 6M - 6 мегабит в секунду. Теперь считаем наш предел по этим самым мегабитам:
Битрейт в мегабитах = размер файла в гигабайтах / (количество минут * .0075)
Для часового файла с лимитом в 1,5 гигабайт это 1,5 / (60*0.0075) = 3,3 мегабита в секунду. Не забудьте, что хотя бы 128 килобит нужно оставить на звук. Их придется вычесть из максимального битрейта для видео. Вот
тут есть калькулятор.
Тогда:
ffmpeg -i input -c:v libx264 -preset veryslow -crf 23 -maxrate 3M -bufsize 2M -acodec aac -b:a 128k output.mp4
Это, на самом деле, очень мало, но точно влезет в лимит. Достаточно приличным для большинства файлов битрейтом считаю что-то в районе 10 мегабит в секунду, но на самом деле все зависит от картинки, если много статики, то и 3 может хватить.. Ну и я надеюсь, что файлы у вас все же не часовые. :)
Тоже самое, но с битрейтом вместо CRF, можно тоже попробовать, и сравнить результаты:
ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3M -pass 1 -an -f mp4 NUL
ffmpeg -i input -vcodec libx264 -preset veryslow -b:v 3M -pass 2 -acodec aac -b:a 128k output.mp4
Это добро идет двумя последовательными строками в bat-файл, должно выполняться одно за другим.
Использовать HEVC (H.265), наверное, нецелесообразно для 1080P. Но попробовать можно:
ffmpeg -i input -c:v libx265 -preset slower -crf 23 -maxrate 3M -bufsize 2M output.mp4
Если вдруг окажется, что у полученного файла средний битрейт получился ниже лимита, значит он был ограничен целевым качеством CRF. Тогда качество можно повысить, для этого цифру нужно понизить. Например, -crf до 21.