10万+的短视频被批量生产了,Python表示不服!

利用Python批量生成任意尺寸的图片 不知道大家有没有遇到过,因检验需要1000张,分别从1*1到1000*1000像素的图片。搜索一番过后发现还是Python实现比较方便,遂决定用Python实现这一功能,下面分享给大家,有需要的可以参考。 立即下载

1

目 标 场 景

做过自媒体的朋友应该都知道, 「 GIF动画视频 」有段时间在各大自媒体平台很受欢迎。

前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。

Python资源共享群:484031800

 

 

 

 

 

本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这一骚操作。

2

准 备 工 作

首先,对视频和背景音乐的剪辑,这里用到了「 moviepy 」库,通过 pip3 安装到虚拟环境中。

# moviepy 用于视频剪辑和背景音乐的合成、剪辑
pip3 install moviepy

另外,项目中需要利用 「 PIL 」库来分析、 获取 GIF 动画中的所有帧图片。

# 将GIF图片转为帧,需要对GIF进行分析
pip3 install ffmpeg

编写脚本之前,我们需要提前准备一些 GIF 动画素材。当然,你也可以去爬取一些搞笑、好玩的 GIF 动画。

另外再准备一段 BGM 作为视频的背景音乐。

3

编 写 脚 本

第一步,我们需要把每一个 GIF 动画转为一段视频。

由于 GIF 动画已经是一段包含很多帧的视频了,没法直接通过 moviepy 库转为一段普通视频。

所以,这里需要对 GIF 动画进行分析,将动画转为 「 静态帧图片 」 。

def get_gif_frames(gif_path, temp_path):
    """     获取一段GIf图片下的所有静态帧     get_gif_frames('./../gifs/3.gif', './../gif_temp/')     :return:     """
    # 分析gif图片
    mode = analyseImage(gif_path)['mode']
    im = Image.open(gif_path)
    i = 1
    p = im.getpalette()
    last_frame = im.convert('RGBA')
    try:
        while True:
            # print("saving %s (%s) frame %d, %s %s" % (gif_path, mode, i, im.size, im.tile))
            '''             If the GIF uses local colour tables, each frame will have its own palette.             If not, we need to apply the global palette to the new frame.             '''
            if not im.getpalette():
                im.putpalette(p)
            new_frame = Image.new('RGBA', im.size)
            '''             Is this file a "partial"-mode GIF where frames update a region of a different size to the entire image?             If so, we need to construct the new frame by pasting it on top of the preceding frames.             '''
            if mode == 'partial':
                new_frame.paste(last_frame)
            new_frame.paste(im, (0, 0), im.convert('RGBA'))
            new_frame.save(temp_path + '/%s-%d.png' % (''.join(os.path.basename(gif_path).split('.')[:-1]), i), 'PNG')
            i += 1
            last_frame = new_frame
            im.seek(im.tell() + 1)
    except EOFError:
        # print('产生EOFError!!!')
        pass

另外,我们下载的 GIF 动画的静态帧图片分辨率大概率是不一致的,所以对图片批量修改分辨率 「 修改分辨率 」 变的很有必要。

这里将所有图片的分辨率统一修改为 720*1080,在转换的过程中,如果存在 空白部分,就使用黑色进行填充。

def resize_image(target_image_path, target_size):
    """     调整图片大小,缺失的部分用黑色填充     :param target_image_path: 图片路径     :param target_size: 分辨率大小     :return:     """
    image = Image.open(target_image_path)
    iw, ih = image.size  # 原始图像的尺寸
    w, h = target_size  # 目标图像的尺寸
    scale = min(w / iw, h / ih)  # 转换的最小比例
    # 保证长或宽,至少一个符合目标图像的尺寸
    nw = int(iw * scale)
    nh = int(ih * scale)
    image = image.resize((nw, nh), Image.BICUBIC)  # 缩小图像
    # image.show()
    new_image = Image.new('RGB', target_size, (0, 0, 0, 0))  # 生成黑色图像
    # // 为整数除法,计算图像的位置
    new_image.paste(image, ((w - nw) // 2, (h - nh) // 2))  # 将图像填充为中间图像,两侧为灰色的样式
    # new_image.show()
    # 覆盖原图片
    new_image.save(target_image_path)

然后,将统一分辨率后的静态帧图片转换为一段普通视频。

在转换为视频之前,我们需要提供一个 「 合理的转换帧率 」 来保证视频播放的流畅性。 由于最后需要将多段视频合成为一段视频,这里默认指定帧率为 10帧/s。

GIF 动画原始的帧率、播放时长等动画文件属性值可以利用 「 imgpy 」获取到。

def get_gif_info(gif_path):
    """     获取gif文件的详细信息     每一个gif的帧率不一样,有的<10fps;有的>10fps     :param gif_path:     :return:     """
    with Img(fp=gif_path) as im:
        # 1.有多少帧
        frame_count = im.frame_count
        # 2.图片信息
        # {'version': b'GIF89a', 'background': 31, 'duration': 70, 'extension': (b'NETSCAPE2.0', 795), 'loop': 0}
        duration_pre = im.info.get('duration')
        # 根据规律,除以7位实际的播放时长
        duration = duration_pre / 7
        # 6.color palette
        # print(im.mode_desc)
        # print((frame_count, duration))
        # 返回帧率和时长
        return (frame_count / duration), duration

最后,我们利用 moviepy 库中的 「 ImageSequenceClip 」类将这些图片写入到一个视频文件中。

def pics_to_video(pics_path, output_path, fps, duration):
    """     图片转为视频     pics_to_video('./../gif_temp/', './../video_temp/temp1.mp4', 20)     :param pics_path:     :param output_path:     :return:     """
    image_paths = list(map(lambda x: pics_path + x, os.listdir(pics_path)))
    # 注意:这里必须进行一次排序,保证所有帧的顺序是一致
    image_paths = sort_strings_with_emb_numbers(image_paths)
    # 过滤掉非图片
    image_paths = list(filter(lambda image_path: image_path.endswith('.png'), image_paths))
    # 图片剪辑类
    clip = ImageSequenceClip(image_paths,
                             fps=fps)
    # 写成视频之前,需要把gif都转成同一个分辨率
    clip.write_videofile(output_path)

循环上面的操作,就可以将所有的 GIF 动画转换为一个普通视频文件。

第二步是将所有的视频文件进行剪辑,写入一个单独的文件中。利用 moviepy 库下面的 「  VideoFileClip  」可以非常快捷方便地完成这一操作。

def compound_a_video(self, videos_path):
        """         合成一个视频         :param videos_output:视频集合的完整目录         :return:         """
        # 定义一个数组
        L = []
        for video_path in videos_path:
            # 载入视频
            video = VideoFileClip(video_path)
            # 添加到数组
            L.append(video)
        # 拼接视频
        final_clip = concatenate_videoclips(L)
        # 生成目标视频文件
        final_clip.to_videofile(self.video_output_temp, fps=self.fps, remove_temp=False)

最后一步是往视频中添加背景音乐。

首先是通过 AudioFileClip 和 VideoFlieClip 获取到视频文件和音频文件的播放时长,对播放时长较长的文件进行截取处理。

# 1.音频文件
audioclip = AudioFileClip(self.bgm_path)
# 2.视频文件
 videoclip = VideoFileClip(self.video_output_temp)
# 3.获取视频和音频的时长
video_time = videoclip.duration
audio_time = audioclip.duration
print('视频时长:%f,音频时长:%f' % (video_time, audio_time))
# 4.对视频或者音频进行裁剪
if video_time > audio_time:
      # 视频时长>音频时长,对视频进行截取
      ideoclip_new = videoclip.subclip(0, audio_time)
      audioclip_new = audioclip
else:
      # 音频时长>视频时长,对音频进行截取
      videoclip_new = videoclip
      audioclip_new = audioclip.subclip(0, video_time)

然后把音频文件通过 set_audio() 添加到视频操作类中,最后重新写入到一个新的视频文件当中。

# 5.视频中加入音频
video_with_new_audio = videoclip_new.set_audio(audioclip_new)
# 6.写入到新的视频文件中
video_with_new_audio.write_videofile("mp4_with_audio.mp4",
                                             codec='libx264',
                                             audio_codec='aac',
                                             temp_audiofile='temp-audio.m4a',
                                             remove_temp=True
                                             )

4

结 果 结 论

以上的脚本会对指定文件夹的的 GIF 动画文件分别生成一段普通视频,然后把所有的视频合成一段视频,然后再添加一段 BGM 背景音乐,最后写入到一个新的视频文件中, 如此,就完成了制作一个 GIF 视频的操作。

当然,本文只是提供一个思路,让 Python 爬取一些有趣好玩的 GIF 动画进而批量做成视频,上传各大自媒体平台,应该也能获取到不错的阅读量。

我已经将全部源码 上传到后台上,关注公众号后回复「  10万  」即可获得。

VSCode CMake 安装与配置详解 概述 在windows上使用cmake编译C/C++程序时,首先需要CMake,安装gcc/g++编译环境,然后使用VSCode 以及配置下CMakelist.txt。 所需工具: VSCode (需要安装以下插件) C/C++ C++ Intellisense CMake CMake tools CMake Tools Helper CMake MinGW 安装CMake 下载链接:... 阅读详情

相关推荐

ARM 汇编指令:LSL(逻辑左移) 和 LSR(逻辑右移)

ARM 汇编中的 LSL(逻辑左移)和 LSR(逻辑右移)是基础移位指令,分别实现二进制位的左移和右移操作。LSL 低位补0,等效于乘以2^n;LSR 高位补0,等效于无符号除以2^n。这两个指令可以单独使用或与其他指令结合(如ADD、MOV等),利用ARM的"桶形移位器"硬件实现高效运算。关键特性包括:移位范围0-31(LSL)或1-32(LSR),可选更新标志位,以及与其他指令结合时的无额外开销优势。LSR与ASR(算术右移)的主要区别在于高位填充方式,分别适用于无符号和有符号数处理

guigenyi的专栏 1812

python批量将文本生成短视频

视频尺寸为16:9,视频格式.mp4,兼容各个短视频平台!更多精彩案例、实战完整源码,已上传微信公众号,后期分享更精彩!开发不易,获取完整项目源码需要一点费用,非诚勿扰!支持设置每个视频添加不同音频视频数量;python批量将文本生成短视频1。python批量将文本生成短视频2。python批量将文本生成短视频3。支持mac、windows平台;支持设置文本上下左右边距;支持设置视频末尾静止时间;支持设置视频前静止时间;支持设置上下左右边距;支持设置视频滑动速度;

玛卡`三少 的博客 777

Python深度学习基于Tensorflow(17)基于Transformer的图像处理实例VIT和Swin-T

定义窗口注意力机制,与普通的注意力机制不同,其是在各个窗口中执行注意力机制。从中可以看到,其创新点主要是将图片进行拆分作为序列数据带入。差不多,主要实现的是一个下采样的算法过程;相同位置的像素绑定到一起构成一张新的。模型定义完毕后,初始化模型并开始训练。由于层之间重复性出现,可以定义一个。中,这里先实现拆分图片类。进行操作时我们定义三个类。定义一个多头注意力机制类。的数据,导入数据如下。导入数据,这里同样用。

bigcrab的博客 1634

Python把图片批量合成为视频代码

可调视频帧率FPS(frames per second),FPS值越小每秒播放的图片数越少。

thiscele的博客 1083

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 661

ESP32 TWAI CAN库实战:从零构建CyberGear微电机控制框架

本文详细介绍了如何利用ESP32的TWAI控制器和Arduino环境,从零构建一个面向对象的CyberGear微电机控制框架。该框架将复杂的CAN通信协议封装为简洁的API,开发者无需深究底层细节,即可轻松实现电机的速度、位置和扭矩控制,大幅简化机器人关节、云台等项目的开发流程。

oil88的博客 499

如何使用python快速将大批量图片合成为视频?

目前程序运行已无问题,合成较为迅速,但合成后的视频清晰度相较于图片会大幅降低,如何解决此缺陷还有待探索。由于优快云大批量导入图片容易出现乱序,本程序将支撑图片转为视频,便于用视频的方式展示文件内容。由于图片名称复杂多样,为便于统一化处理,增强程序的通用性,使用改名程序可以降低手动调整的复杂度。注意此部分的图片大小仍需要手动修改或输入。

qq_44787525的博客 2210

解密TMS320F28377D双核工程中的内存分配艺术:从CMD文件到实战优化

本文深入解析TMS320F28377D双核DSP的内存管理艺术,从CMD文件配置到实战优化技巧。详细介绍了SARAM、GSRAM等内存类型的特性与配置方法,提供双核协同、性能优化及高级调试的实用方案,帮助开发者提升系统实时性和稳定性。

weixin_29190651的博客 663

一起用Python做个自动化短视频生成脚本,实现热门视频流水线生产!

前言 前几天有粉丝和我说,最近在网上看到一些视频营销号一天能发布几百条短视频, 感觉都是批量生成的,能不能用Python做个自动化短视频生成脚本呢? 今天就带大家一起用Python做个自动化视频生成脚本,实现热门视频批量流水线生产,一起来看看吧~ 一、核心功能设计 首先我看了网上那些视频营销号的视频,大多数都是围绕一个主题通过几张图片进行视频轮播展示并添加一些热门歌曲作为背景音乐。 知道了大概的思路,接下来我们可以通过以下几步进行实现: 通过关键字进行图片批量爬取 对爬取的图片进行筛选并批量进行大小res

hhladminhhl的博客 2万+

重构工业交互体验:响应式数据可视化大屏解决方案

从智慧园区到数据中心,从水务监控到风力发电场景,HT 通过 2D/3D 组态技术与响应式布局机制,让数据以更灵活、更精准的方式呈现场景动态 —— 这正是 HT 技术在工业可视化领域的核心价值。例如,在智慧楼宇监控系统中,HT 引擎可实时渲染建筑结构、设备状态与数据流,同时确保画面在不同尺寸屏幕上的一致性。以某工业数据中心大屏为例,HT 通过暗红色主调搭配工业元素,结合粉色与黄色点缀,打破传统深蓝色大屏的视觉定式,同时通过矢量图形确保色彩在不同亮度下的辨识度 —— 这正是 HT 技术在视觉设计上的独特优势。

Hightopo的博客 889

YOLO26一文弄懂 | YOLO26内容详解、网络结构解读 、yolo26.yaml配置文件详细解读与说明、YOLO26虚拟环境安装、模型训练、验证、推理参数详细解析 | 通俗易懂!入门必看系列!

YOLO26目标检测模型创新与应用指南 本文全面介绍了YOLO26目标检测模型的创新特性、网络结构及实践应用。YOLO26基于四大核心原则设计:简洁性(移除NMS后处理)、部署效率(端到端架构)、训练创新(MuSGD优化器)和任务优化(支持多种视觉任务)。模型包含五种尺寸规格,CPU推理速度提升43%,支持目标检测、实例分割、姿态估计等任务。 文章详细解析了YOLO26的网络结构(Backbone-Neck-Head三部分)和yaml配置文件,提供了从虚拟环境配置到模型训练、验证、推理的完整教程。

Ai缝合怪、助力小伙伴高效发论文 2万+

10万+的短视频被批量生产了,Python表示不服

点击“简说Python”,选择“置顶/星标公众号”福利干货,第一时间送达!本文授权转载自AirPython,禁二次转载阅读文本大概需要 10 分钟。1目 标 场 景做过自...

简说Python的博客 849

基于STM32H5的循环GPDMA链表使用

STM32H503的GPDMA链表模式可实现灵活的数据传输。相比传统DMA直接编程方式,链表模式通过配置多个节点实现分散数据传输,支持循环链表功能。示例展示了如何使用GPDMA链表实现UART1循环发送数据:配置两个DMA节点分别指向不同发送缓冲区,构建循环链表并绑定到DMA通道。关键点包括:清空链表结构体、正确设置循环模式、检查节点配置。此方法提高了DMA使用的灵活性,适用于需要交替传输多段数据的场景。

kevin1499的博客 451

python表示不服怎么办_10万+的短视频被批量生产了,Python表示不服!

1目 标 场 景做过自媒体的朋友应该都知道, 「 GIF动画视频 」有段时间在各大自媒体平台很受欢迎。前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。Python资源共享群:484031800本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这...

weixin_39880623的博客 123

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python pil png合成gif储存时变黑_10万+的短视频被批量生产了,Python表示不服!

1目 标 场 景做过自媒体的朋友应该都知道, 「 GIF动画视频 」有段时间在各大自媒体平台很受欢迎。前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。Python资源共享群:484031800本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这...

weixin_39521835的博客 308

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

10万+的短视频被批量生产了,Python表示不服_10万 的短视频被批量生产了,python表示不服

’’i += 1# print(‘产生EOFError!!!’)pass另外,我们下载的 GIF 动画的静态帧图片分辨率大概率是不一致的,所以对图片批量修改分辨率「」变的很有必要。这里将所有图片的分辨率统一修改为 720*1080,在转换的过程中,如果存在空白部分,就使用黑色进行填充。“”"调整图片大小,缺失的部分用黑色填充:param target_image_path: 图片路径:param target_size: 分辨率大小:return:“”"

2401_84558870的博客 1068

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python每隔十帧取一张图片_10万+的短视频被批量生产了,Python表示不服

1目 标 场 景做过自媒体的朋友应该都知道,「GIF动画视频」有段时间在各大自媒体平台很受欢迎。前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这一骚操作。2准 备 工 作首先,对视频和背景音乐的剪...

weixin_39633774的博客 554

python调整视频内容比例_10万+的短视频被批量生产了,Python表示不服

image阅读文本大概需要 10 分钟。目 标 场 景做过自媒体的朋友应该都知道,「GIF动画视频」有段时间在各大自媒体平台很受欢迎。前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。image本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这一骚...

weixin_39627144的博客 494

python短视频教程_Python技巧:10万+的短视频被批量生产了,Python表示不服

1目 标 场 景做过自媒体的朋友应该都知道,「GIF动画视频」有段时间在各大自媒体平台很受欢迎。前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。本篇文章的目的是带大家利用 Python 实现制作 GIF 动画视频,批量制作短视频这一骚操作。2准 备 工 作首先,对视频和背景音乐的剪...

weixin_30772189的博客 470

不再错过短视频风口,用python一键生成短视频,就是这么简单!

最近在网上查资料,正好看到百度开放平台又解锁一项能力【图文生成视频】。 利用这个api接口,可以可以把你的图文自动生成一个视频,完全不需要再借助其他任何的软件。 不过目前能力,一次只能转一条图文。 对于目前做短视频的人来说,我觉得还是非常方便的,所以就花点时间捣鼓了下,把代码写了出来。 在使用之前,我们先需要做做前期的准备。 1.一个百度账号 要使用百度API的接口,我们需要有一个百度...

sola237的博客 8970

Python批量生产短视频

欢迎关注 Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 1.目 标 场 景 做过自媒体的朋友应该都知道,「GIF动画视频」有段时间在各大自媒体平台很受欢迎。 前期有些自媒体大 V 靠搬运一些搞笑、好玩的 GIF,然后利用剪辑软件合成一段视频,再添加一个节奏感强的 BGM 后,上传各大自媒体平台后,能带来不错的阅读量和收益。

编辑编辑器 2391
上一篇: 房贷利率有没有套路?这是我见过最透彻的Python版解读!
下一篇: 5分钟带你用Python爬完《剑来》小说(附完整代码)!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值