Zlmediakit 接收到 rtc包后的处理流程

2023-12-16 09:04

本文主要是介绍Zlmediakit 接收到 rtc包后的处理流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

客户端通过rtc 推流(视频为h264)到 ZlmediaKit 时,ZlmediaKit收到包后,到进行rtp 包排序的流程堆栈,方便了解逻辑

#0  mediakit::RtspMediaSourceImp::onWrite (this=0x7fffd0009d68, rtp=..., key_pos=false) at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtspMediaSourceImp.h:55
#1  0x00000000015d9da9 in WebRtcPusher::onRecvRtp (this=0x7fffd001e890, track=..., rid=..., rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcPusher.cpp:84
#2  0x0000000001527f7a in WebRtcTransportImp::onSortedRtp (this=0x7fffd001e890, track=..., rid=..., rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:1077
#3  0x0000000001526ccc in WebRtcTransportImp::__lambda95::operator() (__closure=0x7fffd0024580, rtp=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:924
#4  0x00000000015323a6 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
#5  0x00000000014acca0 in std::function<void (std::shared_ptr<mediakit::RtpPacket>)>::operator()(std::shared_ptr<mediakit::RtpPacket>) const (this=0x7fffd0004440, __args#0=...)
    at /usr/include/c++/4.8.2/functional:2471
#6  0x00000000014ab531 in mediakit::RtpTrackImp::onRtpSorted (this=0x7fffd0004388, rtp=...) at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.cpp:142
#7  0x00000000014aa499 in mediakit::RtpTrack::RtpTrack()::{lambda(unsigned short, std::shared_ptr<mediakit::RtpPacket>&)#1}::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket>&) const () at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.cpp:18
#8  0x00000000014ab7ed in std::_Function_handler<void(short unsigned int, std::shared_ptr<mediakit::RtpPacket>&), mediakit::RtpTrack::RtpTrack()::__lambda25>::_M_invoke(const std::_Any_data &, unsigned short, std::shared_ptr<mediakit::RtpPacket> &) (__functor=..., __args#0=6408, __args#1=...) at /usr/include/c++/4.8.2/functional:2071
#9  0x00000000014adb11 in std::function<void (unsigned short, std::shared_ptr<mediakit::RtpPacket>&)>::operator()(unsigned short, std::shared_ptr<mediakit::RtpPacket>&) const (
    this=0x7fffd00043d8, __args#0=6408, __args#1=...) at /usr/include/c++/4.8.2/functional:2471
#10 0x00000000014ada1b in mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popIterator (this=0x7fffd0004390, it=...)
    at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.h:123
#11 0x00000000014ad366 in mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::popPacket (this=0x7fffd0004390)
    at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.h:92
#12 0x00000000014acf76 in mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::tryPopPacket (this=0x7fffd0004390)
    at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.h:144
#13 0x00000000014acafd in mediakit::PacketSortor<std::shared_ptr<mediakit::RtpPacket>, unsigned short, 1024ul, 32ul>::sortPacket (this=0x7fffd0004390, seq=6440, packet=...)
    at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.h:77
#14 0x00000000014ab1aa in mediakit::RtpTrack::inputRtp (this=0x7fffd0004388, type=mediakit::TrackAudio, sample_rate=8000, 
    ptr=0x1ee23b0 "\220\b\031(\244=\227Hd\246\241\006\276", <incomplete sequence \336>, len=192, absCaptureTime=186608650860798725)
    at /root/src/tantao/cmds_master/cmds/src/Rtsp/RtpReceiver.cpp:113
#15 0x00000000015352c6 in RtpChannel::inputRtp (this=0x7fffd0004388, type=mediakit::TrackAudio, sample_rate=8000, 
    ptr=0x1ee23b0 "\220\b\031(\244=\227Hd\246\241\006\276", <incomplete sequence \336>, len=192, is_rtx=false) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:704
#16 0x0000000001527607 in WrappedRtpTrack::inputRtp (this=0x7fffd0002d00, buf=0x1ee23b0 "\220\b\031(\244=\227Hd\246\241\006\276", <incomplete sequence \336>, len=192, stamp_ms=764, 
    rtp=0x1ee23b0) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:995
#17 0x000000000152745d in WebRtcTransportImp::onRtp (this=0x7fffd001e890, buf=0x1ee23b0 "\220\b\031(\244=\227Hd\246\241\006\276", <incomplete sequence \336>, len=192, stamp_ms=764)
    at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:967
#18 0x0000000001521e9b in WebRtcTransport::inputSockData (this=0x7fffd001e890, buf=0x1ee23b0 "\220\b\031(\244=\227Hd\246\241\006\276", <incomplete sequence \336>, len=192, 
    tuple=0x7fffd0033978) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcTransport.cpp:331
#19 0x000000000151db17 in WebRtcSession::onRecv (this=0x7fffd00338a8, buffer=...) at /root/src/tantao/cmds_master/cmds/webrtc/WebRtcSession.cpp:70
#20 0x0000000001178df6 in toolkit::emitSessionRecv (session=..., buf=...) at /root/src/tantao/cmds_master/cmds/3rdpart/ZLToolKit/src/Network/UdpServer.cpp:134
#21 0x0000000001179a9f in toolkit::UdpServer::__lambda14::__lambda15::operator() (__closure=0x7fffd0002730, buf=..., addr=0x7fffe9dde760, addr_len=28)
    at /root/src/tantao/cmds_master/cmds/3rdpart/ZLToolKit/src/Network/UdpServer.cpp:257
#22 0x000000000117bc44 in std::_Function_handler<void(const std::shared_ptr<toolkit::Buffer>&, sockaddr*, int), toolkit::UdpServer::createSession(const PeerIdType&, const Ptr&, sockaddr*, int)::__lambda14::__lambda15>::_M_invoke(const std::_Any_data &, const std::shared_ptr<toolkit::Buffer> &, sockaddr *, int) (__functor=..., __args#0=..., __args#1=0x7fffe9dde760, 
    __args#2=28) at /usr/include/c++/4.8.2/functional:2071
#23 0x0000000001162e5b in std::function<void (std::shared_ptr<toolkit::Buffer> const&, sockaddr*, int)>::operator()(std::shared_ptr<toolkit::Buffer> const&, sockaddr*, int) const (
    this=0x7fffc8001b00, __args#0=..., __args#1=0x7fffe9dde760, __args#2=28) at /usr/include/c++/4.8.2/functional:2471

 

这篇关于Zlmediakit 接收到 rtc包后的处理流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/499936

相关文章

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed