【问题标题】:Flex: Multi bitrate switching between live streams using the VideoDisplay componentFlex:使用 VideoDisplay 组件在实时流之间进行多比特率切换
【发布时间】:2011-03-18 13:49:38
【问题描述】:

我正在向 VideoDisplay 组件的源属性传递一个 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 个流都经过单独测试,并且都可以查看。

谢谢, 利维乌

【问题讨论】:

    标签: apache-flex flash flash-media-server bitrate live-streaming


    【解决方案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);
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        看看here

        【讨论】:

          猜你喜欢
          • 2011-12-10
          • 2019-12-17
          • 2012-01-15
          • 2021-03-03
          • 1970-01-01
          • 1970-01-01
          • 2011-07-16
          • 2015-05-11
          • 1970-01-01
          相关资源
          最近更新 更多