Apache flex Flex:使用VideoDisplay组件在实时流之间进行多比特率切换

Apache flex Flex:使用VideoDisplay组件在实时流之间进行多比特率切换,apache-flex,flash,flash-media-server,bitrate,live-streaming,Apache Flex,Flash,Flash Media Server,Bitrate,Live Streaming,我正在向VideoDisplay组件的source属性传递一个DynamicStreamingVideoSource对象,该对象包含3个不同的动态实时流项目,由此XML描述,供您考虑: src=”rtmp://88.87.56.214:1935/live/fashiontv_tmo_h.stream“比特率=“19200” src=”rtmp://88.87.56.214:1935/live/fashiontv_tmo_m.stream“比特率=“9000” src=”rtmp://88.87.

我正在向VideoDisplay组件的source属性传递一个DynamicStreamingVideoSource对象,该对象包含3个不同的动态实时流项目,由此XML描述,供您考虑:

src=”rtmp://88.87.56.214:1935/live/fashiontv_tmo_h.stream“比特率=“19200”
src=”rtmp://88.87.56.214:1935/live/fashiontv_tmo_m.stream“比特率=“9000”
src=”rtmp://88.87.56.214:1935/live/fashiontv_tmo_l.stream“比特率=“3600”

但是播放器然后以3个比特率中的最低比特率运行流。它不是应该用于最终用户可以看到的具有最高比特率的流吗?所有3个流都经过单独测试,都可以查看

谢谢,
Liviu

我非常确定VideoDisplay组件将显示您发送给它的任何源URL。在没有看到代码的情况下,我不确定发生了什么


如果要显示不同的比特率流,则必须告诉VideoDisplay组件切换URL。如果你想“在运行中”自动切换比特率,我相信这必须在服务器上完成,而不是在客户端

不久前,我在博客上发布了一篇文章,其中包含一些非常容易理解的源代码

看看吧

我修好了

我知道这个答复是5.5年后的事了,但这仍然可以帮助一些人。我也遇到了同样的问题,经过数小时又数小时的搜索,我终于解决了这个问题。您只需要在媒体播放器中为缓冲区设置一个非零值

示例:

使用Spark VideoDisplay:

<s:VideoDisplay id="rtmpABRVideo" width="320" height="240" initialize="rtmpABRVideo.mx_internal::videoPlayer.bufferTime=2">
  <s:DynamicStreamingVideoSource host="rtmp://localhost:1935/live" streamType="live">
    <s:DynamicStreamingVideoItem streamName="webcam_1000" bitrate="1000" />
    <s:DynamicStreamingVideoItem streamName="webcam_500" bitrate="500" />
    <s:DynamicStreamingVideoItem streamName="webcam_150" bitrate="150" />
  </s:DynamicStreamingVideoSource> 
</s:VideoDisplay>

使用OSMF组件:

var dynResource:DynamicStreamingResource = new DynamicStreamingResource('rtmp://localhost/live');
dynResource.urlIncludesFMSApplicationInstance = false;
dynResource.streamItems = Vector.<DynamicStreamingItem>([
                                new DynamicStreamingItem("mp4:webcam_150", 150, 320, 240),
                                new DynamicStreamingItem("mp4:webcam_500", 500, 320, 240),
                                new DynamicStreamingItem("mp4:webcam_1000", 1000, 320, 240)
                          ]);

var videoElement:VideoElement = new VideoElement();
videoElement.resource = dynResource;

var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite();
mediaPlayerSprite.width = 320;
mediaPlayerSprite.height = 240;
mediaPlayerSprite.media = videoElement;
mediaPlayerSprite.mediaPlayer.bufferTime = 2;

addChild(mediaPlayerSprite);
var dynResource:DynamicStreamingResource=新的DynamicStreamingResource('rtmp://localhost/live');
dynResource.urlIncludeFMSApplicationInstance=false;
dynResource.streamItems=向量([
新的DynamicStreamingItem(“mp4:webcam_150”、150320240),
新的DynamicStreamingItem(“mp4:webcam_500”、500320240),
新的DynamicStreamingItem(“mp4:webcam_1000”、1000320240)
]);
var videoElement:videoElement=新的videoElement();
videoElement.resource=dynResource;
var mediaPlayerSprite:mediaPlayerSprite=new mediaPlayerSprite();
mediaPlayerSprite.width=320;
mediaPlayerSprite.height=240;
mediaPlayerSprite.media=videoElement;
mediaPlayerSprite.mediaPlayer.bufferTime=2;
addChild(mediaPlayerSprite);
希望这对其他人有帮助