播放流程:获取流 → 解码 → 播放录制播放路程:录制音频视频 → 剪辑 → 编码 → 上传服务器,别人播放直播过程:采集 → 处理 → 编码 → 推流 → CDN分发 → 拉流 → 解码 → 播放
①直播常见的协议有三种:RTMP、FLV和 HLS。
直播协议 | 传输方式 | 优点 | 缺点 | 播放延迟 |
---|---|---|---|---|
RTMP | TCP | 能推能播,延迟低 | 高并发情况下不佳 | 1~3s |
FLV | HTTP | 成熟度高,延迟低,手机app游戏直播首选 | 必须要用app播放 | 2~3s |
HLS | HTTP | 手机浏览器支持度高 | 延迟非常高 | 10~30s |
RTP | TCP/UDP | 实时 | 实时 | 实时 |
②常见的点播协议也有三种:MP4、HLS和FLV。
点播协议 | 优点 | 缺点 |
---|---|---|
MP4 | 手机浏览器支持度高 | 格式过于复杂和娇贵,容错率差,对播放器要求高 |
HLS | 手机浏览器支持度高 | 大量小分片的文件组织形式,错误率和维护成本均高于单一文件 |
FLV | 格式简单问题少 | 手机浏览器支持差 |
③常见的推流协议:虽然RTMP在直播领域不是特别流行,但是在推流服务,也就是主播->服务器这个方向上,RTMP则居于主导地位,目前国内的视频云服务都是以RTMP为主要推流协议。
腾讯提供了集成librart方式,但是有好几个版本类型的sdk,我打算把视频推流,直播,点播,短视频都写下,所以我下载全功能专业版。下载完解压之后:
文件名 | 说明 |
---|---|
LiteAVSDK_Professional_4.6.4218.aar | 适用于 Android Studio 用户 |
LiteAVSDK_Professional_4.6.4218.zip | 适用于 Eclipse 用户 |
这里我们选择第一个aar包,放到AS中 /app/libs 目录下在工程 app 目录下的 build.gradle 中,添加引用aar包
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// 导入腾讯云直播 SDK jar
compile(name: 'LiteAVSDK_Professional_4.6.4218', ext: 'aar')
}
在工程目录下的 build.gradle 中,添加 flatDir,指定本地仓库:
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
在工程目录下的 build.gradle 的 defaultConfig 里面,指定 ndk 兼容的架构:
defaultConfig {
...
ndk {
abiFilters "armeabi", "armeabi-v7a"
// 如果您使用的是商业版,只能使用 armeabi 架构,即:
// abiFilters "armeabi",
}
}
然后编译下工程
集成之后,记得添加权限,这里不加了,自行去腾讯官网添加
测试下是否集成成功,在Activity添加:
String versionStr = TXLiveBase.getSDKVersionStr();
Log.d("zjp", "versinoStr=" + versionStr);
运行之后在 logcat 中看到当前sdk版本为:4.6.4218,跟我们上面集成的sdk版本一样,说明集成sdk成功。