您好...我真的希望这会有所帮助...我为各种实体处理过各种形式的在线视频;我确实知道 Adobe 在 PlayBack 方面有大约 12 年的历史……所以,如果你一直在使用它 --- YouTube 仍然在使用它……?
我整理了一个 AS3 示例,该示例检索 objectEncoding 属性的值以及帧内容的标头 [订单文件]--为了使用 Binary 生成您需要的内容,您将在 appendBytes ( )-- 这会将字节添加到 FIFO 中,直到 FLV 标签完成……一旦 FLV 标签完成,它就会使用对 appendBytes() 的调用移动到缓冲区 [线程:播放]:此缓冲区将通知您何时使用FLV 标签。未形成完整 FLV 标签的剩余字节进入 FIFO 中的 FIFO Bytes(移动@播放缓冲区)。
这里是选项 2:NetStream 对象有两个缓冲区:从 appendBytes() 到 NetStream() 对象的 FIFO,以及 [playout] 缓冲区。 FIFO 是重新组装的部分 FLV 标签;它包含不超过一个不完整的 FLV 标签:
调用 NetStream .seek。冲洗 ||缓冲区。 Seek 提供对以下内容的本机访问权限:
appendBytesAction -> readObject -> object... 你的数据在序列化的 AMF 中
从 ByteArray 中提取并存储它。
下面的例子将订单文件从(filename || location for Data)读入一个ByteArray(以Bytes为单位),解压,调用readObject()将其存储在一个each()循环构造中,添加每个节点到显示器:
package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.filesystem.*;
import flash.utils.ByteArray;
import flash.utils.*;
function wBytes(file:String, data:ByteArray):void{
var oFile:File = File.desktopDirectory;
oFile = oFile.resolvePath(file);
var oStream:FileStream = new FileStream();
oStream.open(oFile, FileMode.WRITE);
oStream.writeBytes(data, 0, data.length);
oStream.close();
var iFile = iFile.resolvePath(file);
var iStream:FileStream = new FileStream();
iStream.open(iFile, FileMode.READ);
iStream.readBytes(data);
iStream.close();
}
function readBinBytes():void {
var iBytes:ByteArray = new ByteArray();
readFileIntoByteArray("order", iBytes);
iBytes.position = 0;
iBytes.uncompress(CompressionAlgorithm.DEFLATE);
iBytes.position = 0
var uVariables:UVariablesiables = new UVariablesiables( "one=1&two=2" )
uVariables.decode("amp=" + encodeURIComponent( "&" ) );
uVariables.tree = 3;
uVariables.amp2 = "&&";
var urlRequest:URLRequest = new URLRequest()
urlRequest.data = uVariables;
readFileIntoByteArray("order", iBytes);
iBytes.position = 0;
iBytes.uncompress(CompressionAlgorithm.DEFLATE);
iBytes.position = 0;
}
function readFileIntoByteArray(Name:String, data:ByteArray):void{
var fIN:File = File.desktopDirectory
fIN = fIN.resolvePath(Name)
var FS:FileStream = new FileStream();
FS.open(fIN, FileMode.READ);
FS.readBytes(data);
FS.close()
var rq:URLRequest = new URLRequest(FS)
var variables:URLLoader = new URLLoader();
variables.dataFormat = URLLoaderDataFormat.VARIABLE
variables.addEventListener(Event.COMPLETE, function push(event:Event)
{ variables = URLLoader(event.target) }
try{variables.load(rq}
catch(error:*){}
}
}
这 3 种方法应该为大多数使用 RAW H.26+ 的播放环境提供速度和逻辑:没有指定帧速率 - 听起来很简单 ~ 这是大多数公司支付的另一层工作......希望它有所帮助。这不是万能的,但您正在做的事情可能需要数周时间。祝你好运。