如何在浏览器里面推送H.264+AAC的RTMP直播

这是困扰N年的问题了,Adobe似要放弃但又不舍的flash,一直在更新,但大家呼唤已久的aac编码始终不肯加入。
于是基本上需要做高级点Web页直播的,不是让主播用第三方工具,就是在服务端实时转码,挺费劲的。
简单点的基本上全站flash的也有,flash仅做推流播放的也很多。

WebRTC在大家的期盼下也慢慢得到了大部分浏览器的支持,但结果一看这丫也不用aac,而是用的Opus,似乎是个版权问题?
Opus在语音与音乐等编码场景都能应对,但rtmp不支持呀,还是需要转码。协议接入也是一个麻烦点。

既然Adobe能开发flash插件,大家为啥不直接开发插件呢?

这个说起来似乎更痛苦,ie要开发ActiveX,win10 更新到Edge了,又不知道是支持哪种(有了解的朋友请告知我一下)?早先的chrome和firefox要开发NPAPI,现在不兼任了,又要开发PPAPI。
似乎只有大公司能折腾这些事吧。腾讯云好像有一款ActiveX的推流插件,但没仔细看。尽管可以兼容ie,做点行业应用,但你现在让前端做ie兼容的娱乐向页面,他分分钟摔键盘。

最近有一点研究时间了,回看了一下之前了解过的FireBreath,说是可以一次开发多个平台的浏览器插件,我觉得可以利用它来实现我一直想要实现的功能。
1.x版本可以支持ActiveX和NPAPI的插件,2.x说是准备兼容PPAPI,但似乎有点麻烦,这方面资料也不多,而且项目也已经很长时间未更新了。
似乎又陷入绝境。

但转念一想,好像国内大家常用的,不是纯chrome或firefox?而是大行其道的:360安全浏览器,QQ浏览器,搜狗高速浏览器,UC浏览器, 遨游5! 欢迎补充。
这些浏览器普遍的特点是,采用开源chromium内核,或webkit内核,做过高度二次开发,并提供了ie内核的兼容模式。大家都一致的保持了对NPAPI的兼容!!!

赶紧写了个测试程序验证了一下,经确认,以上提到的,都兼容!

那么接下来需要用的就是各种技术的混合,dshow捕获摄像头麦克风,libyuv转换色彩空间,libSDL2显示预览,libx264+faac编码音视频,librtmp传输。
空气中都是熟悉的味道。

经过几个月的开发,躺了太多的坑,雏形已经在我本地跑通了,配合罗技C920全高清摄像头,非常完美。不管是直播web向 16:9宽屏分辨率,还是兼容手机模式的9:16竖屏分辨率(迅雷直播那样)。都没问题,不需要主播旋转摄像头!
甚至我加入了麦克风降噪,NV显卡硬件编码加速,来个全高清1080P直播完全没有问题。后期加入libx265编码或nv显卡加速HEVC,清晰度不变30%~50%码率节省都可以!
以上提到的浏览器,都支持,甚至不会弹出允许摄像头麦克风调用请求(似乎不安全,会不会被列入屏蔽)哈哈。

主要面向,基于Web平台,有高清音视频需求的:美女主播,书法绘画,手工艺节目,美妆美甲美发,高清商品展示,教育课堂,会议等各方面需求。
推流用户只需一键下载安装插件,无需打开第三方程序,打开web网站,即可开始超高清直播。兼容各大直播平台,输出标准rtmp,http-flv, HLS, DASH直播流,任意pc,web,手机播放端都能完美兼容。

插件下载试用:http://www.nodemedia.cn/products/node-media-client/winplugin/

QQ商务联系: 281269007
Email: service@nodemedia.cn

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 如何在浏览器里面推送H.264+AAC的RTMP直播

1 评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据