Python实现获取视频时长功能⽬录
前⾔
环境依赖
代码
验证⼀下
补充
前⾔
本⽂提供获取视频时长的python代码,精确到毫秒,⼀如既往的实⽤主义。
环境依赖
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 = pmunicate()
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]
学python看谁的视频比较好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 = pmunicate()
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获取视频时长内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论