Маючи лише інформацію, яку ви надали, це те, що я можу придумати.
Пройдемо по шматочках:
Оскільки до відео додано лише одне зображення. Мені цікаво, чи є спосіб зменшити розмір відео, наприклад, сила бітової швидкості / секунди = 1 замість 28?
Оскільки це нерухомий образ, змінювати його не потрібно. просто залишайся на місці.
Що ви там говорите, це кадрів в секунду (кадрів в секунду), а не бітрейт. І ти маєш рацію в концепції. Зобразіть лише одне нерухоме зображення на 1 кадр / с, це не буде проблемою.
Це прийнятний розмір для mp4? Чи багато значення має розмір зображення?
У цьому випадку розмір зображення не мав би значної ваги, оскільки ми маємо справу лише з однією нерухомою картиною. Якщо це було високоякісне відео, то це вже інше питання.
Чи слід змінити розмір jpg до 1080 * 720 і зробити додаткові параметри у ffmpeg, щоб вивести 720p (що таке настройка ffmpeg :)?
Роздільна здатність, яку ви говорите, - 1280x720.
Я не бачу сенсу у -loop 1
варіанті тут, це лише сповільнить процес. Ви використовували -shortest
причину, що у файлу більше 1 вхідного потоку? Якщо ні, то немає ніяких причин використовувати його. Оскільки ви використовували, -acodec copy
я повинен будете припустити, що ви не хочете перекодувати його.
Для виходу 720p 1 кадрів в секунду без перекодування та не торкаючись бітрейта:
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 (зображення).
Якщо тут нічого не відповідає вашим запитам, будь ласка, надайте більше інформації.