如何从浏览器中将UInt8Array缓冲区写入媒体文件格式?

时间:2015-11-11 00:27:44

标签: javascript file-io binary-data typed-arrays

在我在浏览器中运行的javascript代码中,我将视频解析为单独的音频和视频流缓冲区。音频和视频帧都是UInt8Array缓冲区的形式,我想用.aac / .mp4或其他媒体格式文件将其写入磁盘,该文件应该可以由VLC或其他媒体播放器播放。我在stackoverflow上找到了一些关于将类型数组写入磁盘上的二进制格式文件的答案,但我需要保存的文件是正确的媒体文件。如何在内存中将TypedArray写入磁盘上的音频/视频文件。

1 个答案:

答案 0 :(得分:0)

function download(text, name) {


    var a = document.createElement("a");
    var buf = str2ab(text);
    var fileNew = new Blob([buf], {
        type: "image/jpeg"
    });
    a.href = URL.createObjectURL(fileNew);
    a.download = name;
    a.click();

}

function str2ab(str) {
  var buf = new ArrayBuffer(str.length);
  var bufView = new Uint8Array(buf);
  for (var i=0, strLen=str.length; i<strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}