python调用系统ffmpeg实现视频截图、http发送
python调用系统ffmpeg进行视频截图,并进行图片http发送ffmpeg,视频、图片的各种处理。
最近在做视频、图片的版权等深度学习识别,用到了ffmpeg部分功能,功能如下:
调用ffmpeg对不同目录视频进行截图,通过http发送到后台进行算法识别。
每5分钟扫描最近的视频,生成图片,发送完毕图片删除。
代码如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- """'定时任务每五分钟发送上一个5分钟视频 目标视频:10.1.1.25/usr/local/checkVideoaudited、auditing、black、white find """ importlinecache importos importos.path importrequests importtime importdatetime importsys reload(sys) sys.setdefaultencoding('utf8') #openAPI现网配置 url='http://***/nudityRecog' app_key='***' access_token='***' imagedir='/opt/tomcat_api/video_sendto_api/image/' audited_dir='/usr/local/checkVideo/audited' auditing_dir='/usr/local/checkVideo/auditing' black_dir='/usr/local/checkVideo/black' white_dir='/usr/local/checkVideo/white' #时间差5分钟执行一次 subtime=300 #生成审核中截图 defcreate_auditing_image(auditing_dir): #扫描视频目录生成截图 forparent,dirnames,filenamesinos.walk(auditing_dir):#三个参数:分别返回1.父目录2.所有文件夹名字(不含路径)3.所有文件名字 forfilenameinfilenames:#输出文件信息 video_path=os.path.join(parent,filename)#输出文件路径信息 filePath=unicode(video_path,'utf8')#中文编码 filetime=os.path.getmtime(filePath)#获取修改时间 localtime=time.time()#获取当前系统时间 t=localtime-filetime#两者差值 #判断差值是否小于300s ift<=subtime: printt,filePath filename=unicode(filename,'utf8')#下载视频名称 #生成视频md5 str_md5='md5sum'+''+filePath+''+"|awk'{print$1}'" video_md5=os.popen(str_md5).readline(32) printfilePath,video_md5 #拼接截图命令行, str_video="ffmpeg-ss0:1:00-i"+""+filePath+""+"-r0.01-fimage2"+imagedir+video_md5+"-image-%5d.jpeg" images=os.popen(str_video)#调用命令行生成截图 printstr_video #生成审核完截图 defcreate_audited_image(audited_dir): #扫描视频目录生成截图 forparent,dirnames,filenamesinos.walk(audited_dir):#三个参数:分别返回1.父目录2.所有文件夹名字(不含路径)3.所有文件名字 forfilenameinfilenames:#输出文件信息 video_path=os.path.join(parent,filename)#输出文件路径信息 filePath=unicode(video_path,'utf8')#中文编码 filetime=os.path.getmtime(filePath)#获取修改时间 localtime=time.time()#获取当前系统时间 t=localtime-filetime#两者差值 #判断差值是否小于300s ift<=subtime: printt,filePath filename=unicode(filename,'utf8')#下载视频名称 #生成视频md5 str_md5='md5sum'+''+filePath+''+"|awk'{print$1}'" video_md5=os.popen(str_md5).readline(32) #拼接命令行, str_video="ffmpeg-ss0:1:00-i"+""+filePath+""+"-r0.01-fimage2"+imagedir+video_md5+"-image-%5d.jpeg" images=os.popen(str_video)#调用命令行生成截图 printstr_video #生成黑名单截图 defcreate_black_image(black_dir): #扫描视频目录生成截图 forparent,dirnames,filenamesinos.walk(black_dir):#三个参数:分别返回1.父目录2.所有文件夹名字(不含路径)3.所有文件名字 forfilenameinfilenames:#输出文件信息 video_path=os.path.join(parent,filename)#输出文件路径信息 filePath=unicode(video_path,'utf8')#中文编码 filetime=os.path.getmtime(filePath)#获取修改时间 localtime=time.time()#获取当前系统时间 t=localtime-filetime#两者差值 #判断差值是否小于300s ift<=subtime: printt,filePath filename=unicode(filename,'utf8')#下载视频名称 #生成视频md5 str_md5='md5sum'+''+filePath+''+"|awk'{print$1}'" video_md5=os.popen(str_md5).readline(32) #拼接命令行, str_video="ffmpeg-ss0:1:00-i"+""+filePath+""+"-r0.01-fimage2"+imagedir+video_md5+"-image-%5d.jpeg" images=os.popen(str_video)#调用命令行生成截图 printstr_video #生成白名单截图 defcreate_white_image(white_dir): #扫描视频目录生成截图 forparent,dirnames,filenamesinos.walk(white_dir):#三个参数:分别返回1.父目录2.所有文件夹名字(不含路径)3.所有文件名字 forfilenameinfilenames:#输出文件信息 video_path=os.path.join(parent,filename)#输出文件路径信息 filePath=unicode(video_path,'utf8')#中文编码 filetime=os.path.getmtime(filePath)#获取修改时间 localtime=time.time()#获取当前系统时间 t=localtime-filetime#两者差值 #判断差值是否小于300s ift<=subtime: printt,filePath filename=unicode(filename,'utf8')#下载视频名称 #生成视频md5 str_md5='md5sum'+''+filePath+''+"|awk'{print$1}'" video_md5=os.popen(str_md5).readline(32) #拼接命令行, str_video="ffmpeg-ss0:1:00-i"+""+filePath+""+"-r0.01-fimage2"+imagedir+video_md5+"-image-%5d.jpeg" images=os.popen(str_video)#调用命令行生成截图 printstr_video #发送图片进程 defsend_image(imagedir): #扫描图片路径 forimg_parent,img_dir_names,img_namesinos.walk(imagedir): forimg_nameinimg_names: image=os.path.join(img_parent,img_name)#拼接图片完整路径 printtime.strftime("%Y-%m-%d%X"),image #准备发送图片 file=dict(file=open(image,'rb')) post_data={'mark':'room-201','timestamp':1846123456,'random':123} headers={'app_key':app_key,'access_token':access_token} result=requests.post(url,files=file,data=post_data,headers=headers,verify=False) printresult.content #删除发送的图片 str_img="rm-f"+""+image del_img=os.popen(str_img).readline() printdel_img if__name__=="__main__": #create_auditing_image(auditing_dir) #create_audited_image(audited_dir) #create_black_image(black_dir) #create_white_image(white_dir) send_image(imagedir)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。