WebRTC + 直播 + 连麦 = AnyRTC ?

看到这个题目,您似乎瞬间就懵逼了,小编是在梦游中写作文吗?这四个词有什么联系?WebRTC是Google的,
直播是现在最火的,连麦是直播中略吊的,但是AnyRTC是什么鬼,这不瞎扯么╮(╯_╰)╭
您先别着急,听我慢慢给你扯~~~确实,四句话您都说对了,听我一一给你道来。
高手可以直接关闭本页面。不喜勿喷,出门左转

WebRTC
WebRTC是Google的开源项目,目前在其自家浏览器Chrome中自带。百度或Google都可以找到相关介绍,从事相关行业的人都知道WebRTC的鼎鼎大名,如果您还不熟悉,请自行搜索。
WebRTC的编译对于熟悉ninja的人来说小菜一碟,但对于不熟悉的人,要想编译完成没有个三四天是下不来的,更有人下载代码都下不全,小编还是之前移植浏览器时打下的基础^)(^。
以下是小编目前使用的ios和android版本的peerconnection的库的脚本,命令打包而已,其实是编译官方AppRTCDemo的命令,顺带编译出了peerconnection,如果您不想要AppRTCDemo, 可以将AppRTCDemo替换为相应系统的libjingle_peerconnection版本。具体命令都可以在WebRTC Development中找到。
如果你是第一次下载代码,一定要保证网络可以到Google,并且gclient sync到没有新的更新为止,保证代码下完整。

Ios

#!/bin/bash

##
## Dync-AnyRTC
## Hello webrtc
##if [ x$1 == x ]
thenecho "==============================="echo "$0 arm64|armv7 build_all"echo "==============================="exit 1;
fifunction build_armv7()
{echo "start building armv7..."rm -rf out_ios_armv7mkdir -p out_ios_armv7/Release-iphoneosexport GYP_GENERATORS="ninja"export GYP_DEFINES="enable_protobuf=0 build_protobuf=0 build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=arm arm_version=7 use_objc_h264=1"export GYP_GENERATOR_FLAGS="output_dir=out_ios_armv7"export GYP_CROSSCOMPILE=1gclient runhooks
##ninja -C out_ios_armv7/Debug-iphoneos AppRTCDemoninja -C out_ios_armv7/Release-iphoneos AppRTCDemoecho "finish building armv7..."
}function build_arm64()
{echo "start building arm64..."rm -rf out_ios_arm64mkdir -p out_ios_arm64/Release-iphoneosexport GYP_GENERATORS="ninja"export GYP_DEFINES="enable_protobuf=0 build_protobuf=0 build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=arm64 use_objc_h264=1"export GYP_GENERATOR_FLAGS="output_dir=out_ios_arm64"export GYP_CROSSCOMPILE=1gclient runhooks
##ninja -C out_ios_arm64/Debug-iphoneos AppRTCDemoninja -C out_ios_arm64/Release-iphoneos AppRTCDemoecho "finish building arm64..."
}function build_all()
{build_arm64build_armv7
}$@

在src目录下执行./build_all即可

Android

#!/bin/bash

##
## Dync-AnyRTC
## Hello webrtc
##if [ x$1 == x ]
thenecho "==============================="echo "$0 android64|androidarmv7 debug|release "echo "==============================="exit 1;
fiif [ x$2 == x ]
thenecho "==============================="echo "$0 android64|androidarmv7 debug|release "echo "==============================="exit 1;
fiif [ $1 == "android64" ]
thenecho "start building android arm64..."export GYP_GENERATORS="ninja"export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=android target_arch=arm64"export GYP_GENERATOR_FLAGS="output_dir=out_android_arm64"export GYP_CROSSCOMPILE=1gclient runhooks --forceif [ $2 == "debug" ]thenninja -C out_android_arm64/Debug AppRTCDemoelseninja -C out_android_arm64/Release AppRTCDemofiecho "finish building android arm64..."
elif [ $1 == "androidarmv7" ]
thenecho "start building android armv7..."export GYP_GENERATORS="ninja"export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=android target_arch=arm arm_version=7"export GYP_GENERATOR_FLAGS="output_dir=out_android_armv7"export GYP_CROSSCOMPILE=1gclient runhooks --forceif [ $2 == "debug" ]thenninja -C out_android_armv7/Debug AppRTCDemoelseninja -C out_android_armv7/Release AppRTCDemofiecho "finish building android armv7..."
elseecho "==============================="echo "$0 android64|androidarmv7 debug|release "echo "==============================="
fi
在src目录下执行./run_build.sh android64 release 即可
gclient runhooks会生成相关的工程代码,--force不一定非要带,gclient runhooks失败时,可以尝试加上--force。

您可能有疑问为什么是peerconnection的库呢?
第一,peerconnection是webrtc对外的提供的比较全的接口的类
第二,peerconnection在框架的高层,与应用层最近,需要的改动最少
第三,peerconnection最容易编译和集成
第四,如果你想要两个人简单的直播连麦,peerconnection就足够了

直播
直播可以说是今年最火的两个字了,各大平台相继推出自己的直播,网上随便一搜,文章,APP一大吨,就是吨,据说几个月前都快200家。文章也有每天都有新鲜的
举个例子: 如何搭建一个完整的视频直播系统?,
站在风口,移动直播+营销将何去何从?,随便哪个平台关键字搜索直播都数不完~~
简单来说就是一个人发布自己的直播供别人观看,可以有一点延迟,重点在服务器的稳定和流量带宽,CDN的分发。而目前直播技术最简单成熟的就是基于RTMP的推流拉流,在此我推荐SRS(http://www.chnvideo.com/blog-classic-srs.html),原因很简单,就是简单高效稳定开源,文章可参考http://www.cnblogs.com/meetrice/p/5428985.html

连麦
连麦是现在直播中比较高大上的一个功能,可以和主播直接互动,市面上的映客,ME直播可以,一般都是两个人或三个人之间互动,可以说是为直播锦上添花,拉近了主播和和粉丝的距离,增加了人气等等等。
而基于WebRTC的P2P的连麦是比较简单的,最简单的思路,主播和粉丝P2P通了之后,主播将两路视频或者合成一路直接推送到SRS服务器上,供粉丝观看即可,连麦者获取主播视频本地观看。多人连麦可需要稍微复杂的服务架构设计和实现,有较大的难度,保证实时和稳定以及质量。
简单P2P两人连麦图:

另外连麦模型还可以参考http://www.cnblogs.com/oldmanlv/p/5625923.html

AnyRTC
该介绍AnyRTC了,^_^。上面讲了那么多,当然是为AnyRTC打基础的,因为AnyRTC涉及到了以上三个模块。
简单说AnyRTC自己开发了基于WebRTC的支持4人连麦直播的SDK。而且集成简单,服务稳定。

举例来说,以下是从七牛官网获取的接口,以Ios为例,Android的类似。
Ios接口调用
主播端:
在进行了一系列设置和检查后:

// 开始推流,无论 security policy 是 static 还是 dynamic,都无需再单独计算推流地址
[self.session startWithCompleted:^(BOOL success) {// 这里的代码在主线程运行,所以可以放心对 UI 控件做操作if (success) {// 连接成功后的处理// 成功后,在这里才可以读取 self.session.pushURL,start 失败和之前不能确保读取到正确的 URL} else {// 连接失败后的处理}
}];

客户端:

PLPlayerOption *option = [PLPlayerOption defaultOption];
[option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets];
NSURL *url = [NSURL URLWithString:@"直播的 rtmp 地址"];
self.player = [PLPlayer playerWithURL:self.URL option:option];
self.player.delegate = self;
[self.view addSubview:self.player.playerView];
[self.player play]

如果您使用AnyRTC的sdk实现直播连麦,简单示例接口使用如下:
Ios直播接口调用:
主播端:

[self.hosterKit StartPushRtmpStream:self.liveItem.live_rtmp_push_url];

开始推流
客户端:

[self.guestKit StartRtmpPlay:self.liveItem.live_rtmp_pull_url andRender:self.mainView];

开始观看

Android直播接口调用:
主播端

mHosterKit.StartPushRtmpStream(mLiveInfoBean.getLive_rtmp_push_url());

客户端:

mGuestKit.StartRtmpPlay(joinHostInfo.live_rtmp_pull_url, render.GetRenderPointer());

开始观看
当然也需要一些设置和在回调中做相应的处理。

如果您需要连麦功能,
需要先进行开启该功能:

[self.guestKit JoinRTCLine:self.liveItem.g_anyrtcid andCustomID:user.userid andUserData:[userInfo mj_JSONString]];

mGuestKit.JoinRTCLine(joinHostInfo.g_anyrtcid, mUserModel.getUserInfo().getUserid(), getApplyBean());

然后调用申请连麦的接口既可以实现连麦:

[self.guestKit ApplyRTCLine:[applyConnectInfo mj_JSONString]];

mGuestKit.ApplyRTCLine(applyBean);

目前支持四人连麦。Ios和Android一套接口,接口简单,方便集成快速升级。
如有不对,欢迎指出。如有问题,欢迎咨询。

最后奉上超级大资源:https://github.com/DyncLang/DevLiveBook
保证你看上几天几夜都看不完^_^

欢迎加群讨论:580477436

WebRTC + 直播 + 连麦 = AnyRTC ?相关推荐

  1. 基于anyrtc的sdk实现直播连麦互动

    基于anyrtc的sdk实现直播连麦互动 前言 1.由于粘贴了较大的代码,造成内容比较长,可能会花费您较长的时间.  2.项目里面没有做权限判断,所以如果发现有页面发生崩溃可能是权限没有打开,请打开权 ...

  2. anyRTC,一站式低延迟直播连麦解决方案

    全新的一站式"低延时直播连麦"解决方案,主打直播连麦和多画面特效,通过移动直播SDK打造跨平台一对多.多对多的超清酷炫直播场景.anyRTC音视频直播连麦解决方案方案包括,视频直播 ...

  3. srs 直播连麦环境搭建

    一.简介 二.修改conf/rtc.conf 三.两个客户端加入房间 四.合流 4.1分别拉流尝试 4.2合流推流 4.3拉取合流 一.简介 直播连麦是指在one2one或one2many进行音视频通 ...

  4. 这么多直播连麦方案,到底哪种适合你?

    2016年陌陌.映客等直播平台陆续上线连麦,如今连麦已经成为主流直播平台标配.声网于2016年全球率先推出的多人连麦.纯语音连麦等多种玩法,半年时间内,就与几乎所有全球主流直播平台达成深度合作,如陌陌 ...

  5. 直播连麦、智能音箱、一键求救……实时互动技术应用全面爆发!

    作者 | 唐小引 & 孙浩峰 出品 | CSDN(ID:CSDNNews) 今时今日,当我们使用着微信的音视频通话功能,在吃鸡.狼人杀剧本杀里语音对话.直播答题组队,以及在各类在线教育的 Ap ...

  6. 解读直播连麦与点播加密

    摘要: 本文PDF摘自阿里云视频服务高级产品专家徐刚于10月13日在2016年杭州云栖大会上发表的<视频服务特色解决方案--直播连麦与点播加密>. 近年来,直播热潮持续升温.有需求就会有变 ...

  7. 移动直播连麦实现思路:整体篇

    导语:本文专为介绍移动直播连麦实现架构和思路而写,介绍了移动直播连麦的整体情况.各种实现架构和优劣比较等,包括连麦介绍.角色定义.连麦特点要求,合成思路介绍.各种合成方式比较等几个小节. 移动直播连麦 ...

  8. 实现连麦_微信年底放了个大招,视频号重磅升级,打赏直播连麦美颜抽奖齐上...

    期待已久的视频号连麦功能来了.这次来的不仅有连麦功能,还有视频号打赏的微信豆体系,创作者想要的入口也有了.让我们一起来看看有什么新功能吧!太长不看版本:「附近的人」变「附近的直播和人」连麦上线,还有美 ...

  9. 实现连麦_微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口

    12月23日晚,微信迎来重大改版!在最新7.0.20版本的微信中,视频号大招不断,不仅上线了连麦功能,支持美颜瘦脸.打赏等功能. 此外,微信还给视频号开放了两个重大入口,包括微信个人名片和" ...

最新文章

  1. CuteEditor 编辑器的字体样式无法控制的问题解决
  2. 10 结构型模式-----装饰模式
  3. SAP HANA 三大特点
  4. APUS 朱辉:移动应用出海的大数据建设挑战
  5. 这种个性化可视化图也太可爱了吧!
  6. Java中的数组数据结构需要了解的要点
  7. antd Datepicker组件报错 ——date.clone is not a function或者date1.isAfter is not a function
  8. 通过django 执行命令或者脚本
  9. ARMA模型的性质 1
  10. python的matplotlib的函数_在Python中使用matplotlib绘制条件函数
  11. 设置图例 边框 背景 AE C#
  12. 数据结构上机时间第三周项目4(1)—顺序表应用
  13. sklearn 线性回归_机器学习初级算法(二)——线性回归
  14. 中虚数怎么表示_虚数是负数的平方根,为什么在三次方程中才出现的呢?|高中篇3...
  15. docker 运行 php nginx_使用docker运行nginx
  16. QNX系统开启telnet远程登录
  17. 马科维茨投资组合有效集、最优投资组合
  18. Linux- 系统随你玩之--文本、字符串处理摸金校尉--RE
  19. 在vue项目中使用高德地图JS API
  20. 2021-08-07 解决安装MacTeX后界面显示法语问题

热门文章

  1. 基于SpringBoot的前后端分离考试练题微信小程序
  2. Jeff Dean万字长文:2020谷歌10大领域AI技术发展
  3. 每一位IT技术研发人员,无论是做Java、go还是php开发的程序员,都必经之路!
  4. 泛娱乐社交一代:95后社交行为洞察报告
  5. cocos2d-x 3.3 之黑白棋设计 NO.4 动画效果
  6. RTKLIB专题学习(十)—电离层改正
  7. 2015如何通过QQ群零成本赚钱?
  8. GAN、DCGAN、WGAN、SRGAN
  9. CES Asia:如何将黑胶唱机变成潮流酷玩?
  10. L3-020 至多删三个字符 (30 分)(DP)