美文网首页
python+ffmpeg让字符跳动起来

python+ffmpeg让字符跳动起来

作者: yuandatou | 来源:发表于2018-09-10 13:25 被阅读431次

项目环境

语言:Python3
编辑器:Pycharm
导包:PIL、numpy
安装软件:FFmpeg

安装软件

1.下载ffmpeg,这里只说Windows下的方式,首先去官网,下载Windows版本的安装包 ffmpeg.png 2.下载完成后,解压,然后找到目录下的bin文件夹,将该目录配置到环境变量中 解压目录.png 3.验证是否安装配置成功,打开cmd,输入ffmpeg -version,出现如下界面则配置成功 sucess.png

程序思路

1.把视频转换为图片
2.把图片转为编码,存成txt文件
3.“播放”这些txt文件

视频转图片

get_image(video_path, image_path),两个参数就是你的视频路径和存放图片的路径。然后os.system()那句话就是让你的Windows在cmd里面执行里面那句话,-i 后面需要指定输入的文件名。-f 指定格式(音频或视频格式)。-vframes 设置转换多少桢(frame)的视频。-ss 从指定的时间(s)截图。

def getImage(video_path, image_path):
    img_count = 1
    crop_time = 0.0
    while crop_time <= 15.0:#转化15s的视频
        os.system('ffmpeg -i %s -f image2 -ss %s -vframes 1 %s.png'% (video_path, str(crop_time), video_path+ str(img_count)))
        img_count += 1
        print('Geting Image ' + str(img_count) + '.png' + ' from time ' + str(crop_time))
        crop_time += 0.1#每0.1秒截取一张照片
    print('视频转化完成!!!')

在cmd命令行中运行此函数,查看对应文件夹是否有图片生成。

图片转txt

def image_to_txt(image_path, txt_path):
    # 这里使用到PIL库convert函数,将RGB图片转化为灰度图,参数'L'代表转化为灰度图
    im = Image.open(image_path).convert('L')
    charWidth = 100
    # 这个是设置你后面在cmd里面显示内容的窗口大小,请根据自己的情况,适当调整值
    im = im.resize((charWidth, charWidth // 2))
    target_width, target_height = im.size
    data = numpy.array(im)[:target_height, :target_width]
    f = open(txt_path, 'w',encoding='utf-8')
    for row in data:
        for pixel in row:
            if pixel > 127: # 如果灰度值大于127,也就是偏白的,就写一个字符 '1'
                f.write('1')
            else:
                f.write(' ')
        f.write('\n')
    f.close() 
def getTxt(image_path, txt_path):#调用上面的函数image_to_txt
    img_count = 1# 一张图对应一个txt文件,所以每遍历一张图,该值加一

    while img_count <= len(os.listdir(image_path)):
        #os.listdir(image_path)# 返回所有图片名称,是个字符串列表
        imageFile = image_path+ str(img_count) + '.png'
        txtFile = txt_path+ str(img_count) + '.txt'
        image_to_txt.image_to_txt(imageFile, txtFile)
        print('舞蹈加载中: ' + str(img_count) + '%')
        img_count += 1

播放输出

通过 os.system('cls') 控制屏幕的及时清除,以便及时显示下一帧图片的编码。

if __name__ == '__main__':
        video_dir_path = r'D:\dance\dance.mp4' + '\\'#存储视频文件的路径
    txt_dir_path = r'D:\dance\txt' + '\\'#存储txt文件的路径
    img_dir_path = r'D:\dance\images' + '\\'#存储图片的路径
        getImage(video_dir_path, img_dir_path )
    getTxt(img_dir_path, txt_dir_path)
    run(txt_dir_path)

def run(txtPath):
    txt_count = 1
    while txt_count <= len(os.listdir(txtPath)):
        os.system('type ' + txtPath + str(txt_count) + '.txt')
        # 这里type命令是Windows下的命令,type+文件名,就可以在cmd里面显示文件内容
        txt_count += 1
        os.system('cls')

运行

此程序由三个文件组成,如下图。建立相对应的目录,提前下好视频文件,放到对应的目录,打开cmd窗口,运行run.py,执行时间稍长,等待片刻。 project.png image.png txt.png
效果截图.png

更多内容请关注公众号

元大头.jpg

相关文章

  • python+ffmpeg让字符跳动起来

    项目环境 语言:Python3编辑器:Pycharm导包:PIL、numpy安装软件:FFmpeg 安装软件 程序...

  • 跳动的字符

    日更,日更,日更, 每天都在重复着文字的编排, 通过场景、人物、出场顺序来演绎不同的人生, 文字就是这一场场戏的主...

  • 跳动的字符

    我敲着键盘 一个个字符跳动着 排成整齐的队伍 串成了一篇或短或长的文章 那字符明明是我绞尽脑汁的结果 现在却成了键...

  • Beat

    看到Beat,第一个想到的解释就是“打”,让人爱不起来。 其实它还有“跳动”的意思。 跳动一词很平淡。 心脏跳动,...

  • 那些跳动的字符(2)

    那年大二有所思 都说大学是个墨池,而寝室则是勺跟,越是搅拌,越会是浑浊。大家搅拌在一起,一方习惯呈现,我们每天形影...

  • 那些跳动的字符(1)

    大一厌学的自己 身为一名即将成为程序媛的我,以前看到代码就睁不开眼睛,一上课就睡觉,类似c语言,c++的课,从来没...

  • 冬日小趣/当归熟地

    冬日阳光铺满床 鱼儿们欢快的追逐 草药在砂罐里咕嘟起来 药香弥漫整个房间 南瓜汤香甜 字符在书页中热闹的跳动 风月...

  • 让心脏跳动

    生治的艺术,对,生活中有很多的艺术,艺术来源于生治,也高于生活。 读书会与作家李亦凡,京京,两位浑身是知性美的老师...

  • 第2题-无重复字符的最长子串

    面试题目(字节跳动) 给定一个字符串,找出其中无重复字符的最长子字符串长度。 示例:给定 "abcabcbb" ,...

  • 那就跳动起来

    原本想去碰运气看能不能得到一张友友的演唱会票,回头看看当时确实有机会,只是稍不留神没意识到,就无缘错过了,错...

网友评论

      本文标题:python+ffmpeg让字符跳动起来

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