python 调用ffmpeg获取影片信息_python调用系统ffmpeg实现视频截图、http发送

本文介绍如何使用Python调用ffmpeg工具对指定目录的视频进行截图,并将生成的图片通过HTTP发送到后台进行算法识别。脚本会每5分钟检查一次新的视频,生成截图并删除。
摘要由CSDN通过智能技术生成

python 调用系统ffmpeg进行视频截图,并进行图片http发送ffmpeg ,视频、图片的各种处理。

最近在做视频、图片的版权等深度学习识别,用到了ffmpeg部分功能,功能如下:

调用ffmpeg 对不同目录视频进行截图,通过http发送到后台进行算法识别。

每5分钟扫描最近的视频,生成图片,发送完毕图片删除。

代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""'定时任务每五分钟发送上一个5分钟视频

目标视频:10.1.1.25 /usr/local/checkVideo audited、auditing、black、white

find

"""

import linecache

import os

import os.path

import requests

import time

import datetime

import sys

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

#生成审核中截图

def create_auditing_image(auditing_dir):

#扫描视频目录生成截图

for parent,dirnames,filenames in os.walk(auditing_dir): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字

for filename in filenames: # 输出文件信息

video_path = os.path.join(parent,filename) # 输出文件路径信息

filePath = unicode(video_path,'utf8') #中文编码

filetime= os.path.getmtime(filePath) #获取修改时间

localtime=time.time() #获取当前系统时间

t=localtime-filetime #两者差值

#判断差值是否小于300s

if t<=subtime:

print t,filePath

filename=unicode(filename,'utf8') #下载视频名称

#生成视频md5

str_md5= 'md5sum'+' ' + filePath +' '+ "| awk '{print $1}'"

video_md5 = os.popen(str_md5).readline(32)

print filePath,video_md5

#拼接截图命令行,

str_video= "ffmpeg -ss 0:1:00 -i "+" " +filePath + " "+"-r 0.01 -f image2 "+imagedir+video_md5+"-image-%5d.jpeg"

images = os.popen(str_video) # 调用命令行生成截图

print str_video

#生成审核完截图

def create_audited_image(audited_dir):

#扫描视频目录生成截图

for parent,filenames in os.walk(audited_dir): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字

for filename in filenames: # 输出文件信息

video_path = os.path.join(parent,'utf8') #下载视频名称

#生成视频md5

str_md5= 'md5sum'+' ' + filePath +' '+ "| awk '{print $1}'"

video_md5 = os.popen(str_md5).readline(32)

#拼接命令行,

str_video= "ffmpeg -ss 0:1:00 -i "+" " +filePath + " "+"-r 0.01 -f image2 "+imagedir+video_md5+"-image-%5d.jpeg"

images = os.popen(str_video) # 调用命令行生成截图

print str_video

#生成黑名单截图

def create_black_image(black_dir):

#扫描视频目录生成截图

for parent,filenames in os.walk(black_dir): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字

for filename in filenames: # 输出文件信息

video_path = os.path.join(parent,'utf8') #下载视频名称

#生成视频md5

str_md5= 'md5sum'+' ' + filePath +' '+ "| awk '{print $1}'"

video_md5 = os.popen(str_md5).readline(32)

#拼接命令行,

str_video= "ffmpeg -ss 0:1:00 -i "+" " +filePath + " "+"-r 0.01 -f image2 "+imagedir+video_md5+"-image-%5d.jpeg"

images = os.popen(str_video) # 调用命令行生成截图

print str_video

#生成白名单截图

def create_white_image(white_dir):

#扫描视频目录生成截图

for parent,filenames in os.walk(white_dir): # 三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字

for filename in filenames: # 输出文件信息

video_path = os.path.join(parent,'utf8') #下载视频名称

#生成视频md5

str_md5= 'md5sum'+' ' + filePath +' '+ "| awk '{print $1}'"

video_md5 = os.popen(str_md5).readline(32)

#拼接命令行,

str_video= "ffmpeg -ss 0:1:00 -i "+" " +filePath + " "+"-r 0.01 -f image2 "+imagedir+video_md5+"-image-%5d.jpeg"

images = os.popen(str_video) # 调用命令行生成截图

print str_video

#发送图片进程

def send_image(imagedir):

#扫描图片路径

for img_parent,img_dir_names,img_names in os.walk(imagedir):

for img_name in img_names:

image = os.path.join(img_parent,img_name) #拼接图片完整路径

print time.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)

print result.content

#删除发送的图片

str_img = "rm -f " + " " + image

del_img = os.popen(str_img).readline()

print del_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)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值