解决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 文档以获取最准确的信息。
相关推荐
byte轻骑兵11 小时前
【AVRCP】规范精讲[10]:链路管理器LM互操作规则与场景落地
人工智能·音视频·蓝牙·avrcp·音视频控制
JK Chen12 小时前
faster_whisper,视频转文字,并生成字幕文件
python·whisper·音视频
Prannt1 天前
星朗智能语音——语音合成——上传文件配音
ai·音视频·语音识别
byte轻骑兵1 天前
【AVRCP】规范精讲[7]: 打通AVCTP互操作底层,吃透事务标签与分片规则
人工智能·音视频·avrcp·音视频控制
EasyGBS1 天前
国标GB28181视频平台EasyGBS即将重磅新增WHIP推流功能!低延迟直播体验再升级
音视频
jiejiejiejie_1 天前
Flutter for OpenHarmony 萌系实战合集:地图功能 + 音频播放一站式指南
flutter·音视频
jbk33111 天前
10分钟翻译一条视频,实现语音、字幕翻译后与画面同步对齐,视频翻译助手使用教程
人工智能·音视频·剪辑软件·剪映自动化软件
带娃的IT创业者2 天前
DaVinci Resolve – Photo:当视频调色之王,跨界“修图”,意味着什么?
图像处理·音视频·工作流·davinci resolve·后期制作·视频调色·色彩管理
nashane2 天前
HarmonyOS Video组件预览图片优化实践:告别黑屏,提升视频播放体验
华为·音视频·harmonyos·harmonyos 5
科研前沿2 天前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算