基于 FFMPEG的Python 获取视频时长(附代码)

一、前言

项目需要,通过视频的url(在线视频url),查出视频的时长

本文提供获取视频时长的python代码

二、环境依赖

首先安装FFMPEG

1、安装包

https://download.csdn.net/download/asd051377305/87126378

2、解压

 3、将文件路径配置到系统设置Path里面

控制面板 -> 点击系统 -> 点击高级系统设置 -> 点击环境变量

 4、cmd测试下是否成功(如果不成功,重启下电脑试试)

输入ffmpeg -i命令验证一下是否部署成功

 

三、python代码

#!/user/bin/env python
# coding=utf-8

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':
        return
    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()
    # 有错误,打印错误原因,返回
    if len(str(err, 'gbk')) > 0:
        print("subprocess 执行结果:out:{} err:{}".format(out, str(err, 'gbk')))
        return
    # 视频时长为0,也返回
    if len(str(out, 'gbk')) == 0:
        # print("视频有问题:id:{}".format(id))
        return
    second = int(float(out))
    print("video time: {}s".format(second))


if __name__ == '__main__':
    get_video_duration('https://vd3.bdstatic.com/mda-jfcaqm720x5r55db/mda-jfcaqm720x5r55db.mp4')
输出结果如下:

video time: 168s

### 回答1: 可以使用 Python 的 OpenCV 库来获取视频时长。具体的代码如下:import cv2video_capture = cv2.VideoCapture('myvideo.mp4')# 获取时长 length = int(video_capture.get(cv2.CAP_PROP_FRAME_COUNT))/int(video_capture.get(cv2.CAP_PROP_FPS))print(length) ### 回答2: 获取视频时长代码可以通过使用FFprobe这样的工具来实现。FFprobe是FFmpeg多媒体处理工具的一部分,它可以从视频文件中提取视频和音频的元数据信息,包括视频时长。 以下是一个获取视频时长的示例代码: ```python import subprocess def get_video_duration(file_path): try: command = ['ffprobe', '-v', 'error', '-show_entries', 'format=duration', '-of', 'default=noprint_wrappers=1:nokey=1', file_path] output = subprocess.check_output(command, stderr=subprocess.STDOUT).decode('utf-8') duration = float(output) return duration except subprocess.CalledProcessError as e: print(f"Error: {e.output}") return None # 测试代码 video_file = 'path/to/video.mp4' duration = get_video_duration(video_file) if duration is not None: print(f"视频时长为: {duration} 秒") ``` 在代码中,我们使用`subprocess`模块执行`ffprobe`命令,并指定需要的输出格式以及要提取的元数据信息。命令执行成功后,我们将输出的时长转换为浮点数并返回。 你需要将`file_path`参数替换为你要获取时长视频文件的路径。如果成功获取时长,它将以秒为单位打印出来。 请注意,为了运行这个代码,你需要事先安装FFmpegPython的`subprocess`模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Venlenter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值