Есть много случаев, когда вы хотите преобразовать свой аудиофайл в видео, например, загрузить аудио на YouTube или что-то подобное. В этом руководстве вы узнаете, как добавить статическое изображение в аудиофайл, чтобы сформировать видеофайл с помощью Python, используя библиотеку MoviePy.
Прежде чем мы начнем с кода, давайте установим MoviePy:
$ pip install moviepy
Откройте новый файл Python и напишите следующее:
from moviepy.editor import AudioFileClip, ImageClip def add_static_image_to_audio(image_path, audio_path, output_path): """Создайте и сохраните видеофайл в `output_path` после объединение статического изображения, расположенного в `image_path` с аудиофайлом в `audio_path`""" # создаем объект аудиоклипа audio_clip = AudioFileClip(audio_path) # создаем объект клипа изображения image_clip = ImageClip(image_path) # используйте метод set_audio из клипа изображения, чтобы объединить звук с изображением video_clip = image_clip.set_audio(audio_clip) # укажите продолжительность нового клипа как продолжительность аудиоклипа video_clip.duration = audio_clip.duration # установить FPS на 1 video_clip.fps = 1 # записываем возобновляемый видеоклип video_clip.write_videofile(output_path)
Функция add_static_image_to_audio()
делает все. Она ожидает путь изображения, путь аудио и путь выходного видео, а затем:
- Создает экземпляр
AudioFileClip()
из audio_path. - Он также создал экземпляр
ImageClip()
из пути к изображению. - Мы добавляем звук в экземпляр ImageClip с помощью метода
set_audio()
, который возвращает новый клип. - Мы установили длительность этого нового видеоклипа равной продолжительности аудиоклипа (вы можете изменить ее на любую длину в секундах).
- Мы также устанавливаем FPS, значение 1 означает, что есть один кадр в секунду. Кстати, это обязательно для любого видеоклипа.
- Наконец, мы используем метод
write_videofile()
для сохранения полученного видеофайла.
Теперь давайте воспользуемся модулем
if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="Простой скрипт Python для добавления статического изображения к аудио для создания видео") parser.add_argument("image", help="Папка изображений") parser.add_argument("audio", help="Папка аудио") parser.add_argument("output", help="Папка для созданного видео") args = parser.parse_args() add_static_image_to_audio(args.image, args.audio, args.output)
Отлично, давайте проверим:
$ python add_photo_to_audio.py --help
Результат:
usage: add_photo_to_audio.py [-h] image audio output Простой скрипт Python для добавления статического изображения к аудио и создания видео positional arguments: image Папка изображений audio Папка аудио output Папка для созданного видео optional arguments: -h, --help show this help message and exit
Отлично, давайте попробуем побороться с реальным изображением и аудиофайлом:
$ python add_photo_to_audio.py directed-by-robert-image.jpg "Directed-by-Robert-B.-Weide-theme.mp3" output.mp4
Файл output.mp4 появится в текущем каталоге:
Хорошо, это все на сегодня! Посмотрите полный код:
from moviepy.editor import AudioFileClip, ImageClip def add_static_image_to_audio(image_path, audio_path, output_path): """Создайте и сохраните видеофайл в `output_path` после объединение статического изображения, расположенного в `image_path` с аудиофайлом в `audio_path`""" # создаем объект аудиоклипа audio_clip = AudioFileClip(audio_path) # создаем объект клипа изображения image_clip = ImageClip(image_path) # используйте метод set_audio из клипа изображения, чтобы объединить звук с изображением video_clip = image_clip.set_audio(audio_clip) # укажите продолжительность нового клипа как продолжительность аудиоклипа video_clip.duration = audio_clip.duration # установить FPS на 1 video_clip.fps = 1 # записываем возобновляемый видеоклип video_clip.write_videofile(output_path) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description="Простой скрипт Python для добавления статического изображения к аудио и создания видео") parser.add_argument("image", help="Папка изображений") parser.add_argument("audio", help="Папка аудио") parser.add_argument("output", help="Папка для созданного видео") args = parser.parse_args() add_static_image_to_audio(args.image, args.audio, args.output)
По мотивам
Как объединить аудио-файл с картинкой и получить видеоклип, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха