2010-07-10 84 views
3

我想弄清楚如何使用HTTP動態流與閃光10.1,但我不能得到基本功能的工作。與視頻文件一起使用appendbytes的語法是什麼?如何使用netstream.appendBytes()進行http動態流式傳輸?

package com.player { 

import flash.display.Stage; 
import flash.net.NetConnection; 
import flash.net.NetStream; 
import flash.media.Video; 
import flash.display.Sprite; 
import flash.net.URLRequest; 
import flash.net.URLStream; 
import flash.events.Event; 
import flash.utils.ByteArray; 

public class Player extends Sprite { 

    const vurl = "file://E:/clip.flv" 

    private var nc:NetConnection; 
    private var ns:NetStream; 
    private var vo:Video; 



    private var urlstream:URLStream; 

    public function Player() { 

     nc = new NetConnection(); 
     nc.connect(null); 

     ns = new NetStream(nc); 
     ns.client = new StreamClient(); 

     vo = new Video(); 
     vo.attachNetStream(ns); 

     addChild(vo); 

     ns.play(vurl); 

     var urlrequest:URLRequest = new URLRequest(vurl) 
     urlstream = new URLStream(); 

     urlstream.addEventListener(Event.COMPLETE, completeHandler); 

     urlstream.load(urlrequest); 



    } 

    private function completeHandler(event:Event):void { 
     trace("completeHandler: " + event); 

     var bytes:ByteArray = new ByteArray(); 

     urlstream.readBytes(bytes); 

     ns.appendBytes(bytes); 
    } 


} 

}

運行這個給我的錯誤:

TypeError: Error #2004: One of the parameters is invalid. at flash.net::NetStream/appendBytes() at ...

回答

2

我已經找到了解決我的問題。你必須從ns.play(null)開始,而不是ns.play('url to download');

+0

您是否能夠弄清楚如何進行真正的HTTP流式傳輸(即將多個流拼接在一起)。我試圖將兩個不同的FLV文件縫合在一起,但總是跳過它們。 – Scott 2010-12-28 20:09:52

+0

不是真正的連接到null的答案...請查看http://stackoverflow.com/a/7948112/280551以及最終的flashdoc以獲取更多解釋。模糊的錯誤表明你的NetStream對象不處於「數據生成模式」,例如你打開/寫信給它。 也許URL可能會在以後被覆蓋?但是,這是非常跛腳的,無論如何,在流媒體方面...... – edwardsharp 2011-11-29 01:49:00