解决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 文档以获取最准确的信息。
相关推荐
FrameNotWork11 小时前
HarmonyOS 6.1 云应用客户端适配实战(二):Native Window 视频渲染
华为·音视频·harmonyos
2023自学中11 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
天天进步201511 小时前
Python全栈项目--基于深度学习的视频目标跟踪系统
python·深度学习·音视频
EasyDSS13 小时前
私有化音视频系统/视频高清直播点播EasyDSS重塑企业视频门户新生态
音视频
byte轻骑兵14 小时前
【LE Audio】CAP精讲[13]: Central侧LE连接建立全流程解析
人工智能·音视频·cap·le audio·低功耗音频
EasyDSS14 小时前
视频直播点播/音视频点播/云点播/云直播EasyDSS一体化音视频平台赋能企业数字化转型
音视频
俊哥工具17 小时前
电脑怎么玩手机APP?超简单新手教程
pdf·电脑·word·excel·音视频
FrameNotWork17 小时前
HarmonyOS 6.1 云应用客户端适配实战(五):日志调试与问题排查
华为·音视频·harmonyos
2501_9422792520 小时前
视频转文字听不清、整理慢如何高效解决?
音视频
码农阿强20 小时前
PixVerse 全系列视频生成模型技术架构详解 + Python 基于 StartAPI.top 接口实战调用
python·ai·架构·音视频·ai编程