EasyDarwin 客户端播放转发流代码分析

EasyDarwin+flv.js实现视频直播【浏览器无插件播放rtsp流】 实现摄像头的直播功能其实有许多方案,像是安装vlc插件、rtsp转rtmp然后使用videojs通过flash播放rtmp,以及hls .m3u8等方式 然而现今的浏览器对于vlc插件几乎都不再支持了,flash在2020年也将被chrome停止支持,而.m3u8的方案用来做直播的话似乎延迟很高。最终决定使用B站开源的flv.js。 推流工具使用的是FFmpeg 流媒体服务使用EasyDarw... 阅读详情

在之前博文https://blog.youkuaiyun.com/blobliu/article/details/83012338中分析了转发流及相关类的分析,便会想到当我们播放转发流的时候EasyDarwin是怎么工作的。本次博文便来分析客户端播放转发流代码。

如前面提到的博文讲的ReflectorSocket是接收推流端数据的Socket。ReflectorSocket继承自UDPSocket,同时继承自IdleTask。

IdleTask继承自Task,Task是定义的线程类。

在推流成功后,新建ReflectorSocket就被放入线程执行,执行Run()方法。

在Run()方法中,主要做了两件事

  1. 从端口获取进来的数据
  2. 转发数据并检查是否要发送

1. 从端口获取进来的数据调用的方法是GetIncomingData(...)

在ReflectorSocket::GetIncomingData(...)中调用ReflectorSocket父类的RecvFrom(...)函数接收数据,对应接收到的数据调用之前博文提到的ReflectorSocket::ProcessPacket(...)方法进行处理。

2. 转发数据调用的方法是ReflectPackets(...),这个方法属于转发器(ReflectorSender)。遍历获取所有非空转发器调用ReflectPackets(...)。

在ReflectPackets(...)中通过for循环获取当前转发器(ReflectorSender)的转发流(ReflectorStream fStream)的每一个转发输出流(ReflecotrOutput* theOutput),判断theOutput是否为空,不为空是否正在播放,每一个转发输出流对应一个url,在客户端请求播放这个url的视频流时,对应的转发输出流状态在RTSP播放请求交互中被置为正在播放。

所以当客户端请求播放某个ur时,对应的转发输出流符合IsPlaying(),最终调用SendPacketsToOutput(...)函数将转发输出流的数据就行发送给客户端。

在ReflectorSender::SendPacketsToOutput(...)中调用的核心方法就是WritePacket(...)。

对于推流模式(非拉流),调用的方法是RTPSessionOutput::WritePacket(...)。

在此函数中调用的核心方法是QTSS_Write()。

QTSS_Write()函数调用的是回调类(QTSSCallbacks)中的QTSS_Write(...)函数。

可以看出在QTSSCallback::QTSS_Write(...)中调用的是Write(...)函数,具体调用的是RTPStream中的虚函数。

在此函数中最终调用SendTo方法发送RTP和RTCP数据到客户端。

发送RTP数据。

发送RTCP数据。

至此完成EasyDarwin完成将转发流发送到客户端播放。

EasyDarwin全面指南:从基础到高级应用 EasyDarwin是一个开源的流媒体平台框架,它基于Go语言开发,旨在提供高性能的RTSP(Real Time Streaming Protocol)服务。EasyDarwin支持多种流媒体处理功能,包括推模式转发、拉模式转发、录像、检索、回放、关键帧缓存和秒开画面等。此外,它还提供了RESTful接口和Web后台管理,使得用户可以方便地进行流媒体的管理和控制。 阅读详情

相关推荐

综合RTSP推流方案:EasyDarwin与FFmpeg软件包

RTSP协议工作在应用层,提供了一种在客户端和流媒体服务器之间进行有效控制的方法。它允许用户通过发送控制命令来播放、暂停、快进或倒退媒体内容。RTSP本身不直接传输音视频数据,而是通过控制协议去指示RTP(实时传输协议)数据流的传输,其中RTP则专门负责媒体数据的传输。FFmpeg的安装与配置对于初学者而言可能会稍显复杂,但一旦熟悉了其安装流程,后续的使用就会变得非常简便。用户可以选择从源代码编译安装,也可以下载预编译的二进制版本。

weixin_32251525的博客 1248

EasyNVR RTSP转RTMP-HLS-FLV流媒体服务器前端构建之:通过接口获取实时信息

熟悉EasyNVR产品的小伙伴应该知道,EasyNVR主要针对的是安防类的项目,通过RTSP/onvif协议将前端高清网络摄像机IPC、NVR等接入进来,然后将设备端的音视频通过采集、转换,输出RTMP、HLS、HTTP-Flv格式直播流,进行全平台无插件直播。

EasyNVR官方技术博客 741

基于easydarwin实现的rtsp拉流转发功能

基于easydarwin实现的rtsp拉流转发功能,仅仅同过一个进程,可以实现多路流的拉流转发,充分利用darwin原有框架的高性能架构。此版本是vs2015 windows下的。

EasyDarwin_Demo:轻量级、高效的物联网视频流媒体开源平台

EasyDarwin_Demo:轻量级、高效的物联网视频流媒体开源平台 去发现同类优质开源项目:https://gitcode.com/ 是一个基于标准的 RTSP/RTMP 协议的开源项目,专为物联网(IoT)环境设计的视频流媒体服务器和客户端解决方案。这个项目为开发者提供了一个快速实现视频服务的能力,无论是用于监控系统、智能家居还是远程教育等场景。 项目简介 EasyDarwin_Demo 由...

gitblog_00035的博客 684

Easy-FLV: Java 实现的 RTSP/RTMP 到 FLV 转换器

Easy-FLV 是一个用 Java 实现的库,它能够将 RTSP 或 RTMP 视频流转换为 FLV 格式,以便在浏览器中播放。它为实时视频监控、直播和视频流处理提供了一个高效、稳定且易于集成的解决方案。高效转换:快速将视频流转换为 FLV 格式,无需复杂配置。易于集成:作为 Spring Boot Starter 使用,轻松集成到任何 Java 项目。现代浏览器支持:支持所有主流浏览器,无需额外插件。实时流处理:适用于实时视频流的转换,如安防监控和直播。

BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试

本文介绍了如何基于BGE-M3开源模型实现一个简单的二分类情感分析任务,展示了NLP中经典的“预训练 + 微调”范式。首先,加载预训练模型和分词器,并构建分类头整合到模型中。接着,进行数据预处理并构建DataLoader。然后,定义优化器、损失函数和训练循环,进行模型微调。微调过程中,可以选择基于[CLS] token的单特征提取或基于池化策略的多特征融合。最后,通过验证与推理评估模型性能,并导出ONNX模型以适应生产环境。BGE-M3在语义表征任务中表现优异,适合作为文本分类、语义搜索等下游任务的基础模型

大鹏的专栏 1403

EasyDarwin开源流媒体服务器

本文介绍一个十分实用的高性能开源 RTSP 流媒体服务器:EasyDarwin。

明天你好的博客 6304

视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现

在计算机视觉领域,Vision Transformer (ViT) 已经证明了纯 Transformer 架构在图像分类任务上的强大能力。然而,ViT 通常需要在大规模数据集上预训练才能达到最佳性能,DeiT (Data-efficient image Transformer) 通过引入一系列训练策略和优化,使得 Transformer 模型能够在相对较小的数据集上取得优异表现。本节将详细介绍 DeiT 的技术原理,并使用 PyTorch 从零开始实现 DeiT 模型。

盼小辉丶的博客 1341

流媒体 rtmp/rtsp 实现浏览器 flv.js播放

使用node-media-server模块, flv.js 编写流媒体服务 实现接收 rtmp流,播放用 http播放 编写服务端 安装node-media-server模块 mkdir live-app cd live-app npm init --yes npm install node-media-server --save 编写服务端代码 single_app.js const NodeMediaServer = require('node-media-server'); const

_Tsun 的博客 1万+

加权均值向量算法(INFO)详解:从数学原理到智能算法

本文系统介绍了加权均值向量算法(INFO)的理论基础、数学模型与实现应用。该算法基于加权均值数学概念,通过MeanRule规则平衡探索与开发能力,具有结构新颖、参数合理的特点。核心内容包括:1) 算法理论基础,阐述加权均值数学定义与小波函数权重计算;2) 算法原理,详细解析更新规则、向量组合和局部搜索三阶段数学模型;3) 实现方法,提供MATLAB代码关键参数解析;4) 改进方向,介绍INFO-KELM混合模型等变体;5) 应用案例,涵盖函数优化、工程设计与机器学习领域。

qq_42212808的博客 234

【Python爬虫系列】_005.浏览器开发者工具(详解)

Elements(元素)分析当前页面节点,用来辅助书写BS或者XPath这里面的数据与源代码有区别,不一定准确(避坑)Console(控制台)这个除了查看错误信息、打印调试信息(console.log())、写一些测试脚本以外,还可以当作Javascript API查看用例如我想查看console都有哪些方法和属性,我可以直接在Console中输入"console"并执行后续学js逆向的时候需要用到Sources(源代码)与在网页页面,鼠标右键——查看网页源代码 内容一致。

weixin_50296259的博客 422

使用EasyDarwin+FFmpeg实现rtsp推流

ces

weixin_42547619的博客 5164

【WLAN】【基础知识】WIFI那些事儿之AP扫描周边AP和STA

如本文对你有些许帮助,欢迎大佬打赏: 支付宝及微信打赏方式

一介草民,只为生活。 2882

搭建EasyPusher_FILE推流至EasyDarwin完整过程

搭建EasyPusher_FILE推流至EasyDarwin完整过程@TOC 1、搭建EasyDarwin服务器 从https://github.com/EasyDarwin/EasyDarwin/releases下载EasyDarwin-8.1.0-1811292237版本解压后,直接运行EasyDarwin.exe 如下图: 2、编译生成EasyPusher_FILE 从https://github.com/EasyDarwin/EasyPusher 下载EasyPusher 打开win文件夹下面的E

u011514315的博客 1069

【专栏必读】王道考研408计算机网络+湖科大教书匠计算机网络+网络编程万字笔记使用说明及章节导航

本文档汇总了王道考研408计算机网络和湖科大教书匠计算机网络课程的重点内容,包括计算机网络体系结构、物理层、数据链路层、网络层、传输层和应用层的详细讲解。通过ISO/OSI和TCP/IP模型,深入探讨了通信基础、介质访问控制、IP地址、TCP/UDP协议、流量控制和网络编程等关键概念。此外,还提供了Linux网络编程实践,帮助读者巩固理论知识

快乐江湖的博客 2万+

【RAG文档解析优化】复杂Excel表格处理

—从识别表格边界,到恢复内部结构,再到生成RAG友好的表示——我们可以系统性地将这些“带刺的玫瑰”驯服。虽然代码实现可能充满细节和挑战,但其带来的回报是巨大的:一个更干净、更可靠的知识库,以及一个能真正理解和利用表格数据、从而提供精准答案的RAG系统。为了人类阅读的便利性,制作者常常会使用合并单元格来创建标题、使用多层表头来组织复杂的列、在同一个Sheet页中放置多个相关的表格,并添加大量的注释说明。它们就像一朵朵“带刺的玫瑰”,虽然蕴含着宝贵的数据,但如果直接用传统的方法(如。

kakaZhui的博客 853

EasyDarwin实战:5分钟搞定RTSP推流与拉流(附常见问题排查)

本文提供了一份基于EasyDarwin开源RTSP流媒体服务器的快速实战指南。通过极简步骤,帮助用户在5分钟内完成服务部署、实现RTSP推流与拉流测试,并附带了端口冲突、防火墙设置等常见问题的排查方法,适用于智能安防、视频监控等需要快速集成流媒体能力的场景。

sea99的博客 669

STM32Cube高效开发教程<高级篇><FreeRTOS>(一)-----FreeRTOS基础

一、 FreeRTOS概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。写在前面:今天就算正式开始高级篇的博客编写了,我本人也是第一次学习FreeRTOS,所以整体的进度会比较慢,博客更新可能不太会及时,希望大家原谅。一、 FreeRTOS概述。

我的博客 1844

从摄像头采集到网络直播:EasyDarwin在Windows10上的完整推流指南

本文详细介绍了在Windows10环境下使用EasyDarwin和FFmpeg实现从摄像头采集到网络直播的全链路推流方案。涵盖环境准备、视频采集、编码推流、低延迟优化及客户端播放等关键步骤,帮助用户快速搭建轻量级直播系统。特别针对Windows10平台提供了详细的配置指导和性能调优建议。

d6e7f8的博客 918

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java web 流媒体播放,利用流媒体将RSTP流转成WEB端可播放(使用EasyDarwin)

个人测试成功如下(Windows环境):首先获取EasyDarwin:链接:https://pan.baidu.com/s/1HdZxwHrw3H8B6Ur4ctYOOQ 提取码:y18u安装完成在计算机管理中可看到: 在安装目录中打开: 我的ini文件如下:[http]port=10000default_username=admindefault_password=admin[rtsp]por...

weixin_42122306的博客 1462

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

easydarwin 安装_win10安装EasyDarwin并作为流媒体服务器的推流和拉流实例

为了模拟客户端对视频流的推流和拉流,决定下一个流媒体服务器,据说EasyDarwin很一个开源又简单,就选它了。下载从它的官网http://www.easydarwin.org/来到git仓库,选则easydarwin项目后进入releases,选安装包:问题是git下载网速被限制了,下了一丢丢就没了,除非自己下载源码、编译和打包。为求方便,先将就下个老版本用用https://download.c...

weixin_39990819的博客 712

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

避坑指南:Windows下用EasyDarWin搭建RTSP服务时,FFmpeg推流命令参数详解与常见错误排查

本文详细解析了在Windows系统下使用EasyDarWin搭建RTSP服务时,FFmpeg推流命令的关键参数设置与常见错误排查方法。从设备识别、编码参数优化到服务端日志分析,提供了一套完整的视频流处理解决方案,帮助开发者高效解决推流过程中的各类技术难题。

dinongxu8804的博客 412

【EasyDarwin】RTSP视频转发服务器搭建

服务器端:EasyDarwin 核心流媒体服务!开源流媒体服务,高效、稳定、可靠、功能齐全,支持RTSP/HLS/HTTP流媒体协议,支持安防行业需要的摄像机流媒体转发功能、支持互联网行业需要的多平台(WEB、Android、IOS)点播(Mp4)、直播(H264/MJPEG/MPEG4、AAC/PCMA/PCMU/G726)功能,支持标准WebService接口调用。            下

FlashCloud 1万+

windows系统搭建EasyDarwin流媒体服务器

windows系统EasyDarwin流媒体服务器 笔者未商用 文章目录windows系统EasyDarwin流媒体服务器EasyDarwin官网流媒体服务器配置编译源代码最后 EasyDarwin官网 http://www.easydarwin.org/ [引] 高性能开源RTSP流媒体服务器,基于go语言研发,维护和优化:RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键...

锦鲤 1万+

easydarwin 安装_EasyDarwin 笔记

有关于EasyDarwin的具体介绍请查看:http://www.easydarwin.org 文中不赘述。一、EasyDarwin的下载:下载源码:https://github.com/EasyDarwin/EasyDarwin (注意需要下载release里面的内容,Master分支可能有BUG)二、编译、安装与运行三、Nginx配置四、ffmpeg推流接入1. 启动ffmpeg.exe,开...

weixin_39746229的博客 757
上一篇: EasyDarwin ReflectorStream及相关类分析
下一篇: EasyDarwin HTTP后台管理分析
blobliu
博客等级 码龄9年 13粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值