Menu

[r331]: / trunk / framework / OSMF / org / osmf / net / StreamingURLResource.as  Maximize  Restore  History

Download this file

263 lines (242 with data), 8.9 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
/*****************************************************
*
* Copyright 2009 Adobe Systems Incorporated. All Rights Reserved.
*
*****************************************************
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
*
* The Initial Developer of the Original Code is Adobe Systems Incorporated.
* Portions created by Adobe Systems Incorporated are Copyright (C) 2009 Adobe Systems
* Incorporated. All Rights Reserved.
*
*****************************************************/
package org.osmf.net
{
import __AS3__.vec.Vector;
import flash.utils.ByteArray;
import org.osmf.media.URLResource;
import org.osmf.utils.OSMFStrings;
/**
* StreamingURLResource is a URLResource which is capable of being
* streamed. It exposes some additional properties which are specific
* to streaming media.
*
* <p>Note that it is possible for live and recorded streams to have
* identical URLs. In such a case, the streamType property should be
* used to disambiguate live and recorded streams.</p>
*
* @includeExample StreamingURLResourceExample.as -noswf
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public class StreamingURLResource extends URLResource
{
/**
* Constructor.
*
* @param url The URL of the resource. For details about how to format this
* URL for flv, mp4, and other file formats, see the Adobe® Flash® Media Server
* documentation link below.
* @see http://www.adobe.com/go/learn_OSMF_fms_url_format_en
* @param streamType The type of the stream. If null, defaults to
* StreamType.RECORDED.
* @param subclipStartTime Optional start time of the streaming
* resource. When specified, the stream will be presented as a
* subclip, with playback beginning at the specified start time.
* @param subclipEndTime Optional end time of the streaming resource.
* When specified, the stream will be presented as a subclip, with
* playback ending at the specified end time.
* @param connectionArguments Optional set of arguments that will be
* supplied to NetConnection.connect when establishing a connection
* to the source of the stream.
* @param urlIncludesFMSApplicationInstance Indicates, for RTMP streaming
* URLs, whether the URL includes the FMS application instance or not. If
* true, then the second part of the URL path is considered the instance
* name, such as <code>rtmp://host/app/foo/bar/stream</code>. In this case
* the instance name would be 'foo' and the stream would be 'bar/stream'.
* If false, then the second part of the URL path is considered to be the
* stream name, such as <code>rtmp://host/app/foo/bar/stream</code>. In this
* case there is no instance name and the stream would be 'foo/bar/stream'.
* The default is false.
* @param drmContentData Content metadata for DRM-encrypted content.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function StreamingURLResource
( url:String
, streamType:String = null
, clipStartTime:Number = NaN
, clipEndTime:Number = NaN
, connectionArguments:Vector.<Object> = null
, urlIncludesFMSApplicationInstance:Boolean = false
, drmContentData:ByteArray = null
)
{
_streamType = streamType || StreamType.RECORDED;
_clipStartTime = clipStartTime;
_clipEndTime = clipEndTime;
_urlIncludesFMSApplicationInstance = urlIncludesFMSApplicationInstance;
_drmContentData = drmContentData;
_connectionArguments = connectionArguments;
super(url);
}
/**
* <p>The StreamType for this resource. The default value is <code>StreamType.RECORDED</code>.
* The StreamType class enumerates the valid stream types.</p>
* <p/>
* <p>This property may return the following string values:</p>
* <table class="innertable" width="640">
* <tr>
* <th>String value</th>
* <th>Description</th>
* </tr>
* <tr>
* <td><code>StreamType.LIVE_OR_RECORDED</code></td>
* <td>The StreamingURLResource represents either a live or a recorded stream.</td>
* </tr>
* <tr>
* <td><code>StreamType.LIVE</code></td>
* <td>The StreamingURLResource represents a live stream.</td>
* </tr>
* <tr>
* <td><code>StreamType.RECORDED</code></td>
* <td>The StreamingURLResource represents a recorded stream.</td>
* </tr>
* <tr>
* <td><code>StreamType.DVR</code></td>
* <td>The StreamingURLResource represents a DVR stream.</td>
* </tr>
* </table>
*
* @see StreamType
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function get streamType():String
{
return _streamType;
}
public function set streamType(value:String):void
{
_streamType = value;
}
/**
* Optional start time of the streaming resource. When specified,
* the stream will be presented as a subclip, with playback beginning
* at the specified start time. Note that clipStartTime is not
* currently supported for progressive videos. The default is NaN,
* which is to start at the beginning.
**/
public function get clipStartTime():Number
{
return _clipStartTime;
}
public function set clipStartTime(value:Number):void
{
_clipStartTime = value;
}
/**
* Optional end time of the streaming resource. When specified,
* the stream will be presented as a subclip, with playback ending
* at the specified end time. Note that clipEndTime is not
* currently supported for progressive videos. The default is NaN,
* which is to play to the end.
**/
public function get clipEndTime():Number
{
return _clipEndTime;
}
public function set clipEndTime(value:Number):void
{
_clipEndTime = value;
}
/**
* Optional set of arguments that will be supplied when making a
* connection to the source of the stream.
**/
public function get connectionArguments():Vector.<Object>
{
return _connectionArguments;
}
public function set connectionArguments(value:Vector.<Object>):void
{
_connectionArguments = value;
}
/**
* Content metadata for DRM-encrypted content.
**/
public function get drmContentData():ByteArray
{
return _drmContentData;
}
public function set drmContentData(value:ByteArray):void
{
_drmContentData = value;
}
/**
* Indicates, for RTMP streaming URLs, whether the URL includes the FMS
* application instance or not. If true, then the second part of the URL
* path is considered the instance name, such as <code>rtmp://host/app/foo/bar/stream</code>.
* In this case the instance name would be 'foo' and the stream would be 'bar/stream'.
* If false, then the second part of the URL path is considered to be the
* stream name, such as <code>rtmp://host/app/foo/bar/stream</code>. In this
* case there is no instance name and the stream would be 'foo/bar/stream'.
* The default is false.
**/
public function get urlIncludesFMSApplicationInstance():Boolean
{
return _urlIncludesFMSApplicationInstance;
}
public function set urlIncludesFMSApplicationInstance(value:Boolean):void
{
_urlIncludesFMSApplicationInstance = value;
}
/**
* Vector containing all alternative audio items associated with
* the current streaming resource.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.6
*/
public function get alternativeAudioStreamItems():Vector.<StreamingItem>
{
if (_alternativeAudioStreamItems == null)
{
_alternativeAudioStreamItems = new Vector.<StreamingItem>();
}
return _alternativeAudioStreamItems;
}
public function set alternativeAudioStreamItems(value:Vector.<StreamingItem>):void
{
_alternativeAudioStreamItems = value;
}
/// Internals
private var _streamType:String; // StreamType
private var _clipStartTime:Number;
private var _clipEndTime:Number;
private var _connectionArguments:Vector.<Object>;
private var _drmContentData:ByteArray;
private var _urlIncludesFMSApplicationInstance:Boolean = false;
private var _alternativeAudioStreamItems:Vector.<StreamingItem> = null;
}
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.