当前位置: 首页 > news >正文

FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder

《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。

distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip

2、修改AGP插件版本

使用Android Studio导入RootEncoder工程之后,Gradle会报错“The project is using an incompatible version (AGP 8.13.0) of the Android Gradle plugin. Latest supported version is AGP 8.7.2”。这是因为RootEncoder工程用到的Gradle插件版本8.13.0太高了,需要降级降到8.7.2。于是打开RootEncoder/gradle/libs.versions.toml,把下面这行

agp = "8.13.0"

改为下面这行,也就是把agp版本号从8.13.0降到8.7.2。

agp = "8.7.2"

3、调整默认的JDK版本

在Android Studio主界面依次选择菜单:File→Settings→Build,Execution,Deployment→Build Tools→Gradle,把Gradle JDK栏的版本调整为JDK17。
因为Android Studio Ladybug自带的JDK版本为21,在编译时会报错:“Java compiler version 21 has deprecated support for compiling with source/target version 8.”。

四、运行RootEncoder的DEMO工程

完成以上几处配置调整后,重新编译App安装到真机上,启动后的初始界面如下图所示:

RootEncoder1

点击左上角的【Old API】按钮,打开推流界面如下图所示:

RootEncoder2

可见在推流之前,得先输入流媒体服务器的推流地址。为此按照《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  FFmpeg向网络推流”说明,在电脑上启动MediaMTX,并通过命令“ipconfig /all”找到电脑位于WiFi的局域网IP。
确保手机和电脑连接了同一个WiFi,再往RootEncoder的推流界面上方填写MediaMTX的完整推流地址如“rtmp://192.168.*.*:1935/stream”,接着点击界面下方中央的直播按钮,开始推流动作的界面如下图所示。

RootEncoder3

再次点击直播按钮可停止推流,点击左下角的录制按钮可录制视频,点击右下角的切换按钮可切换前后摄像头。那么点击直播按钮开始推流,RootEncoder就把摄像头采集到的视频数据向MediaMTX推流。
然后电脑打开VLC media player,依次选择菜单:媒体→打开网络串流,在弹窗的URL栏输入对应的MediaMTX拉流地址“rtmp://192.168.*.*:1935/stream”如下图所示。

RootEncoder4

确认输入无误后,单击右下角的播放按钮,此时VLC media player就自动播放来自拉流地址的视频画面如下图所示。

RootEncoder5

对比RootEncoder的推流预览界面和VLC media player的拉流播放界面,可知手机摄像头采集到的视频信号正确传送给了电脑。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

http://www.gsyq.cn/news/74351.html

相关文章:

  • 源码、反码、补码的理解
  • 北京陪诊公司哪家强?2025年最新市场观察与五家专业服务机构推荐
  • 深入解析:关于 reGeorg
  • 淡化黑眼圈细纹哪款眼霜好?25年高口碑抗皱眼霜产品推荐,25-25岁适配
  • 2025年资深包装工程师推荐:当前最值得合作的五大真空袋厂家综合评估报告
  • 小户型油烟机怎么选不踩坑?2025年最新避坑指南及五大高适配型号良心推荐
  • 2025年资深行业顾问推荐:认证开创者领域两大标杆机构全方位对比
  • 市场地位认证机构哪家强?2025年最新专业评测及两大核心服务商推荐
  • 厦门代理记账公司哪家好?5家厦门代理记账公司综合测评
  • 在天津市宝坻区老家农村盖房子,靠谱的自建房公司口碑推荐。天津市宝坻区自建房公司/机构权威测评推荐排行榜
  • 想在大厂县老家农村盖房子,靠谱的自建房公司口碑推荐。河北廊坊大厂县自建房公司 / 机构权威测评推荐排行榜​
  • 在河北保定市唐县老家农村盖房子,自建房公司找谁好?唐县自建房公司权威测评推荐排行榜
  • SQLServer中查询各表的记录数
  • 实用指南:LangChain完整教程:六大组件+分层设计+完整项目实战
  • 2025年信息化基础设施维护服务机构排行,信息化基础设施维护
  • python在windows下以字符串形式写入文件时,会自动将\n转成\r\rn
  • 最大子列和第三种方法有感
  • Trae 实践:从原型图到可执行 HTML 的 AI 编程实现 - 指南
  • 2025年度不锈钢凸轮式转子泵权威排名:铸铁凸轮式转子泵哪家
  • 2025年12月高低温试验箱,恒温恒湿试验箱厂家最新推荐:设备运行噪音测评与品牌介绍
  • 大兴区农村自建房找谁好?北京市大兴区自建房公司/机构深度评测口碑推荐榜。
  • 2025年北京现代化办公家具十大靠谱品牌推荐:含现代化办公茶
  • 2025年12月恒温恒湿试验箱,高低温试验箱厂家最新推荐:科研实验适配性与选择指南
  • 天津短视频拍摄出品厂哪家合作案例多?哪家服务性价比高?
  • 2025年度泵业设备品牌排行榜:拉法泵业市场口碑怎样?
  • 家装公司怎么选才能不踩坑?2025年最新市场洞察与系统化避坑指南
  • 2025年靠谱的316l金属波纹管厂家最新TOP排行榜
  • AI 全域营销天花板!这家浙江企业,帮上千家公司打通国内外增长快车道
  • 2025年逆流闭式冷却塔五大靠谱供应商推荐,来图定制与制造企
  • 2025年热门的云南泡沫包装箱/昆明泡沫包装箱厂家选购指南与推荐