使用【Blob、Base64】两种方式显示【文本、图片、视频】 & 使用 video 组件播放视频

这篇具有很好参考价值的文章主要介绍了使用【Blob、Base64】两种方式显示【文本、图片、视频】 & 使用 video 组件播放视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Blob 显示

Blob 对象的类型是由 MIME 类型(Multipurpose Internet Mail Extensions)来确定的。MIME 类型是一种标准,用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型:

  • text/plain:纯文本文件。
  • text/html:HTML文件。
  • text/xml:XML文件。
  • image/png:PNG格式的图像文件。
  • image/jpeg:JPEG格式的图像文件。
  • image/gif:GIF格式的图像文件。
  • audio/mpeg:MP3格式的音频文件。
  • video/mp4:MP4格式的视频文件。

文本显示

Blob(Binary Large Object)对象表示一个不可变的、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

new Blob([text], {type: 'text/plain'}) 来创建一个包含字符串"测试 blog 文字显示文本信息"的 Blob 对象。这个Blob对象的MIME类型是 “text/plain” ,表示它包含纯文本数据。

显示文字,使用 blob.text() 将其转化为文本格式

<script setup>
import {ref} from 'vue';
import axios from 'axios';

let text = '测试 blog 文字显示文本信息';
let blob = new Blob([text], {type: 'text/plain'});
let blobText = ref('');

blob.text().then(res => {
  console.log('text', res);
  blobText.value = res;
});
</script>

<template>
  <main>
    <div>{{ blobText }}</div>
  </main>
</template>

文本显示

img blob显示,前端,音视频,前端,vue,html5,javascript

图片显示

要预览 Blob 对象中的图片,可以使用 JavaScript 中的 URL.createObjectURL() 方法。这个方法将 Blob 对象转换为一个 URL,然后可以将这个 URL 赋值给 img 元素的 src 属性

在发送请求是要注明参数 responseType: 'blob'

<script setup>
import {ref} from 'vue';
import axios from 'axios';

let imgSrc = ref('');
axios.get('/api/minio/download', {params: {'fileName': '1.jpg'},responseType: 'blob'}).then(res => {
  // 二进制文件
  let fileBinaryData = res.data;
  const blob = new Blob([fileBinaryData], {type: 'image/jpg'});
  const url = window.URL.createObjectURL(blob);
  console.log('url', url); // 输出 url blob:http://127.0.0.1:5173/7328a00c-57e0-46c6-b508-29c5a5ce0c7f
  imgSrc.value = url;

});

</script>

<template>
  <main>
    <div>{{ blobText }}</div>
    <a-image
        :width="200"
        :src="imgSrc"
    />
  </main>
</template>

图片显示出来了

img blob显示,前端,音视频,前端,vue,html5,javascript

Base64 显示

Base64 是一种将二进制数据转换成可打印字符的编码方式。Base64 的底层原理是将 3 个字节的二进制数据转换为 4 个字节的打印字符,每个可打印字符对应 6 个二进制位

简单讲就是,把乱码不可读的二进制转为可读字符

二进制流显示

img blob显示,前端,音视频,前端,vue,html5,javascript

Blob 转 Base64

如果要二进制转 Base64,就先把二进制流转成 Blob,再转成 Base64

// blob 转 base64
const blob2Base64 = (blob) => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(blob);
    reader.onload = () => resolve(reader.result);
    reader.onerror = (error) => reject(error);
  });
};

base64 结果显示

img blob显示,前端,音视频,前端,vue,html5,javascript

Base64 显示图片

使用 base64 赋值给图片的 src 也可以显示出来

img blob显示,前端,音视频,前端,vue,html5,javascript

播放视频

原生播放

http://localhost:7100//api/minio/download?fileName=demo-mp4.mp4 为视频请求地址

<video width="1120" height="540" controls="controls" id="video" preload="auto"     >
  <source src="http://localhost:7100//api/minio/download?fileName=demo-mp4.mp4"   type="video/mp4">
</video>

img blob显示,前端,音视频,前端,vue,html5,javascript

使用组件播放

使用 vue3-video-play 播放,功能会比较多

npm 安装

npm i vue3-video-play --save

局部使用

import 'vue3-video-play/dist/style.css'
import { videoPlay } from 'vue-video-play'

全局使用

import { createApp } from 'vue'
import App from './App.vue'
let app = createApp(App)
 
import vue3videoPlay from 'vue3-video-play' 
import 'vue3-video-play/dist/style.css'
app.use(vue3videoPlay)
 
app.mount('#app')

方案一(直接请求视频路径)

srcposter 都是直接请求的路径

<vue3VideoPlay
    width="800px"
    title="钢铁侠"
    src="http://localhost:7100//api/minio/download?fileName=demo-mp4.mp4"
    poster="http://localhost:7100//api/minio/download?fileName=1.jpg"
    @play="onPlay"
    @pause="onPause"
    @timeupdate="onTimeupdate" />

方案二(转成 Base64 播放)

将二进制流转成 Blob 后再转 Base64,再赋值给 srcposter ,实现播放

<vue3VideoPlay
    width="800px"
    title="钢铁侠"
    :src="videoSrc"
    :poster="imgSrc"
    @play="onPlay"
    @pause="onPause"
    @timeupdate="onTimeupdate" />

blob2Base64 方法实现在上面,这是 vue3 的代码,可使用其他框架实现,思路一致

let videoSrc = ref('');
axios.get('/api/minio/download', {params: {'fileName': 'demo-mp4.mp4'}, responseType: 'blob'}).then(res => {
  // 二进制文件
  let fileBinaryData = res.data;
  const blob = new Blob([fileBinaryData], {type: 'video/mp4'});
  blob2Base64(blob).then(res => {
    videoSrc.value = res;
  });

img blob显示,前端,音视频,前端,vue,html5,javascript

更多属性配置请查看文档

vue3-video-play 文档:Vue3VideoPlay (codelife.cc)

其他

文中使用到 MinIO 存放图片,以及使用 SpringBoot 访问图片,给前端提供了 api 接口

想要了解分布式对象存储 MinIO,可以阅读一下博客内容,希望对你有帮助

Linux 部署 MinIO 分布式对象存储 & 配置为 typora 图床

SpringBoot 对接 MinIO 实现文件上传下载删除

了解更多 Linux 知识,docker 安装,服务部署,可以查看专栏

Linux 专栏 - 凉了的凉茶文章来源地址https://www.toymoban.com/news/detail-774311.html

到了这里,关于使用【Blob、Base64】两种方式显示【文本、图片、视频】 & 使用 video 组件播放视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js实现base64、url和blob之间相互转换的三种方式

    Blob对象表示一个不可变、原始数据的类文件对象,Blob表示的不一定是JavaScript原生格式的数据,下面这篇文章主要给大家介绍了关于js实现base64、url和blob之间相互转换的三种方式 url 转 base64 Blob 转 url Blob 转 base64 base64 转Blob base64 转 url 一般来说前端展示图片会通过三种方式:

    2024年02月03日
    浏览(50)
  • js将图片转base64两种方法

    第一种:Image + canvas 第二种:xhr + FileReader

    2024年02月11日
    浏览(49)
  • JS基于base64编码加密解密文本和图片(修订)

    ​ 密码学,体系太庞大了,常见的加密解密算法很多,这里仅介绍采用base64实现的加密解密的方法。 严格地说base64不是加密算法,他只是一种编码方式,是一种用64个字符来表示任意二进制数据的方法。详情可参见其它资料。 Base64编码具有不可读性,需要解码后才能阅读。

    2024年02月07日
    浏览(51)
  • html2canvas生成图片地址Base64格式转成blob在转成file(二进制)可正常发送(保姆教程,复制粘贴可用)

    开始:                                                  最终结果:                                                      1. html2canvas方法生成的图片地址已Base64编码形式放在img标签src中可直接展示生成的图片(注意 页面标签获取位置 ,还有个 setTimeout 页面渲染需要

    2024年02月13日
    浏览(49)
  • 微信小程序中无法显示base64图片

    在微信小程序中展示图片信息时,后端返回的数据中的图片地址位base64 在小程序进行图片渲染后,发现有一部分的图片不能成功显示,直接为空白,但是在调试器里查看图片地址已经注入进 src 里面了,尝试将图片地址复制出来用浏览器打开,发现可以正常显示 图片在浏览器

    2024年02月12日
    浏览(64)
  • 如何将图片转化为base64编码格式显示

    base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,base64编码 主要用在数据传输过程中(编码、解码)。而 Data URI 是将数据用 URI 的形式进行展现。常用的是将图片进行 base64 编码,用 Data URI 的形式进行展现,可

    2024年02月06日
    浏览(50)
  • uni-app 中图片转 base64 以及 base64 转图片方式,超简单,超好用的图片转换工具,你值得拥有它。

    目录 简介 使用方式 NPM install 安装 直接下载 API pathToBase64 base64ToPath 提示:多个任务可以串行或者并行执行 一款非常好用的插件,它就是 image-tools  图像转换工具,可用于如下环境:uni-app、微信小程序、5+APP、浏览器(需允许跨域)。 NPM install 安装 页面引入js 即可使用 直接

    2024年02月08日
    浏览(88)
  • postman中如何显示返回的base64图片验证码

    后端返回的代码 将以上代码中上面的一个字符串(即带 data:image/jpeg;base64, )复制到 http://www.jsons.cn/img2base64 中然后点击 追加img标签 即可将base64字符串转为图片 postman 中通过base64转成图片呢? postman 请求中返回的是base64字符串 然后在 Tests 中输入如下代码然后在直接查看即可

    2024年02月12日
    浏览(41)
  • HTML img 元素无法显示 base64 图片的可能原因

    如果使用 base64 编码的图片在 HTML 的 img 元素中无法显示,可能有以下几个原因: 1、语法错误:img 元素中的 src 属性必须以 \\\"data:\\\" 开头,后面跟着 MIME 类型和 base64 编码的图片数据。如果这个语法格式有误,就无法正常显示图片。 2、MIME 类型错误:如果指定的 MIME 类型与实际

    2024年02月05日
    浏览(47)
  • 【vue】 Tinymce 富文本编辑器 不想让上传的图片转换成base64,而是链接

    前言:最近项目上需要使用富文本编辑器,觉得tinymce很不错就用了,具体怎么在项目中使用参考 【vue】 vue2 中使用 Tinymce 富文本编辑器 【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑 这两天又遇到了新的问题,图片上传后是看地址栏发现是base64的

    2024年02月14日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包