在 python 中有没有快速合并 mp3 文件和 mp4 文件的方法?

Is there a fast way to combine an mp3 file with an mp4 file in python?

我正在尝试编写一个可以从 Reddit posts 下载视频的程序。我相信 Reddit 分别存储每个 post 的音频和视频,所以我目前正在下载 mp3 和 mp4,然后将它们组合成一个最终的视频文件。我不太熟悉音频或视频文件或它们的存储方式,但我认为将两者结合起来计算会很快。

但是,合并部分非常慢,我想知道是否有更快的方法将无声视频剪辑与音频文件合并并写入我的驱动器?

我目前正在使用 moviepy 库进行合并。

def download_video(data_url,current_post,subreddit):
    #Get the audio url of Reddit video
    audioURL = data_url + "/audio"
    #Get the soundless video url of reddit video
    videoURL = str(current_post).split("'fallback_url': '")[1].split("'")[0]
    #Get the title of the post
    postname = (current_post['title'])

    #Download the two files as mp4 and mp3
    urllib.request.urlretrieve(videoURL, subreddit + '/video_name.mp4')
    urllib.request.urlretrieve(audioURL, subreddit + '/audio.mp3')

    #Combine the mp3 and mp4
    videoName = str(subreddit + "/" + get_valid_filename(current_post['title'])) +".mp4"
    video = mpe.VideoFileClip(subreddit + '/video_name.mp4')
    video.write_videofile(videoName, audio=subreddit + "/audio.mp3")
    #Remove video file with no audio
    del video
    os.remove(subreddit + '/video_name.mp4')

您可以尝试使用实现此目的的现有开源工具之一,例如 youtube-dl (which downloads much more than what its name suggests). A previous SO thread 已经介绍了如何从 Python 中执行此操作,我刚刚对其进行了测试在线程链接和 v.redd.it 链接上都可以正常工作。

import youtube_dl

ydl = youtube_dl.YoutubeDL()
with ydl:
    ydl.extract_info("https://www.reddit.com/r/bouldering/comments/fjgmo7/one_of_my_favorite_boulders_from_my_gym_back_home/")

如果这提高了性能,但您不想使用该库,您可以检查他们的来源,看看他们是如何进行视频和音频组合的。