js传递二进制视频数据的方法

JavaScript011

js传递二进制视频数据的方法,第1张

js传递二进制视频数据的方法是以下这些。

1、用js操作二进制数据,通过socket与后台进行传输。将二进制数据存放在其中。

2、通过此方式,我们可以直接在网络中传输二进制内容。

因为项目需要压缩字符串和二进制,找到了pako这个库:

https://github.com/nodeca/pako

https://gitee.com/renew_old_romance/pako/tree/master

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/pako/index.d.ts

参考 Javascript 简单实现Gzip 压缩字符串 基于pako.js

因为字符串需要与后端通讯,所以使用了bota/atob进行base64编码。

关于字符串与二进制处理,可以参考 jsmpeg系列一 基础知识 字符处理 ArrayBuffer TypedArray ,其中提到了ArrayBuffer与字符串的互相转换。

ArrayBuffer转为字符串,或者字符串转为ArrayBuffer,有一个前提,即字符串的编码方法是确定的。假定字符串采用UTF-16编码(JavaScript的内部编码方式),可以自己编写转换函数。

但是,ab2str这种写法,在实际使用中,如果buf过大,会有 Maximum call stack size exceeded 堆栈溢出。

可以参考 javascript - js数组转字符串 - 在字符串和ArrayBuffers之间转换 ,改为for的写法:

将十进制转为二进制:

var a = 10

var b = a.toString(2)

b即为10的二进制表示。但是注意b此时是字符串。

toString()默认参数为10,即把数字转换为十进制字符串,可接受2-36整数作为参数。

将二进制转为十进制:

var a = "10100110"

var b = a.parseInt(a, 2)

b即为a的十进制表示。

parseInt将字符串转换为数字,接受两个参数,第一个是要转换的字符串,第二个可省略,表示要解析的数字基数,可接受2-36整数作为参数。默认情况下会自动判断:若字符串以0x开头,则之后的字符以十六进制解析;以0开头,以八进制解析,0-9,以十进制解析。