FFmpeg笔记(九十一):Kotlin Android直播开源框架RootEncoder如何为?
摘要:《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSPRTMP等流媒体协议的推拉流。除了国产的推流工具librestreaming
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。除了国产的推流工具librestreaming能够向MediaMTX推送视频流之外,还有开源的RootEncoder也支持Android手机从摄像头实时采集视频信号,并向后端的MediaMTX持续推送视频数据。
一、RootEncoder简介
RootEncoder是一个视频流推送器,它的前身叫做rtmp-rtsp-stream-client-java,用于通过RTMP、RTSP和SRT等协议将音视频推送到流媒体服务器,该库的所有代码均使用Java和Kotlin编写。注意:在添加了SRT协议后,开源库的名称已从rtmp-rtsp-stream-client-java重命名为RootEncoder,以便和原来的开源库区分开。
RootEncoder的源码托管地址为https://github.com/pedroSG94/RootEncoder(星星数2.8k),国内的镜像地址为https://gitee.com/mirrors_pedroSG94/rtmp-rtsp-stream-client-java,最新版本是2025年10月发布的RootEncoder 2.6.5,可见该框架的源码更新十分及时,该版本的源码下载链接为https://github.com/pedroSG94/RootEncoder/archive/refs/tags/2.6.5.tar.gz。
RootEncoder主要支持RTSP和RTMP两种协议,还支持试用SRT和UDP两种协议。对于视频流,RootEncoder支持AV1、H264、H265等编码标准;对于音频流,RootEncoder支持G711、AAC、OPUS等编码标准。Android版本的RootEncoder支持camera1和camera2的两种API调用,且同时支持软件编码和硬件编码,可谓功能强大。
RootEncoder提供了两种APP集成方式:引用在线库、直接导入源码,分别说明如下:
二、引用RootEncoder在线库
Android工程引用RootEncoder在线库时,需要修改以下三个配置:
1、打开项目级别的build.gradle,或者settings.gradle,给repositories节点补充下面一行配置(注意有两个repositories,两个地方都要加),表示指定Maven仓库:
maven { url 'https://jitpack.io' }
2、打开模块级别的build.gradle,给dependencies节点补充下面几行配置,表示引入2.6.5版本的RootEncoder库:
implementation "com.github.pedroSG94.RootEncoder:library:2.6.5"
implementation "com.github.pedroSG94.RootEncoder:extra-sources:2.6.5"
3、打开App模块的src/main/AndroidManifest.xml,给manifest节点补充下面三行权限配置,表示声明网络、录音、相机等三个权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
三、直接导入RootEncoder源码
由于RootEncoder基于Kotlin编码,引入了最新的Android开发技术,因此需要使用较新的Android Studio才能成功导入运行。接下来以Android Studio Ladybug(小瓢虫版本)为例,介绍如何通过Android Studio编译运行RootEncoder的demo工程。
1、调整Gradle版本
打开RootEncoder/gradle/wrapper/gradle-wrapper.properties,把下面这行
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
改成下面这行,也就是把Gradle8.14.3降级到8.14。
