news 2026/8/7 6:47:08

使用国产的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/8/7 2:19:48

线性代数:多维世界的变形工具箱

线性代数这仨字,一听就很“大学数学课本味儿”: 上课:黑板上全是矩阵、行列式、特征值 λ下课:作业里全是高斯消元、求逆矩阵考试:背公式 套套路,心想“我以后真的会用到这玩意儿吗?” 但你要是…

作者头像 李华
网站建设 2026/8/7 4:36:27

力扣题目142. 环形链表 II​的解法分享,附图解

题目: Problem: 142. 环形链表 II图解: 思路: 设两个指针fast和slow,fast每次走2步,slow每次走1步 设n为fast比slow多走的圈数 当相遇的时候根据fast和slow的步数关系: 2(xy)xy&…

作者头像 李华
网站建设 2026/8/7 0:40:23

MATLAB电力系统继电保护之自动重合闸

MATLAB电力系统继电保护自动重合闸在电力系统的运行维护中,继电保护里的自动重合闸功能可是相当关键。今天就来唠唠基于MATLAB实现电力系统继电保护自动重合闸。 什么是自动重合闸 自动重合闸装置,简而言之,就是当电力系统故障导致线路断路器…

作者头像 李华
网站建设 2026/8/7 22:03:49

10 个AI写作工具,助你轻松搞定继续教育论文!

10 个AI写作工具,助你轻松搞定继续教育论文! AI 工具如何让论文写作更轻松? 在继续教育的道路上,撰写论文是许多学员必须面对的挑战。尤其是在当前 AIGC 技术广泛应用的背景下,如何既保证论文内容的原创性,…

作者头像 李华
网站建设 2026/8/7 2:38:35

【开题答辩全过程】以 基于Vue的茶道知识科普网站的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华