騰訊直播
文檔修訂記錄
版本號(hào) | 發(fā)布時(shí)間 | 作者 |備注
----|----|----|----|----
1.0.0|2019/04/15 |余輝|初版
目標(biāo)讀者
1.移動(dòng)開(kāi)發(fā)人員
移動(dòng)直播
基于RTMP 快速集成移動(dòng)直播
集成過(guò)程
1.導(dǎo)入SDK
SDK 下載地址:
https://cloud.tencent.com/document/product/454/7873
下載對(duì)應(yīng)的SDK導(dǎo)入工程并引用
2.工程配置
在工程目錄下的 build.gradle 的 defaultConfig 里面,指定 ndk 兼容的架構(gòu):
defaultConfig {
applicationId "com.tencent.liteav.demo"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "2.0"
ndk {
abiFilters "armeabi", "armeabi-v7a"
// 如果您使用的是商業(yè)版递礼,只能使用 armeabi 架構(gòu)鹦牛,即:
// abiFilters "armeabi",
}
}
3.代碼混淆
-keep class com.tencent.** { *; }
4.配置 APP 權(quán)限
在 AndroidManifest.xml 中配置 APP 的權(quán)限,音視頻類(lèi) APP 一般需要以下權(quán)限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.Camera"/>
<uses-feature android:name="android.hardware.camera.autofocus" />
5.SDK使用
public class LivePlayer extends FrmBaseActivity {
TXLivePlayer mLivePlayer;
TXCloudVideoView mView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLayout(R.layout.tbd_liveplayer);
//mPlayerView 即 step1 中添加的界面 view
mView = (TXCloudVideoView)findViewById(R.id.video_view);
//創(chuàng)建 player 對(duì)象
mLivePlayer = new TXLivePlayer(getActivity());
//關(guān)鍵 player 對(duì)象與界面 view
mLivePlayer.setPlayerView(mView);
String flvUrl = getIntent().getExtras().get("url").toString();
mLivePlayer.startPlay(flvUrl, TXLivePlayer.PLAY_TYPE_LIVE_FLV); //推薦 FLV
}
@Override
protected void onDestroy() {
super.onDestroy();
mLivePlayer.stopPlay(true); // true 代表清除最后一幀畫(huà)面
mView.onDestroy();
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tencent.rtmp.ui.TXCloudVideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
</android.support.constraint.ConstraintLayout>
互動(dòng)直播
文檔中心 互動(dòng)直播 產(chǎn)品簡(jiǎn)介 互動(dòng)直播介紹
什么是互動(dòng)直播
互動(dòng)直播(Interactive Live Video Broadcasting)钙皮,顧名思義蜂科,是 多路音視頻實(shí)時(shí)互動(dòng) 解決方案,查看典型場(chǎng)景實(shí)例短条。
- 與普通的單向直播相比导匣,賦予了觀眾“露臉發(fā)聲”的權(quán)利,因此對(duì)實(shí)時(shí)性茸时、抗回聲的要求更高贡定。
- 開(kāi)發(fā)者通過(guò)接入互動(dòng)直播 SDK,可構(gòu)建 1 對(duì) 1可都、1 對(duì)多缓待、多對(duì)多的音視頻通信,擁有與 QQ 音視頻渠牲、一樣卓越的通信質(zhì)量旋炒。
- 互動(dòng)直播房間可支持最多 10 路連麥視頻、不限路數(shù)純音頻(一般移動(dòng)設(shè)備的性能可完美支持 6~8 路視頻)的多人直播签杈,同一房間最高支持** 100 萬(wàn)**人并發(fā)瘫镇,非常適合大規(guī)模秀場(chǎng)直播、視頻社交、在線教育铣除、遠(yuǎn)程咨詢谚咬、多機(jī)位在線媒體轉(zhuǎn)播等應(yīng)用領(lǐng)域。
價(jià)格總覽
詳細(xì)價(jià)格查看地址:
https://cloud.tencent.com/document/product/268/3166
互動(dòng)直播的費(fèi)用:由三部分組成通孽。
查看pdf
[必選]基礎(chǔ)網(wǎng)絡(luò)費(fèi)用——所有接入互動(dòng)直播的客戶都需要消耗的費(fèi)用序宦,參閱 基礎(chǔ)網(wǎng)絡(luò)費(fèi)用。
[可選]附加能力費(fèi)用——只有在開(kāi)通并使用了附加能力的情況下背苦,才會(huì)消耗費(fèi)用互捌,比如錄制、旁路直播等行剂,參閱 附加能力費(fèi)用秕噪。
[可選]技術(shù)支持費(fèi)用——用于支付專門(mén)技術(shù)服務(wù)、特殊資源支持等的費(fèi)用厚宰,需單獨(dú)協(xié)商開(kāi)通腌巾,參閱 技術(shù)支持費(fèi)用。
下載 Demo
目前在 GitHub 上提供了兩個(gè)示例:
- 隨心播 演示了包括界面和后臺(tái)交互的完整的直播流程铲觉。
- 簡(jiǎn)單直播 最簡(jiǎn)單的互動(dòng)直播示例澈蝙,演示了最關(guān)鍵的幾個(gè)接口的調(diào)用。
集成過(guò)程
1.導(dǎo)入SDK
api 'com.tencent.ilivesdk:ilivesdk:1.9.6'
2.工程配置
在工程目錄下的 build.gradle 的 defaultConfig 里面撵幽,指定 ndk 兼容的架構(gòu):
defaultConfig {
applicationId "com.tencent.liteav.demo"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "2.0"
ndk {
abiFilters "armeabi", "armeabi-v7a"
}
}
3.代碼混淆
-keep class com.tencent.**{*;}
-dontwarn com.tencent.**
-keep class tencent.**{*;}
-dontwarn tencent.**
-keep class qalsdk.**{*;}
-dontwarn qalsdk.**
5.SDK使用
a.SDK初始化
在工程中的Application中加入下面代碼
String appId="1400028096";//在騰訊云中創(chuàng)建應(yīng)用后獲取的SDK Appid
if(MsfSdkUtils.isMainProcess(this)){ // 僅在主線程初始化
// 初始化LiveSDK
ILiveSDK.getInstance().setCaptureMode(ILiveConstants.CAPTURE_MODE_SURFACETEXTURE);
ILiveLog.setLogLevel(ILiveLog.TILVBLogLevel.DEBUG);
ILiveSDK.getInstance().initSdk(this,appId);
ILiveRoomManager.getInstance().init(new ILiveRoomConfig()
.setRoomMsgListener(MessageObservable.getInstance()));
}
b.登錄
2種登錄方式 選擇其中一種進(jìn)行登錄
iLiveLogin 需要算出用戶的SIG用戶秘鑰
tlsLogin 直接用用戶名密碼即可以登錄
/**
* iLiveSDK 登錄(獨(dú)立模式下直接使用該接口灯荧,托管模式需先用tlsLogin登錄)
*
* @param id 用戶id
* @param sig 用戶密鑰
*/
ILiveLoginManager.getInstance().iLiveLogin(userID, usersig, new ILiveCallBack() {
@Override
public void onSuccess(Object data) {
callback.applySuccess();
}
@Override
public void onError(String module, int errCode, String errMsg) {
callback.applyFail(errCode+errMsg);
}
});
/**
* 以托管方式登錄TLS IM AV
* @param id
* @param pwd
* @param listener
*/
ILiveLoginManager.getInstance().tlsLoginAll(strAccount, strPwd, new ILiveCallBack() {
@Override
public void onSuccess(Object data) {
afterLogin();
}
@Override
public void onError(String module, int errCode, String errMsg) {
DlgMgr.showMsg(getContenxt(), "Login failed:"+module+"|"+errCode+"|"+errMsg);
}
});