解决moviepy保存的视频画质不清晰问题

参考:

https://blog.csdn.net/mhack5200/article/details/128666918

https://www.cnblogs.com/LaoYuanPython/p/13643497.html

moviepy 函数库很坑,默认值比较低,要提高保存图像的清晰度,提高bitrate就好,这点指定 4000k 或者 8000k 就行了

如,bitrate='8000k'

具体如下:

python 复制代码
clip_list=[]
for num in range(len(fullpathlist)):
    fullpath = fullpathlist[num]
    clip = VideoFileClip(fullpath)
    clip = clip.fx(vfx.fadein,0.4).fx(vfx.fadeout,0.4)   #淡入淡出效果,渐入渐出
    clip_list.append(clip)                              #合在一个list
 
clips = concatenate_videoclips(clip_list)     #将所有片段拼接一起,要是用 
                                               clip.CompositeVideoClip话是将片段放在一个画面 
                                                中,会同时播放
 
clips.write_videofile(outputpath, codec='h264_nvenc', threads=15, bitrate='8000k',
                                   ffmpeg_params=[
                                       '-tile-columns', '6', '-frame-parallel', '0',
                                       '-auto-alt-ref', '1', '-lag-in-frames', '25', '-g',
                                       '128', '-pix_fmt', 'yuv420p', '-row-mt', '1'])

ImageSequenceClip 是 moviepy 库中的一个类,用于从一系列图像创建一个视频剪辑。以下是这个类的一些主要初始化参数:

python 复制代码
iterable: 这是一个迭代器或列表,其中包含要转换为视频的图像的文件名或路径。图像将按照它们在迭代器/列表中的顺序进行播放。
fps: 这是一个浮点数,表示每秒应播放多少帧图像。默认值是 None,这意味着它将尝试从图像的文件名中推断出帧率(如果文件名包含数字序列的话)。
durations: 这是一个列表,与 iterable 中的图像一一对应,表示每个图像的显示时间(以秒为单位)。如果未提供此参数,则所有图像的显示时间都将为 1/fps 秒。
load_images: 这是一个布尔值,表示是否立即加载所有图像。如果为 True,则在创建 ImageSequenceClip 对象时将加载所有图像,这可能会占用大量内存。如果为 False,则图像将在需要时按需加载,这可能会降低性能但减少内存使用。默认值是 True。
with_mask: 这是一个布尔值,表示是否使用图像的 alpha 通道(如果存在)作为遮罩。如果为 True,则图像的透明部分将不会显示。默认值是 False。
ismask: 这是一个布尔值,表示这个剪辑是否应该被当作一个遮罩来使用。如果为 True,则这个剪辑将只包含黑白图像,其中白色表示可见部分,黑色表示不可见部分。默认值是 False。
transparent: 这是一个布尔值或颜色值,表示如果图像具有该颜色,则应将其视为透明。这通常用于处理没有 alpha 通道的图像。默认值是 False。
logger: 这是一个可选的日志记录器对象,用于记录有关图像加载和处理的信息。
preload: 这与 load_images 类似,但 preload 参数的取值可以是 "auto"、"eager" 或 "lazy"。"auto" 将根据图像的数量和大小自动选择是否预加载图像,"eager" 将立即加载所有图像,而 "lazy" 则会在需要时按需加载图像。
注意:上述参数可能会随着 moviepy 库的更新而发生变化,因此建议查阅最新的 moviepy 文档以获取最准确的信息。

另外,值得注意的是,我在编写这个回答时,ImageSequenceClip 的 __init__ 方法并没有直接接受上述所有参数。一些参数(如 load_images、with_mask、ismask、transparent)实际上是 ImageClip 类的参数,而 ImageSequenceClip 是从 ImageClip 派生的。因此,在创建 ImageSequenceClip 对象时,这些参数可能会通过其他方式(例如,通过设置 ImageClip 对象的属性)来间接使用。再次强调,建议查阅最新的 moviepy 文档以获取最准确的信息。
相关推荐
上海合宙LuatOS2 小时前
LuatOS核心库API——【hmeta 】硬件元数据
单片机·嵌入式硬件·物联网·算法·音视频·硬件工程·哈希算法
一个人旅程~4 小时前
QQ音乐、potplayer、VLC等对音乐格式的支持和加密文件格式的转换有哪些方法?potplayer的音质相对于VLC有哪些特点?
windows·经验分享·电脑·音视频
音视频牛哥5 小时前
从协议栈到工程落地:SmartMediaKit全链路模块化架构深度解析
音视频·rtsp播放器·rtmp播放器·安卓rtsp服务器·安卓轻量级rtsp服务·安卓rtsp摄像头推流·安卓摄像头rtmp推流
奔跑吧 android6 小时前
【车载Audio】【AudioHal 04】【高通音频架构】【从 AHAL adev_open 到 PAL XML 解析:30微秒内的调用链深度追踪】
音视频·audiohal·车载audio·高通音频架构·ahal·audiofinger
REDcker7 小时前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
linux_cfan8 小时前
WordPress 视频播放痛点解决方案:支持 RTSP/WebRTC 与字幕检索的 ZWPlayer 插件实测
php·音视频·webrtc
AI周红伟1 天前
周红伟:字节官方发布Seedance 2.0 视频模型,技术实现过程和 技术分解
音视频
查无此人byebye1 天前
实战DDPM扩散模型:MNIST手写数字生成+FID分数计算(完整可运行版)
人工智能·pytorch·python·深度学习·音视频
九丝城主1 天前
1V1音视频对话2--Web 双浏览器完整通话测试(强制 relay)
前端·音视频
哈__1 天前
基础入门 Flutter for OpenHarmony:video_player 视频播放组件详解
flutter·音视频