Додайте накладку зображення перед відео, використовуючи ffmpeg


31

У мене є багато відео, і мені потрібно покласти зображення перед ними приблизно на 5 секунд, але додавати його вручну та рендерінг потрібно буде забирати дійсно багато часу, тому я запитую, чи можна це зробити через ffmpeg і якщо ви можна, будь ласка, допомогти мені в цьому, оскільки я не маю досвіду роботи з ffmpeg. Я вже знайшов деякі команди, але жодна з них не працювала. Цей, наприклад.

ffmpeg -itsoffset 5 -i in.mp4 -r 25 -loop 1 -i intro.png -filter_complex "[1:v] fade=out:125:25:alpha=1 [intro]; [0:v][intro] overlay [v]" -map "[v]" -map 0:a -acodec copy out.mp4

1
Чи просто скопіювали цю команду чи написали її відповідно до ваших потреб? Я прошу, бо ця команда включає такі речі, як згасання та всі інші речі, які не стосуються вашого питання. Вам просто потрібно накласти зображення або вам потрібно більше?
PTS

Я скопіював його звідкись, все, що мені потрібно, - це просто поставити зображення перед відео.
Ацтей

Відповіді:


44

Ви можете зробити просте накладення зображення, використовуючи наступний синтаксис:

ffmpeg -i input.mp4 -i image.png \
-filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" \
-pix_fmt yuv420p -c:a copy \
output.mp4

overlay=25:25 означає, що ми хочемо розмістити зображення на 25 пікселів вправо і на 25 пікселів вниз, починаючи з верхнього лівого кута (0: 0).

enable='between(t,0,20)' означає, що ми хочемо, щоб зображення відображалося між другими 0 і 20.

[0:v][1:v]означає, що ми хочемо, щоб перший відео-файл, який ми імпортуємо -i, у нашому випадку input.mp4 або як ffmpeg бачить, що файл вхідного відео № 0, знаходиться під вхідним файлом відео 1, у нашому випадку image.png. :vпросто означає, що ми хочемо, щоб відео 0 та відео 1. [0:a]означали, що ми хочемо першу імпортовану звукову доріжку. Що також походило б з input.mp4, але вказувало б на звукову доріжку замість відеодоріжки у файлі mp4.

Якщо ви хочете певної якості / налаштувань зображення, а не налаштувань, які ви вибрали ffmpeg, додайте параметри кодування зображення та / або аудіо, які ви хочете використовувати. За замовчуванням кодер відео буде x264. Перевірте посібник з кодування H.264 щодо можливих налаштувань.

-acodec copy/ -c:a copyЩо у вас є у вашій команді Fe буде просто повторно використовувати звук з вихідного файлу. Хоча ви не можете цього зробити з відео, звичайно, (у цьому випадку), це потрібно перекодувати, оскільки ми створюємо нове джерело відео.

Якщо ви хочете перекодувати аудіо, вийміть -c:a copyчастину. Можливо, вам доведеться чітко вказати кодер, наприклад -c:a aac -strict experimental. Додаткову інформацію див. У посібнику з кодування AAC .


Наступна ітерація вищевказаної команди працювала для мене на Android, оскільки оригінальна подає та помилки на зразок aac є експериментальною функцією: ffmpeg -i input.mp4 строгий -2 -i image.png -filter_complex [0: v] [1: v] overlay = 25: 25: enable = 'between (t, 0,20)' output.mp4
muneikh

чи все-таки потрібно розташувати внизу, не знаючи висоти? чи вправо, не знаючи ширини?
chovy

впевнений, просто проаналізуйте відео за допомогою ffprobe та витягніть розміри відео з виводу. Можливо, є також варіант, інтегрований у ffmpeg, але я цього не знаю.
PTS

3
Ваша команда замінює фрагмент вихідного відеофайлу, але користувач може захотіти додати (таким чином збільшуючи довжину відео) зображення до та / або після відео. Будь ласка, допоможіть у цьому
porton

1
@laurent, що залежить від вашого вихідного файлу та / або його результату. pix_fmt означає піксельний формат. Для різних кодеків доступно багато різних піксельних форматів, вказуючи на те, що у вас не вийде щось, що не спрацює для вас. yuv420p - це найбільш підтримуваний формат пікселів, коли мова йде про h264, але є, наприклад, yuv422p та yuv444p.
PTS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.