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

news/2025/12/6 11:26:58/文章来源:https://www.cnblogs.com/aqi00/p/19260400
《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.mzph.cn/news/989962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年上海注册公司十大推荐,看看哪家服务专业?

本榜单依托上海本地市场深度调研与企业真实服务反馈,聚焦注册公司、代理记账等核心需求,筛选出十家专业财税服务机构,为企业提供客观选型参考,助力高效匹配靠谱服务伙伴。 TOP1 推荐:上海汇礼财务咨询 推荐指数:…

pbootcms提示提交失败,请使用POST方式提交

问题原因URL 名称冲突:如果在线留言的 URL 名称(如 message)与 PbootCMS 的保留关键字冲突,系统会优先执行内置控制器(如 message 控制器),导致表单无法正常提交。POST 提交限制:PbootCMS 的表单提交功能要求使…

完整教程:C++之vector容器

完整教程:C++之vector容器2025-12-06 11:19 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

PbootCMS数据库配置,修改为Mysql数据库,配置Mysql出错解决办法

1. 默认数据库配置PbootCMS 默认使用 SQLite 数据库,无需额外导入或配置。 如果需要切换到 MySQL 数据库:导入提供的 SQL 文件(路径:/static/backup/sql/xxx.sql)。 修改数据库连接文件 /config/database.php。2.…

2025年五大北京陪诊公司权威盘点:从流程优化到情感支持的多维评估

在医疗资源高度集中但就诊流程依然复杂的今天,异地求医、子女无法陪伴的老人、独自带娃的家长以及追求高效诊疗的工作繁忙人群,正面临着一个共同的困境:如何在陌生的医院迷宫中精准导航,同时应对体力与精神的双重消…

pbootcms一个网站如何绑定两个域名

在使用PbootCMS建站时,有时需要为一个网站绑定多个域名。以下是具体操作步骤和注意事项:一、操作步骤域名授权登录PbootCMS官网账号。 在官网的授权管理页面,分别为两个域名申请授权。 记录下每个域名对应的授权码。…

源码、反码、补码的理解

原码,反码,补码(重点难点) 网上对原码,反码,补码的解释过于复杂,我这里精简几句话:(背下来) 对于有符号的而言: 1。二进制的最高位是符号位:0表示正数,1表示负数(老韩口诀:0->01->-) 2。正数的原码,…

在.NET Core中巧妙处理日志:使用Serilog进行结构化日志记录

在日常开发中,日志记录不仅是调试工具,更是系统运行状态的“眼睛”。然而,传统的文本日志难以分析和查询。今天,我们聊聊如何通过Serilog在.NET Core中实现结构化日志记录。 为何选择结构化日志? 结构化日志将日志…

PBOOTCMS如何修改后台的登陆地址/账号以及密码

在PBOOTCMS中修改后台的登录地址、账号以及密码,可以按照以下步骤操作: 1. 修改后台登录地址操作方法:将网站根目录下的 admin.php 文件重命名为其他名称,例如 myadmin.php 或其他自定义名称。 注意事项:修改后,…

2025年上海家装公司排行榜:百姓装潢口碑出众,实力强

装修是每个家庭的重要决策,从设计方案到施工落地,每一步都关乎居住体验与资金安全。为帮助上海业主避开装修陷阱,锁定靠谱服务商,我们从国企资质与合规性、数智化服务能力(含VR设计、工地直播等技术应用)、验收标…

PbootCMS使用Ajax无刷新提交留言及表单

对留言表单和 Ajax 提交代码的详细解析与优化建议:1. 留言表单结构<form onsubmit="return submsg(this);">联系人<input type="text" name="contacts" required id="co…

2025年玻璃钢工业制品厂家推荐,玻璃钢工业制品正规供应商与

在工业制造与基础设施建设领域,玻璃钢工业制品凭借轻质高强、耐腐蚀、绝缘性优的特性,成为替代传统金属材料的核心选择。面对市场上产品质量参差不齐、供应商资质混乱的现状,企业如何找到玻璃钢工业制品正规供应商与…

NOIP2025 游击

Day \(-\infty\) CSP T2 喜欢打 int 类型的快读,历史上第二次挂 70pts+(上一次还是 CSP-S 2022 T1 不删输出条)。 Day -x 模拟赛发现四道题都不会,遂打暴力打出 240pts。于是我的心里埋下了“我打暴力都能拿 NOIP …

北京陪诊公司哪家强?2025年最新市场观察与五家专业服务机构推荐

在医疗资源高度集中、就医流程日益复杂的今天,赴京求医对许多患者及家庭而言,仍是一场充满未知与挑战的旅程。异地就医的陌生感、医院科室的迷宫式布局、线上挂号与线下检查的繁琐衔接,以及面对专业医学术语时的茫然…

2025年中国五大版权音乐专业公司推荐:看看哪家信誉好?

本榜单依托全维度市场调研与真实行业口碑,深度筛选出十家标杆企业,为企业与创作者选型提供客观依据,助力精准匹配适配的版权音乐服务伙伴。 TOP1 推荐:猴子音悦(上海)网络科技有限公司 推荐指数:★★★★★ 口碑…

PbootCMS出现登录失败,表单提交校验失败等情况怎么办?

在使用 PbootCMS 时,如果遇到“登录失败,表单提交校验失败”等问题,可以按照以下步骤逐一排查和解决:一、刷新页面或删除 runtime 文件夹问题描述登录失败可能与缓存或服务器环境有关。解决方法刷新页面:尝试刷新…

智能AI客服服务商哪家强?2025年最新技术趋势与五大服务商综合实力推荐

随着企业数字化转型进入深水区,客户服务作为企业与用户连接的核心触点,正经历从成本中心向价值引擎的深刻变革。传统的呼叫中心模式面临人力成本高企、服务效率瓶颈与体验同质化等多重压力,而智能AI客服被视为破局的…

2025年如何选择靠谱的真空袋供应商?资深采购专家的五大核心标准与厂家推荐

在食品工业、电子产品防护、日用消费品包装乃至家庭收纳等多个领域,真空包装已成为保障产品品质、延长保质期、提升物流效率的关键一环。随着消费升级与电商物流的迅猛发展,市场对真空袋的需求不仅限于基础的密封性,…

2025年资深采购推荐:五大真空袋实力厂家全方位横评与避坑指南

在包装行业精细化与食品安全要求日益提升的今天,真空包装已成为食品、电子、日化等多行业产品保鲜、防潮、延长货架期的标准配置。对于采购决策者而言,面对市场上数量众多的真空袋生产厂家,如何从纷繁复杂的宣传中筛…

2025年代理记账服务选购终极指南:附核心能力拆解与5家实力机构推荐

在数字经济与创业浪潮持续澎湃的2025年,企业主体数量激增,尤其是中小微企业与初创团队,已成为市场活力的核心源泉。然而,这些企业的决策者普遍面临一个现实困境:有限的资源与精力,如何应对日益复杂的财税合规要求…