mx.controls.streamingmedia.RTMPConnection类导读

一文搞懂 RTMP直播流媒体协议 RTMP 协议传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把 Message 划分为带有 Message ID 的 Chunk,每个 Chunk 可能是一个单独的 Message,也可能是 Message 的一部分,在接收端会根据 Chunk 中包含的 data 的长度,message id 和 message 的长度把 chunk 还原成完整的 Message,从而实现信息的收发。服务器发送命令消息中的 “结果” (_result), 通知客户端连接的状态。 阅读详情

这些天在研究flashcom的mp3 库.flashcom,我比较陌生.只在大四上的时候,花了一天半的时间搞过一个视频录制的.以前在工作室没把音箱带过去, 省得吵,结果一年多没有听到机器发声.对音频这方面知道的甚少, 快成盲了  . 在这里非常感谢云开的无私帮助.
看macromedia媒体组件的流媒体包,觉得还是收获蛮大,以下分析的是基于RTMP协议的Netconnection的一个子类. 在mx.controls.streamingmedia包中. 

//****************************************************************************
//Copyright (C) 2003 Macromedia, Inc. All Rights Reserved.
//The following is Sample Code and is subject to all restrictions on
//such code as contained in the End User License Agreement accompanying
//this product.
//****************************************************************************
import mx.controls.streamingmedia.RTMPPlayer;
import mx.controls.streamingmedia.Tracer;//做调试的trace

/**
* A subclass of NetConnection that is tailored to work with the RTMPPlayer
* class.
* 一个专门为RTMPPlayer定制的NetConnection类的子类
* @author Stephen Cheng
*/
class mx.controls.streamingmedia.RTMPConnection
extends NetConnection
{
        /** Flag to indicate whether a thread is already in connect(). Only one thread
        *  at a time should be in this function.
        * 标记是否已有一个线程在连接,同一时刻只能有一个线程连接
        */
        static var _connectFlag:Boolean;
        /** Array of queued RTMPPlayers, awaiting their turn to call connect(). */
        //RTMPPlayers队列(实际上是RTMPConnection的数组),等待连接
        static var _connectorQueue:Array = new Array();
        
        private var _targetURI:String;//目标资源地点
        private var _streamName:String;//流的名称
        private var _player:RTMPPlayer;//运行的RTMPPlayer实例
        
        //构造函数,参数为一个RTMPPlayer的实例
        public function RTMPConnection(player:RTMPPlayer)
        {
                _player = player;
        }
        
        // 当元数据从flash communication server到来时
        // 播放器从服务器发来的信息设置总播放时间
        public function onMetaData(info)
        {
                _player.setTotalTime(info.duration);
        }
        
        /* Only one thread can be in this function at a time.
        * 同一时刻只有一个线程可以使用这个连接函数
        */
        public function connect(targetURI:String, streamName:String):Void
        {
                //如果已经存在一个线程正在连接
                //则把此连接放入到等待队列中
                //并返回
                if (_connectFlag == true)
                {
                        pushConnection(targetURI, streamName);
                        return;
                }
                //如果不存在则把先把连接标记设为true
                //然后再连接目标
                _connectFlag = true;
                super.connect(targetURI, streamName);
                
                //当前连接执行完后从队列
                //弹出最近压入的RTMPConnection实例,并执行连接
                popConnection();
        }
        
        private function pushConnection(targetURI:String, streamName:String):Void
        {
                //压入队列
                _targetURI = targetURI;
                _streamName = streamName;
                
                //queue the connection attempt and retry later
                _connectorQueue.push(this);
        }
        
        //弹出最近压入的RTMPConnection实例,并执行连接
        private function popConnection():Void
        {
                _connectFlag = false;
                if ( _connectorQueue.length != 0)
                {
                        var poppedConnection:RTMPConnection = RTMPConnection(_connectorQueue.pop());
                        poppedConnection.connect(poppedConnection._targetURI, poppedConnection._streamName);
                }
        }
}
当中的连接队列, 与其就是个队列不如说是个堆栈.这样使得连接变成先进后出了,这可不太好. 假如pop出来的RTMPConntion连接时间过长,此时又有新的连接.
那在栈底的岂不是永远天日.而且连接也不分个等级,有可能因为都是为Player服务的,所以干脆不分~~~~~ 好faint.
rtmp信令交互过程分析三-连接(connect) 概述 握手之后就是连接(connect),由客户端发起,服务端响应,connect指定的app。 1、C->S : connect app:需要connect的app名称 flashVer tcUrl fpad capabilities audioCodecs videoCodecs videoFunction 2、S->C : Window Acknowledgement... 阅读详情

相关推荐

带你吃透RTMP

title: 带你吃透RTMP date: 2016-03-06 19:26:00tag: [RTMP, 协议]RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频直播等领域逐渐活跃起来,

coding小世界 3万+

【流媒体】RTMPDump—RTMP_Connect函数(握手、网络连接)

前面进行了RTMPDump主流程的分析,包括初始化和一些解析过程,现在分析RTMPDump是如何进行握手和网络连接,这是进行RTMP通信的第一步。

weixin_42877471的博客 1591

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7853

rtmp NetConnection 状态

"NetConnection.Connect.Success"  //服务器连接成功  "NetConnection.Connect.Closed"   //连接中断  "NetConnection.Connect.Failed"   //连接失败"  "NetConnection.Connect.Rejected"  //没有权限"  "NetStream.Play.Reset"

tongjing524的专栏 2355

基于obs的rtmp源码分析之RTMP_Connect(rtmp连接)

最近在研究OBS源码,里面有一个很重要的模块是推流模块,OBS是使用RTMP进行推流的,源码里面也有RTMP的源码,翻了一下目前网上没有详细的RTMP源码注释,所以这里基于OBS项目,来详细讲一下RTMP源码包括内核数据结构、公共函数接口功能。关于具体的RTMP协议,网上有很多RTMP协议可以找到这里只做简单介绍,重点是代码的注释分析。接口比较多写的比较细,耐心看哈哈哈。 这里所有的实际测试推流操作均为向斗鱼上推流(因为我一直用它看直播哈) RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP

一个大龄程序员的博客 1505

关于Red5 NetConnection.Connect.Rejected的问题

今天在进行《red5入门教程》第二个例子:服务器调用客户端方法的时候遇到了这样一个问题: 在Flex中 对 rtmpURL的定义是这样的: private var rtmpURL:String = "rtmp://**.**.**.14/MySecondJava-CallClient";  //红色是服务器的ip地址 然后正常运行时,连接服务器被拒绝。 NetConnection.Co

u011893860的专栏 1681

SWF文件格式说明书--SWF文件头

 SWF文件头字段型备注标识8位标识字节:F代表未压缩C代表已压缩(SWF6以后的版本特有)标识8位代表W标识8位代表S版本号8位代表SWF文件的版本,比如0x06代表SWF6文件长度32位整个文件的所占的字节

AOL's Web Log 1万+

我的计划 & SCM & Actionscript

随着Actionscript的发展,它已经步入面向对象开发的领域了, 回首再看flash4那时候的script,已经变成很遥远了. Macromedia提出了RIA的战略思想, 但我觉得这方面很不成熟.首先是语言本身, 就算是它完全符合了ECMA-4的标准,还是有很多东西是没有的;其次是我认为也是本质性的是开发群体,.很多actionscript developer不是专业出身, 很多是喜欢fla

AOL's Web Log 6027

SWF文件格式说明书--SWF文件结构

SWF File StructureSWF文件结构Following the header is a series of tagged data blocks. All tags share a common format, so anyprogram parsing a SWF file can skip over blocks it does not understand. Dat

AOL's Web Log 5193

SWF文件格式说明书(四)

File Compression Strategy文件压缩策略Since SWF files are frequently delivered over a network connection, it is important that they be ascompact as possible. There are several techniques that are used to acc

AOL's Web Log 5021

Swf 8/9 MetaData 探究

从我以前关于Swf文件的译稿可知Swf文件是由一个文件头,一个文件尾, 中间插着各种Tag组成.Flash 8 以后的swf 文件多了一个metadata,定义的是swf文件作者、swf 文件描述、语言及创作时间等信息。其实它是一个xml格式的字符串. 相关的内容,我找到blueidea的一篇文章,这里就不重复了 :)http://www.blueidea.com/tech/multimedia/

AOL's Web Log 3941

SWF文件格式说明书--字典

The Dictionary 字典The dictionary is a repository of characters that have been defined, and are available for use by Control Tags. The process of building and using the dictionary is as follows: 1 A

AOL's Web Log 3660

flash内嵌于C#程序中的应用

flash player是以一个com+组件的形式插入到C#应用程序中的. 加入的方法和普通com+控件一样.这是我今年2月做的一个小试验。事实上我上半年做的项目一直跟这方面有关,所以对这方面还是有一些经验的。现在由于公司项目的启动,所以要对这个熟悉一下,然后整以成熟的方法,使它们之间的接口更有通用性。这方面有一个开源项目flashCsharp做得还不错。但他只是对文件控制不错,扩展性不是很强。这

AOL's Web Log 3440

Actionscript2 Delegate研究(中)

首先看一下Delegate的原始,它是由Mike Chambers写的。class com.macromedia.mesh.events.EventProxy{        private var receiverObj:Object;        private var funcName:String;                /*        Cons

AOL's Web Log 3103

ResizableWindow源码

//****************************************************************************// 版权及最终解释权归AOL所有// 大小可以由鼠标拖动的Window组件// 由mx.containers.Window继承//***********************************************

AOL's Web Log 3039

ActionScript2 delegate 研究(上)

委托这个概念在C#/java中用得比较多,有点儿像C++中的函数指针,但比它更先进.这里有msdn对Delegate的文档:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDelegateClassctorTopic.asp然而Actionscript2对Dele

AOL's Web Log 2986

Abstract Factory构造的花园

 名称Abstract Factory结构意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的。适用性一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品库,而只想显示它们的接口而不是实现时

AOL's Web Log 2808

C#程序与Flash的接口

参照sourceforge的开源项目,数据传输采用WDDX方法把对象及其属性串行化,接收端则解串行化解析出相应的数据。  pre {font-family:"Courier New", Courier, Arial; font-size: 12px;} .operator {color: #000000;} .keyword {color: #993300;}

AOL's Web Log 2743

MVC设计模式小试验

看了一下moock的《Essential.Actionscript.2.0》,全书都写得不错,不愧为actionscript的权威写出来的书。注意了一下,MVC模式这一章。MVC也不是什么新概念了, 早在smalltalk中开始流行了, 现在C++中的document/view结构也是这种原理。通过消息映射达到从view响应的事件改变document的内容。一看moock的写法,就知道他是有jav

AOL's Web Log 2613

YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022

多尺度卷积注意力(MSCA),有效地提取上下文信息;1)作为注意力MSCA使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 3794

国产操作系统常用公文字体下载,黑体 宋体 仿宋-GB2312 方正小标宋简体 楷体-GB2312 Times New Roman

现在国产系统越来越多,但对应的字体配套却没有跟进!如果你想要在自己的国产操作系统上安装字体,就下载这个文件,里面包括了黑体 宋体 仿宋_GB2312、方正小标宋简体、楷体_GB2312、Times New Roman四种字体,按需下载!

上一篇: 一个Slider组件
下一篇: 我的gmail有六个邀请,想要的和我联系
flashvan
博客等级 码龄22年 6粉丝 67原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值