Python/Utils

파이썬으로 동영상에 음악 넣기 방법(moviepy 활용)

jimmy_AI 2024. 1. 22. 23:07
반응형

Python의 moviepy 모듈을 활용하면 동영상에 wav, mp3 파일 등의

배경음을 손쉽게 삽입할 수 있는데요.

이 글에서 간략하게 음성 교체와 추가 삽입의 경우로 나누어 코드를 살펴보겠습니다.

 

 

1. 동영상 음악 교체 방법

동영상 파일에서 원하는 mp3 파일을 배경음으로 대체하는 코드는 다음과 같습니다.

이 코드 스니펫에서 기존 음성은 제거 후 대체됩니다.

 

mp4 동영상 파일을 기준으로 코드를 작성한 결과는 다음과 같습니다.

# 모듈 설치: !pip install moviepy
from moviepy.editor import VideoFileClip, AudioFileClip

def replace_audio_in_video(video_file_path, new_audio_file_path, output_file_path, volume=1.0):
    # 비디오 파일과 새 오디오 파일 불러오기
    video = VideoFileClip(video_file_path)
    new_audio = AudioFileClip(new_audio_file_path)

    # 볼륨 조정(1.0이 기존 볼륨 크기 기준)
    new_audio = new_audio.volumex(volume)
    
    # 비디오의 오디오 교체
    video = video.set_audio(new_audio)

    # 결과 비디오 파일 저장(코덱: mp4 기준)
    video.write_videofile(output_file_path, codec='libx264', audio_codec='aac')
    
original_video_file = "video_file_path.mp4"
new_audio_file = "audio_file_path.mp3" # wav 등 다른 포맷도 가능
output_video_file = "output_file_path.mp4"

replace_audio_in_video(original_video_file, new_audio_file, output_video_file)

 

반응형

 

2. 동영상 음악 추가 삽입 방법

이번에는 기존 동영상 파일의 음성을 유지한 채, 새로운 음성 파일을 추가하는

방법에 대한 파이썬 코드 스니펫을 살펴보도록 하겠습니다.

 

여기서는 기존 오디오와 새 오디오의 결합 과정이 중간에 추가로 필요합니다.

(해당 코드도 mp4 파일을 기준으로 작성된 코드입니다.)

# 모듈 설치: !pip install moviepy
from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip

def add_audio_to_video(video_file_path, additional_audio_file_path, output_file_path, original_audio_volume=1.0, additional_audio_volume=1.0):
    # 비디오 파일과 새 오디오 파일 불러오기
    video = VideoFileClip(video_file_path)
    additional_audio = AudioFileClip(additional_audio_file_path)

    # 기존 오디오와 새 오디오의 볼륨 조정(1.0이 기존 볼륨 크기 기준)
    original_audio = video.audio.volumex(original_audio_volume)
    additional_audio = additional_audio.volumex(additional_audio_volume)

    # 조정된 볼륨으로 오디오 결합
    combined_audio = CompositeAudioClip([original_audio, additional_audio])

    # 비디오의 오디오를 결합된 오디오로 교체
    video = video.set_audio(combined_audio)

    # 결과 비디오 파일 저장(코덱: mp4 기준)
    video.write_videofile(output_file_path, codec='libx264', audio_codec='aac')
    
original_video_file = "video_file_path.mp4"
new_audio_file = "audio_file_path.mp3" # wav 등 다른 포맷도 가능
output_video_file = "output_file_path.mp4"

# 기존 오디오: 새 오디오의 볼륨을 1 : 0.5로 조정하여 저장한 예시
add_audio_to_video(original_video_file, new_audio_file, output_video_file, 1.0, 0.5)

 

참고: mp4가 아닌 동영상 파일에서도 윗 코드를 마찬가지로 적용할 수 있습니다.

이 경우 추천되는 코덱의 종류는 다음과 같습니다.

 

AVI: 비디오 코덱으로 mpeg4 또는 libxvid, 오디오 코덱으로 mp3 또는 pcm
MOV: 비디오 코덱으로 libx264 또는 mpeg4, 오디오 코덱으로 aac 또는 alac
WMV: 비디오 코덱으로 wmv2, 오디오 코덱으로 wmav2