当前位置: 首页 > news >正文

rtsp client c++

直接上代码:源码

void doRtspParse(char *b) {std::vector<std::string> res;char *ptr = b, *ptr1 = nullptr;while ((ptr1 = strstr(ptr, "\r\n"))) {res.push_back(std::string(ptr, ptr1 - ptr));ptr = ptr1 + 2;}int len = ptr - b;b[len - 1] = '\0';Debug("%d read --> \n%s", len, b);switch (cmd_) {case OPTIONS: {auto it = std::find_if(res.begin(), res.end(), [&](std::string &s) {return s.find("WWW-Authenticate") != std::string::npos;});if (it == res.end()) {doWriteCmd(DESCRIBE, seq_++, url_.GetAuth("DESCRIBE").c_str());} else {url_.SetAuth(it->c_str());doWriteCmd(OPTIONS, seq_++, url_.GetAuth("OPTIONS").c_str());}break;};case DESCRIBE: {sdp_.Parse(res);this->decode_ = Unmarshal264;if (sdp_.medias[0].rtpmap.find("H265") != std::string::npos) {this->decode_ = Unmarshal265;}doWriteCmd(SETUP, sdp_.medias[0].id.c_str(), seq_++, sdp_.session.c_str(),url_.GetAuth("SETUP").c_str());if (atype_ == 0xff) {cmd_ = SETAUDIO;}break;};case SETUP:doWriteCmd(PLAY, seq_++, sdp_.session.c_str(),url_.GetAuth("PLAY").c_str());break;case SETAUDIO: {auto it = std::find_if(sdp_.medias.begin(), sdp_.medias.end(),[](sdp::media &m) {return m.id.find("audio") != std::string::npos;});if (it == sdp_.medias.end()) {doWriteCmd(PLAY, seq_++, sdp_.session.c_str(),url_.GetAuth("PLAY").c_str());} else {atype_ = it->format;doWriteCmd(SETUP, it->id.c_str(), seq_++, sdp_.session.c_str(),url_.GetAuth("SETUP").c_str());}} break;default:rbuf_.Remove(len);return;}rbuf_.Reset(0);}
http://www.lryc.cn/news/391905.html

相关文章:

  • 实现好友关注功能的Feed流设计
  • 【STM32修改串口波特率】
  • 印章谁在管、谁用了、用在哪?契约锁让您打开手机一看便知
  • [C++初阶]vector的初步理解
  • 【等保2.0是什么意思?等保2.0的基本要求有哪些? 】
  • VMware中的三种虚拟网络模式
  • 深度学习基准模型Transformer
  • 如何实现公网环境远程连接本地局域网宝塔FTP服务远程管理文件
  • dledger原理源码分析系列(一)-架构,核心组件和rpc组件
  • Github 2024-07-05开源项目日报 Top10
  • WHAT - React useEffect 依赖的 Object.is
  • 【Java EE】Spring IOCDI
  • 【FreeRTOS】同步互斥与通信 有缺陷的同步示例
  • Lambda表达式讲解
  • 深入了解Linux中的dnsmasq:配置与优化指南
  • 【React】Ant Design -- Table分页功能实现
  • 400G SR4和800G SR8光模块在AI集群中的应用
  • ARM功耗管理软件之DVFSAVS
  • 【堆 优先队列】23. 合并 K 个升序链表
  • 云桌面运维工程师
  • AGI 之 【Hugging Face】 的【Transformer】的 [ Transformer 架构 ] / [ 编码器 ]的简单整理
  • 【在大模型RAG系统中应用知识图谱】
  • 第二十条:与抽象类相比,优先选择接口
  • 20240705
  • 【2023ICPC网络赛I 】E. Magical Pair
  • Kafka-服务端-网络层-源码流程
  • 百日筑基第十一天-看看SpringBoot
  • Generative Modeling by Estimating Gradients of the Data Distribution
  • vector与list的简单介绍
  • 四种线程池的使用,优缺点分析