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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。