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

devtools/2024/9/23 6:35:50/

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节点内部补充以下配置:

// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
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开发实战:从零基础到短视频上线》一书。


http://www.ppmy.cn/devtools/92022.html

相关文章

RuoYi-Vue-Plus (全网最详细 :监控中心 Spring Actuator 配置、接入项目)

界面展示、以及使用: 注册的应用: 点击展示详情:堆内存 垃圾回收 线程等情况 监控请求: 配置属性:查看系统使用未使用的的配置属性,比如查看redis配置 线程监控: 黄色是阻塞,绿色代表运行中,可以显示堆栈信息 一、概述 Actuator为Spring Boot应用提供了生产级别的…

大数据-Big Data(二):核心技术详解

目录 1. 大数据架构的基础 1.1 分布式存储系统 1.2 分布式计算框架 2. 数据存储与管理技术 2.1 NoSQL数据库 2.2 数据仓库技术 3. 大数据处理与分析 3.1 数据处理的关键技术 3.2 机器学习与大数据 4. 大数据的实时处理技术 4.1 流处理框架 4.2 数据流处理 5. 大数…

第14节课:HTML5表单增强——提升用户体验与数据准确性

目录 HTML5表单增强概述新输入类型emailurlnumberrangedate 表单验证requiredpattern 实践:创建一个增强型HTML5表单结语 随着HTML5的推出,表单功能得到了显著增强,提供了新的输入类型和验证特性,这不仅提升了用户的填写体验&…

flutter 压缩图片,修改图片尺寸,修改图片格式

最近需要用到flutter压缩图片 网上大部分教程基于 image_compression_flutter , flutter_image_compress 这两个扩展不好用,他们只能压缩图片质量(不能修改图片尺寸),这样压缩效果不好.其实移动端不需要分辨率太高的图片, 在网上找到了一篇文章 https://juejin.cn/post/723…

【Material-UI】Checkbox组件:图标设置详解

文章目录 一、Checkbox 组件与图标自定义概述1. 组件介绍2. 基本用法 二、图标自定义的详细解读1. icon 和 checkedIcon 属性2. 自定义图标的优势3. 使用Material-UI图标库 三、应用场景与实践1. 表单中的个性化选项2. 内容管理与标记3. 游戏与娱乐应用 四、最佳实践与注意事项…

python3基本数据类型说明一

一. 简介 本文简单学习一下 python3的变量。主要学习 python语言中如何创建变量。 二. python3基本数据类型 1. python中 变量 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量&am…

数据结构——栈的讲解(超详细)

前言: 小编已经在前面讲完了链表和顺序表的内容,下面我们继续乘胜追击,开始另一个数据结构:栈的详解,下面跟上小编的脚步,开启今天的学习之路! 目录 1.栈的概念和结构 1.1.栈的概念 1.2.栈的结构…

clone plugin搭建MySQL 8.0 主从复制

Clone plugin搭建MySQL 8.0 主从复制 安装clone plugin创建3308实例3306实例配置3308实例配置Clone Plugin 的限制 前面2篇分别利用逻辑备份mysqldump和屋里备份xtrabackup搭建了MySQL主从复制,分别适用不同的场景,逻辑备份适用数据量小点的,…