当前位置: 首页 > 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节点补充下面三行权限配置,表示声明网络、录音、相机等三个权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />

三、直接导入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安装到真机上,启动后的初始界面如下图所示:

streampack1

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

streampack2

这里要修改以下四个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推流,开始推流的预览界面如下图所示。

streampack3

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

streampack4

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

streampack5

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

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

http://www.jsqmd.com/news/65155/

相关文章:

  • 20251206 - 并查集
  • Microsoft Visual Studio 2010 TFS强制解除签出
  • HTTP/2在EDI领域中的优势:构建高效、安全、现代化的数据交换基石 - 详解
  • Springboot智慧旅游管理系统6w63eon8(软件+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • why Picograph can not learn English by translator
  • 【EF Core】“DB First”方案下用编程方式生成数据库模型代码
  • 面向AI时代的操作系统:openEuler在WSL环境下的高效开发实践
  • cursor
  • 树的重心及dfs
  • 详细介绍:如何进行AI作图(架构图,流程图等)
  • 2025年进口地板十大品牌综合实力榜:聚焦高端家居与智能化未来
  • openEuler 软件生态多元适配评测:分布式存储与大数据组件实战验证
  • 2025 最新机器视觉检测服务商 / 厂家 TOP5 评测!智能检测赋能制造升级,权威榜单助力企业选型,智慧工厂设计、建设及管理解决方案
  • 短视频矩阵架构搭建指南:源码部署与全流程解析
  • 2025年中国五大铝氧化着色生产企业推荐,看哪家工艺水平高
  • 2025年12月中国GEO服务商综合推荐分析:摘星AI引领全球
  • 揭秘WAAP:现代Web应用与API保护的四大核心安全支柱
  • Java基础学习知识点笔记
  • 深入解析:从阿里云大模型服务平台百炼看AI应用集成与实践
  • 完整教程:Docker学习笔记---day001
  • AI搜索排名优化公司推荐:解锁智能时代曝光与转化新密码
  • 2025年中国气力输送厂五大推荐,看哪家技术实力强
  • 2025年国内GEO(AI搜索优化)营销公司推荐排行榜分析:摘星ai引领行业智造
  • 在 S2S 场景中理解 On-Behalf-Of (OBO) 流程
  • 2025 年 12 月苏作红木家具品牌匠心推荐榜:东方雅韵与传世工艺的收藏级甄选
  • .NET Core WebAPI 中使用 MISE + S2S 的三种方式
  • NetCore使用WCF简单方式
  • 2025年无锡上料机靠谱厂家推荐:看哪家技术实力强?
  • 2025年度靠谱的实验室反应釜厂家TOP5权威推荐
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤+计算机专业