2014-01-21 31 views
0

我已經設置了一個小應用程序,它只顯示了一個加載本地文件的spark videoDisplay控件。 視頻在Windows中以AIR方式播放,並且如果Flex應用程序是Web應用程序,它可以在瀏覽器中通過osx播放,但每當我試圖在Mac上作爲Flex AIR應用程序運行時,VideoDisplay都會通過:VideoDisplay上的MediaPlayerState.PLAYBACK_ERROR在OSX上使用AIR

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

我無法找到是怎麼回事任何線索或播放錯誤的原因。視頻文件在所有情況下當然是相同的。

我使用Flex SDK 4.6(隨AIR 3.1)從Flash Builder 4

這是我使用的測試代碼:

<?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> 

回答

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的方式。