您的位置:首页 > 理论基础 > 计算机网络

python 调用系统ffmpeg进行视频截图,并进行图片http发送

2018-01-16 11:35 579 查看
python 调用系统ffmpeg进行视频截图,并进行图片http发送ffmpeg 是个好东西。视频、图片的各种处理。  

<pre name="code" class="python">最近在做视频、图片的 色情、版权、暴*恐的深度学习识别,用到了ffmpeg部分功能,功能如下:  

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

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

</pre>代码如下:<br>  

<br>  

<br>  

<pre name="code" class="python">#!/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, dirnames, filenames in os.walk(audited_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)  

                #拼接命令行,  

                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, dirnames, filenames in os.walk(black_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)  

                #拼接命令行,  

                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, dirnames, filenames in os.walk(white_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)  

                #拼接命令行,  

                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)  

</pre><br>  

<pre></pre>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: