当前位置: 首页 > 科技观察

视频剪辑是什么鬼?近两年Python带你高效创建短视频

时间:2023-03-21 01:23:25 科技观察

抖音和快手把?推到了风口浪尖。制作高质量的视频,离不开视频剪辑;其中最常用的剪辑软件有Pr、FCPX、Clipping、Vue等,之前有两篇文章分别实现了卡顿视频和GIF动画视频的制作。制作抖音卡住视频?Python来帮你~100,000+短视频已量产,Python表示不满。创建。1.提取背景音乐并修改音量首先从抖音下载视频文件,然后使用moviepy依赖库提取背景音乐。defget_audio_from_video(video_path):"""从视频中提取音频:paramvideo::return:"""file_path='./source/'+gene_random()+'.wav'video=VideoFileClip(video_path)audio=video.audioaudio.write_audiofile(file_path)returnfile_pathA短视频可能包含多首背景音乐,需要调整背景音乐的音量。defhandle_bgm(bgm_path,coefficient):music=AudioFileClip(bgm_path)#音量调整为原音量的倍数out_music=music.fx(afx.volumex,coefficient).fx(afx.audio_fadein,0.5).fx(afx.audio_fadeout,1)#保存背景音乐out_music.write_audiofile('./source/output.wav')2.变声也是创作中的一个实用技巧,一共有三种实现方式。使用AU进行音调转换。修改对百度云API的调用,使用librosa依赖库。importlibrosasource=".??/source/source.wav"#加载背景音乐y,sr=librosa.load(source)#修改librosa.effects.pitch_shift(y,sr,n_steps=6)y=shrinkstep(10,y,sr)#生成新的背景音乐文件outputpath="./source/result.wav"librosa.output.write_wav(outputpath,y,sr)3.视频转场添加视频之间的转场,让视频播放更流畅。Python将以下7个步骤传递给视频转换。将2个视频的视频剪辑和音频剪辑分开。统一视频的分辨率。分别在视频的开头和结尾添加转场效果,如淡入淡出效果。合并2个视频。合并2个音频文件。设置音频文件并保存视频文件。):"""两个视频的过渡动画(以淡入淡出为例)注意:确保视频拍摄帧率一致:paramvideo1::paramvideo2::return:"""#获取视频时长clip_video1=VideoFileClip(path_video1)duration_video1=clip_video1.duration#获取视频音频path_audio1=get_audio_from_video(path_video1)path_audio2=get_audio_from_video(path_video2)audio_video1=AudioFileClip(path_audio1)audio_video2=AudioFileClip(path_audio2)clip_video2=VideoFileClip(path_video2)duration_video2=clip_video2.durationprint(f'两段视频的时长分别为:{duration_video1},{duration_video2}')#统一视频分辨率w,h,fps=clip_video1.w,clip_video1.h,clip_video1.fpsclip_video2_new=clip_video2.resize((w,h))#Transitionduration,Default2stransitions_time=2#第一个视频执行淡出效果一个视频执行淡入效果subVideo2_part1=clip_video2_new.subclip(0,3).fadein(3,(1,1,1))subVideo2_part2=clip_video2_new.subclip(3)#合并4个视频result_video=concatenate_videoclips([subVideo1_part1,subVideo1_part2,subVideo2_part1,subVideo2_part2])#MergeAudioresult_audio=concatenate_audioclips([audio_video1,audio_video2])#视频设置音频文件final_clip=result_video.set_audio(result_audio)#passwritevideofile4.斜率变化为了让?更酷,很多后期制作高手都会剪辑视频中加入了改变坡度速度的操作,让原本枯燥的视频变得生动起来。很多常用的方法是:先慢速播放,然后恢复正常速度,中间加入过渡音效。defchange_video_speed(video_path,speed,start,end):"""改变视频速度[MoviePyclip相关重要api](https://juejin.im/post/5d1c4318f265da1ba9159912):paramvideo_path:视频路径:paramspeed:speed:paramstart:开始时间:paramend:结束时间:return:"""video=VideoFileClip(video_path)#speedtransformationpart1=video.fl_time(lambdat:speed*t,apply_to=['mask','video','audio']).set_start(start).set_end(end/speed)#剩余时长恢复速度part2=video.subclip(end)#合成视频result_video=concatenate_videoclips([part1,part2])result_path='./source/result.mp4'result_video.write_videofile(result_path)5.鬼畜视频鬼畜视频来自B站。抖音上的很多搞笑视频片段都使用了鬼畜处理,包括:帧重复,屏幕坐标轴映射等。实现鬼畜也很简单用Python制作动物视频。defghost_video(video_path,repeat_time,location):"""生成幻影视频:paramvideo_path:videopath:paramrepeat_time:repeattimes:paramlocation:processinglocation:return:"""video=VideoFileClip(video_path)#Videofrontpart1=video.subclip(0,location)#视频目标部分,重复操作targets.append(part1)for_inrange(repeat_time):targets.append(target)targets.append(part2)#合成,生成视频pass6,字幕水印使用ImageClip和TextClip轻松添加图像水印和视频字幕。#添加图片水印#包含:水印时长、位置、透明度等logo=(ImageClip("./source/logo.png").set_duration(video.duration).resize(height=50).margin(right=8,top=8,opacity=1).set_pos(("right","top")))final=CompositeVideoClip([video,logo])#addtextsubtitleclip=VideoFileClip(video_path)#subtitle,文本内容,position,DisplaydurationtexpClip=TextClip(subtitle,fontsize=30,color='white').set_pos('bottom').set_duration(duration)video=CompositeVideoClip([clip,texclip.set_start(start)])7.转码需要注意的是,如果使用AE制作动画视频,最终的视频文件会非常大,可以使用ffmpeg依赖库快速转码压缩文件。结合上一篇文章提到的别名,可以更方便的进行视频剪辑。#Quicktranscodingcompressionaliaszh='ffmpeg-isource.mov-qscale0output.mp4'8.其他上面介绍的操作基本涵盖了视频制作中的大部分内容。其他操作可以点击原文链接查看官方文档。想一想,如果加上自动操作,可以批量生产短视频,给我们带来一些好处吗?关于视频剪辑的实际内容,我们会在文章后面讲到。