• 前端音频流播放


    方式一:

    利用js的Api AudioContext来播放:

    var AudioContext = window.AudioContext ||
    window.webkitAudioContext ||
    window.mozAudioContext ||
    window.oAudioContext ||
    window.msAudioContext;

    function playAuido(blob){

       

    var fr = new FileReader();
    fr.onload = function () {
          var arrBuff = this.result; // ab是转换后的结果
          audioContext.decodeAudioData(arrBuff, function (buffer) {
              var source = audioContext.createBufferSource();
              source.buffer = buffer; // This is the line that generates the error
              source.connect(audioContext.destination);
              source.start(0);
           }

    }
      fr.readAsArrayBuffer(blob);

    }

    方式二:

    利用auido标签播放:此种方式兼容IE9以上。原理是直接将aduio的src地址指向保存二进制流的内存地址。

    function playVideo: function (blob) {

    try{
    var reader = new FileReader();
    reader.onload = function (evt) {
    if (evt.target.readyState == FileReader.DONE) {
    var data = new Uint8Array(evt.target.result);
    indexParam.audio.src = window.URL.createObjectURL(indexMethod.getBlob2(data, data.length));
    }
    }
    reader.readAsArrayBuffer(blob);
    } catch (ex) {
    console.log(ex);
    }
    },

    function getBlob2: function (data, len) {
    var buffer = new ArrayBuffer(len);
    var dataview = new DataView(buffer);
    dataview = new Uint8Array(data, 0, len);
    return new Blob([dataview], { type: 'audio/mp3' });
    },

    以上两方式接收的必须是流数据才能播放。

  • 相关阅读:
    vs2008及以上的ActiveX测试容器在哪儿
    关于databinding的细节
    C#使用StackTrace获取方法被谁调用
    你是怎么走神的?
    怎样让SoapHttpClientProtocol不使用系统默认代理
    List的FindIndex和ForEach
    List的Capacity
    装箱和拆箱
    FileSystem.DeleteDirectory遇到"无法删除 文件:无法读取源文件或磁盘"
    一段关于测试和自定义Attribute的代码
  • 原文地址:https://www.cnblogs.com/xhrGeek/p/6201975.html
Copyright © 2020-2023  润新知