Только с той информацией, которую вы предоставили, я могу придумать.
Пойдем по частям:
Поскольку к видео добавлено только одно изображение. Мне интересно, есть ли способ уменьшить размер видео, например, заставить скорость передачи в секунду = 1 вместо 28?
Поскольку это неподвижное изображение, менять его не нужно. просто оставайся на месте.
То, о чем вы говорите, это кадры в секунду (fps), а не битрейт. И ты прав в концепции. Бининг только одного неподвижного изображения 1 кадр / с не будет проблемой.
Это разумный размер для mp4? Имеет ли значение размер изображения?
В этом случае размер изображения не будет иметь значительного веса, потому что мы имеем дело только с одним неподвижным изображением. Если бы это было видео высокого качества, то это другая проблема.
Должен ли я изменить размер jpg до 1080 * 720 и сделать дополнительные настройки в ffmpeg для вывода в формате 720p (что тогда является настройкой ffmpeg :)?
Разрешение, которое вы говорите, это 1280x720.
Я не вижу смысла в -loop 1
опции здесь, это только замедлит процесс. Вы использовали, -shortest
потому что файл имеет более 1 входного потока? Если нет, то нет причин использовать его. Поскольку вы использовали, -acodec copy
я должен предположить, что вы не хотите перекодировать его.
Для вывода 720p 1fps без перекодирования и не касаясь битрейта:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Запишите случай, когда у него более одного входного потока, и вы хотите, чтобы ffmpeg завершил кодирование на самом коротком потоке:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Теперь, если вам нужно изменить битрейт (скажем, 1024k в качестве примера);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Смотрите: Ограничить выходной битрейт
-c: копия = Копировать входной аудиопоток, чтобы мы не перекодировали.
-b: v = битрейт, указанный как (не точно) постоянный.
-bufsize = Это интервал, в котором рассчитывается средний битрейт. Означает самое низкое качество изображения с большей потерей, но более точные битрейты в соответствии с указанным в -b: v .
-s = фактический размер видео выхода.
-framerate = частота кадров ввода, которую мы хотим использовать для вывода.
Обратите внимание, что если вам все равно нужно видео меньшего размера, вам придется пожертвовать качеством, чтобы достичь этого. И другие способы сделать это включают перекодирование со сжатием с потерями.
Исходя из того, что вы говорите, информации, которую вы предоставляете, и того, что вы пытаетесь сделать, я думаю, что ваша цель - встроить обложку альбома в mp3. Если это ваша цель, это будет лучше соответствовать вашим требованиям:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
-map_metadata = Спецификатор метаданных ffmpeg для вывода файла из infile. В этом случае ( ноль ) глобальные метаданные.
-map 0 = входной поток 1 (аудио).
-map 1 = входной поток 2 (изображение).
Если здесь ничего не соответствует вашим запросам, пожалуйста, дайте больше информации.