Python 豆瓣电影 Top 250 视频合并 - 使用 MoviePy
import requests
from moviepy.editor import VideoFileClip, AudioFileClip
import os
if __name__ == "__main__":
url = 'https://movie.douban.com/j/chart/top_list'
param = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '0',
'limit': '10',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
}
response = requests.get(url=url, params=param, headers=headers)
list_data = response.json()
for data in list_data:
title = data['title']
if 'video_url' in data:
video_url = data['video_url']
video_res = requests.get(video_url, headers=headers)
with open('{}.mp4'.format(title), 'wb') as v_file:
v_file.write(video_res.content)
print('视频文件路径:{}.mp4'.format(title))
if 'audio_url' in data:
audio_url = data['audio_url']
audio_res = requests.get(audio_url, headers=headers)
with open('{}.mp3'.format(title), 'wb') as a_file:
a_file.write(audio_res.content)
video_clip = VideoFileClip('{}.mp4'.format(title))
audio_clip = AudioFileClip('{}.mp3'.format(title))
merge_result = video_clip.set_audio(audio_clip)
merge_result.write_videofile('merge-{}.mp4'.format(title))
os.remove('{}.mp4'.format(title))
os.remove('{}.mp3'.format(title))
print('视频合并完成!')
错误原因:
代码中的错误提示“MoviePy error: the file 美丽人生.mp4 could not be found!”意味着 MoviePy 无法找到名为“美丽人生.mp4”的视频文件。这很可能是因为视频文件没有成功下载或者没有保存到正确的路径下。
解决方案:
- 打印视频文件路径: 代码中已添加打印视频文件路径的语句,运行代码后检查打印的路径是否正确。
- 使用绝对路径: 如果文件路径不正确,可以尝试使用绝对路径来确保文件能够被正确读取。
- 检查下载过程: 检查代码中的下载部分,确保视频文件能够成功下载到指定路径。
- 确保文件存在: 在调用
VideoFileClip之前,确保文件已经成功下载并存在于指定的路径下。
更改后的代码:
更改后的代码已经包含打印视频文件路径的语句,以便帮助你检查文件是否下载成功并保存在正确的路径下。
建议:
- 建议使用 try-except 块来捕获可能出现的错误,并进行相应的处理。
- 建议使用一个专门的文件夹来保存下载的视频和音频文件,并使用相对路径来访问这些文件。
- 建议使用
os.path.join函数来构建文件路径,以提高代码的可读性和可移植性。
通过上述步骤,你应该能够成功解决代码中的错误并实现豆瓣电影 Top 250 视频合并的功能。
原文地址: http://www.cveoy.top/t/topic/fQXl 著作权归作者所有。请勿转载和采集!