首页 > 其他分享 >moviepy音视频剪辑-音视频的加载和输出

moviepy音视频剪辑-音视频的加载和输出

时间:2023-11-07 15:45:43浏览次数:37  
标签:视频 moviepy True 音频 None 音视频 audio 视频剪辑 加载

一、概述
在本地进行音视频处理时,首先要从视频文件进行音视频加载,最后要将处理结果输出到文件。本节介绍moviepy的音视频的加载和输出方法。

二、视频加载
2.1、视频加载方法
要从视频文件中加载视频非常简单,使用VideoFileClip类的构造方法即可完成加载。其构造方法语法如下:

__init__(self, filename, has_mask=False,
audio=True, audio_buffersize=200000,
target_resolution=None, resize_algorithm='bicubic',
audio_fps=44100, audio_nbytes=2, verbose=False,
fps_source='tbr')

2.1.1、参数释义
filename:视频文件名,只要是ffmpeg支持的视频文件如 .ogv, .mp4, .mpeg, .avi, .mov等都可以

has_mask:如果视频文件中包含遮罩该参数设置为“True”

audio:如果视频没有声音或者希望加载时不读取音频,则应该将audio设置为False

audio_buffersize:音频缓冲区大小,一般使用缺省值即可

target_resolution:设置为加载后需要变换到的分辨率,类型为列表或元组,第一个元素为分辨率的高,第二个为宽,如果高或宽有一个为None,则保持现有纵横比调整帧的大小。如果保持原分辨率不变,则不需要设置本参数或设置为None。如果设置了新的分辨率,则在调用ffmpeg 返回视频剪辑的帧之前会按新的分辨率调整帧的大小。这比使用转换为高分辨率流然后再调整分辨率会快很多

resize_algorithm:要改变加载后的视频分辨率,可以通过resize_algorithm指定调整分辨率的算法,缺省值为 “bicubic”,还可以是 “bilinear” 、"fast_bilinear"等。关于算法的更多信息请参考:https://ffmpeg.org/ffmpeg-scaler.html

audio_fps:声音的采样频率

audio_nbytes:采样的位数

verbose:是否在标准输出设备上显示处理信息

fps_source:从视频的元数据metadata哪个数据中获取fps值,默认设置为’tbr’,但可以设置为’fps’,这可能有助于导入慢动作视频,否则会弄糟。

2.1.2、返回值
返回值为VideoFileClip实例对象。

2.2、代码样例
下面这段代码取1.mp4的分辨率作为2.mp4加载时的分辨率

import moviepy.editor as mpe

clip1 = mpe.VideoFileClip("1.mp4")
clipSize = clip1.size
clip2 = mpe.VideoFileClip("2.mp4",verbose=True,target_resolution=[clipSize[1],clipSize[0])

三、音频的加载
要从音频文件中加载音 频非常简单,使用AudioFileClip类的构造方法即可完成加载。其构造方法语法如下:__init__(self, filename, buffersize=200000, nbytes=2, fps=44100):

相关参数的含义除了filename指向音频文件外,其他与VideoFileClip对应参数含义一致,nbytes对应VideoFileClip的audio_nbytes。

返回值为一个AudioFileClip对象。

四、音视频的输出
4.1、视频的输出方法
视频输出的方法为VideoFileClip的write_videofile方法,语法如下:

def 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')

部分前面没有出现的参数说明如下:
codec:用于图像编码的编解码器,可以是ffmpeg支持的任何编解码器。如果文件名的扩展名为“.mp4”、“.ogv”、“.webm”,则会相应地设置编解码器,但如果不喜欢默认值,则仍可以进行设置。对于其他扩展名,必须相应地设置输出文件名。一些常用的编解码器如下:
‘libx264’:视频压缩效果好的一款编解码器,MP4的缺省编解码器,视频质量通过bitrate参数调节
‘mpeg4’:一种可选的MP4编解码器,可以替代’libx264’,可以获得更好的视频质量
‘rawvideo’:完美的视频质量,但文件会巨大,对应视频文件为’.avi’
‘png’:完美的视频质量,对应视频文件为’.avi’,但文件大小比’rawvideo’小
‘libvorbis’:是一种完全开放、免费的编解码器,有不错的视频格式,但是要不广,对应视频文件为’.ogv’
‘libvpx’:一种很适合在HTML5中使用的网络视频轻量级编开源解码器,对应视频文件为’.webm’
audio:可以为True、False或文件名,如果True且剪辑附加了音频,则音频将作为视频的音频保存,如果为False则不保存音频,如果为音频文件名则将此音频文件将作为视频的音频
temp_audiofile:如果输出由音频,则该参数用于指定要生成并合并到电影中的临时音频文件的名称,如果没有指定则用缺省模式的临时文件名
audio_codec:音频解码器,例如’.mp3’的’libmp3lame’、‘ogg’的’libvorbis’、 ‘m4a’的’libfdk_aac’、 ‘pcm_s16le’ 16位声音和’pcm_s32le’的32位声音。默认值为“libmp3lame”,除非视频扩展名为“ogv”或“webm”,在这2种情况下,默认值为“libvorbis”。
audio_bitrate:音频比特率,字符串形式,如“50k”、“500k”、“3000k”,用于将确定输出文件中音频的大小/质量。请注意,这主要是一个指示性目标,输出文件的比特率不一定会按此设置。
preset:设置FFMPEG用于优化压缩的时间。字符串类型,可选值有:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、 placebo。请注意,这不会影响视频的质量,只影响视频文件的大小。所以如果赶时间而文件大小不是很重要可以设置为ultrafast
threads:用于ffmpeg的线程数,可以加快多核计算机上视频输出的速度
ffmpeg_params:需要额外传递的任何其他ffmpeg参数,使用列表传递,形如:[’-option1’,‘value1’,’-option2’,‘value2’]
write_logfile:如果为True,将为音频和视频输出记录日志文件。日志文件将以“.log”结尾,包含输出文件的名称
logger:字符串类型,"bar"表示进度条、None 表示不设置、或任何程序日志记录器的名字
verbose:已经废弃使用,留下来是为了兼容性,以前用于打开/关闭消息。现在使用logger=None。
五、音频的输出
音频的输出调用AudioFileClip的write_audiofile方法,具体语法如下:

write_audiofile(self, filename, fps=None, nbytes=2, buffersize=2000,
codec=None, bitrate=None, ffmpeg_params=None,
write_logfile=False, verbose=True, logger='bar')

标签:视频,moviepy,True,音频,None,音视频,audio,视频剪辑,加载
From: https://www.cnblogs.com/duoruaimi4/p/17815133.html

相关文章

  • 腾讯云音视频插件使用文档
    获取服务所需信息腾讯云新用户有实时音视频提供包月套餐体验和免费时长包免费试用TRTC功能首先注册并实名认证后,先领取七天免费体验和免费时长包。领取链接:https://cloud.tencent.com/document/product/647/44360七天免费体验结束后,如果再想使用腾讯云音视频功能需购买领取成功后......
  • 音视频常见问题(七):首开慢
    本文主要讨论音视频应用中的首开慢问题,文章介绍了首开慢的产生原因:DNS解析耗时、网络传输协议耗时、传输网络调度耗时,并提供了排查方式和解决方案。即构科技的ExpressSDK和MSDN网络可以有效的解决首开慢问题,且节省开发成本。一、前言对于音视频开发者来说,掌握排查问题的技术技巧方......
  • 音视频常见问题(七):首开慢
    摘要本文主要讨论音视频应用中的首开慢问题,文章介绍了首开慢的产生原因:DNS解析耗时、网络传输协议耗时、传输网络调度耗时,并提供了排查方式和解决方案。即构科技的ExpressSDK和MSDN网络可以有效的解决首开慢问题,且节省开发成本。一、前言对于音视频开发者来说,掌握排查问题的技......
  • 即构音视频 Express Flutter SDK 全面支持空安全
    Flutter是一套移动UI框架,可以快速在iOS、Android上构建高质量的原生用户界面。作为其官方语言Dart是类型安全的,当开发者获取变量的时候,编译器可以保证变量的类型,但类型安全并不保证获取的变量不是null。在GitHub上有非常多因为null导致Dart代码出现异常的issue,为了从......
  • 三种简单实用的方法帮助你去除抖音视频上的水印
    如今越来越多的人涉足自媒体工作,在这个过程中,我们经常会遇到一个普遍的问题在寻找素材时,发现视频上带有抖音的水印,这些水印可能会对我们的创作产生负面影响,不过别担心!我将与你分享三种简单实用的方法,帮助你抖音视频去水印。第一种方法、水印云水印云是一款快速去水印的软件可以帮你......
  • 音视频常见问题(六):视频黑边或放大
    摘要本文介绍了视频黑边或放大的原因和解决方案。主要原因包括视频分辨率与显示视图尺寸不一致、摄像头采集、美颜滤镜格式兼容和分辨率。为了解决这些问题,开发者可以选择合适的渲染模式、动态调整分辨率、处理视频旋转和使用自定义视频渲染。即构音视频SDK提供了强大的工具和灵......
  • 易语言抖音视频提取工具,点赞,收藏,评论源码
    下面是界面: 下面是程序集代码:.版本2.支持库ietb.支持库spec.支持库iext.程序集窗口程序集_启动窗口.程序集变量页面,谷歌页面.程序集变量ccookiesA,文本型,,"0".子程序_按钮1_被单击.局部变量是否成功,逻辑型.局部变量谷歌浏览器路径,文本型.局......
  • 音视频常见问题(六):视频黑边或放大
    摘要本文介绍了视频黑边或放大的原因和解决方案。主要原因包括视频分辨率与显示视图尺寸不一致、摄像头采集、美颜滤镜格式兼容和分辨率。为了解决这些问题,开发者可以选择合适的渲染模式、动态调整分辨率、处理视频旋转和使用自定义视频渲染。即构音视频SDK提供了强大的工具和灵活......
  • 音视频开发常见问题(五):视频黑屏
    摘要本文介绍了视频黑屏的可能原因和解决方案。主要原因包括用户主动关闭视频、网络问题和渲染问题。解决方案包括优化网络稳定性、确保视频渲染视图设置正确、提供清晰的提示、实时监测网络质量、使用详细的日志系统、开启视频预览功能、使用视频流回调、处理编解码问题、处理权限......
  • 为什么要学音视频?
    来源:来自Twitter-X2Rtc一直都在说“科技改变生活”,现实告诉我们这是真的。随着通信技术和5G技术的不断发展和普及,不仅拉近了人与人之间的距离,还拉近了人与物,物与物之间的距离,万物互联也变得触手可及。基于此背景下,音视频技术也成为了主流,与此同时,便催生出了大量的音视频需求,但目前......