我正在构建一个带有 Strobe Media Playback 的应用程序,但我无法播放 RTMP 流。
这里奇怪的是,我可以在 JWPlayer 上播放流,甚至可以在带有经典 NetStream 和 NetConnection 代码的简单 Flash 视频播放器中播放。
http://www.longtailvideo.com/jw-player/wizard/
这是流:rtmp://fl.world-television.com/streamstudio/vod/flv:endesa/20130422/video_full_es_v2.flv
我不知道是否需要通过 OSMF 参数设置任何特殊配置。
这就是我在一个简单的 Flash CS 应用程序中播放视频的方式。
package {
import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
public class VideoTest extends Sprite {
private var videoURL:String = "rtmp://fl.world-television.com/streamstudio/vod/flv:endesa/20130422/video_full_es_v2.flv";
private var connection:NetConnection;
private var stream:NetStream;
public function VideoTest()
{
initialize();
}
private function initialize():void
{
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect("rtmp://fl.world-television.com/streamstudio/vod/" );
}
private function netStatusHandler(event:NetStatusEvent):void {
trace("net status handler: " + event.info.code);
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Stream not found: " + videoURL);
break;
}
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function connectStream():void
{
stream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
var video:Video = new Video();
video.attachNetStream(stream);
stream.play("endesa/20130422/video_full_es_v2");
addChild(video);
}
}
}
我真的认为这里的问题是 OSMF 它没有正确分割 URL,它正在尝试连接 (NetConnection) 或尝试播放 (NetStream) 错误的字符串。
编辑:
解决了在 URL 中删除“/vod”的问题。
你可以在这里试试: