springboot 整合minio client 简单使用 视频流展示demo

不好意思 本人没有强迫症 代码随便造 知识来源于百度,感谢百度合作伙伴以及各位网友demo的帮助
源码:https://gitee.com/yangqinglinzp/test/tree/master/minio-test

minio 中文手册 https://gitee.com/yangqinglinzp/test/tree/master/minio-test

英文网 : https://docs.min.io/

linux 安装就三句 比较简单

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

这里的/data 是指所有的文件放在/data 下面 /data作为所有文件的根目录 data这个文件夹需要自己去mkdir ,请建好
``

minio 有使用到桶的概念 可以理解为一个文件夹

关于启动 我用的是下面这个后台启动
nohup ./minio server /usr/software/minio/data> …/log/minio.log 2>&1 &


默认端口是9000 http://ip:9000 我的是在linux上启动的
http://192.168.3.89:9000 用户名和密码都是默认: minioadmin
进入buckets 里面我建立了一个文件夹test 上传一些文件比如视频和图片

环境算是搭建好了 现在看一下官网的文档开始撸代码

官网有案例: https://docs.min.io/docs/java-client-api-reference.html

目前的代码是2021-12-23日的具体代码写法看自己的版本使用。

配置文件pom依赖:在这里插入代码片

    <!--minio服务--    这个版本的okhttp3有点问题需要去掉重新引入---><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.3</version><exclusions><exclusion><artifactId>okhttp</artifactId><groupId>com.squareup.okhttp3</groupId></exclusion></exclusions></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies>

yml配置

# 密码和用户名都是默认  没改   官网还有严格的加密  需要的去看官网
minio:endpoint: http://192.168.3.89:9000accessKey: minioadminsecretKey: minioadminserver:port: 9005spring:# 配置文件上传大小限制servlet:multipart:max-file-size: 100MBmax-request-size: 100MB

简单的minio 的配置类


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** description: minio配置类** @author: weirx* @time: 2021/8/25 9:47*/@Component
@ConfigurationProperties(prefix = "minio")
public class MinioPropertiesConfig {/*** 端点*/private String endpoint;/*** 用户名*/private String accessKey;/*** 密码*/private String secretKey;/*** 桶名称*/private String bucketName;public String getEndpoint() {return endpoint;}public void setEndpoint(String endpoint) {this.endpoint = endpoint;}public String getAccessKey() {return accessKey;}public void setAccessKey(String accessKey) {this.accessKey = accessKey;}public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}public String getBucketName() {return bucketName;}public void setBucketName(String bucketName) {this.bucketName = bucketName;}}

minio 做成bean

import io.minio.MinioClient;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.annotation.Resource;/*** description: 获取配置文件信息** @author: weirx* @time: 2021/8/25 9:50*/
@Configuration
@EnableConfigurationProperties(MinioPropertiesConfig.class)
public class MinioConfig {@Resourceprivate MinioPropertiesConfig minioPropertiesConfig;/*** 初始化 MinIO 客户端*/@Beanpublic MinioClient minioClient() {MinioClient minioClient = MinioClient.builder().endpoint(minioPropertiesConfig.getEndpoint()).credentials(minioPropertiesConfig.getAccessKey(), minioPropertiesConfig.getSecretKey()).build();return minioClient;}
}
package com.qq.minio.controller;import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.Bucket;
import io.minio.messages.Item;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Iterator;
import java.util.List;@RestController
public class TestMinioController {@Autowiredprivate MinioClient minioClient;@RequestMapping("/upload")public String test(@RequestParam String  name) {try {boolean found =minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());if (!found) {// Make a new bucket called 'asiatrip'.minioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build());} else {System.out.println("Bucket 'test' already exists.");}minioClient.uploadObject(UploadObjectArgs.builder().bucket("test").object(name).filename("E:/video/"+name).build());} catch (Exception e) {System.out.println("Error occurred: " + e);}return "success";}//返回桶列表@RequestMapping("/test2")public String  test2(){try {// 列出所有存储桶List<Bucket> bucketList = null;try {bucketList = minioClient.listBuckets();} catch (InvalidKeyException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}for (Bucket bucket : bucketList) {System.out.println(bucket.creationDate() + ", " + bucket.name());}} catch (MinioException e) {System.out.println("Error occurred: " + e);}return "success";}@RequestMapping("/show")public void download(HttpServletResponse  response, @RequestParam String voideName){System.out.println(voideName);try {// 调用statObject()来判断对象是否存在。// 如果不存在, statObject()抛出异常,// 否则则代表对象存在。StatObjectResponse statObjectResponse = minioClient.statObject(StatObjectArgs.builder().bucket("test").object("orange.mp4").build());// 获取"myobject"的输入流。// get object given the bucket and object nameInputStream stream = minioClient.getObject(GetObjectArgs.builder().bucket("test").object(voideName).build());//流转换IOUtils.copy(stream,response.getOutputStream());//设置返回类型response.addHeader("Content-Type", "audio/mpeg;charset=utf-8");//这里注释掉  要不然会报错
//            response.flushBuffer();//            // 关闭流,此处为示例,流关闭最好放在finally块。stream.close();} catch (Exception e) {System.out.println("Error occurred: " + e);}finally {}
//
//        return "success";}@RequestMapping("/remove")public void remove(@RequestParam String bucketName, @RequestParam String filedName){try {List<Bucket> buckets = minioClient.listBuckets();for (Bucket bucket : buckets) {if (bucket.name().equals("test")){continue;}minioClient.removeBucket( RemoveBucketArgs.builder().bucket(bucket.name()).build());System.out.println("delete the bucket:"+bucket.name()+" is success!! ");}} catch (ErrorResponseException e) {e.printStackTrace();} catch (InsufficientDataException e) {e.printStackTrace();} catch (InternalException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (InvalidResponseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (ServerException e) {e.printStackTrace();} catch (XmlParserException e) {e.printStackTrace();}}}

上述代码是一个小栗子,主要是测测服务器转为视频流播放到前端以及上下传文件。

这里贴一下前端的html 直接是html访问 比较简单 直接打开即可

<!DOCTYPE HTML>
<html>
<body><video width="1120" height="540" controls="controls" id="video" preload="auto"     ><source src="http://localhost:9005/show?voideName=orange.mp4"   type="video/mp4">
</video></body>
</html>

minio服务器上要有这些视频 通过服务器走minio客户端直接读视频流返回给html

这里已经完成视频从Linux服务器下载到后台服务器(具体看方法,上传速度还是很不错的),html去读服务器上的视频流。

minio的视频位置图片

springboot 整合minio client 简单使用 视频流展示demo相关推荐

  1. MinIO入门-02 SpringBoot 整合MinIO并实现文件上传

    SpringBoot 整合MinIO并实现文件上传 1.依赖 <!-- https://mvnrepository.com/artifact/io.minio/minio --> < ...

  2. springboot整合minio上传文件

    1.安装minio 这里采用docker进行安装. 搜索该镜像:docker search minio 找到了镜像:minio/minio 拉取镜像:docker pull minio/minio 启 ...

  3. springboot整合mybatis实现简单的单表增删改查(完整代码可下载)

    搭建项目 项目简单效果,前端效果丑的一批,主要是后端功能实现: springboot增删改查 csdn完整代码下载链接: springboot+mybatis Gitee下载地址: Gitee下载地址 ...

  4. springboot整合minio最新版

    第一步:查找minio最新依赖,通过maven查询网站查询,这搜索框输入minio, 也可以查看MinIO官网https://docs.min.io/docs/java-client-quicksta ...

  5. SpringBoot整合Minio,一篇带你入门使用Minio

    本文介绍SpringBoot如何整合Minio,解决文件存储问题 文章目录 前言 环境搭建 项目环境搭建 添加依赖库 yml配置 Docker安装minio 代码实现 MiniConfig servi ...

  6. SpringBoot整合redis实现简单的操作demo

    SpringBoot中整合Redis 将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度,今天先来讲下在springboot中整合redis的详细步骤. 1.安装步骤 安装步 ...

  7. springboot整合vosk实现简单的语音识别功能

    vosk开源语音识别 Vosk是开源的语音识别工具包.Vosk支持的事情包括: 支持十九种语言 - 中文,英语,印度英语,德语,法语,西班牙语,葡萄牙语,俄语,土耳其语,越南语,意大利语,荷兰人,加泰 ...

  8. springboot整合minio,实现文件上传与下载,且支持链接永久访问

    1.minio部署 1.1 拉取镜像 docker pull minio/minio 1.2 创建数据目录 mkdir -p /home/guanz/minio mkdir -p /home/guan ...

  9. springboot整合minio搭建对象储存及短链服务

    搭建属于自己的对象储存服务及短链服务(Minio) 文档地址 minio官方文档: https://docs.min.io/?ref=ob minio 中文文档地址: http://docs.mini ...

最新文章

  1. mysql 游标 ,嵌套游标
  2. Java设计模式(五):单例设计模式
  3. Scala _07trait特性
  4. Spork: Pig on Spark实现分析
  5. malloc、calloc、realloc和alloca各种的区别
  6. java线程自带队列的使用以及线程阻塞
  7. 易校网校园综合跑腿小程序源码修复运营版
  8. Container ViewController自定义转场控制器。
  9. Maven 项目中配置私服
  10. java用循环图形显示_请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?...
  11. 如何把手机变成你的救生设备
  12. java实现浏览器ui中的收藏夹_Java实现简单的图片浏览器
  13. Spring 事务模型
  14. QCC3003x BLE 设置私有地址
  15. oracle 自定义分词器,自定义分词器和自定义词典
  16. php 银行卡四要素验证,基于PHP的银行卡号实名认证(四要素)示例代码-六派数据...
  17. 谷歌浏览器html插件字体大小,字体换加插件,自定义Chrome网页字体,更改字体样式,调整字体大小...
  18. 候选键的计算(数据库系统概论)
  19. android系统可以识别NTFS格式吗,安卓手机支持ntfs格式的储存卡吗
  20. 32位计算机多少位寻址,32位的cpu的寻址能力到底是多少?

热门文章

  1. 【ES6】阮一峰ES6学习之Class(一)
  2. plc程序 linux,plc编程开发流程
  3. Hololens模拟器的安装配置
  4. 妹子始终没搞懂OAuth2.0,今天整合Spring Cloud Security 一次说明白!
  5. software-plug-ins
  6. 活动安排(贪心算法)C/C++
  7. CXF框架的使用,利用cxf开发webservice(六)
  8. OpenStack网络 - 使用vlan模式来剖析openstack网络相关概念及原理
  9. 基于FPGA的4x4矩阵键盘控制器verilog开发实现
  10. 公文专用计算机,[计算机]常用公文写作方法