美文网首页
2021-04-13 学习音视频推流。

2021-04-13 学习音视频推流。

作者: 赖益文 | 来源:发表于2021-04-13 16:24 被阅读0次

1.视频推流的过程就事,获取到摄像头的数据。

把每一帧图片由NV21转为I420。把YUVI420的每一帧图片分解成RTMPPacket

NV21转为YUVI420怎么转?先来两张图对比数据组成就是。。。就是把原始数据转成这个yuv 4:1:1 的一结构。

然后把YUV420 通过H264编码:

转成 I p b;I帧相似度95% p帧相似度是70%的帧。

先去封装i帧中的。SPS和PPS ,包含了初始化H.264解码器所需要的信息参数,包括编码所用的profile,level,图像的宽和高,deblock滤波器等。

SPS:序列参数集

PPS:图像参数集

然后在包装这个i帧的其他数据和p帧和b帧。

怎么去包装这个个sps 和pps。怎么把一帧图片拆成RTMPPacket?其实还要分两步:

把一帧图片拆成N个NALU单元,上面提到过这个词

把每个NALU单元分装成RTMPPacket。 打包的固定格式。。不管是sps 还是pps 还是非关键帧都是通过打包成packet。

NALU单元:为了方便传输(传输指  文件传输,网络流传输) 我们并不能把一整帧传输过去,一帧的内容太大了,还需要细分才能更方便的传输。如果通过传递一完整帧传过去,对方等的花都谢了。所以我们需要更小的传输单元以保证  更好的压缩性,容错性和实时观看性。这种更小的单元成为NALU单元,所以H264 原始码流(又称为裸流),是有一个接一个的 NALU 组成的,关于NALU的组成(组成可以不去了解,知道传输数据是以NALU为单位就可以了):

NALU=NALU头+RBSP(切片)RBSP=片头+片数据片数据=n*宏块//把一张图片划分成若干个小的区域,这些小的区域称之为宏块//H264默认是使用 16X16 大小的区域作为一个宏块,也可以划分成 8X8 大小。所以:NALU=NALU头+(片头+n宏块)

最后打包封装成一个packet。然后点击开始直播之后。开始从队列中取出packet 发送给服务器。

2.音频推流。

视频数据格式化:摄像头数据(NV21) -> H264 -> RTMPPacket

音频数据格式化:麦克风数据(PCM) -> AAC -> RTMPPacket

1.采集麦克风数据。

2.转码成为faac。

3.封装成packet。上传服务器。

相关文章

  • 2021-04-13 学习音视频推流。

    1.视频推流的过程就事,获取到摄像头的数据。 把每一帧图片由NV21转为I420。把YUVI420的每一帧图片分解...

  • RTMP 应用框架简介

    1、采集推流器 功能:音视频采集、音视频编码、推流 开源方案:rtmpdump 客户端FFmpeg 推流 (可参考...

  • ffmpeg直播推拉流

    推流 -re减慢帧率速率-c 音视频编码方式-f flv 已flv文件格式 拉流

  • iOS音视频编码

    iOS音视频开发涉及的方面比较广泛,一般分为采集、音视频的封装、编码、推流、拉流、解封装、解码、播放等阶段。其中音...

  • iOS完整推流采集音视频数据编码同步合成流

    需求 众所周知,原始的音视频数据无法直接在网络上传输,推流需要编码后的音视频数据以合成的视频流,如flv, mov...

  • android 音视频推流

    基本原理 通过手机的摄像头(Camera)进行视频采集,音频采集(AudioRecord)后通过x264进行视频编...

  • iOS 直播技术简介

    一、直播App架构 采集端将采集到的音视频数据通过推流地址推送到服务器,播放端再通过拉流地址将音视频数据拉到本地播...

  • 音视频开发——直播推流&拉流技术

    一、推流架构 推流SDK客户端的模块主要有三个,推流采集端、队列控制模块、推流端。其中每个模块的主要流程如下,本文...

  • 2021-04-13

    2021-04-13

  • 如何快速开发一个iOS直播项目

    开发一个直播产品涉及到很多技术,主要有音视频采集,美颜,编码和解码(软编和硬编),封包,推流,拉流,播放,聊天,礼...

网友评论

      本文标题:2021-04-13 学习音视频推流。

      本文链接:https://www.haomeiwen.com/subject/yecclltx.html