使用 golang 获取远程地址视频的时间

package toolkit

import (
    "context"
    "gopkg.in/vansante/go-ffprobe.v2"
    "time"
)

func GetMediaDurationByUrl(url string) float64 {
    ctx, cancelFn := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancelFn()

    data, err := ffprobe.ProbeURL(ctx, url)
    if err != nil {
        tk.Error.Println("ErrorX GetMediaDurationByUrl: %v", err.Error())
        return 0
    }

    if data == nil {
        return 0
    }

    return data.Format.Duration().Seconds()
}

先贴脚本,给想直接拷贝的同学。

目前来看我找了很多 golang 的库以及系统的库,Youtube-DL 有参数可以获取时间但是似乎必须得下载到本地。于是找了一下底层依赖的 ffmpeg 有一个 toolkit ffprobe可以做到这个事情。

如果是直接使用 cmd 的话可以参考使用这个命令

ffprobe -i `url` -show_entries format=duration -v quiet -of csv="p=0"

可以直接获取到视频的时间。

原文地址:https://www.cnblogs.com/piperck/p/14974043.html