2022 无人直播rtmp推流工具-技术实现与思路
Posted wx_zhibo888
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022 无人直播rtmp推流工具-技术实现与思路相关的知识,希望对你有一定的参考价值。
目前主流的直播软件(抖音、快手、斗鱼、虎牙等)均采用了 rtmp 协议推流
这篇文章探讨的是,如何编写一个rtmp服务器代理并替换其中视频流,实现无人直播或者录播
rtmp 协议是什么?怎么实现无人直播
rtmp协议是adobr公司专为音视频流定制的传输协议。目前很多公司都喜欢采用他进行传输音视频 (根据研究,微信视频号采用的是 rtp 协议,而不是rtmp)。
相对应的还有一个 rtsp 协议,这两者协议均是用来做音视频传输的,rtsp 是有组织维护的,而 rtmp 属于adobe公司私有协议,并未完全开放。
如何替换无人直播的视频流?
上面了解了rtmp 是什么,接下来就思考如何替换视频流数据了。
举一个例子 :我们常用的http 协议是用来访问网站的。当一个网站无法访问时,例如谷歌,我们需要开启一个网络代理,使用代理这个中间商,由中间服务器提供数据,从而实现访问
那同样的代理是否也可以用到 rtmp 协议呢,答案是肯定的 。我们只要自己定制一个 rtmp 代理服务器,在这个代理服务器中解析验证参数、地址、用户等信息即可
服务器编写
rtmp服务器如何编写??从头开始太难了。为了照顾其跨平台特性。这里推荐一个 github 项目:https://github.com/LiminWang/simple-rtmp-server
我们无需从头开始编写,只要 clone
项目后,进行定制即可
如何替换推流?
通过上面的步骤 。
假设rtmp 代理服务器已经编写完成,并且获取了关键数据,那么现在只要将本地录播文件,或者待转播的链接,通过某种方式,进行视频流替换并转播即可。
这里电脑端推荐采用 obs,当然,如果只有一台手机 ,那显然不行,这里可以开发一款安卓软件,内置 ffmpeg 程序。但选择视频后,即可使用 ffmpeg 命令进行视频流的推送功能
整体的数据流程大概就是:
抖音app
=> 我们的rtmp服务器
=> 抖音服务器
通过我们的服务器是经过定制的,在数据经过时,修改其内容
安卓程序
上面探讨了技术思路,那么在安卓上,如果需要开启一个代理,采用的就是vpn技术。此技术理论上 iphone 也可以,但奈何本人技术薄弱,只能实现android 端
Android 采用 VPNServer
开启一个服务
如果需要做这样一款程序,首先需要采用vpn ,拦截抖音数据包,将其转发到我们编写的服务器。然后服务器读取到关键数据后,采用ffmpeg 推流本地或转播视频。整体技术难度较高
成品
通过github定制服务器+自行编写 VPNServer,成品apk链接如下:无人直播推流助手
其优势在于无需root或者刷机,在之前的工具中。硬改和刷机是非常流行的
经过几个月的攻关,成功实现了RTC的直播推流与播放技术
众所周知,目前市面上存在的大部分的直播流技术,采用的直播推流都是RTMP协议,主要的架构框架大概为RTMP推流、服务端同步转换并输出RTMP、FLV、HLS等多种协议,相比于10年前的直播技术,这种技术体系已经是非常先进的了,各种低延时的策略都有了,看起直播来也算是比较流畅的:
但当我们将这种技术应用到行业中的时候,就会感受到弊端:
- 当推流设备为无线设备或者在网络较差的环境下时,RTMP的推流会出现较大的延时;
- 播放端一般采用的是RTMP或者HTTP-FLV技术,其主要保障的是数据的完整性,而实时性的控制只能靠播放buffer来调节,不属于实时性优先型的直播;
- RTMP、FLV流,无法充分利用H5浏览器的底层框架能力,RTMP需要flash、HTTP-FLV又是基于HTTP的框架之上,无法做到非常好的拥塞控制;
现在各大公有云厂商都在推进自己的RTC直播技术进程,按照我的理解,所谓的RTC直播,主要是几方面:
- 一定要利用到WebRTC的底层框架对播放客户端的支撑,才能充分发挥WebRTC的优势;
- WebRTC服务器不局限于某一种流程,百家争鸣,各自可以在流程范围内定义自己的流程;
- WebRTC可以理解为HTTPS+RTP,信令沟通用HTTPS,流媒体用RTP;
经过几个月的攻关,我们也马上要发布我们的RTC整体框架,包括RTC的推流、RTC服务器、RTC播放器等,先可以看一下TSINGSEE的RTC对安防视频流的分发:
这套RTC流程的实现,将会对我们之前做的RTMP推流、RTMP播放、UDP组播同屏等技术都将是一次革新,在实时性要求非常强的领域,RTC特性的支持,将对产品的竞争力是一次质的提升;
以上是关于2022 无人直播rtmp推流工具-技术实现与思路的主要内容,如果未能解决你的问题,请参考以下文章
Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序