Golang中如何在Minio上传视频文件?求相关教程链接

Golang中如何在Minio上传视频文件?求相关教程链接 如何在Minio中上传视频文件。任何链接都可能有所帮助。如果可能的话,最好有附带示例的链接。

4 回复

您是否尝试将视频作为对象上传到 Amazon S3(或兼容)存储桶?如果是这样,我在这里找到了一个页面,我认为它提供了您需要的 API:https://docs.min.io/docs/golang-client-api-reference.html

在该页面上,我找到了一个 PutObject” 方法,我认为它能满足您的需求,除非我误解了您要找的东西。

更多关于Golang中如何在Minio上传视频文件?求相关教程链接的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我正在尝试从另一个网站获取视频并将其下载到Minio。网站上有一个如下链接:

src="/images/videouploads/videohls/blogs/014b7d0150fb84df114af203a31f4454_org/playlist.m3u8" type=“application/x-mpegURL”

资源链接:https://turkmenportal.com/photoreport/38644/kak-pravilno-servirovat-stol

我该如何实现这一点。如果您有关于此主题的任何示例,请分享,这将对我有很大帮助。

你具体在寻找什么?我发送的链接中有一个示例,展示了如何获取一个 *minio.Client,然后是该客户端 PutObject 方法的文档,用于将文件上传到存储桶。

我四处寻找了 MinIO 服务器的 32 位版本(我的笔记本电脑是一台大约 15 年前的 32 位戴尔 Inspiron),然后从我提供的第一个链接中复制了示例。我在访问你提供的视频的下一步遇到了困难。这是一个针对不同比特率分解的视频分辨率的 m3u 播放列表。播放列表中的条目本身是特定分辨率的 4 秒视频片段的 m3u 文件,我认为其理念是,随着观看者互联网带宽的变化,视频播放器可以改变分辨率以匹配带宽(或者,我猜你也可以选择一个明确的比特率)。我找到了像 https://github.com/jamesnetherton/m3uhttps://github.com/ushis/m3u 这样的 GitHub 仓库,它们应该能让你解析 m3u 文件以访问单个视频。然后你可以使用像 ffmpeg 这样的程序(或者也许有 Go 的封装/库可以做同样的事情)来拼接视频,以便你可以使用前面提到的文档进行上传。

我认为你所要求的事情是可以完成的,但这个问题向我证明,它超出了这里任何人会提供完整工作代码(即使只是一个示例)的问题范围。我们通常只对适用于内置类型或标准库的算法这样做。

在Golang中通过Minio SDK上传视频文件,可以使用以下代码示例:

package main

import (
    "context"
    "log"
    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
)

func main() {
    // 初始化Minio客户端
    endpoint := "play.min.io"
    accessKeyID := "Q3AM3UQ867SPQQA43P2F"
    secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    useSSL := true

    minioClient, err := minio.New(endpoint, &minio.Options{
        Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
        Secure: useSSL,
    })
    if err != nil {
        log.Fatalln(err)
    }

    // 上传视频文件
    bucketName := "my-videos"
    objectName := "video.mp4"
    filePath := "/path/to/video.mp4"
    contentType := "video/mp4"

    // 检查存储桶是否存在,不存在则创建
    ctx := context.Background()
    exists, err := minioClient.BucketExists(ctx, bucketName)
    if err != nil {
        log.Fatalln(err)
    }
    if !exists {
        err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{})
        if err != nil {
            log.Fatalln(err)
        }
    }

    // 上传文件
    info, err := minioClient.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{
        ContentType: contentType,
    })
    if err != nil {
        log.Fatalln(err)
    }

    log.Printf("视频上传成功: %s (大小: %d bytes)\n", info.Key, info.Size)
}

相关教程链接:

  1. Minio Go SDK官方文档:https://docs.min.io/docs/golang-client-api-reference.html
  2. Minio Go SDK GitHub仓库:https://github.com/minio/minio-go
  3. 官方上传示例:https://github.com/minio/minio-go/blob/master/examples/s3/putobject.go

需要先安装Minio Go SDK:

go get github.com/minio/minio-go/v7

代码中使用了FPutObject方法上传本地视频文件,支持大文件分片上传。如果需要上传内存中的视频数据,可以使用PutObject方法。

回到顶部