赞
踩
本文主要介绍如何使用python的第三方库moviepy进行简单的视频编辑操作,比如: 拼接,裁剪,多轨合并。
我们可以日常可以会有一些剪辑视频的需求,最常见的就是在上传视频平台前的视频剪辑。常见的剪辑需求会有:
python中有强大的音视频编辑库ffmpeg
,但是使用起来会比较复杂。如果我们需求比较简单(比如上面说的截取、拼接和音轨合并),我们可以使用封装了ffmpeg
的另一个第三方库moviepy
所以,我们需要安装ffmpeg(moviepy需要使用),moviepy两个库,
ffmpeg
可以在官网安装,并且将安装磁盘:\安装目录\ffmpeg\bin
放到系统环境变量中(Win键+S然后搜索"编辑系统环境变量")moviepy
可以通过pip命令安装:pip install moviepy
我们需要的操作在moviepy
中都已经有对应的API,直接查看moviepy官方文档,然后调用对应的API即可,如下:
clip = VideoFileClip("D:/文件路径.mp4")
audio_1 = AudioFileClip("D:/文件路径.mp4")
audio_2 = AudioFileClip("D:/文件路径.mp3")
video_clip_1 = clip.subclip(要截取的起始时间, 要截取的结束时间)
concated_video = concatenate_videoclips([video_clip_1, video_clip_2])
mixed_audio = CompositeAudioClip([video_clip_1.audio, audio_1, audio_2])
mixed_audio = CompositeAudioClip([audio_1, audio_2.set_start(n)])
concated_video = concated_video.set_audio(mixed_audio)
concated_video.write_videofile(output_filepath)
导出视频文件的.write_videofile
方法的具体参数如下:
write_videofile(
self,
filename,
fps=None,
codec=None,
bitrate=None,
audio=True,
audio_fps=44100,
preset='medium',
audio_nbytes=4,
audio_codec=None,
audio_bitrate=None,
audio_bufsize=2000,
temp_audiofile=None,
rewrite_audio=True,
remove_temp=True,
write_logfile=False,
verbose=True,
threads=None,
ffmpeg_params=None,
logger='bar',
)
以下是对部分常用参数的说明:
参数名称 | 参数作用 |
---|---|
filename | 导出的视频文件路径 |
fps | 导出视频的帧率(每秒多少帧),默认值是None,会使用原视频的帧率 |
codec | 视频的编码方式,会影响到画质,对于mp4 ,默认使用libx264 ,如果要提升mp4 的画质可以传入mpeg4 ;.avi 要提高画质可以传入png |
audio | 输出的视频是否要有音频,False 为不需要,True 会输出我们插入视频中的音轨(如果我们没有处理会使用视频原有的音轨);如果是一个代表音频文件路径的字符串,则会将该音频文件作为输出视频的音频 |
audio_codec | 音频编码方式,如果是导出的音频没有声音,比如windows上没有声音或者是windows上有声音但是Mac或者ios上没有声音,则可以考虑指定该参数为aac |
audiofps | 音频的码率,更多的码率可以得到更高音质的输出视频,但是视频的大小会更大,导出速度自然也会更慢 |
from moviepy.editor import *
"""导入我们未处理的原始视频"""
raw_video_1 = VideoFileClip("D:/Downloads/video_1.mp4")
raw_video_2 = VideoFileClip("D:/Downloads/video_2.mp4")
"""
裁剪视频
第一个视频截取从第7秒到70秒
第二个视频截取从第10秒到30秒
"""
cutted_video_1 = raw_video_1.subclip(7, 70)
cutted_video_2 = raw_video_2.subclip(10, 30)
"""将第二个视频接在第一个视频后面, 生成最终的视频"""
concated_video = concatenate_videoclips([cutted_video_1, cutted_video_2])
"""在合成视频原有的音频上, 在视频的第2秒的时候加上一段音频/背景音乐"""
audio_to_add = AudioFileClip("D:/Downloads/audio_to_add.mp4")
mix_audio = CompositeAudioClip([concated_video.audio, audio_to_add.set_start(2)])
concated_video.set_audio(mix_audio)
"""导出视频"""
concated_video.write_videofile("D:/output/final_video.mp4")
快去试试吧,有任何问题可以在评论区留言~
好书推荐:
好课推荐:
写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/80564
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。