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

时间:2010-07-20 17:11:44

标签: 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" bitrate="19200" src="rtmp://88.87.56.214:1935/live/fashiontv_tmo_m.stream" bitrate="9000" src="rtmp://88.87.56.214:1935/live/fashiontv_tmo_l.stream" bitrate="3600"

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

谢谢, 利维乌

3 个答案:

答案 0 :(得分:1)

我修好了!!!

我知道这个回复是在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);

希望这对那里的人有帮助!

答案 1 :(得分:0)

我非常确定VideoDisplay组件会显示您发送的任何源URL。没有看到代码,我不确定发生了什么。

如果要显示不同的比特率流,则必须告诉VideoDisplay组件切换URL。如果你想“动态”进行一些自动比特率切换,我认为必须在服务器而不是客户端完成。

答案 2 :(得分:0)

我在我的博客上发布了一篇帖子,其中包含一些很容易理解的源代码。

查看here