推流拉流相关知识
2020-08-14 本文已影响0人
一只爱吃鲸鱼的三瓜
拉流
根据协议类型,与服务器建立连接并接收数据
- 解协议,解析二进制数据,找到流信息
将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
- 根据不同封装格式(flv、ts)解复用
- 得到已经编码的H.264视频数据和AAC数据
- 使用硬解码(对应系统的API)或软解码(FFMpeg)来解压音视频数据
- 经过解码后得到原始的视频数据(YUV)和音频数据(AAC)
- 音视频同步
- 把同步的音频数据送到耳机或外放,视频数据送到屏幕上显示
推流
- 原始视频和音频数据
- 使用硬编码(对应系统的API)或软编码(FFMpeg)来编码压缩音视频数据
- 分别得到已编码的H.264视频数据和AAC音频数据
4.根据不同的封装格式(如FLV、TS、MPEG-TS) - 使用HLS协议的时候加上这一步(HLS分段生成策略及m3u8索引文件)
- 通过流上传到服务器;
- 服务器进行相关协议的分发
rtmp
rtmp是Real Time Messaging Protocol(实时消息传输协议)。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
- rtmp协议 视频必须是h264编码 音频必须是AAC或MP3(经测试,如果使用mpeg4来编码推流,播放不成功),多以flv格式封装(经测试使用mp4封装直播拉流不成功,但是点播可以播放mp4的),其实flv不支持vp9,也不支持av1
hls
hls (HTTP Live Streaming),Apple的动态码率自适应技术,主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。
- ts文件中的视频必须是h264编码,音频必须是AAC或者mp3编码
obs
obs是一个推流软件,支持本地视频文件以及摄像头推流
参考文章
- https://blog.csdn.net/yanceyxin/article/details/82750686
- 作者:ptlCoder
链接:https://juejin.im/post/6844903603472171021
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。