python调用系统ffmpeg实现视频截图、http发送

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, 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) 

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

您可能感兴趣的文章:

  • Python应用03 使用PyQT制作视频播放器实例
  • Python实现视频下载功能
  • Python实现Youku视频批量下载功能
  • Python OpenCV获取视频的方法
  • python爬取m3u8连接的视频
  • python+ffmpeg视频并发直播压力测试
(0)

相关推荐

  • python+ffmpeg视频并发直播压力测试

    通过python与ffmpeg结合使用,可生成进行视频点播.直播的压力测试脚本.可支持不同类型的视频流,比如rtmp或者hls形式. 通过如下方式执行脚本:python multiRealPlay.py [rtmp|http] [thread counts] [interval Time] [rtmp | http]:视频播放的不同形式 [thread counts]:并发线程数 [interval Time]:启动每个线程的间隔时间 代码: #!/usr/bin/python # -*- co

  • Python OpenCV获取视频的方法

    之前有文章,使用Android平台的OpenCV接入了视频,控制的目标是手机的摄像头,这是OpenCV的好处,使用OpenCV可以使用跨平台的接口实现相同的功能,减少了平台间移植的困难.正如本文后面,将使用类似的接口,从笔记本的摄像头获取视频,所以,尝试本文代码需要有一台有摄像头的电脑. 不过,需要说明的的是,OpenCV的强项在于图像相关的处理,而不是视频的编解码,所以,不要使用OpenCV做多余的事情,我们使用OpenCV接入视频或者图片的目的,是为了对视频或图片进行处理. 关于Python

  • Python应用03 使用PyQT制作视频播放器实例

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放器,并借此来说明PyQT的基本用法.  视频播放器 先把已经完成的代码放出来.代码基于Python 3.5: import time import sys from PyQt4 import QtGui, QtCore from PyQt4.phonon import Phonon class Po

  • Python实现视频下载功能

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站上,增加自己的人气,岂不美哉? parker就是这样一个项目(项目地址:https://github.com/LiuRoy/parker),它采用celery框架定时爬取用户视频列表,将最新发布的视频通过you-get异步下载,可以很方便地实现分布式部署.因为各个网站的页面布局和接口更新比较频繁,为

  • python爬取m3u8连接的视频

    本文为大家分享了python爬取m3u8连接的视频方法,供大家参考,具体内容如下 要求:输入m3u8所在url,且ts视频与其在同一路径下 #!/usr/bin/env/python #_*_coding:utf-8_*_ #Data:17-10-08 #Auther:苏莫 #Link:http://blog.csdn.net/lingluofengzang #PythonVersion:python2.7 #filename:download_movie.py import os import

  • Python实现Youku视频批量下载功能

    前段时间由于收集视频数据的需要,自己捣鼓了一个YouKu视频批量下载的程序.东西虽然简单,但还挺实用的,拿出来分享给大家. 版本:Python2.7+BeautifulSoup3.2.1 import urllib,urllib2,sys,os from BeautifulSoup import BeautifulSoup import itertools,re url_i =1 pic_num = 1 #自己定义的引号格式转换函数 def _en_to_cn(str): obj = itert

  • python调用系统ffmpeg实现视频截图、http发送

    python 调用系统ffmpeg进行视频截图,并进行图片http发送ffmpeg ,视频.图片的各种处理. 最近在做视频.图片的版权等深度学习识别,用到了ffmpeg部分功能,功能如下:  调用ffmpeg 对不同目录视频进行截图,通过http发送到后台进行算法识别.  每5分钟扫描最近的视频,生成图片,发送完毕图片删除. 代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- """'定时任务每五分钟发送上一个5分钟视频 目

  • PHP调用ffmpeg对视频截图并拼接脚本

    PHP脚本调用ffmpeg对视频截图并拼接,供大家参考,具体内容如下 目前支持MKV,MPG,MP4等常见格式的视频,其他格式有待测试 12P 一张截图平均生成时间  1.64s     100个视频,大概需要2分半左右 9P  一张截图平均生成时间  1.13s      100个视频,大概需要2分钟左右 6P  一张截图平均生成时间  0.86s      100个视频,大概需要1分半左右 3P  一张截图平均生成时间  0.54s      100个视频,大概需要1分钟左右 <?php d

  • Python 如何利用ffmpeg 处理视频素材

    目录 前言 一.安装 二.subprocess调用 三.ffmpy3 转码 解复用 复用 拆分成图片 四.最后 前言 第一次处理视频素材可以手动用剪映来处理,然后再用代码进行自动化处理,不然连朝哪个方向自动化处理可能都不知道 那清楚处理流程之后,怎么用Python来处理视频素材呢? ffmpeg! ffmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序 使用这个神器,便可以处理各种视频素材内容,极度舒适 下面一行来分享一下如何使用这个神器 一.安装 首先需要在ffm

  • Python调用系统底层API播放wav文件的方法

    本文实例讲述了Python调用系统底层API播放wav文件的方法.分享给大家供大家参考,具体如下: 这里未使用其他库,只是使用 pywin32 调用系统底层 API 播放 wav 文件. 具体代码如下: # Our raison d'etre - playing sounds import pywintypes import struct import win32event import win32com.directsound.directsound as ds import os WAV_H

  • python调用系统中应用程序

    目录 os.system() 在shell中执行一条命令.函数原型如下: 它是最简单的调用系统应用的方式,下面是一个例子: import osimport sysos.system("dir")os.system("git") 结果如下(在VS Code中的打印结果,后面略了一部分打印信息): D:\Codes\python_everything>cd d:\Codes\python_everything && cmd /C "set

  • python使用socket高效传输视频数据帧(连续发送图片)

    目录 遇到的问题 代码问题记录(需要代码的可以直接文末) 代码 客户端clien.py 服务端server.py 遇到的问题 网上找了一些代码,都是只能建立一次socket传输一张图片,然后断开重新连重新传.而建立一次socket代价不小,反复建立会非常消耗系统资源,因此尝试自己通过一次socket连续传输多张图片 代码问题记录(需要代码的可以直接文末) 在做的过程中发现了一些问题: socket在传一张图片时是以二进制流的形式传输,图片的二进制流比较大,一般一次传不完,要传很多次.那么接受者是

  • Python调用腾讯云短信服务发送手机短信

    目录 1.准备工作 2.代码实现 3.拓展 4.闲聊 1.准备工作 pip install qcloudsms_py 1.注册腾讯云账号 2.在产品列表内找到短信,在短信内添加应用 3.获取对应的SDK AppID 和 App Key 4.配置短信内容 注:需先申请“短信签名”和“短信正文”,按照要求填写申请即可,腾讯云的审核效率还是很快的,一般在1-2个小时内就会有结果 注:腾讯云的短信服务现在好像也不免费了,之前每个月还会赠送100条免费短信额度.总结:准备工作准备内容:SDK AppID.

  • 举例讲解Linux系统下Python调用系统Shell的方法

    时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族 Python的exec系统方法同Unix的exec系统调用是一致的.这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回.( 这个看了点 help(os)  --> search "exec" 的相关介绍,但是没太

  • Python调用ffmpeg开源视频处理库,批量处理视频

    代码示例 # coding=utf-8 import os import subprocess import datetime import json, pprint import re, time import threading import random import shutil class FFmpeg: def __init__(self, editvdo, addlogo=None, addmusic=None, addvdohead=None, addvdotail=None):

  • python调用ffmpeg命令行工具便捷操作视频示例实现过程

    目录 最重要的事 裁剪视频 计算分段 获取视频长度 分段 获取文件 代码集成 总结 参考资料 文 | 李晓飞 来源:Python 技术「ID: pythonall」 最近有了一个新任务,需要将赛事视频,拆分成两分钟以内的小段,用于发布到短视频平台上. 本以为是个一次性的工作,结果赛事视频数据巨大,视频文件长短不一,完全没法手工处理,于是 Python 又一次拯救了我. 还等什么,开始干吧! 最重要的事 无论做什么事情,都要去分析一下最重要的是什么,然后集中精力攻克,再继续找最重要的事. 对我们这

随机推荐