让Python代码和迈克杰克逊一起跳舞

时间:2019-11-27  点击:
手机版

  

  Smooth CriminalMichael Jackson - Bad

  还记得读高中时,有一次和同学一次去网吧上网,他让我看一个视频,是 Michael Jackson 的前倾 45° 的动作,当时觉得舞蹈还可以这样跳,太炫酷了。那时在网吧看了 2 小时 MJ 的舞蹈。此后就迷上了 MJ,迷上了他的太空步,迷上了他的机械舞,迷上了他的超强节奏律动的歌曲,成为了小小的 MJFans。那时为了备战高考,我和这位同学一起在学校附近住了一间房间,那时镇上的房租也很便宜。学习累了,就一起在 MJ 的歌曲中练练太空步,乐此不疲。

  大学期间,我还在宿舍没人时自己偷偷看视频练习 MJ 的舞蹈 dangerous,可惜自己基础太差,上不了台面,上台表演的梦想只好作罢。

  如今都毕业几年了,手机也换得频繁,但手机里总会有 MJ 的歌,累了乏了就会听听,边听边跟着节奏一起打着节拍,听完之后感觉全身又充满了力量。看到有些视频软件上有人发布了 MJ 的视频,也总会忍不住点进去看看。

  最近看到一个有意思的程序:ffmpeg。它是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以用来把视频转化为图片,在用 PIL 库把图片处理成编码,这样编码就可以和 MJ 视频一起律动起来了。

  说干就干,首先打开之前收集的 MJ 的视频,把那些背景干扰比较少的镜头剪切下来处理。这个工作是个苦差,因为 MJ 的舞蹈视频基本都在演唱会上,背景比较多,效果不是太明显,再加上之前也很少用这些视频处理软件。弄了大半天总算拼了两段稍微好点的,配上了自己剪切的音乐。

  项目环境

  语言: Python3

  工具:Pycharm

  工具准备

  ffmpeg,刚才说的处理视频的程序,可去官网下载https://www.ffmpeg.org/download.html#build-windows。

  PIL 包:Python 的图形处理库。

  numpy 包:Python 的一种开源的数值计算扩展,可用来存储和处理大型矩阵。

  程序结构

  我写了三个 py 文件,一个用来把视频转换为图片,一个用来把图片转为编码,最后一个来做最后的执行。

  视频处理

  下面的 ffmpeg 程序后面的几个参数我解释一下,-i 后面需要指定输入的文件名。-f 指定格式(音频或视频格式)。-vframes 设置转换多少桢(frame)的视频。-ss 从指定的时间(s)截图。

  用这个函数获取视频的每帧图片,给出的视频存放路径和获取图片的路径调用此函数就可以获取视频每帧的图片,我设置了每 0.1 秒保存一张图片。

  图片转换

  用 convert('L') 把图片转换为为二值图像,非黑即白。但是它每个像素用 8 个bit 表示,0 表示黑,255 表示白。

  执行这个函数不会有数据返回,用下一个 go.py 文件导入调用才行。

  控制输出

  调用上个函数 image2txt,图片转换为编码。

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

  给出编码文件路径和图片路径,执行函数。

  收集完视频图片后在 cmd 控制台执行 go.py 文件,编码出现后点击视频播放就能达到刚才视频中的效果了。

  你们可以用自己的视频去做,视频背景固定的话效果更好。

  在公众号回复「jacksondm」获取源码。

  写在最后

  方法教给大家了,视频素材可以优化,大家可以自己收集好的视频素材,发到朋友圈,让代码骚动起来!

  

  brucepk

  我们

  1.Python 技术分享

  2.Python 爬虫分享

  3.资料、工具共享

  欢迎关注我们,一起成长!

  -END-

  

本文标签: 中国民工街舞 街舞商城音乐

上一篇:青少年防艾,教育须先行
下一篇:成吉思汗背后的两大谜团:死因之谜?陵墓之谜?

街舞资讯热门