博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JS实现RTMP协议直播(三)
阅读量:6121 次
发布时间:2019-06-21

本文共 959 字,大约阅读时间需要 3 分钟。

hot3.png

broadway和libspeex的C代码可以先编译成llvm的中间文件,然后再和自己写的c++代码连接形成最终的js代码。

中间遇到的问题是,如何在C代码和js代码之间进行交互,就是哪些代码写成C,哪些用js实现。

用emscripten绑定两个C++类,NetConnection,NetStream,以实现通讯解码等高密度运算,调用方式基本模仿as。

在调用js系统自带的一些对象的时候,从C端调用会有一些性能影响,尤其是传递大对象的时候,这时候通过阅读speex.js的一些用法发现,C代码的内存使用,emscripten会分配一块ArrayBuffer,在js端可以通过将C端的指针看成是ArrayBuffer的偏移来直接操作内存,这样就可以高效管理内存。需要传递大数据的时候,只需要传递指针(即偏移)到js代码中,js就能获取到内存数据。

使用方法和as十分接近。

    var nc = null;    var ns = null;    function test() {        nc = new NetConnection();        nc.onNetStatus = function(info) {            Module.print(info.code);            if (info.code == "NetConnection.Connect.Success") {                ns = new NetStream(nc);                ns.attachCanvas(document.getElementById("canvas"));                ns.initAudio(50);            }        }        nc.connect("192.168.0.100:1936", "live", "");    }

ns.initAudio(50);这段代表音频缓冲50帧播放,因为实际测试发现,不缓冲的话声音播放不出来

目前经过压缩整体js在500k左右

转载于:https://my.oschina.net/langhuihui/blog/612144

你可能感兴趣的文章
重复执行命令的脚本
查看>>
nginx 允许跨域
查看>>
Ubuntu apt-get update失败
查看>>
pfSense版本分类
查看>>
Objective-C-NSOperation
查看>>
Storm【错误诊断】 - Storm-kafka 提交到集群
查看>>
仿Jquery
查看>>
Linux下MySQL5.6.15-忘记root密码或者在mininal上装5.6之后,怎么初始化mysql
查看>>
主域控辅助域控的搭建以及主域控制器的迁移
查看>>
trancing in erlang
查看>>
Windows Phone 8 Nokia地图控件
查看>>
我的友情链接
查看>>
Mysql存储过程中使用cursor
查看>>
从一个
查看>>
MongoDB 第三周作业——用java操作MongoDB之删除数组中的元素
查看>>
三、基于802.1x+AD+NPS+DHCP动态下发VLAN配置 (第3篇、添加角色NPS并设置)
查看>>
Windows开启SNMP服务----Win7
查看>>
体重档案应用客户端源码
查看>>
在linux中添加ftp用户,以及修改FTP默认端口号
查看>>
N26-第一周作业
查看>>