解决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 文档以获取最准确的信息。
相关推荐
ai产品老杨22 分钟前
H264 H265视频分析问题清单:环境、参数、验证和排错
音视频
论文复现现场1 小时前
MiniMaxH3 生成视频速度慢、电脑带不动怎么办?用 RTX 5090 云端镜像快速运行
云计算·电脑·音视频·gpu算力
阿童木写作3 小时前
跨境电商翻译工具推荐:批量图片翻译+视频字幕实时翻译
人工智能·python·音视频
小柯南敲键盘4 小时前
跨境电商翻译工具,AI批量图片及视频字幕翻译
大数据·人工智能·python·音视频
2601_962069536 小时前
2026年医学数字人做科普视频的技术路线:从开源工具链到半自动化的工程复盘
开源·音视频
≮傷£≯√7 小时前
Qt 面试(一)
qt·ffmpeg·音视频
2601_962304917 小时前
2026年视频素材怎么找合适的:从全手动翻站到半自动采集的工程复盘
音视频
2601_962069537 小时前
2026年视频素材命名规范:从全手动开源链到半自动成片的工程演进
音视频
奈斯先生Vector8 小时前
AIGC 视频生成实战:用 Kling Video 拆解文生视频、图生视频与完整工作流
开发语言·人工智能·windows·python·aigc·音视频
johnsong9 小时前
超越实时:Video DeltaNet 如何让视频生成比播放更快
音视频