Есть много случаев, когда вы хотите преобразовать свой аудиофайл в видео, например, загрузить аудио на 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.
Респект и уважуха

