腾讯云直播SDK集成 TUIPusher(Android) _音视频解决方案_同尘科技
组件介绍
TUIPusher
组件是一套开源的、完整的视频直播互动推流组件,它基于腾讯云 直播 Live SDK 和 即时通信 IM SDK ,实现直播推流,直播 PK 等功能,同时支持弹幕、点赞、美颜等外挂插件,使用 TUIPusher
组件您可以快速搭建诸如秀场直播、电商直播等场景化解决方案。
组件集成
步骤一:下载并导入 TUIPusher 组件
1. 单击进入 Github ,选择克隆或者下载小直播工程代码。2. 拷贝 Android/tuipusher 、Android/tuiaudioeffect、Android/tuibeauty、Android/tuibarrage、Android/tuigift 等文件夹到您的工程中。3. 在 setting.gradle
中完成导入,参考如下:
include ':tuipusher'include ':tuiaudioeffect'include ':tuibeauty'include ':tuibarrage' include ':tuigift'
4. 在 app
的 build.gradle
文件中添加对 tuipusher
等 moudle 的依赖:
api project(':tuipusher')api project(':tuiaudioeffect')api project(':tuibeauty')api project(':tuibarrage')api project(':tuigift')
步骤二:配置权限及混淆规则
1. 在 AndroidManifest.xml
中配置 App
的权限,SDK
需要以下权限(6.0以上的 Android 系统需要动态申请相机、麦克风权限等):
2. 在 proguard-rules.pro 文件,将 SDK 相关类加入不混淆名单:
-keep class com.tencent.** { *; }
步骤三:初始化&创建组件
如果您未开通腾讯云直播相关服务,请先按照如下步骤开通相关服务:开通云直播服务,并在 域名管理 页面中配置推流域名和拉流域名。创建应用并绑定 License ,并记录下 LICENSEURL
、LICENSEURLKEY
等关键信息。
// 1. 初始化直播服务V2TXLivePremier.setLicence(this, "您的LICENSEURL", "您的LICENSEURLKEY");
// 2. 创建TUIPusher组件TUIPusherView mTUIPusherView = new TUIPusherView(Context);
// 3. 设置诸如推流开始、推流结束等事件监听mTUIPusherView.setTUIPusherViewListener(new TUIPusherViewListener() { ...}
步骤四:有互动直播推流
1. 服务开通
因为连麦& PK 时需要更低的延时需求,需要在腾讯云直播控制台开通对应的连麦应用服务,如果您未开通,请登录云直播管理控制台选择 连麦应用 ,单击新建连麦应用输入应用名称(例如 TUIPusher
),然后在该应用的对应操作栏中,选择应用信息进入应用管理页,查看并记录应用的 SDKAppID 和 SECRETKEY(密钥)。
注意 因为在连麦/PK过程中,观众端还是需要正常观看CDN流,所以需要进入 CDN 观看配置页,开启旁路推流,推荐全局自动旁路。
2. 组件登录
因为 PK
服务,需要主播间相互通信,所以需要进行单独登录,登录流程如下:
TUILogin.init(this, "您的SDKAppId", config, new V2TIMSDKListener() { @Override public void onKickedOffline() { // 登录被踢下线通知(示例:账号在其他设备登录) } @Override public void onUserSigExpired() { // userSig过期通知 } }); TUILogin.login("您的userId", "您的userSig", new V2TIMCallback() { @Override public void onError(int code, String msg) { Log.d(TAG, "code: " + code + " msg:" + msg); } @Override public void onSuccess() { } });
登录组件参数说明:SDKAppID:即服务开通中记录到的 SDKAppID 信息。SECRETKEY: 即服务开通中记录到的 SECRETKEY(密钥)。userId:当前用户的 ID,字符串类型,长度不超过32字节,不支持使用特殊字符,建议使用英文或数字,可结合业务实际账号体系自行设置。userSig:根据 SDKAppId、userId,SECRETKEY 等信息计算得到的安全保护签名,您可以单击 这里 直接在线生成一个调试的 UserSig,也可以参照我们的 示例工程 自行计算,更多信息请参见 如何计算及使用 UserSig。3. 开始推流
基于 RTC
协议的推流 URL
的生成,可以参考 示例工程 中封装好的 Utils 方法,基本示例如下,具体参数信息请参见 推拉流 URL。
mTUIPusherView.start(String url);
4. 停止推流
mTUIPusherView.stop();
5. 发起 PK 请求
调用 mTUIPusherView.sendPKRequest()
后会向接收方发起 Pk 请求,请求超时发送方设置的 mTUIPusherView.setTUIPusherViewListener
回调中, onPKTimeout
回调会收到超时通知。
mTUIPusherView.sendPKRequest(String userId);
public void onPKTimeout(TUIPusherView pusherView) { Toast.makeText(mContext, "PK request timed out", Toast.LENGTH_SHORT).show();}
6. 接受 PK 请求
接收方设置的 mTUIPusherView.setTUIPusherViewListener
回调中,onReceivePKRequest
回调会通知接收方收到 PK 请求,可在此回调中处理 PK 请求。
public void onReceivePKRequest(TUIPusherView pushView, String userId, ResponseCallback callback) { showPKDialog(userId, callback);}
private void showPKDialog(String userId, final TUIPusherViewListener.ResponseCallback callback) {if (mPKDialog == null) { final TextView textView = new TextView(this); textView.setText(userId + “invited linkMic”)); mPKDialog = new AlertDialog.Builder(this, R.style.PKDialogTheme) .setView(textView) .setPositiveButton("confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { callback.response(true); } }) .setNegativeButton("cacel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { callback.response(false); } }).create();}mPKDialog.show();}
步骤五:无互动直播推流
如果您的应用中无连麦或 PK
等互动场景,可以选择标准的 RMTP
协议进行推流,具体步骤如下:开始推流
基于 RTMP 推流 URL 的生成,可以参考 示例工程 中封装好的 Utils 方法,基本规则如下图,具体参数信息请参见 推拉流 URL。
mTUIPusherView.start(String url);
停止推流
mTUIPusherView.stop();
交流&反馈
更多帮助信息,详情请参见 TUI 场景化解决方案常见问题。欢迎加入 QQ 群:592465424,进行技术交流和反馈。
对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?