首页 > 其他分享 >FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流

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

时间:2024-08-10 12:06:26浏览次数:15  
标签:FFmpeg APP 模块 maven 直播 Streamer SRT 推流

​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开发实战:从零基础到短视频上线》一书。

标签:FFmpeg,APP,模块,maven,直播,Streamer,SRT,推流
From: https://www.cnblogs.com/aqi00/p/18328119

相关文章

  • 一个简单的录音软件(利用QT录音,ffmpeg进行音频重采样,fdk-aac编码)
             录音软件是一种非常有用的工具,可以帮助我们记录和存储语音信息。在本文中,我们将介绍一个简单的录音软件,该软件利用QT进行录音,使用ffmpeg进行音频重采样,并使用fdk-aac编码。一、 环境介绍  1、QT版本:QT5.12.62、编译器: MSVC2017643、ffmpeg版......
  • 利用QT和FFmpeg实现一个简单的视频播放器
              在当今的多媒体世界中,视频播放已成为不可或缺的一部分。从简单的媒体播放器到复杂的视频编辑软件,视频解码和显示技术无处不在。本示例使用Qt和FFmpeg构建一个简单的视频播放器。利用ffmpeg解码视频,通过QWidget渲染解码后的图像,支持进度条跳转、进度条显示,......
  • java毕业设计基于微信小程序的鲜花销售系统Vue+uniapp技术
    文末获取资源,收藏关注不迷路文章目录前言开发意义功能介绍主要使用技术研究内容核心代码文章目录前言在当今社会,随着移动互联网技术的飞速发展和智能手机的普及,人们的消费习惯正在发生深刻的变化。微信作为中国最大的社交媒体平台之一,不仅改变了人们的沟通方式,也深......
  • Java 基于微信小程序的学校心理咨询聊天室系统 uniapp毕业设计
    文末获取资源,收藏关注不迷路文章目录项目介绍功能需求技术介绍项目界面关键代码目录项目介绍该课题旨在创建一个专门针对大学生心理健康的知识科普平台,其受众包含大学生与其父母,包含知识科普,自我筛查,在线咨询,与匿名倾诉(包含父母与大学生)四个大点。全方位的对大学生......
  • Java基于微信小程序的琴房管理系统 uniapp 毕业设计
    文末获取资源,收藏关注不迷路文章目录项目介绍用户需求分析学生用户管理员用户技术介绍项目界面关键代码目录项目介绍随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具,钢琴培训企业各种管理系统层出不穷,为钢琴培训企......
  • 脚本执行报错 cp: cannot stat '/home/dar/app/log_back'$'\r''/nohup.out': No
    背景针对线上nohup日志较大,需要进行拆分,所以写了一个脚本文件,用来定时执行(或者手动执行)脚本一log_dir="/home/dar/app/log_back"#拷贝日志文件到昨天的log中cp$log_dir/nohup.out$log_dir/nohup-$(date+"%Y%m%d_%H%M%S").log#清空nohup.out日志truncate-s0$log_d......
  • Kubernetes-kubeapps-install
    Helminstall[root@rocky01~]#curl-fsSL-oget_helm.shhttps://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3[root@rocky01~]#chmod700get_helm.sh&&./get_helm.shKubeappsinstall[root@rocky01~]#helmrepoaddbitnamihttp......
  • 2024年全球APP聚合广告平台推荐
    大家好,我是牢鹅!随着全球化的不断深入,越来越多的企业开始将目光投向海外市场,出海最重要的无疑是变现了,开发者可以通过在应用中展示广告来获得收益,而广告商则能够在广告中获得曝光和用户互动。变现主要分为两块:内购(简称IAP)、广告(简称IAA),本篇将重点介绍对于应用内广告变现的出海知......
  • Elasticsearch Mapping类型修改
    背景通常数据库进行分库分表后,目前比较常规的作法,是通过将数据异构到Elasticsearch来提供分页列表查询服务;在创建Elasticsearch索引时,基本都是会参考目前的业务需求、关系数据库中的类型以及对数据的相关规划来定义相关字段mapping的类型.在Elasticsearch的mapping中的列(或则......
  • Applescript实现无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测完
    一、实现iMessage蓝号数据筛选的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写脚本......