在OSX上使用AIR的VideoDisplay上的MediaPlayerState.PLAYBACK_ERROR

时间:2014-01-21 14:53:12

标签: macos flex air videodisplay

我已经设置了一个小应用程序,它只显示了一个加载本地文件的spark videoDisplay控件。 如果flex应用程序是一个Web应用程序,视频在Windows中可以作为AIR播放,并且在浏览器上播放正常,但是当我尝试在Mac上作为Flex AIR应用程序运行时,VideoDisplay会通过:

  • MediaPlayerState.LOADING
  • MEdiaPlayerState.READY
  • MediaPlayerState.PLAYBACK_ERROR

我找不到任何有关播放错误的原因或播放错误的原因。在所有情况下,视频文件当然都是相同的。

我正在使用Flash Builder 4中的Flex SDK 4.6(AIR 3.1附带)

这是我用于测试的代码:

<?xml version="1.0" encoding="utf-8"?>    
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"     
  xmlns:s="library://ns.adobe.com/flex/spark"     
  xmlns:mx="library://ns.adobe.com/flex/mx">

<fx:Script>    
<![CDATA[    
import org.osmf.events.MediaPlayerStateChangeEvent;    

protected function mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void    
{    
    trace(event.state);    
}


]]>

</fx:Script>

    <s:VideoDisplay width="100%" height="100%" source="/somepath/video.mp4"     
                    mediaPlayerStateChange="mediaPlayerStateChangeHandler(event)"/>

</s:WindowedApplication>

1 个答案:

答案 0 :(得分:0)

问题与此问题中所述相同:AIR: securityError on OSX (but not on Windows) with URLStream() 出于某种原因,OSX中的AIR未使用安全沙箱,并且视频的源文件路径必须作为URL提供。

所以代码应该是:

<s:VideoDisplay width="100%" height="100%" source="{new File('/somepath/video.mp4').url}"     
                mediaPlayerStateChange="mediaPlayerStateChangeHandler(event)"/>

这样它可以在osx和windows中运行。