动机
刚刚有个需求:将一个文件下的视频的所有帧转化为对应图片.经过查找通过ffmpeg相关指令能实现将一个视频转化为对应图片,但在多个文件下操作几千个视频,涉及到文件操作指令.在终端上写一两个命令无法完成操作.写一个shell脚本肯定能完成这个任务,但是shell一点也没接触过,短时间内也不想研究,经过多番查找,发现python下一个subprocess模块可以封装运行终端指令.
简要介绍
subprocess
subprocess包主要功能是执行外部的命令和程序,正好可以运行终端命令,这点上和shell功能类似.我用了subprocess.call()函数来调用执行外部命令,在主程序中启动一个子进程运行外部指令,父进程等待子进程完成后,返回退出信息,父进程执行后续程序.简单指令如下:
subprocess.call(strcmd, shell=True)
strcmd表示终端命令,例如”ls”. shell = True表示Python将先运行一个shell,再用这个shell来解释这整个字符串。
ffmpeg
ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,其功能很强大,一条指令就可以完成简单的视频功能需求.例如将一个视频所有帧转化为对于图片指令如下:
ffmpeg -i 00001.