Python实现获取视频时长功能
作者:剑客阿良_ALiang 发布时间:2021-11-25 03:33:57
标签:Python,视频,时长
前言
本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义。
环境依赖
ffmpeg环境安装,可以参考:windows ffmpeg安装部署
本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中。
代码
不废话,上代码。
#!/user/bin/env python
# coding=utf-8
"""
@project : csdn
@author : 剑客阿良_ALiang
@file : get_video_duration.py
@ide : PyCharm
@time : 2021-12-23 13:52:33
"""
import os
import subprocess
def get_video_duration(video_path: str):
ext = os.path.splitext(video_path)[-1]
if ext != '.mp4' and ext != '.avi' and ext != '.flv':
raise Exception('format not support')
ffprobe_cmd = 'ffprobe -i {} -show_entries format=duration -v quiet -of csv="p=0"'
p = subprocess.Popen(
ffprobe_cmd.format(video_path),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
out, err = p.communicate()
print("subprocess 执行结果:out:{} err:{}".format(out, err))
duration_info = float(str(out, 'utf-8').strip())
return int(duration_info * 1000)
if __name__ == '__main__':
print('视频的duration为:{}ms'.format(get_video_duration('D:/tmp/100.mp4')))
代码说明:
1、对视频的后缀格式做了简单的校验,如果需要调整可以自己调整一下。
2、对输出的结果做了处理,输出int类型的数据,方便使用。
验证一下
准备的视频如下:
验证一下
补充
Python实现获取视频fps
#!/user/bin/env python
# coding=utf-8
"""
@project : csdn
@author : 剑客阿良_ALiang
@file : get_video_fps.py
@ide : PyCharm
@time : 2021-12-23 11:21:07
"""
import os
import subprocess
def get_video_fps(video_path: str):
ext = os.path.splitext(video_path)[-1]
if ext != '.mp4' and ext != '.avi' and ext != '.flv':
raise Exception('format not support')
ffprobe_cmd = 'ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate {}'
p = subprocess.Popen(
ffprobe_cmd.format(video_path),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
out, err = p.communicate()
print("subprocess 执行结果:out:{} err:{}".format(out, err))
fps_info = str(out, 'utf-8').strip()
if fps_info:
if fps_info.find("/") > 0:
video_fps_str = fps_info.split('/', 1)
fps_result = int(int(video_fps_str[0]) / int(video_fps_str[1]))
else:
fps_result = int(fps_info)
else:
raise Exception('get fps error')
return fps_result
if __name__ == '__main__':
print('视频的fps为:{}'.format(get_video_fps('D:/tmp/100.mp4')))
代码说明:
1、首先对视频格式做了简单的判断,这部分可以按照需求自行调整。
2、通过subprocess进行命令调用,获取命令返回的结果。注意范围的结果为字节串,需要调整格式处理。
验证一下
下面是准备的素材视频,fps为25,看一下执行的结果。
执行结果
到此这篇关于Python实现获取视频时长功能的文章就介绍到这了,更多相关Python获取视频时长内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://blog.csdn.net/zhiweihongyan1/article/details/122107663


猜你喜欢
- 本文实例讲述了mysql中left join设置条件在on与where时的用法区别。分享给大家供大家参考,具体如下:一、首先我们准备两张表来
- 通过python与ffmpeg结合使用,可生成进行视频点播、直播的压力测试脚本。可支持不同类型的视频流,比如rtmp或者hls形式。 通过如
- 在给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了
- MySQL Group By用法我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是
- 版本:MySQL-5.7.32前言:对于业务繁忙的数据库来说,在运行了一定时间后,往往会产生一些数据量较大的表,特别是对于每天新增数据较多的
- 这是 小马 在交流会中的分享,可能有些朋友还不曾了解,同时也为了自己温故而知新,就整理下。多种方式可以想像得到,有很多方法立即执行匿名函数,
- 原因:使用git clone项目后,项目根路径是小写英文名称,比如cmdbapi,但是项目里面的import导入自己的相关包时,红色报错解决
- 观察者模式首先,提到观察者模式,这不禁让我想到了MVVM,MVVM架构模式感觉用到了观察者的思想。我们还是按照惯例,了解一下什么是观察者模式
- 做服务器端开发的同学应该都对进程监控不会陌生,最近恰好要更换 uwsgi 为 gunicorn,而gunicorn又恰好有这么一章讲进程监控
- 图像轮廓Contours:轮廓轮廓是将没有连着一起的边缘连着一起。边缘检测检测出边缘,边缘有些未连接在一起。注意问题1.对象为二值图像,首先
- 1 介绍SQL注入漏洞主要是由于,在请求的时候没有做严格的过滤,导致传入的语句被当做SQL语句被执行,从而导致数据库受损(被脱库、删除、甚至
- 1. 简介在 Go 语言中,new 和 make 是用于创建对象的两个内建函数,它们的使用方式和作用有所不同。正确理解 new 和 make
- 前言:[学习SQL SERVER 2005系列]准备把学习2005的一些心得整理出来,和大家分享,共同学习一起提高。sql2005 精简版下
- 看下这个 URLconf:from django.conf.urls.defaults import *from mysite.views
- Python实现完整邮件先上效果:一、邮箱端设置首先,要对邮件进行一下设置,在邮箱端获取一个授权码。1、首先登录网页版126邮箱
- 目录单例模式反射hasattergetattrsetattr总结单例模式一般情况下,类可以生成任意个实例,而单例模式只生成一个实例我们先用单
- 写过一篇"正则表达式30分钟入门教程",有读者问:[^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串ab
- 假设通过爬虫获得了一个自媒体.txt想要从这些关键词中提取流量最大的关键词可以通过如下算法实现:from smoothnlp.algorit
- 场景:按下按钮,将左边的下拉选框内容发送给后端,后端再将返回的结果传给前端显示。按下按钮之前:按下按钮之后:代码结构这是flask默认的框架
- SQL Server数据库的六个实用技巧:(一)挂起操作在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用