FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流

FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流

合集 - FFmpeg开发实战(46)

1.FFmpeg开发笔记(一)搭建Linux系统的开发环境2023-04-162.FFmpeg开发笔记(二)搭建Windows系统的开发环境2023-04-293.FFmpeg开发笔记(三)FFmpeg的可执行程序介绍03-094.FFmpeg开发笔记(四)FFmpeg的动态链接库介绍03-105.FFmpeg开发笔记(五)更新MSYS的密钥环03-166.FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码03-177.FFmpeg开发笔记(九)Linux交叉编译Android的x265库03-308.FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr03-319.FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr04-0510.FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg03-2311.FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库03-2412.FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx04-0613.FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx04-1314.FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存04-1415.FFmpeg开发笔记(十五)详解MediaMTX的推拉流04-2016.FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库04-2117.FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass04-2718.FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放05-0419.FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频05-0520.FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器05-1221.FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器05-1822.FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比05-1923.FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流05-2624.FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器05-2725.FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp06-0126.FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流06-0227.FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题06-0828.FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid06-0929.FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid06-1530.FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧06-1631.FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流06-2232.FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo06-2333.FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作06-2934.FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist06-3035.FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt07-0636.FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流07-0737.FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)06-1738.FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作07-1339.FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址07-1440.FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg07-2041.FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流07-2142.FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流07-2743.FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务07-2844.FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务08-0345.FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP08-04

46.FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流08-10

收起

​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。

相比之下,另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机的APP直播推流。

一、下载SRT Streamer

SRT Streamer采取全Kotlin编码,需要在Android Studio Jellyfish(小水母版本)上编译运行,并且依赖最新的JDK17,对运行环境与开发者的技能要求都比较高。博主花了好长时间才找到可用的SRT Streamer源码,如果大家需要这套源码,可在京东自营购买《FFmpeg开发实战:从零基础到短视频上线》一书,联系作者获取SRT Streamer源码。

博主找到的SRT Streamer源码采用Kotlin编写,非Java编写,需使用小水母版本的AS打开。所以需要先安装小水母版本的AS,也就是Android Studio Jellyfish,该版本AS的下载地址为 https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.3.1.18/android-studio-2023.3.1.18-windows.zip

二、加载SRT Streamer

下载的SRT Streamer源码是个完整的AS项目,启动小水母版本的Android Studio,依次选择菜单:File→Open,在弹出的文件对话框中选择解压后的SRT Streamer源码目录。Android Studio就开始自动下载相关组件,并执行gradle同步等操作。为了加快SRT Streamer项目的加载速度,可打开项目级别的build.gradle,在repositories节点内部补充以下配置:

rust 复制代码
// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
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'}
// 以下添加华为的仓库地址
maven { url 'https://developer.huawei.com/repo/'}

增加以上配置的目的是引入国内的仓库地址,以便加快相关依赖包的下载速度。

等待SRT Streamer项目成功加载完毕,查看Android Studio左侧的导航图,可见SRT Streamer项目由下列五个模块组成:

core模块:这是SRT Streamer给音频流和视频流分别编码的模块。

demo-camera模块:这是SRT Streamer的摄像头直播演示模块,也是APP工程的主入口。

demo-screenrecorder模块:这是SRT Streamer的屏幕录像直播演示模块。

extension-rtmp模块:这是SRT Streamer处理RTMP协议通信的模块。

extension-srt模块:这是SRT Streamer处理SRT协议通信的模块。

三、启动SRT Streamer

Android Studio成功加载SRT Streamer之后,即可在手机上安装SRT Streamer的演示APP了。有关APP编译和安装的详细步骤参见《Android Studio开发实战:从零基础到App上线(第3版)》一书第2章的"2.1.1 App的运行环境",这里不再赘述。

SRT Streamer的演示APP在手机上安装完毕,启动后的初始界面是下面这样的。

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

这里要修改以下四个SRT服务器配置:

1、Endpoint区域的Type字段:点击后下拉选择SRT device,表示采用SRT协议推流。

2、SRT Server区域的IP字段:填流媒体服务器的IP。

3、SRT Server区域的Port字段:填流媒体服务器对SRT协议的开放端口。比如SRS默认的SRT端口号为10080,ZLMediaKit默认的SRT端口号为9000。

4、SRT Server区域的Stream ID字段:填"#!::r=live/test,m=publish"。

可见SRT Streamer提供了丰富多样的直播形式,既可以通过手机摄像头直播,还能对手机的屏幕操作进行直播。具体的直播协议又包括RTMP和SRT两种,可以满足绝大多数场景的直播需求,而且SRT Streamer是个开源软件,提供了完整的APP直播录制全套代码,非常适合开发者学习和研究。

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

相关推荐
聪明的笨猪猪21 小时前
Java JVM “内存(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
_dindong21 小时前
Linux网络编程:Socket编程TCP
linux·服务器·网络·笔记·学习·tcp/ip
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 属性优先级 行内写法 变量选择 笔记42
java·spring boot·笔记
摇滚侠1 天前
Spring Boot 3零基础教程,WEB 开发 Thymeleaf 总结 热部署 常用配置 笔记44
java·spring boot·笔记
rechol1 天前
汇编与底层编程笔记
汇编·arm开发·笔记
lzj_pxxw1 天前
嵌入式开发技巧:舍弃标志位,用宏定义函数实现程序单次运行
笔记·stm32·单片机·嵌入式硬件·学习
润 下1 天前
C语言——回调函数的典型示例(分析详解)
c语言·开发语言·人工智能·经验分享·笔记·程序人生
朝新_1 天前
【EE初阶 - 网络原理】传输层协议
java·开发语言·网络·笔记·javaee
koo3641 天前
李宏毅机器学习笔记27
人工智能·笔记·机器学习
峰顶听歌的鲸鱼1 天前
1.云计算与服务器基础
运维·服务器·笔记·云计算·学习方法