FFmpeg笔记九十二,Kotlin Android推流器StreamPack如何为?

摘要:​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,
​《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工程。
阅读全文