推流的过程:
1.通过摄像头或录屏功能进行视频采集用于直播间搭建。
2.通过话筒进行音频采集,音频原始数据格式:PCM。
3.将视频文件编码,视频格式从YUV(RGB)变为H.264(H.265)。
将音频文件编码,视频格式从YUV(RGB)变为H.264(H.265)。
4.将音频文件编码,音频格式从PCM变为AAC。
5.将视颊与音频文件编码为有“流媒体”特性的多媒体容器格式(Multimedia Container Format),此时音颊和视频(H.264和AAC)结合成了FLV或TS或RTMP Packet,这要视传输协议的规定而定)。
6.选择一种向服务器推流的协议(“流”即“有流媒体特性的多媒体容器格式的文件”),应用层协议:HLS;RTSP;RTMP,传输层协议:RTCP、RTP,网络层协议:RSVP。
7.传入推流地址(URL)来定位我们的推流目标(即将流媒体发送给「谁」)然后开始推流,直播间搭建中比如你在斗鱼当主播,OBS中的推流地址就写斗鱼的,你要是在六间房当程序员,程序中默认的推流地址就写六间房的。
拉流的过程:
1、直播间搭建通过某种渠道获取拉流URL(或者叫播放URL),并选取一种从服务器拉流的协议,然后开始拉流应用层协议:HLS;RTSP;RTMP,传输层协议:RTCP、RTP,网络层协议:RSVP。
2、将处于「多媒体容器格式」的流解复用成为「视频编码格式」的视颊数据(如H.264)和「音频编码格式」的音频数据(如AAC)。
3、使用硬解码(GPU解码+CPU辅助)或软解码(CPU解码)解码后视频数据格式为YUV或RGB,音频数据格式为PCM解码后视频数据格式为YUV或RGB,音频数据格式为PCM。
4.执行音画同步操作。
5.将同步后的音频(PCM)送到音频输出设备播放。
将同步后的视频(YUV或RGB)送到视频输出设备播放。