2
以下是as3 flash的基本代碼位。一個簡單的視頻流示例使用rtmp red5。但我似乎有問題連接到stream.I使用與red5服務器演示安裝給出的相同的視頻文件(我已通過正確運行驗證已安裝的演示ofla) 我的輸出跟蹤作爲一個連接成功和視頻文件的播放開始。但我無法獲取其元數據或實際播放它。as3 rtmp視頻流本地主機red5路徑問題
netStatusHandler值爲NetConnection.Connect.Success
netStatusHandler NetStream.Play.Reset
netStatusHandler NetStream.Play.Start
我失去了什麼在這裏關於給予路徑到視頻文件?它們位於默認red5安裝附帶的相同演示示例文件夾中。
package
{
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*
public class NetConnectionExample extends MovieClip
{
private var videoURL:String = "rtmp://localhost/oflaDemo/streams";
private var connection:NetConnection;
private var stream:NetStream;
public function NetConnectionExample()
{
// constructor code
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(videoURL, true);
}
private function netStatusHandler(event:NetStatusEvent):void
{
trace("netStatusHandler",event.info.code);
switch (event.info.code)
{
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Stream not found: " + videoURL);
break;
case "NetStream.Play.Start":
break;
}
}
private function securityErrorHandler(event:SecurityErrorEvent):void
{
trace("securityErrorHandler: " + event);
}
private function connectStream():void
{
stream = new NetStream(this.connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler)
stream.client = new CustomClient();
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(videoURL+"avatar.flv");
addChild(video);
}
function asyncErrorHandler(event:AsyncErrorEvent):void {
// ignore AsyncErrorEvent events.
}
}
}
class CustomClient {
public function onMetaData(info:Object):void
{
trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate);
}
public function onCuePoint(info:Object):void
{
trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
}
}
編輯: 相關 Where do I place a FLV file to stream on a local Red5 server?
對我來說聽起來像一個編碼不好的FLV確保元數據在標題 –
視頻確實已經正確添加了元。我發現這是一個路徑問題。 –