如何解决OSMF2.0中的startTimes为非0时的故障?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
Open Source Media Framework (OSMF) 2.0版本中有一个问题能够导致基于它构建的媒体播放器在播放VOD或nDVR时播放失败。这种情况发生在http播放URL后带有一个非零的starttime参数时(包括wowzaplaystartwowzadvrplayliststart)。例如:

VOD URL:
http://[wowza-ip-address]:1935/vod/mp4:sample.mp4/manifest.f4m?wowzaplaystart=30000&wowzaplayduration=40000
DVR URL:
http://[wowza-ip-address]:1935/dvr/mp4:sample.mp4/manifest.f4m?dvr&wowzadvrplayliststart=30000&wowzadvrplaylistduration=40000

这个问题已经被提交在OSMF bug database 。bug的number为SDK-32326.

注意: 你必须用Adobe Bug System的帐号登录后,才能查询OSMF的bug数据库。

下面这些文章介绍了如何使用Adobe Flash Builder 4 去更新 OSMF.swf 以解决这个问题。

安装和配置OSMF


  1. 需要Adobe® Flex® SDK 4.5.1 或更高版本。下载Adobe Flex SDK (Latest Flex SDK 或者 Flex SDK 4.5.1) 并将文件解压缩到 Adobe Flash Builder 4.x/sdks/4.x.x 文件夹下.

  2. 下载并解压缩OSMF 2.0 (或更高版本): Latest OSMF

  3. 打开 Adobe Flash® Builder® 并选择一个工作目录.

  4. 在Flash Builder的 File 菜单, 选择Import Flash Builder Project.

  5. Import Flash Builder Project 对话框中,选择Project folder 选项,然后用Browse按钮在你解压缩后的OSMF目录([install-dir]\OSMF-src\OSMF\framework\OSMF)选择。然后点击Finish 按钮关闭Import Flash Builder Project 对话框。

  6. Package Explorer中, 选择OSMF 项目。

  7. File 菜单, 选择Project > Properties.

  8. Properties for OSMF 对话框, 选择Flex Library Compiler 并选择一个用于Flex Library Compiler的Flex SDK 的版本。注意Adobe Flex SDK 4.6.0 需要首先安装Adobe Flash Player 11.1, 而Adobe Flex SDK 4.5.1 需要首先安装Adobe Flash Player 10.2 (及以上版本)。

  9. Flex Library Compiler 界面的底部, 在Additional compiler arguments 中,添加下面的编译参数(如果它还没有被添加):
    Code:
    -locale en_US -define CONFIG::LOGGING true -define CONFIG::PLATFORM true -define CONFIG::MOCK false -define CONFIG::FLASH_10_1 true

更新OSMF.swf


  1. 在 Adobe Flash Builder中,打开OSFM 项目的文件 [install-dir]\OSMF-src\OSMF\framework\OSMF\org\osmf\net\httpstreaming\f4f\AdobeFragmentRunTable.as.

  2. 找到calculateFragmentId(fdp:FragmentDurationPair, time:Number):uint 方法,然后修改下面的代码:

    将:
    Code:
    if (fdp.duration <= 0) 
    { 
        return fdp.firstFragment; 
    }
    修改为:
    Code:
    if (fdp.duration <= 0 || time < fdp.durationAccrued) 
    { 
        return fdp.firstFragment; 
    }
  3. 保存修改。如果你配置了Flash Builder自动编译, 更新后的OSMF.swf 文件就会出现在OSMF 项目的bin 目录下。否则, 请在Flash Builder中选择Project > Build Project 以在OSMF项目的bin目录下生成一个更新后的OSMF.swf文件。

www.wowza.cn