—本篇由团队成员Fantasy供稿!

原始版本

在Darwin Streaming Server版本中,推送端DoAnnounce的时候后服务器会根据easydarwin.xml中配置的movies_folder目录生成一个sdp文件,存放推送流的sdp文件信息,在拉取客户端,Darwin Streaming Server接收到DESCRIBE请求,检查服务器movies_folder目录下是否有对应请求路径的sdp文件,如果有则返回对应的sdp文件;

原始版本问题

很多时候,Darwin Streaming Server会由于权限问题无法创建movies_folder目录,或者无法在movies_folder目录下创建对应的sdp文件,并将sdp信息存进去,这样一来,就会造成推流或者拉流失败。

EasyDarwin解决办法

不再将sdp信息存放到movies_folder目录下的文件中,通过一个全局的map存储,建立StreamName到sdp信息context的索引。通过类CSdpCache管理,详见EasyDarwin文件sdpCache.h和sdpCache.cpp文件。实现比较简单,就不做详细介绍了。使用的单例模式,确保唯一性。

  1. 在推送DoAnnounce的时候生成sdp索引,
  2. 拉流的时候不再是遍历movies_folder目录,直接从sdpCache中查询(仅限于QTSSReflectorModule,FileModule仍然是读文件,因为访问的就是文件)
  3. ReflectorSession析构的时候,删除sdpCache中对应的map项。
  4. 更多信息参看EasyDarwin流媒体服务器Github:https://github.com/EasyDarwin/EasyDarwin

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2016

转载于:https://www.cnblogs.com/babosa/p/5904654.html

EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引相关推荐

  1. EasyDarwin开源流媒体服务器Golang版本:拉转推功能之拉流实现方法

    EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源"拉"到服务器,再通过转发协议转发给多个客户 ...

  2. EasyDarwin开源流媒体服务器

    主要功能特点 基于Golang开发维护: 支持Windows.Linux.macOS平台: 支持RTSP推流分发(推模式转发): 支持RTSP拉流分发(拉模式转发): 服务端录像 参考:EasyDar ...

  3. 多媒体视频开发_(6) EasyDarwin开源流媒体服务器程序搭建

    EasyDarwin开源流媒体服务器程序搭建 https://winqi.cn/120.html

  4. EasyDarwin开源流媒体服务器性能优化之Work-stealing优化方案

    本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52400226 EasyDarwin团队的Ba ...

  5. EasyDarwin开源流媒体服务器性能瓶颈分析及优化方案设计

    EasyDarwin现有架构介绍 EasyDarwin的现有架构对网络事件的处理是这样的,每一个Socket连接在EasyDarwin内部的对应存在形式就是一个Session,不论是RTSP服务对应的 ...

  6. 基于EasyDarwin开源流媒体服务器框架实现EasyNVR H5无插件直播流媒体服务器方案

    背景分析 在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服 ...

  7. EasyPusher安卓直播推流到EasyDarwin开源流媒体服务器工程简析

    EasyPusher主要有三部分组件组成:采集,编码,叠加,上传.在这个基础上同时支持本地存储\后台预览的功能.主要业务模块与相关类之间的关系如图所示: Created with Raphaël 2. ...

  8. EasyDarwin开源流媒体服务器如何实现按需推送直播的

    --本文转自EasyDarwin开源团队成员邵帅的博客:http://blog.csdn.net/ss00_2012/article/details/51441753 我们使用EasyDarwin的推 ...

  9. EasyDarwin开源流媒体服务器内存管理优化

    -本文由EasyDarwin开源团队成员Fantasy贡献 前言 最近在linux上跑EasyDarwin发现一个很奇怪的问题,当有RTSPSession连接上来的时候,发现进程的虚拟内存映射一下就多 ...

最新文章

  1. 中国安防视频监控行业发展前景分析
  2. 【阿里云产品公测】高大上的搜索服务OpenSearch, 你值得拥有!
  3. 和 VMware、深信服、天翼云、招商云专家一起聊聊云原生边缘计算
  4. 计算机教育杂志社投稿送样刊,山东教育杂志社投稿期刊论文征稿发表-陶润杂志网...
  5. 【C语言】字节对齐问题(以32位系统为例)
  6. 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器
  7. stl clocklist 查找元素_C++算法竞赛中常用的STL
  8. 判断回文数(用函数)并且输出范围a到b之间的所有回文数 c++
  9. python生成器generator和迭代器Iterator测试
  10. ubuntu MySQL-python 安装失败解决方法
  11. java调用opencv人脸识别 error insufficient out of memory
  12. 潘多拉系统虚拟服务器,潘多拉服务器节点配置
  13. JEECG框架的入门学习
  14. 潜意识幻想-思维幻觉-昏迷中的加速思考
  15. lightoj 1009 - Back to Underworld 【DFS】
  16. 产品经理如何提升自己的知识
  17. 信息安全系统设计基础实验四—20135215黄伟业20135222胡御风
  18. 编程基础篇:#1082 : 然而沼跃鱼早就看穿了一切
  19. 高校计算机课程建设研讨会通知,大学计算机教改与课程建设研讨会召开
  20. 游戏系列~苍穹世界(5)

热门文章

  1. 独立游戏荣获TGA最佳叙事奖,《极乐迪斯科》凭什么这么牛?
  2. 使用行动列表去创造简单且可扩展的游戏AI
  3. 常见Java面试题 Files的常用方法都有哪些?
  4. [Trie] Luogu P2992 [USACO08DEC]秘密消息Secret Message
  5. [js高手之路]从零开始打造一个javascript开源框架gdom与插件开发免费视频教程连载中...
  6. [2017.3.23]Miller-Rabin
  7. 关于Cocos2d-x中让主角运动的方法
  8. ios 多线程 -- NSOperation 常用方法
  9. .net 浏览器请求过程(图)
  10. 菜鸟之2011-2012学年总结