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

一、简要说明

简述:本文主要展示将视频转成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动图,通过设置越过的图片数,可以减小容量,但是会加速动画效果,上面的效果图,就是通过这里生成的。

五、附录

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/89213730