最近在开发EasyDarwin开源流媒体服务器HLS直播的时候发现一个现象:在PC上用flash player播放HLS和在ios上面播放HLS时,效果明显不同,在ios上播放非常稳定,而在flash player上播放会经常性卡住,需要重新刷新网页才能够正常播放.经过不断跟踪调试,发现问题主要出在浏览器上,浏览器在请求.更新m3u8文件的过程中,有缓存,导致请求到的m3u8列表是过期的,里面的ts列表有文件已经被删除了,导致m3u8播放器请求已经不存在的ts文件,就卡住了,所以我们测试过,比较…
背景 近期跟开源团队商量,想在EasyDarwin上继续做一些功能扩展,目前EasyDarwin开源流媒体服务器只能够实现高效的RTSP推流直播转发/分发功能,输入与输出都是RTSP/RTP流,不能够很好滴满足当下日益火热的互联网直播/录播的需求,我们计划在当前节点EasyDarwin-v7.3.17.0325基础上继续扩展几个功能: EasyDarwin服务器端直播存储功能: 对RTSP直播推流同步输出RTMP.HLS直播功能: 直接接入RTSP IPCamera输出RTMP.HLS直播功能:…
前言 前一段时间,我们为EasyDarwin实现了客户端快速显示画面/听到同步声音的缓存关键帧检索方案,具体的实现方法分别在<EasyDarwin手机直播是如何实现的快速显示视频的方法>和<EasyDarwin手机直播转发快速显示问题之音频处理过程>两篇博客中可以了解到具体的实现原理,实现的方法代码也可以在EasyDarwin的ReflectorStream类中找到: 问题需求 经过了一段时间的测试和项目检验,按照上述描述的流程,能够很好地实现快速显示功能,但转发过程中,还会出现随…
title: Node版本EasyDarwin开发心得 date: 2018-03-27 22:46:15 tags: 年后着手Node版本EasyDarwin的开发工作,截止到今天2018年03月27日上线了第一个版本,今天小米发布了MIX2S, 致敬! 致敬! 关于RTSP协议 目前这个第一版暂时仅支持RTSP Over TCP, 不过RTSP Over UDP也会很快实现.总体来说, RTSP协议比较简单.开发过程中对RTSP协议的理解主要参考了 rtsp协议详解 这篇文章.sdp的解析一…
EasyDarwin开源流媒体服务器(www.easydarwin.org)现在使用Go版本实现了.最新的代码提交,已经支持了推流(或者拉流)的同时进行本地存储. 本地存储的原理,是在推流的同时启动ffmpeg作为一路Client来做存储.ffmpeg在demux和mux的工作方面已经十分成熟,我们没必要再重复发明轮子.因此这种做法十分取巧而且简单有效,也不会侵入原来的代码架构.如下图所示: RTSP摄像机EasyDarwin本地存储推流使用ffmpeg进行拉流和存储RTSP摄像机EasyDar…
EasyDarwin开源流媒体服务器(www.easydarwin.org),拉转推是一个很有意义的功能,它可将一个独立的RTSP数据源"拉"到服务器,再通过转发协议转发给多个客户端,或者通过EasyDarwin的本地存储功能进行存储.国内大多摄像机都支持RTSP协议,通过拉转推可将第三方摄像机接入到EasyDarwin服务器. IPCEasyDarwin第三方RTSP源本地存储Client1Client2Client3拉流拉流ffmpeg转发转发转发IPCEasyDarwin第三方R…
本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52400226 EasyDarwin团队的Babosa对EasyDarwin流媒体服务器的性能瓶颈进行了分析,并提出了优化方案.EasyDarwin开源流媒体服务器性能瓶颈分析及优化方案设计 这里,根据Babosa提出的优化方案,以及Work-stealing的算法特性,提出用Work-stealing算法对EasyDarwin进行优化. 什么…
本文来自EasyDarwin团队Fantasy(fantasy(at)easydarwin.org) 一. EasyDarwin网络模型介绍 EventContext负责监听所有网络读写事件,EventContext::RequestEvent每次插入一个监听事件到 监听列表(select 文件描述符集合),EventThread::Entry()死循环监听添加到该FD_SET的所有文件描述符的 事件.Entry()->select_waitevent()每次返回下一个要处理的事件节点,包括事件…
EasyHLS  Github:https://github.com/EasyDarwin/EasyHLS EasyHLS是什么? EasyHLS是EasyDarwin开源流媒体社区开发的一款HLS打包库,接口非常简单,只需要传入打包的文件名.切片存放的目录.打包间隔以及切片数,EasyHLS库就能轻松将H264+AAC的流媒体切片,提供给WEB服务器进行HLS流媒体发布,我们提供了两套操作示例: EasyHLS_RTSP:以RTSPClient的形式,从RTSP URL将摄像机音视频获取到本地…
背景分析 在之前的一篇博客<web无插件播放RTSP摄像机方案,拒绝插件,拥抱H5!>中,描述了实现一套H5无插件直播方案的各个组件的参考建议,又在博客<EasyNVR H5流媒体服务器方案架构设计之视频能力平台>中对整体的架构设计思路做了总结,做高内聚.低耦合的视频能力平台,不涉足业务部分!那么今天,我们来公开一下EasyNVR到底是如何实现这些功能的: 一.程序框架 熟悉EasyDarwin的同学都知道,EasyDarwin作为老牌的流媒体功能框架,在很多领域是完全能够满足开发…