news 2026/4/23 9:57:21

使用国产的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/4/22 15:17:25

10 个AI论文工具,助本科生轻松写完毕业论文!

10 个AI论文工具,助本科生轻松写完毕业论文! AI 工具如何让论文写作变得轻松高效 在当今信息爆炸的时代,高校学生尤其是本科生,面对毕业论文的撰写任务时常常感到无从下手。无论是选题、资料收集,还是撰写初稿、修改润…

作者头像 李华
网站建设 2026/4/18 7:15:57

qt5之实现一个视频播放器(亲测好用)

#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMainWindow> #include <QMediaPlayer> #include <QVideoWidget> #include <QSlider> #include <QPushButton> <

作者头像 李华
网站建设 2026/4/21 11:00:21

【课程设计/毕业设计】基于springboot的在线考试系统的设计与实现考试评分管理,试卷管理【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/4/13 6:30:22

【计算机毕业设计案例】基于springboot的云与糖蛋糕购物平台系统的设计与实现烘焙行业线上线下融合、个性化定制服务(程序+文档+讲解+定制)

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

作者头像 李华
网站建设 2026/4/12 12:36:16

【毕业设计】基于springboot的云与糖蛋糕购物平台系统的设计与实现(源码+文档+远程调试,全bao定制等)

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

作者头像 李华