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

FFmpeg编写笔记(九十二)基于Kotlin的开源Android推流器StreamPack

《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2  FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,并且消除了卡帧、抖动等花屏现象。
因为SRT是个较新的直播协议,所以手机端支持SRT的开源框架比较稀有,比如本文介绍的StreamPack就是屈指可数的SRT开源推流APP。

一、StreamPack简介

StreamPack是一款适用于Android的开源直播流媒体库,既适合要求严格的视频推流厂商,也适合进阶Android的视频开发者。
StreamPack的源码托管地址为https://github.com/ThibaultBee/StreamPack(星星数0.3k),国内的镜像地址为https://gitee.com/zonda89/StreamPack,最新版本是2025年9月发布的StreamPack 3.0.0,可见该框架的源码更新十分及时,该版本的源码下载链接为https://github.com/ThibaultBee/StreamPack/archive/refs/tags/3.0.0.tar.gz。
StreamPack主要支持RTMP和SRT两种协议,视频编码支持HEVC/H.265、AVC/H.264、VP9或AV1等多种标准,音频编码支持AAC(LC、HE、HEv2)或Opus等多种标准。StreamPack的推留来源既可以是摄像头,也可以是屏幕录制器,还可以来自TS、FLV、MP4、WebM和分片MP4等格式的媒体文件。
StreamPack提供了两种APP集成方式:引用在线库、直接导入源码,分别说明如下:

二、引用StreamPack在线库

Android工程引用StreamPack在线库时,需要修改以下三个配置:
1、打开项目级别的build.gradle,或者settings.gradle,给repositories节点补充下面一行配置(注意有两个repositories,两个地方都要加),表示指定Maven仓库:

maven { url 'https://jitpack.io' }

2、打开模块级别的build.gradle,给dependencies节点补充下面几行配置,表示引入3.0.0版本的StreamPack库:

// StreamPack核心
implementation 'io.github.thibaultbee.streampack:streampack-core:3.0.0'
// StreamPack界面,主要用于推流预览
implementation 'io.github.thibaultbee.streampack:streampack-ui:3.0.0'
// StreamPack服务,主要用于屏幕录制
implementation 'io.github.thibaultbee.streampack:streampack-services:3.0.0'
// StreamPack的RTMP协议支持
implementation 'io.github.thibaultbee.streampack:streampack-rtmp:3.0.0'
// StreamPack的SRT协议支持
implementation 'io.github.thibaultbee.streampack:streampack-srt:3.0.0'

3、打开App模块的src/main/AndroidManifest.xml,给manifest节点补充下面三行权限配置,表示声明网络、录音、相机等三个权限:



三、直接导入StreamPack源码

由于StreamPack基于Kotlin编码,引入了最新的Android开发技术,因此需要使用较新的Android Studio才能成功导入运行。接下来以Android Studio Ladybug(小瓢虫版本)为例,介绍如何通过Android Studio编译运行StreamPack的demo工程。

1、调整Gradle版本

打开StreamPack/gradle/wrapper/gradle-wrapper.properties,把下面这行

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

改成下面这行,也就是把Gradle8.11.1升级级到8.14。

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

2、修改AGP插件版本

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

agp = "8.9.2"

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

agp = "8.7.2"

四、运行StreamPack的DEMO工程

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

注意首次使用StreamPack需要先配置SRT服务器信息,点击界面左上角的三点设置按钮,打开服务器设置页面如下所示。

这里要修改以下四个SRT服务器配置:
1、Endpoint区域的Type字段:点击后下拉选择“Stream to a remote SRT device”,表示采用SRT协议推流。
2、SRT Server区域的IP字段:填流媒体服务器的IP。
3、SRT Server区域的Port字段:填流媒体服务器对SRT协议的开放端口。比如MediaMTX默认的SRT端口号为8890。
4、SRT Server区域的Stream ID字段:填“publish:live”。
由于视频推流服务服务端配合,因此按照《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  FFmpeg向网络推流”说明,在电脑上启动MediaMTX,并通过命令“ipconfig /all”找到电脑位于WiFi的局域网IP,接着把StreamPack的流媒体服务器IP改为电脑位于WiFi的局域网IP。
确保手机和电脑连接了同一个WiFi,再点击StreamPack界面下方的START LIVE按钮,StreamPack就把摄像头采集到的视频数据向MediaMTX推流,开始推流的预览界面如下图所示。

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

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

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

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

本系列的FFmpeg进阶文章目录为《FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)》

http://www.rkmt.cn/news/147535.html

相关文章:

  • 2025年热门的陶瓷卫生瓷具工厂推荐:不错的陶瓷卫生瓷具工厂有哪些? - 工业品牌热点
  • 药物筛片平台哪家强?重磅公布2025-2026年药物筛选推荐品牌排行榜 - 品牌推荐大师1
  • 2025年环卫服务公司实力推荐:环卫承包公司/市政道路清扫/市政清洁公司一站式解决方案 - 品牌推荐官
  • 东方博宜OJ 2420:汉诺塔(4) ← 递归
  • 2025年知名的生涯规划设备/生涯规划模拟系统校园应用优选榜 - 品牌宣传支持者
  • 2025年12月陕西地弹门维修公司最新排名盘点:技术实力与本地化服务双维度测评 - 深度智识库
  • 香港服务器租用带宽类型全解
  • CodeSpirit .NET 10 升级说明
  • 【算法】day 19 leetcode 100 矩阵+贪心 - 详解
  • 北京顺义婚内财产协议律所推荐:2025-2026靠谱机构 TOP5 选择攻略 - 老周说教育
  • 【独家首发】cogagent Open-AutoGLM内部架构曝光,专家级调优策略首次公开
  • Knip - 一键清理项目无用代码
  • 你还在手动写脚本?Open-AutoGLM一键生成短视频内容的5个关键步骤
  • 2025年螺杆泵靠谱厂家推荐:螺杆泵专业供应商选择与个性化定制厂家选择指南 - mypinpai
  • 伊朗新闻数据集-33万+条波斯语新闻文本-涵盖社会政治经济国际多领域-完整标题摘要正文-支持NLP研究文本分析内容挖掘应用-2016至2022年期间的各类新闻内容-自然语言处理研究、跨文化传播分析
  • 2025年12月陕西幕墙安装公司最新推荐榜:含幕墙安装维修、雨棚更换、地弹门维修、窗户改造 - 深度智识库
  • 快排(非递归)和归并的实现
  • 保姆级2025网安学习路线:从零到专家,一份超详细避坑指南
  • 2025年引流获客工具推荐排行榜,新测评精选服务商推荐 - mypinpai
  • 2025年质量好的粘结钕铁硼塑磁转子TOP实力厂家推荐榜 - 品牌宣传支持者
  • 为什么顶级创作者都在用Open-AutoGLM?揭秘智能视频生成背后的黑科技
  • 错过cogagent Open-AutoGLM等于错过AI未来:3分钟看懂技术拐点
  • 计算机毕业设计springboot农村住宅房屋信息管理应用系统 基于Spring Boot的农村住宅信息管理系统设计与实现 Spring Boot框架下的农村房屋信息管理平台开发
  • 2025年白酒厂家实力推荐榜:纯粮食高梁酒/酱香型纯粮白酒/封坛老酒源头厂家精选 - 品牌推荐官
  • Open-AutoGLM设备需求曝光(稀缺配置清单):企业级部署不可忽视的5项硬指标
  • Amazon_Unlocked_Mobile_413840条_Amazon解锁手机用户评论数据集_品牌_价格_评分_评论文本_适用于情感分析与推荐系统_高覆盖率样本与详细字段统计_用户情感分析
  • 为什么顶级智能设备都在用Open-AutoGLM做语音唤醒?真相曝光
  • 揭秘cogagent与AutoGLM融合黑科技:实现真正自主任务执行
  • 【大模型落地关键一步】:Open-AutoGLM部署硬件选型避坑指南
  • 汽车智能体Agent:国务院“人工智能+”行动意见 对汽车智能体领域 革命性重塑