Android技术分享| anyLive 开源项目
简介
anyLive 是开源的推拉流项目,本项目采用跨平台架构设计,一套代码支持Android、iOS、Windows、Mac、Ubuntu等平台。本文主要介绍 anyLive Android 平台的实现。
此项目中包含对 JNI 的使用,WebRTC Native 的实践,音视频编解码的相关实现。
功能特性
- 推流
- 拉流
- 屏幕共享
- 图片推流
- 基于GPUImage的实时滤镜
- 音视频采集编解码方面基于 WebRTC-93、 ffmpeg4.3
- 音视频自采集自渲染
- 等
Demo展示
项目源码
编译注意事项
使用 AndroidStudio 打开之前,需要下载 webRTC,ffmpeg库。
下载地址:👉Lib
下载解压缩后将lib文件夹移至:liveplayer/src/main/cpp 目录下即可
请使用 NDK 版本:20.0.5594570 编译,否则可能会出现各种错误🙅
API调用
ArLiveEngine
创建引擎
//用于创建播放器、推流器
val liveEngine = ArLiveEngine.create(context:Context)
释放引擎
ArLiveEngine.release()
创建推流器
liveEngine.createArLivePusher()
创建播放器
liveEngine.createArLivePlayer()
ArLivePusher
设置推流器回调
void setObserver(ArLivePusherObserver observer)
设置本地摄像头预览 View
int setRenderView(TextureViewRenderer view)
打开摄像头
int startCamera(boolean frontCamera)
开始推流
int startPush(String url)
更多方法请参考 ArLivePusher 类注释
ArLivePlayer
设置播放器器回调
void setObserver(ArLivePlayerObserver observer)
设置播放器的视频渲染 View
int setRenderView(TextureViewRenderer view)
开始播放
int startPlay(String url)
更多方法请参考 ArLivePusher 类注释
- Android技术分享| ViewPager2离屏加载,实现抖音上下视频滑动
- Android技术分享| Activity 过渡动画 — 让切换更加炫酷
- Linux下玩转nginx系列(七)---nginx如何实现限流功能
- 技术分享| 如何部署安装分布式序列号生成器系统
- web技术分享| 【地图】实现自定义的轨迹回放
- 解决方案| 快对讲综合调度系统
- 实时消息RTM| 多活架构中的数据一致性问题
- Android技术分享| Context浅析
- Android技术分享| Context浅析
- 屏幕共享的实现与应用
- 技术分析| 即时通讯和实时通讯的区别
- IOS技术分享| ARCallPlus 开源项目(二)
- Android技术分享| Android 中部分内存泄漏示例及解决方案
- Android技术分享| 安卓3行代码,实现整套音视频通话功能
- 行业分析| 快对讲Poc方案的优势
- Android技术分享|【自定义View】实现Material Design的Loading效果
- IOS技术分享| ARCallPlus 开源项目(一)
- web技术分享| WebRTC控制摄像机平移、倾斜和缩放
- Android技术分享| anyLive 开源项目
- Android技术分享| 【Android 自定义View】多人视频通话控件