美文网首页pythonpython工厂python
Python将视频转成ASCII符号形式、生成GIF图片

Python将视频转成ASCII符号形式、生成GIF图片

作者: 9ba4bd5525b9 | 来源:发表于2019-04-11 16:22 被阅读166次

    一、简要说明

    简述:本文主要展示将视频转成ASCII符号形式展示出来,带音频。

    运行环境:Win10/Python3.5。

    主要模块: PIL、numpy、shutil。

    [PIL]: 图像处理

    [numpy]: 矩阵形式读取图片数据

    *[shutil]: 删除目录

    注意点:ffmpeg.exe(视频处理) 可以自行网上下载。

    二、简单分析

    在网上看到转成字符形式的视频,感觉挺有趣的,于是查阅相关资料,开始实现一下。基本思路:主要使用 ffmpeg 对进行视频操作,然后使用 PIL 对图片进行缩小、灰度和转码的处理。流程如下:

    1. 创建临时路径。

    2. 将视频按帧分割成图片存入临时目录。

    3. 遍历将图片缩放、转成灰度,再转成ASCII形式的图片。

    4. 将ASCII形式的图片合成视频。

    5. 获取源文件的音频文件。

    6. 合并视频和音频文件。

    再来看看效果图:

    三、开发流程

    3.1、创建目录,存储图片的临时路径

    以上代码主要创建源视频切割图片存储路径、转码后图片存储路径和输出文件的存储路径,图片的存储路径为 ==临时路径== ,每次执行前会先清空之前的文件,请注意。

    3.2、将视频分割成图片

    cmd:ffmpeg-i[输入文件名]-r[fps,帧率][分割图存储路径]

    这里就比较简单,使用 ==ffmpeg== 将视频分割成图片并按照相应个数存储在临时路径即可。查阅ffmpeg命令行说明

    3.3、将视频分割成图片

    这一步是重点,在遍历获取源图片目录列表之后,就可以分步进行操作了:

    1、缩小图片、转成灰度模式,存入数组。

    2、新建空白图片(灰度模式、与原始图片等宽高)。

    3、将每个字符绘制在一定的区域内。

    4、保存字符图片。

    下面就是替换的字符:

    self.ascii_char =list("$@B%8&WM#*oahkbdpqwO0QLCJYXzcvunxrjft/\|()1[]?-_+~<>i!......... ")

    3.4、将ascii形式的图片合成视频

    遍历转码的图片,合成视频。

    cmd:ffmpeg-threads2-start_number[开始图片编号]-r[帧率,fps]-i[图片路径]-vcodec[指定解码器][输出文件名]

    3.5、获取音频mp3文件

    cmd:ffmpeg-i[输入视频文件名]-fmp3[输出的mp3文件名]

    3.5、合并视频和音频文件

    上面代码就是将视频和音频进行合并,转成全符号的视频也不会丢失音频。

    cmd :ffmpeg -i[视频文件名]-i[音频文件名]-strict -2 -f mp4[合并后的文件名]

    四、生成GIF动图

    上面主要实现:将分割出来的图片,合成一张GIF动图,通过设置越过的图片数,可以减小容量,但是会加速动画效果,上面的效果图,就是通过这里生成的。

    五、附录

    相关文章

      网友评论

        本文标题:Python将视频转成ASCII符号形式、生成GIF图片

        本文链接:https://www.haomeiwen.com/subject/bsxxwqtx.html