zoukankan      html  css  js  c++  java
  • EasyRTC文件传输只能发送切片数据导致接收端文件没有文件名如何优化?

    大家知道TSINGSEE青犀视频的流媒体平台都是可以进行录像回放和视频文件下载的,下载的录像文件有TS切片文件,也可以合成为一个mp4格式的视频流。

    EasyRTC作为TSINGSEE青犀视频开发的远程视频通话平台,当然也是可以对录像文件进行回放以及下载的。但是在测试中,我们发现平台内的传输只能发送文件切片数据,导致接收端下载文件没有文件名以及文件后缀。

    于是我们首先来分析一下平台的发送机制,发送文件前先发送条消息到接收端:

    let filesInfo = {
      name: file.name,  //文件名
      size: file.size,  //文件大小,判断文件切片是否有丢失
    }
    sendChannel.send(JSON.stringify(filesInfo))

    发送文件前的数据与文本通信的数据格式一样。在接收端添加判断条件,将发送文件前的数据保存起来,代码如下:

    if (typeof event.data === 'string' ? true : false){
      let msgData = JSON.parse(event.data)
      if (msgData.type === 'message'){
        this.msgData.push(JSON.parse(event.data))
        this.getTipType('msg')
      }else{
        // 获取文件第一条信息
        this.filesData.push(JSON.parse(event.data))
      }
    }
    if (typeof event.data !== 'string' ? true : false){
        this.receiveBuffer.push(event.data)//将接收到的数据添加到接收缓存里
        this.receivedSize += event.data.byteLength; //设置当前接收文件的大小
        let filesInfo = JSON.parse(JSON.stringify(this.filesData))
        if (this.receivedSize === filesInfo[0].size){
          const received = new Blob(this.receiveBuffer)// 生成Blob文件
          this.receiveBuffer = [] // 将缓存数据置空
          this.filesData = []
          this.downData = {  // 添加a标签信息
            url: URL.createObjectURL(received),
            name: filesInfo[0].name,
            size: filesInfo[0].size,
          }
          this.receivedSize = 0
          this.receiveState = true
          this.fileTip = true
        }
        this.getTipType('file')
      }
    }

    如此修改之后,文件、文本传输则可以互不影响。

    接收端:

    发送端:

    下载的文件如下,正常显示文件名以及文件后缀:

    EasyRTC一直致力于技术突破,目前也正在进行新版本的研发,5G的落地与商用将开启万物互联的智能新时代,得益于5G的大带宽和低延时特性,音视频互动领域将成为最直接的受益者。未来,在5G、AI等新技术风口之下,以TSINGSEE青犀视频为首的音视频互动解决方案公司,将帮助音视频行业拥抱更美好的未来。

  • 相关阅读:
    使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
    便携版WinSCP在命令行下同步文件夹
    ffmpeg (ffprobe)分析文件关键帧时间点
    sqlite删除数据或者表后,回收数据库文件大小
    ubuntu 20.04下 freeswitch 配合 fail2ban 防恶意访问
    ffmpeg使用nvenc编码的结论记录
    PC版跑跑卡丁车 故事模式 亚瑟传说章节 卡美洛庆典 2阶段 心灵之眼 攻略
    There was an error loading or playing the video
    Nvidia RTX Voice 启动报错修复方法
    火狐浏览器 关闭跨域限制
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/15166347.html
Copyright © 2011-2022 走看看