Вопрос или проблема
Я недавно запрограммировал бота, который использует API Twitch для сбора видео с Twitch, а затем размещает их на YouTube. Это мой канал на YouTube, если вы хотите увидеть пример: https://www.youtube.com/channel/UCuhWw8LbPWdkybIF9olAszw
Проблема, с которой я столкнулся, заключается в том, что я хочу найти способ преобразовать эти обычные видео Twitch в короткие видео на YouTube, которые я могу автоматически загружать. Камера не обязательно должна быть включена, и всё видео можно сжать в формате 9:16.
Я уже пробовал FFMPEG, но не знаю, делаю ли я всё правильно, и мне действительно нужна помощь или совет по этому поводу.
Вот пример видео, которое я бы попытался конвертировать: https://www.youtube.com/watch?v=hZecXrvd6_g
(простите за ненормативную лексику, это просто первое видео, которое я увидел на своем канале бота)
Вкратце: Конвертировать mp4 файл в видеоформат 9:16
Редактирование: команда FFMPEG, которую я выполнил:
ffmpeg -i video.mp4 -vf scale=1280:720 output.mp4
Огромное спасибо заранее! Это беспокоит меня уже несколько дней.
scale
изменит размер видео. Чтобы изменить соотношение сторон, вы можете попробовать что-то вроде:
ffmpeg -i video.mp4 -vf setdar=9/16 output.mp4
Обрежьте клип до 9/16 следующим образом:
ffmpeg -i video.mp4 -vf crop=ih*(9/16):ih output.mp4
Максимальная длина YouTube Shorts составляет 60 секунд. Вы можете разбить и изменить размер видео на сегменты с помощью этой команды.
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:01:00 -vf "[in]scale=iw*min(1080/iw\,1920/ih):ih*min(1080/iw\,1920/ih),pad=1080:1920:(1080-iw)/2:(1920-ih)/2[out]" newVideo.mp4
Эта команда обрежет первую минуту, чтобы обрезать другие секции, вам следует написать некоторую математическую логику для этого. Я уже сделал это для PHP, смотрите ниже:
https://gist.github.com/drpshtiwan/45fd233695b168056af980c56b93579c
Дополнительно
Либо вы должны наложить разбитое видео (newVideo.mp4) на фоновое видео, которое должно иметь черный фон, длительность 60 секунд и соотношение 9/16. Это команда ffmpeg для выполнения этой задачи 😉
Я использовал видео в Full HD и наложил видео в центре.
ffmpeg -i background.mp4 -i newVideo.mp4 -filter_complex "[1:v]scale=1080:-1[v2];[0:v][v2]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -map 1:a -c:v libx264 -c:a copy shortVide.mp4
Старая тема, я знаю, но я хотел бы поделиться этим, что работает как волшебство, чтобы масштабировать и наложить, трансформируя формат 16:9 в 9:16 для коротких видео:
ffmpeg -i input.mp4 -i input.mp4 -filter_complex “[0:v]scale=2276:1280,boxblur=4[bg];[1:v]scale=720:-1[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2[tmp];[tmp]crop=720:1280:(2276-720)/2:0[out]” -map [out] -map 0:a output01.mp4
Это сработало для меня:
ffmpeg -i sample.mp4 -vf "crop='min(iw,ih)*9/16:min(iw,ih):iw/2:ih/2'" cropped.mp4
Ответ или решение
Для решения задачи изменения формата видео с 16:9 на 9:16 с использованием FFMpeg, я предложу вам несколько команд и объясню их действие. Это поможет вам эффективно преобразовать ваши видео из Twitch в формат YouTube Shorts.
1. Установка FFMpeg
Если у вас еще не установлен FFMpeg, убедитесь, что вы скачали и установили его с официального сайта. Инструкции по установке зависят от вашей операционной системы (Windows, macOS или Linux).
2. Конвертация в формат 9:16
Чтобы преобразовать видео в формат 9:16, вам нужно либо обрезать, либо пересматривать (масштабировать) видео. Мы рассмотрим оба варианта.
A. Использование команды crop (обрезка)
Если вы хотите сохранить центральную часть видео и обрезать его до нужного соотношения сторон, можете использовать следующую команду:
ffmpeg -i video.mp4 -vf "crop=ih*9/16:ih:(iw-ih*9/16)/2:0" output.mp4
crop=ih*9/16:ih
— задает новое соотношение, где ширина видео будет 9/16 от высоты.(iw-ih*9/16)/2
— центрует обрезку по горизонтали.0
— указывает, что не нужно смещать по вертикали.
B. Использование команды scale (масштабирование) и pad (добавление черных полей)
Если вы хотите изменить размер видео, а не обрезать его, используйте следующую команду:
ffmpeg -i video.mp4 -vf "scale=720:-1,pad=720:1280:(720-iw)/2:(1280-ih)/2" output.mp4
scale=720:-1
— изменяет ширину видео до 720 пикселей, высота вычисляется автоматически, чтобы сохранить пропорции.pad=720:1280:(720-iw)/2:(1280-ih)/2
— добавляет черные поля, чтобы получить полный размер 720×1280 пикселей, центрируя видео.
3. Обработка коротких видео для YouTube Shorts
Не забывайте, что максимальная длина видео для YouTube Shorts составляет 60 секунд. Если ваше видео длиннее, вам нужно его обрезать. Пример команды, которая сохраняет только первые 60 секунд:
ffmpeg -i video.mp4 -ss 0 -t 60 -vf "scale=720:-1,pad=720:1280:(720-iw)/2:(1280-ih)/2" output_short.mp4
-ss 0
— начинается с 0 секунды.-t 60
— продолжительность составляет 60 секунд.
4. Дополнительные советы и рекомендации
- Качество: Убедитесь, что вы сохраняете нужное качество видео, используя флаги кодека
-c:v libx264
и-crf 18
для высокого качества. - Аудио: Если вам нужно перенести аудио, добавляйте
-map 0:a
или используйте-c:a copy
, чтобы скопировать аудиотрек без изменений. - Автоматизация: Если вы работаете с большим количеством видео, лучше написать скрипт на Bash или Python, который будет автоматически обрабатывать все файлы из определенной папки.
Используя предложенные команды, вы сможете легко преобразовать видео в формат 9:16 и подготовить их для загрузки на YouTube Shorts. Если у вас возникли дополнительные вопросы или требуется помощь с конкретным видео, пожалуйста, дайте знать!