项目环境

语言: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

ffmpeg库 pycharm_python+ffmpeg让字符跳动起来相关推荐

  1. mac下Clion与QT引入FFmpeg库

    mac下Clion与QT引入FFmpeg库 目录 ffmpeg路径 Clion引入ffmpeg库 QT引入ffmpeg库 1. ffmpeg路径 /usr/local/Cellar/ffmpeg/4. ...

  2. 树莓派4B安装OPENCV遇到ffmpeg库版本太高的问题

    较新的安装教程:树莓派4B安装OpenCV教程_luoi_han的博客-CSDN博客_树莓派4b安装opencv 这几天安装opencv,其他的问题好说,但是遇到了这个问题: /home/pi/Dow ...

  3. Android 编译ffmpeg库

    Android 编译ffmpeg库 下载ffmpeg源码 git clone https://git.ffmpeg.org/ffmpeg.git 或者 git clone https://github ...

  4. 完美解决Linux环境编译ffmpeg库

    背景说明 项目功能实现需要在Linux下编译出可用的FFmpeg库.FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器 ...

  5. Qt+FFmpeg播放RTSP H264视频流(1)- 在Qt项目加入FFmpeg库

    Qt FFmpeg播放RTSP H264视频流(1) QtCreator引入FFmpeg库 下载FFmpeg库 添加FFmpeg库到Qt项目 测试FFmpeg库是否能正常使用 QtCreator引入F ...

  6. 七、FFmpeg使用---X264静态库编入FFmpeg

    欢迎加入技术交流群 群号: 552340860 ####下面用到的脚本.静态库资料. 上篇文章六.FFmpeg使用-X264的编译粗略的讲了一下如何编译X264,和之前FFmpeg的编译方式差不多,就 ...

  7. 【Android FFMPEG 开发】Android Studio 中配置 FFMPEG 库注意事项 ( 静态库 链接 libz.so 库 | 导入 FFMPEG 函数库顺序 )

    文章目录 I . 导入 z 库 ( FFMPEG 动态库 与 静态库区别 ) II . FFMPEG 库引入顺序 III . Android Studio 中 FFMPEG 静态库引入完整 CMake ...

  8. 【Android FFMPEG 开发】Android Studio 中 配置 FFMPEG 库最小兼容版本 ( undefined reference to 'atof' )

    文章目录 FFMPEG 最小兼容版本 注意事项 FFMPEG 最小兼容版本 注意事项 1 . 最小兼容版本 : 在 Ubuntu 中编译 FFMPEG 时 , 需要指定头文件 与 NDK 的依赖库 , ...

  9. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

最新文章

  1. 算法代码中的循环矩阵在哪体现_循环移位可视化理解
  2. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!
  3. python出现套接字创建不成功_python套接字协议不支持 - python
  4. AddMvc 和 AddMvcCore 的区别
  5. Android 应用基础知识(5)
  6. 74HC AHCT LS LV ABT区别
  7. WEB前端性能优化基本套路
  8. Android中的Can't create handler inside thread that has not called Looper.prepare()异常
  9. IPVSADM+PIRANHA+KEEPALIVED集群
  10. 操作系统——进程管理的功能
  11. 十大IT危机处理高手
  12. html embed自动播放,html embed标签怎么用
  13. ChemDraw教程之怎么连接ChemDraw结构
  14. learning python in the hard way习题1~5的附加题练习
  15. 基于微信小程序的租车小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
  16. php把图片合成视频,如何把照片做成视频 照片音乐视频制作 并插入几段短视频片段...
  17. 全国计算机一级考试网上题,全国计算机一级考试精选习题及答案
  18. 大家我是来自广东工业大学的吴文钧
  19. BS架构调用TSC TTP-244 Pro条码打印机的常见问题及解决方案
  20. Apple Tree树状数组、前向星、DFS序(C语言)

热门文章

  1. 解决 ERROR 2002 (HY000) Can‘t connect to local MySQL server through socket ‘tmpmysql.sock‘
  2. Riak - 背景篇(3)
  3. 戴尔服务器安装独显后无显示,在T630服务器上安装了独立显卡,重启后液晶面板显示“pci1318 fatal error on bus 128d”,然后黑屏重启,该问题如何解决阿。...
  4. Robotaxi进入“大洗牌”时代,主机厂成接盘侠
  5. 请在mysql配置文件修sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
  6. 市面常用芯片对应的ARM架构
  7. GTX960M安装tensorflow-gpu心得
  8. 浏览器提示ssl证书过期怎么办
  9. oppop+r1c怎么设置语言中文,OPPO R1C怎么样 OPPO R1C手机评测 (全文)
  10. [Swift通天遁地]一、超级工具-(16)使用JTAppleCalendar制作美观的日历