视频流回显

1、前端代码:

<template>
<div>
  <video :src="videoSrc" controls="controls" width="300" height="200"></video>
  <input type="file" @change="getBigectURL($event)" />
</div>
</template>

<script>
import {preview} from "@/api/login";

export default {
  name: "orderBase64",
  data () {
    return {
      videoSrc: ''
    }
  },
  methods: {
    getBigectURL (event) {
      console.log('getBigectURL', event)
      var current = event.target.files[0]
      var fileReader = new FileReader()
      fileReader .readAsDataURL(current)
      var that = this
      //第一种:上传当前文件的base64字符串
      fileReader .onload = function (e) {
        that.videoSrc = e.currentTarget.result
        console.log("=============== that.videoSrc", that.videoSrc)
        // that.$emit('video', that.videoSrc)
      }

      //第二种:测试后台返回的base64是否可以回显,结果是可以回显的
      preview("").then((res)=>{
        that.videoSrc = res.result//后端返回的视频BASE64字符串
        that.$emit('video',res.result)//调用父组件方法
      })


    },
  }

}
</script>

<style scoped>

</style>

2、后台返回视频base64字符串代码:

	@ApiOperation("获取图片视频附件流")
   @RequestMapping("/preview")
	public Result  preview(HttpServletResponse response){
		List<String> resList = new ArrayList<>();
		try{
			String str="E:\\test\\girl.jpg&&D:\\WeCatFiles\\WeChat Files\\wxid_4wb1yyzqyaie22\\FileStorage\\Video\\2022-07\\4178306fe40e9f65bd39be2e21d67df3.mp4";
			String[] arr = str.split("&&");
			for(String url:arr){
				Base64.Encoder base64 = Base64.getEncoder();
				FileInputStream inputStream = new FileInputStream(url);
				int size = inputStream.available();
				byte[] by = new byte[size];
				inputStream.read(by);
				String baseS64tr = base64.encodeToString(by);
				if(url.substring(url.lastIndexOf(".")+1).equals("mp4")){
					resList.add("data:video/mp4;base64,"+baseS64tr);
				}else{
					resList.add("data:image/jpg;base64,"+baseS64tr);
				}
			}

		}catch (Exception e){
			log.error("-------preview接口操作失败:",e);
			return Result.error("fail"+e.getMessage());
		}
		return Result.ok(resList);
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值