2021SC@SDUSC 软件工程应用与实践(8)——知识图谱视频的获取与播放(下)

2021SC@SDUSC

一、引言

本篇博客将对老年健康知识图谱系统中的播放视频功能的前端代码进行分析。

二、代码分析

1.知识图谱视频的获取

Element UI组件 Table 表格

在系统中,我们使用Element的Table表格组件,用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。

<el-table
        :header-cell-style="{background:'#fafafa',color:black}"
        :data="tableData"
        style="width: 100%">
        <el-table-column
          type="index"
          label="序号">
        </el-table-column>
        <el-table-column
          prop="indexName"
          width="200"
          label="指标名称">
        </el-table-column>
        <el-table-column
          prop="fileName"
          width="400"
          label="文件名称">
        </el-table-column>
        <el-table-column
          prop="fileType"
          width="100"
          label="文件类型">
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="primary"
              round
              @click="showDetail(scope.$index, scope.row)">查看详情</el-button>
          </template>
        </el-table-column>
      </el-table>

其中,在表格的“操作”这一列中,提供了“查看详情”的按钮,通过点击这个按钮可以实现对视频和word文档等的播放与查看。

showDetail方法

“查看详情”的功能被定义在showdetails的方法内。

  methods:{
    //查看详情
    showDetail(index,row){
      //获取文件名称
      let fileName = row.fileName;
      let fileType = row.fileType;
      //根据文件名和文件类型发送axios请求获取链接
      if(fileType == '视频'){
        this.videoSrc = "http://localhost:8989/video/" + fileName;
        //显示视频对话框
        this.videoDialogVisible = true;
      }
      else if(fileType == '文字'){
        this.wordSrc = "http://localhost:8989/word/" + fileName;
        this.audioSrc = "http://localhost:8989/audio/" + fileName.substring(0,fileName.indexOf('.')) + ".wav";
        //读取word文档对应的路径,转为html,并显示在页面上
        let vm = this;
        const xhr = new XMLHttpRequest();
        xhr.open("get", this.wordSrc, true);
        xhr.responseType = "arraybuffer";
        xhr.onload = function () {
          if (xhr.status == 200) {
            mammoth
              .convertToHtml({ arrayBuffer: new Uint8Array(xhr.response) })
              .then(function (resultObject) {
                vm.$nextTick(() => {
                  vm.word=resultObject.value;
                });
              });
          }
        };
        xhr.send();
        this.wordDialogVisible = true;
      }
    },

2.知识图谱视频的对话框

在获取到视频链接后执行 this.videoDialogVisible = true语句,显示视频对话框。
:visible指的是属性绑定,表示弹框的显示隐藏,当:visible的值为ture的时候,弹框显示,当为false的时候,弹框隐藏

后面的.sync是什么意思呢,指的就是同步动态双向的来表示visible的值,当我们关闭窗口的时候,这个弹框隐藏了,visible的值发生了变化,但是关闭窗口这个动作,我们没法用确定的动作去判断这个值,所以用到了vue中的双向绑定的原则,在vue中统一加上了.sync来表示同步的修改了visible的值。

知识图谱中的相关视频会通过dialog对话框播放。
before-close 仅当用户通过点击关闭图标或遮罩关闭 Dialog 时起效。如果你在 footer 具名 slot 里添加了用于关闭 Dialog 的按钮,那么可以在按钮的点击回调函数里加入 before-close 的相关逻辑。

<el-dialog
      title="视频"
      :visible.sync="videoDialogVisible"
      :before-close="closeVideoDialog"
      width="640">
      <video ref="video" :src="videoSrc" width="100%" height="360" controls>
        <source type="video/mp4">
      </video>
    </el-dialog>

当关闭对话框时,会停止视频的播放。

    closeVideoDialog(done){
      this.$refs.video.pause();
      done()
    },

pause() 方法停止(暂停)当前播放的音频或视频。this.$refs.video.pause()语句使视频的播放暂停,done()将播放视频的对话框关闭。
HTMLVideoElement 接口提供了用于操作视频对象的特殊属性和方法。它同时还继承了HTMLMediaElement 和 HTMLElement 的属性与方法。
在不同浏览器中 支持的媒体格式 是不一样的。因此在提供媒体文件的时候,或者提供一种所有浏览器都支持的格式,或者提供格式不同的多个视频源来支持不同浏览器,保证你想要支持的浏览器都能够播放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuFangdi145

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值