在AS3中同时使用的NetStream视频播放我怎么求,当我使用对appendBytes [英] In AS3 while using NetStream for video playback how do I seek when I use appendBytes
问题描述
我想使用的NetStream从ByteArray的发挥。请参阅这了解我在说什么。
I am trying to use NetStream to play from a byteArray. Please see this for what I am talking about.
我能够得到这个播放视频。但是现在我需要能够看到一个特定第二。我不能做到这一点。如果我经过的ByteArray,我知道我能得到的元数据,并根据需要和偏移量(以字节为单位)的关键帧为每个关键帧是。然而没有办法谋求特定偏移量。它只支持寻求秒,似乎并没有工作,对的字节数组。
I am able to get this to play the video. However now I need to be able to see to a particular second. I am not able to do this. If I go through the bytearray I know I can get the metadata and the keyframes as required and the offset ( in bytes) as to where each keyframe is at. However there is no way to seek to a particular offset. It only supports seek in seconds and that doesn't seem to work on the byteArray.
我怎么去呢?
推荐答案
我有我的工作:
// onmetadata function get all timestamp and corresponding fileposition..
function onMetaData(infoObject: Object): void {
for (var propName: String in infoObject) {
if (propName == "keyframes") {
var kfObject: Object = infoObject[propName];
var timeArr: Array = kfObject["times"];
var byteArr: Array = kfObject["filepositions"];
for (var i: int = 0;i < timeArr.length;i++) {
var tagPos: int = byteArr[i]; //Read the tag size;
var timestamp: Number = timeArr[i]; //read the timestamp;
tags.push({
timestamp: timestamp,
tagPos: tagPos
});
}
}
// onseek click get approximate timestamp and its fileposition
protected
function seek_click(seektime: Number): void {
var cTime: Number = 0;
var pTime: Number = 0;
for (var i: int = 1;i < tags.length;i++) {
cTime = tags[i].timestamp;
pTime = tags[i - 1].timestamp;
if (pTime < seektime) {
if (seektime < cTime) {
seekPos = tags[i - 1].tagPos;
stream.seek(pTime);
break;
}
}
}
}
/// append bytes on seekposition
private
function netStatusHandler(event: NetStatusEvent): void {
switch (event.info.code) {
case "NetStream.Seek.Notify":
stream.appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
totalByteArray.position = seekPos;
var bytes: ByteArray = new ByteArray();
totalByteArray.readBytes(bytes);
stream.appendBytes(bytes);
stream.resume();
break;
}
}
这篇关于在AS3中同时使用的NetStream视频播放我怎么求,当我使用对appendBytes的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!