阿里云oss简单获取视频第一帧工具类

java 复制代码
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.PutObjectRequest;

import java.io.File;
import java.io.InputStream;
import java.util.List;

/**
 * @ClassName: OssJavaSdkQuickStart
 * @Description:
 * @Author: 张小辉
 * @Date: 2025-01-16
 * @Version: 1.0
 **/
public class OSSUtil {
    // 阿里云 OSS 配置信息
    private static final String ENDPOINT = "https://oss-cn-wulanchabu.aliyuncs.com"; //  OSS 区域地址
    private static final String ACCESS_KEY_ID = "LTAI5tGBHLz1bdqs8ZFbrPYf";  //  AccessKey ID
    private static final String ACCESS_KEY_SECRET = "Ukqv5d4XvOyHyX5QBEznLdsSwMSHhv"; //  AccessKey Secret
    private static final String BUCKET_NAME = "grouptrain"; //  Bucket 名称

    private static OSS ossClient;

    // 初始化 OSS 客户端
    private static OSS getOSSClient() {
        if (ossClient == null) {
            ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        }
        return ossClient;
    }

    // 关闭 OSS 客户端
    public static void shutdown() {
        if (ossClient != null) {
            ossClient.shutdown();
        }
    }

    // 上传文件
    public static void uploadFile(String objectName, File file) {
        try {
            OSS ossClient = getOSSClient();
            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, file);
            ossClient.putObject(putObjectRequest);
            System.out.println("文件上传成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 上传文件流
    public static void uploadFile(String objectName, InputStream inputStream) {
        try {
            OSS ossClient = getOSSClient();
            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKET_NAME, objectName, inputStream);
            ossClient.putObject(putObjectRequest);
            System.out.println("文件上传成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 下载文件
    public static void downloadFile(String objectName, String downloadFilePath) {
        try {
            OSS ossClient = getOSSClient();
            ossClient.getObject(new GetObjectRequest(BUCKET_NAME, objectName), new File(downloadFilePath));
            System.out.println("文件下载成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 删除文件
    public static void deleteFile(String objectName) {
        try {
            OSS ossClient = getOSSClient();
            ossClient.deleteObject(BUCKET_NAME, objectName);
            System.out.println("文件删除成功!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 列出文件
    public static void listFiles() {
        try {
            OSS ossClient = getOSSClient();
            ObjectListing objectListing = ossClient.listObjects(BUCKET_NAME);
            List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();
            for (OSSObjectSummary summary : objectSummaries) {
                System.out.println("Object: " + summary.getKey() + ", Size: " + summary.getSize());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取视频第一帧截图 URL
     * @param videoObjectKey:视频文件的 Object Key-视频路径
     */
    public static void getVideoSnapshotUrl(String videoObjectKey) {
        // 创建 OSS 客户端实例
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);

        try {
            // 构造视频截图 URL
            String snapshotUrl = String.format(
                    "https://%s.%s/%s?x-oss-process=video/snapshot,t_0,f_jpg",
                    BUCKET_NAME, ENDPOINT.replace("https://", ""), videoObjectKey
            );

            System.out.println("视频第一帧截图 URL:" + snapshotUrl);
            // 可以将 snapshotUrl 直接用于下载或前端显示
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭 OSS 客户端
            ossClient.shutdown();
        }
    }


    public static void main(String[] args) {
        // 示例:上传文件
//        File file = new File("/Users/engine/Desktop/WechatIMG1210.jpg");
//        uploadFile("WechatIMG1210.jpg", file);
//
         示例:下载文件
//        downloadFile("DATA.json", "/Users/engine/Downloads/DATA.json");
//
//        // 示例:删除文件
//        deleteFile("WechatIMG1210.jpg");
//
//        // 示例:列出文件
//        listFiles();
//
        // 示例:获取视频第一帧截图 URL
        getVideoSnapshotUrl("21.mp4");

        // 关闭客户端
        shutdown();
    }
}
相关推荐
菜包eo1 小时前
二维码驱动的独立站视频集成方案
网络·python·音视频
csdn_aspnet2 小时前
在 Windows 机器上安装和配置 RabbitMQ
windows·rabbitmq
csdn_aspnet2 小时前
Windows Server 上的 RabbitMQ 安装和配置
windows·rabbitmq
阿蒙Amon3 小时前
【Python小工具】使用 OpenCV 获取视频时长的详细指南
python·opencv·音视频
aqi005 小时前
FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频
android·ffmpeg·音视频·流媒体
热爱生活的猴子7 小时前
Poetry 在 Linux 和 Windows 系统中的安装步骤
linux·运维·windows
正在走向自律7 小时前
第二章-AIGC入门-开启AIGC音频探索之旅:从入门到实践(6/36)
人工智能·aigc·音视频·语音识别·ai音乐·ai 音频·智能语音助手
R-sz9 小时前
java流式计算 获取全量树形数据,非懒加载树,递归找儿
java·开发语言·windows
云资源服务商13 小时前
解锁阿里云日志服务SLS:云时代的日志管理利器
服务器·阿里云·云计算
美狐美颜sdk15 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk