一篇介绍webrtc的h264编码,从视频采集,编码,rtp传输,包解析,解码,渲染流程的文章:
1. 整体模块流程见下图。
发送流程
=========================================================================
大致流程:
在java层,比如从camera获取到帧数据后,通过调用VideoSource::onFrameCaptured()传入帧数据,再传入native层AndroidVideoTrackSource::OnFrameCaptured()
a. 然后encoder编码得到要发送的视频帧; (在andriod平台,是调用mediacodec进行编解码,webrtc_android\src\sdk\android\src\jni\video_encoder_wrapper.cc)
b. RtpSender模块对要发送的视频帧进行打包;
c. 打包后的packet,一份送到PacedSender准备平滑发送,同时送一份到RtpPacketHistory模块(后面重发可能会用到);
d. 最后在RtpSender发送到网络,调用 LogAndSendToNetwork(std::move(rtp_packets), unpacketized_payload_size)。
对应模块
java: