​RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架,可用于RTMP直播和RTSP直播,其升级版还支持SRT直播(腾讯视频云就采用SRT协议)。RTMP Streamer支持的视频编码包括H264、H265、AV1等等,支持的音频编码包括AAC、G711、OPUS等等,可谓功能强大的APP直播框架。

由于升级版的RTMP Streamer采取全Kotlin编码,对运行环境与开发者的技能要求都比较高,因此为了方便讲解,这里以标准版的RTMP Streamer为例,介绍如何使用RTMP Streamer开启手机的APP直播推流。

一、下载RTMP Streamer

由于最新版的RTMP Streamer被升级得面目全非,难以为国内开发者使用,并且RTMP Streamer升级之后,原本在Github上托管的旧代码也不翼而飞,不知是不是老外对我们封锁高科技。因此博主寻寻觅觅,花了好长时间才找到合适版本的RTMP Streamer源码,如果大家需要这套源码,可在京东自营购买《FFmpeg开发实战:从零基础到短视频上线》一书,联系作者获取RTMP Streamer源码。

博主找到的RTMP Streamer源码采用Java编写,非Kotlin编写,可使用小海豚版本的AS打开。所以需要先安装小海豚版本的AS,也就是Android Studio Dolphin,该版本AS的下载地址为 https://redirector.gvt1.com/edgedl/android/studio/install/2021.3.1.16/android-studio-2021.3.1.16-windows.exe 。

二、加载RTMP Streamer

下载的RTMP Streamer源码是个完整的AS项目,启动小海豚版本的Android Studio,依次选择菜单:File→Open,在弹出的文件对话框中选择解压后的RTMP Streamer源码目录。Android Studio就开始自动下载相关组件,并执行gradle同步等操作。为了加快RTMP 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/'}

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

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

app模块:这是RTMP Streamer的演示界面模块,也是APP工程的主入口。

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

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

rtplibrary模块:这是处理RTP协议数据传输的公共库,rtmp模块和rtsp模块都调到了该库。

rtsp模块:这是RTMP Streamer处理RTSP协议通信的模块。

三、启动RTMP Streamer

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

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

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

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

FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流的更多相关文章

  1. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  4. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  5. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  6. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  7. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)

    源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

  8. angular学习笔记(三十一)-$location(2)

    之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...

  9. angular学习笔记(三十一)-$location(1)

    本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...

  10. Django笔记三十一之全局异常处理

    本文首发于公众号:Hunter后端 原文链接:Django笔记三十一之全局异常处理 这一篇笔记介绍 Django 的全局异常处理. 当我们在处理一个 request 请求时,会尽可能的对接口数据的格式 ...

随机推荐

  1. [FAQ] 如何从 svg 字符串创建 SVGElement

      HTML 部分: <div style="display: none" id="svgCon"></div> JS 部分: cons ...

  2. [Go] Golang并发控制: WaitGroup 含义和常规用法

    一个 WaitGroup 等待一个 goroutine 集合的结束. 主 goroutine 调用 Add 设置需要等待的 goroutine 数量. 接下来每个 goroutine 运行并在结束时调 ...

  3. [ELK] Elasticsearch 安装/配置、启动/停止、加节点/重启

    Elasticsearch 在不同环境上支持的安装方式很多,有源码安装.二进制安装.docker安装.rpm包等管理器安装. 具体的,根据应用的实际情况选择即可. 完成可测试开发环境的建立后,需要进一 ...

  4. 在 UOS 统信运行 dotnet 程序提示没有通过系统安全验证无法运行

    本文记录 dotnet 应用程序在 UOS 统信系统上运行时,提示 没有通过系统安全验证,无法运行 的问题 这个问题是因为没有开启 UOS 统信的开发者模式,直接将自己构建完成的包放上去跑导致的问题 ...

  5. 2019-11-29-C#-如何写-DEBUG-输出

    title author date CreateTime categories C# 如何写 DEBUG 输出 lindexi 2019-11-29 08:28:35 +0800 2018-2-13 ...

  6. 2018-12-26-WPF-开启-ScrollViewer-的触摸滚动

    title author date CreateTime categories WPF 开启 ScrollViewer 的触摸滚动 lindexi 2018-12-26 14:24:26 +0800 ...

  7. 还需要学习JDBC吗?如果需要该了解到怎么样的程度?

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家在工作中还有没有写过JDBC,我在大三 ...

  8. Nginx 简单应用(Windows os)

    实际问题如下: 我的电脑上有vm虚拟机,我有两个网络,一个叫137,一个叫102 ,我现在vm的网络是102的网络(137不允许被vm使用),但是别人都是137的网络,如何让137的局域网访问我的vm ...

  9. 一款基于Vue3实现的漂亮且功能强大的在线海报设计器

    大家好,我是 Java陈序员. 我们在工作中经常需要设计各种各样的图片,海报.产品图.文章图片.视频/公众号等. 我们可以选择使用 PS 来设计图片,但是有时候想快速完成任务,有没有一款工具支持快速生 ...

  10. 案例-java贪吃蛇(附源码)

    创建屏幕 开始游戏的窗口,首先引入窗口,然后在窗口画布上进行添加各类动画. JFrame frame=new JFrame("My SnakeGame"); Jframe 是个类, ...