ZlmediaKit rtp包排序后流程

文章详细描述了客户端通过H264视频流到ZlmediaKit时,ZlmediaKit如何接收、排序RTP包,并在H264Track中解析、解码的过程,涉及到了RtpDecoder、RtpDemuxer和WebRTC框架的交互。
摘要由CSDN通过智能技术生成

客户端通过rtc 推流(视频为h264)到 ZlmediaKit 时,ZlmediaKit收到包,进行rtp 包排序,之后的处理流程堆栈

Thread 12 "event poller 0" hit Breakpoint 1, mediakit::getAVCInfo (strSps=..., iVideoWidth=@0x7fffdc003608: 0, iVideoHeight=@0x7fffdc00360c: 0, iVideoFps=@0x7fffdc003610: 0)
    at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:39
39        return getAVCInfo(strSps.data(), strSps.size(), iVideoWidth, iVideoHeight, iVideoFps);
(gdb) bt
#0  mediakit::getAVCInfo (strSps=..., iVideoWidth=@0x7fffdc003608: 0, iVideoHeight=@0x7fffdc00360c: 0, iVideoFps=@0x7fffdc003610: 0) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:39
#1  0x000000000126b370 in mediakit::H264Track::onReady (this=0x7fffdc003598) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:170
#2  0x000000000126b8f6 in mediakit::H264Track::inputFrame_l (this=0x7fffdc003598, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:216
#3  0x000000000126b04d in mediakit::H264Track::__lambda20::operator() (__closure=0x7fffdc00bce0, ptr=0x7fffdc03eb18 "", len=8, prefix=4)
    at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:161
#4  0x000000000126be7d in std::_Function_handler<void(char const*, long unsigned int, long unsigned int), mediakit::H264Track::inputFrame(const Ptr&)::__lambda20>::_M_invoke(const std::_Any_data &, const char *, unsigned long, unsigned long) (__functor=..., __args#0=0x7fffdc03eb18 "", __args#1=8, __args#2=4) at /usr/include/c++/4.8.2/functional:2071
#5  0x000000000126c67a in std::function<void (char const*, unsigned long, unsigned long)>::operator()(char const*, unsigned long, unsigned long) const (this=0x7fffea5de180, 
    __args#0=0x7fffdc03eb18 "", __args#1=8, __args#2=4) at /usr/include/c++/4.8.2/functional:2471
#6  0x000000000126a92a in mediakit::splitH264(char const*, unsigned long, unsigned long, std::function<void (char const*, unsigned long, unsigned long)> const&) (ptr=0x7fffdc03eb18 "", len=8, 
    prefix=4, cb=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:77
#7  0x000000000126b292 in mediakit::H264Track::inputFrame (this=0x7fffdc003598, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:164
#8  0x00000000011deb3b in mediakit::MediaSink::inputFrame (this=0x7fffdc00a7d0, frame=...) at /root/src/tantao/cmds_master/cmds/src/Common/MediaSink.cpp:78
#9  0x00000000011d1ff2 in mediakit::FrameDispatcher::inputFrame (this=0x7fffdc02c1c8, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/Frame.h:338
#10 0x000000000126b772 in mediakit::H264Track::inputFrame_l (this=0x7fffdc02c1c8, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:196
#11 0x000000000126b04d in mediakit::H264Track::__lambda20::operator() (__closure=0x7fffdc03f000, ptr=0x7fffdc03eb18 "", len=8, prefix=4)
    at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:161
#12 0x000000000126be7d in std::_Function_handler<void(char const*, long unsigned int, long unsigned int), mediakit::H264Track::inputFrame(const Ptr&)::__lambda20>::_M_invoke(const std::_Any_data &, const char *, unsigned long, unsigned long) (__functor=..., __args#0=0x7fffdc03eb18 "", __args#1=8, __args#2=4) at /usr/include/c++/4.8.2/functional:2071
#13 0x000000000126c67a in std::function<void (char const*, unsigned long, unsigned long)>::operator()(char const*, unsigned long, unsigned long) const (this=0x7fffea5de500, 
    __args#0=0x7fffdc03eb18 "", __args#1=8, __args#2=4) at /usr/include/c++/4.8.2/functional:2471
#14 0x000000000126a92a in mediakit::splitH264(char const*, unsigned long, unsigned long, std::function<void (char const*, unsigned long, unsigned long)> const&) (ptr=0x7fffdc03eb18 "", len=8, 
    prefix=4, cb=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:77
#15 0x000000000126b292 in mediakit::H264Track::inputFrame (this=0x7fffdc02c1c8, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264.cpp:164
#16 0x00000000011d1ff2 in mediakit::FrameDispatcher::inputFrame (this=0x7fffdc032c30, frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/Frame.h:338
#17 0x00000000014115ae in mediakit::H264RtpDecoder::outputFrame (this=0x7fffdc032c18, rtp=..., frame=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264Rtp.cpp:191
#18 0x0000000001410deb in mediakit::H264RtpDecoder::singleFrame (this=0x7fffdc032c18, rtp=..., ptr=0x7fffdc02e057 "h\316<\200", size=4, stamp=44270762)
    at /root/src/tantao/cmds_master/cmds/src/Extension/H264Rtp.cpp:81
#19 0x0000000001410f5a in mediakit::H264RtpDecoder::unpackStapA (this=0x7fffdc032c18, rtp=..., ptr=0x7fffdc02e057 "h\316<\200", size=22, stamp=44270762)
    at /root/src/tantao/cmds_master/cmds/src/Extension/H264Rtp.cpp:97
#20 0x000000000141128d in mediakit::H264RtpDecoder::decodeRtp (this=0x7fffdc032c18, rtp=...) at /root/src/tantao/cmds_master/cmds/src/Extension/H264Rtp.cpp:157
#21 0x0000000001410bcf in mediakit::H264RtpDecoder::inputRtp (this=0x7fffdc032c18, rtp=..., key_pos=true) at /root/src/tantao/cmds_master/cmds/src/Extension/H264Rtp.cpp:50
#22 0x00000000014ae7b1 in mediakit::RtspDemuxer::inputRtp (this=0x7fffdc00a618, rtp=...) at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtspDemuxer.cpp:58
#23 0x00000000013cafd3 in mediakit::RtspMediaSourceImp::onWrite (this=0x7fffdc00a2e8, rtp=..., key_pos=false) at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtspMediaSourceImp.h:61
#24 0x00000000015da247 in WebRtcPusher::onRecvRtp (this=0x7fffdc01ee10, track=..., rid=..., rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcPusher.cpp:85
#25 0x00000000015282f8 in WebRtcTransportImp::onSortedRtp (this=0x7fffdc01ee10, track=..., rid=..., rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:1079
#26 0x0000000001526fde in WebRtcTransportImp::__lambda95::operator() (__closure=0x7fffdc038fa0, rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:925
#27 0x0000000001532742 in std::_Function_handler<void(std::shared_ptr<mediakit::RtpPacket>), WebRtcTransportImp::createRtpChannel(const string&, uint32_t, MediaTrack&)::__lambda95>::_M_invoke(const std::_Any_data &, std::shared_ptr<mediakit::RtpPacket>) (__functor=..., __args#0=...) at /usr/include/c++/4.8.2/functional:2071
#28 0x00000000014acd04 in std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const (this=0x7fffdc038c80, __args#0=...)
    at /usr/include/c++/4.8.2/functional:2471
#29 0x00000000014ab595 in mediakit::RtpTrackImp::onRtpSorted (this=0x7fffdc038bc8, rtp=...) at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.cpp:142
#30 0x00000000014aa4d9 in mediakit::RtpTrack::RtpTrack()::{lambda(unsigned short, std::shared_ptr<mediakit::RtpPacket>&)#1}::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket>&) const

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值