news 2026/2/7 16:30:17

使用国产的librestreaming实现RTMP直播

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用国产的librestreaming实现RTMP直播

Fmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。可是在此之前,得先有一个推流工具向MediaMTX推送视频流,这样末端的拉流程序才能从MediaMTX源源不断地拉取视频流。那么Android手机可使用librestreaming从摄像头实时采集视频信号,并向后端的MediaMTX持续推送视频数据。

librestreaming是一款基于Android的实时滤镜RTMP推流库,它使用MediaCodec API进行视频和音频编码,并使用librtmp库执行rtmp流式传输。此外,librestreaming还提供了在摄像头捕捉阶段之后和编码阶段之前实时视频滤镜的功能。

librestreaming的源码托管地址为https://github.com/lakeinchina/librestreaming(星星数1.0k),国内的镜像地址为https://gitee.com/mirrors/librestreaming,该框架的最后更新时间为2020年8月,并支持到Android 7.0。虽然librestreaming很久没有更新了,但其源码功能完备、代码也不太难,具有很高的学习和研究价值。

由于librestreaming源码的更新时间较早,为了让小海豚版本的Android Studio Dolphin能够打开它的范例工程,需要对librestreaming的App工程作如下修改:

一、补充gradle目录

下载完的librestreaming源码包缺少gradle目录,不能被Android Studio直接打开,需要先把其他App项目的gradle目录整个复制过来,并且打开gradle/gradle-wrapper.properties,把distributionUrl这行配置改成下面这样,表示使用6.7.1版本的Gradle

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

二、更新工具库的仓库位置

打开librestreaming工程的build.gradle,把里面的两处配置

jcenter()

google()

都改为以下配置:

// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件

maven { url 'https://maven.aliyun.com/repository/jcenter' }

maven { url 'https://maven.aliyun.com/repository/google'}

maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}

maven { url 'https://maven.aliyun.com/repository/public'}

google()

mavenCentral()

因为jcenter仓库已经废弃,所以改成引用国内的仓库位置。

三、修改模块的build.gradle

打开sample/build.gradle,先把“renderscriptTargetApi 20”这行注释,再把两处“JavaVersion.VERSION_1_7”改为“JavaVersion.VERSION_1_8”,以便适配对应的Gradle版本。

如果不这么改的话,Gradle构建时会报错“Failed to calculate the value of task ':librestreaming:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.”

四、把Support库迁移到AndroidX

librestreaming工程引用了支持库Support v27,但Android早已废弃Support库,转为使用AndroidX库,所以需要把支持库迁移到AndroidX。在Android Studio Dolphin的主界面依次选择顶部菜单“Refactor”→“Migrate to AndroidX”,即可将App工程的Support库迁移到AndroidX库。

完成以上三处修改后,重新编译App安装到真机上,启动后的推流配置界面如下图所示:

librestreaming1

可见在推流之前,得先输入流媒体服务器的推流地址。为此按照《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”说明,在电脑上启动MediaMTX,并通过命令“ipconfig /all”找到电脑位于WiFi的局域网IP。

确保手机和电脑连接了同一个WiFi,再往librestreaming的App配置界面填上MediaMTX的完整推流地址如“rtmp://192.168.*.*:1935/stream”,接着点击START按钮,打开推流预览界面如下图所示。

librestreaming2

点击左上角的START按钮可开始推流,点击SWAP按钮可切换前后摄像头,点击FLASH按钮可开关闪光灯。那么点击START按钮开始推流,librestreaming就把摄像头采集到的视频数据向MediaMTX推流。

然后电脑打开VLC media player,依次选择菜单:媒体→打开网络串流,在弹窗的URL栏输入对应的MediaMTX拉流地址“rtmp://192.168.*.*:1935/stream”如下图所示。

librestreaming3

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

librestreaming4

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 5:44:52

计算机Java毕设实战-基于springboot的闲置资产管理系统的设计与实现基于SpringBoot的闲置固定资产管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/3 4:13:56

锐捷RCIE | MPLS V*N跨域互通 OptionA方案

一、域间MPLS VPN技术 域间MPLS/VPN技术的应用场景 同一VPN的不同CE设备接入不同的运营商,分属于不同的AS号,此时PE之间无法直接建立IBGP邻居,传统的MPLS VPN技术无法适配。 通过在两个ASBR之间采用相关技术,使得同一VPN内用户能够实现跨AS的MPLS/VPN互相访问,所使用的相…

作者头像 李华
网站建设 2026/2/5 9:37:56

探索微流体芯片中的两相流:Comsol多物理场仿真之旅

微流体芯片,两相流 ,微流体控制仿真comsol多物理场 在微观世界里,微流体芯片技术正以其独特的魅力,在生物医学、化学分析等众多领域掀起变革的浪潮。其中,两相流现象在微流体芯片中扮演着至关重要的角色,而…

作者头像 李华
网站建设 2026/2/3 23:08:06

写论文软件哪个好?虎贲等考 AI:毕业论文创作的 “全能通关神器”

毕业季来临,AI 写论文工具成为学生群体的 “刚需”。市面上各类工具层出不穷,宣称能一键搞定论文、轻松通过查重,但实际体验却参差不齐。为了帮大家避开雷区,我们挑选了 5 款主流 AI 写论文工具(虎贲等考 AI、WPS AI、…

作者头像 李华