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

EETI_eGTouch驱动移植及校准 一.环境 芯片:NXP IMX6Q 内核版本:4.1.15 uname:Linux myimx6ek314 4.1.15-myimx6-g5d588fa6-dirty #4 SMP PREEMPT Tue Nov 17 17:26:34 CST 2020 armv7l armv7l armv7l GNU/Linux 二.官方《EETI_eGTouch_Linux_Programming_Guide_v2.5l.pdf》文档勘误 HID_MULTITOUCH =Y or N(官方文档设置为M): 正确设置H 阅读详情


640?wx_fmt=jpeg

1

目 标 场 景


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


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


640?wx_fmt=png


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

2

准 备 工 作


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



另外,项目中需要利用「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 动画进而批量做成视频,上传各大自媒体平台,应该也能获取到不错的阅读量。


用 CL_ABAP_ZIP 在 ABAP 里打包任意文件:从前端多选到 ZIP 交付的一条龙实践 本文介绍了在SAP ABAP中实现文件打包交付的完整解决方案。文章首先区分了ZIP和GZIP的不同用途:ZIP用于多文件归档,GZIP用于单数据流压缩。核心流程包括四个步骤:文件选择、二进制上传、内存打包和ZIP输出,并提供了关键对象与函数的速查表。针对实际项目中常见的乱码、大文件处理等问题给出了解决方案,最后展示了一个完整的可运行示例代码,涵盖了从文件选择到下载的全流程实现。该方案适用于财务、质量、运维等多种业务场景,能够有效解决多文件交付的最后一公里问题。 阅读详情

相关推荐

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1013

Python 配合 ffmpeg 做批量剪辑

在视频处理领域,常常需要对大量的视频文件进行相同的操作,手动逐个处理显然效率低下。实现批量视频剪辑,如果您有任何疑问或建议,欢迎在评论区交流分享。的强大功能,高效地对大量视频进行批量剪辑,大大提高了工作效率。接着,创建了一个名为 “开始批量剪辑” 的按钮,并将其与。通过这样的代码实现,我们能够轻松地利用 Python 和。函数关联,当用户点击该按钮时,触发批量剪辑的操作。启动主事件循环,使窗口保持可见并响应用户的操作。工具来实现批量剪辑就成为了一个高效的解决方案。的主窗口,并设置了窗口标题。

菜狗小测试 1157

采用离散模型搭建永磁同步电机控制系统

永磁同步电机发电系统分为控制器和发电机,通过simulink仿真软件进行发电系统的离散系统仿真。离散搭建仿真,可以更方便的自动代码生成。通过实践经验离散模块搭建,更能加深对整个控制系统的理解。离散系统在矢量控制中经常涉及到上个开关周期的角度,电压,或者预测下个周期的角度,电流,一般都是通过延时模块实现。PWM比较值寄存器被改写后都是使能了预装载,采样后触发计算到比较值生效可以延时0.5个开关周期Ts,也可以延时1个开关周期Ts,可以通过离散系统进行仿真,大大缩短开发周期。

f1072239934的博客 2863

moviepy将图片序列制作成视频并加载字幕 - python 实现

moviepy将图片序列制作成视频并加载字幕 - python 实现

DATABALL 的博客 932

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

深入解析,python合并多张图片成视频,可用于批量制作短视频

随着短视频的兴起,越来越多的人开始用各种形式进行视频制作,本篇博客从程序员的角度为大家解析一下如何通过 Python 合并多个图片为一个视频。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1万+

遥感影像分割实战:LoveDA数据集从下载到训练全流程指南(附避坑技巧)

本文以LoveDA数据集为例,提供了一份详尽的遥感影像语义分割实战指南。内容涵盖从数据下载、理解与预处理,到环境配置、模型选择与训练,再到性能调优与部署的全流程,并重点分享了多个关键环节的避坑技巧,旨在帮助开发者和研究者高效上手并解决实际问题。

cherry的博客 930

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

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

hhladminhhl的博客 2万+

[明道云] -基础教学5- 明道云 40 种控件详解与场景解析

明道云工作表提供40种业务控件,涵盖文本、数值、关联、公式等类型,支持各类业务场景。文本类支持多行输入、正则校验;数值/金额类提供进度条、百分比显示等功能;关联类实现多表数据引用;公式/函数类支持复杂逻辑运算;自动化类包括打印模板、API调用等控件。合理使用这些控件可提升数据收集质量和自动化效率,同时需注意控件联动的性能影响和权限配置。关键控件包括关联记录、级联选择、公式计算等,适用于订单管理、客户信息关联等业务场景。

每日出拳老爷子的博客 8541

作物生长模型Oryza V3实战10:运行文件参数详解

运行文件(.rer)用于批量模拟农业场景,包含多组参数集(Rerunset),每组设定独立的时间范围、灌溉施肥方案等,支持测试不同农艺措施效果。该文件可实现参数自动校准,通过多组参数组合迭代寻找最优值。模拟结果文件(res.dat)会记录全部测试时间段的数据,便于用户对比产量、水分利用率等指标,筛选最优方案或分析气候适应性策略。

209

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

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

2401_84558870的博客 1068

【SOUND】Linux音频子系统ASoC的驱动框架总分析

ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。 在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。 可以参考Linux OSS架构声卡驱动框架 2.3 ASoC重要

wang 恒 的博客 1781

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

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

Pythoncxy的博客 292

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

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

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

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

weixin_39880623的博客 123

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

weixin_39633774的博客 554

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

weixin_30772189的博客 470

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

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

weixin_39627144的博客 494

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

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

weixin_39521835的博客 308

Python批量生产短视频

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

编辑编辑器 2391

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

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

sola237的博客 8970

2026 AI短视频全链路实战教程:1天批量生产10条爆款视频,普通开发者也能实现内容创业!

摘要: 2026年AI短视频教程:普通人借助AI工具,1天可生产10条爆款视频,实现月入过万。AI大幅降低创作门槛,无需剪辑、拍摄,只需输入主题即可自动生成完整视频。教程涵盖6步全链路流程:AI智能选题、脚本生成、画面素材制作、配音剪辑等,并提供自动化代码(如short_video_factory.py)实现批量生产。对比传统创作,AI在效率、成本、产量上具有碾压优势。变现路径包括流量主、知识付费、带货等,助力普通人快速入局短视频赛道,实现稳定增长与盈利。

小二丶的博客 1162
上一篇: Scrapy之10行代码爬下电影天堂全站
下一篇: 超实用干货|Python+SQL无敌组合,菜鸟必读!
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值