推流拉流相关知识

2020-08-14  本文已影响0人  一只爱吃鲸鱼的三瓜

拉流

根据协议类型,与服务器建立连接并接收数据

  1. 解协议,解析二进制数据,找到流信息
    将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
  1. 根据不同封装格式(flv、ts)解复用
  2. 得到已经编码的H.264视频数据和AAC数据
  3. 使用硬解码(对应系统的API)或软解码(FFMpeg)来解压音视频数据
  4. 经过解码后得到原始的视频数据(YUV)和音频数据(AAC)
  5. 音视频同步
  6. 把同步的音频数据送到耳机或外放,视频数据送到屏幕上显示

推流

  1. 原始视频和音频数据
  2. 使用硬编码(对应系统的API)或软编码(FFMpeg)来编码压缩音视频数据
  3. 分别得到已编码的H.264视频数据和AAC音频数据
    4.根据不同的封装格式(如FLV、TS、MPEG-TS)
  4. 使用HLS协议的时候加上这一步(HLS分段生成策略及m3u8索引文件)
  5. 通过流上传到服务器;
  6. 服务器进行相关协议的分发

rtmp

rtmp是Real Time Messaging Protocol(实时消息传输协议)。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

  1. rtmp协议 视频必须是h264编码 音频必须是AAC或MP3(经测试,如果使用mpeg4来编码推流,播放不成功),多以flv格式封装(经测试使用mp4封装直播拉流不成功,但是点播可以播放mp4的),其实flv不支持vp9,也不支持av1

hls

hls (HTTP Live Streaming),Apple的动态码率自适应技术,主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

  1. ts文件中的视频必须是h264编码,音频必须是AAC或者mp3编码

obs

obs是一个推流软件,支持本地视频文件以及摄像头推流

参考文章

  1. https://blog.csdn.net/yanceyxin/article/details/82750686
  2. 作者:ptlCoder
    链接:https://juejin.im/post/6844903603472171021
    来源:掘金
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
上一篇下一篇

猜你喜欢

热点阅读