@Dnomin

Как склеить аудио и видео python меньшей кровью?

метод для склеивания аудио с видео:
def mix_audio(self):
        streamer_audio = VideoFileClip("streamer" + self.id + ".mp4").audio.subclip(0, self.duration)
        game_audio = VideoFileClip("game" + self.id + ".mp4").audio.subclip(0, self.duration)
        player_audio = VideoFileClip("player" + self.id + ".mp4").audio.subclip(0, self.duration)

        output = VideoFileClip("output" + self.id + ".avi")
        output_audio = CompositeAudioClip([streamer_audio, game_audio, player_audio])

        output.audio = output_audio
        output.write_videofile("new" + self.id + ".avi", codec='mpeg4')


исполнение:
>>> a.mix_audio()
[MoviePy] >>>> Building video new4.avi
[MoviePy] Writing audio in new4TEMP_MPY_wvf_snd.mp3
100%|████████████████████████████████████████| 442/442 [00:01<00:00, 361.28it/s]
[MoviePy] Done.
[MoviePy] Writing video new4.avi
100%|████████████████████████████████████████▉| 600/601 [00:09<00:00, 60.65it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: new4.avi


Т.е. он сначала записывает аудио, это происходит быстро и все ок, но потом начинает перезаписывать видео и в моих реалиях это может затянуться на очень долгое время.
(кодек видео на входе совпадает с кодеком, который я передал для записи)

Вопросы:
Может ли moviepy тупо склеить аудио и видео без рендеринга видео?
Слышал, что это может сделать ffmpeg, так ли это?
  • Вопрос задан
  • 2682 просмотра
Пригласить эксперта
Ответы на вопрос 1
@fascot
У меня была такая же проблема, я долго мучался с перекодировкой видео и пытался найти лучший вариант без потерь качества искомого. Потом я дошел до простой команды в ffmpeg:

import os

video_path = "/..."
audio_path = "/..."
cmd = "ffmpeg -i {video_path} -i {audio_path} -c:v copy output.mp4"
os.system(cmd)


Коротко о том, что я написал, первое, ffmpeg принимает любые форматы видео и аудио, важны только кодеки. Команда "-c:v copy" означает, что энкодером для видео ряда выступит "copy", который оставит все как есть и почти не будет есть ресурсов процессора за исключением перекодировки аудио из любого кодека в ACC, чтобы .mp4 файл мог его читать. Если аудио уже в необходимом виде, просто добавьте "-c:a copy".

А про установку ffmpeg прочитаете сами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы