2009-01-16 90 views
4

我想播放視頻,以及使用Adobe AIR顯示圖像和其他可能的Flash內容,並從本地文件系統讀取數據。我一直在搜索API,我還沒有能夠連接點。使用Adobe AIR從本地文件播放視頻

我知道flash.filesystem.Fileflash.filesystem.FileStream,並已與加載和讀取文件實驗。我相信我可以用這種方式加載圖像,但沒有嘗試過。

至於視頻:

mx.controls.VideoDisplay當 - 似乎接受了一個文件:// URI源,但我不能得到它的工作。

flash.media.Video - 接受的NetStream或可以直接從視頻輸入加載視頻,似乎無法找到一個方法來引用本地文件

誰能幫助我在這裏?我特別想直接從本地磁盤加載和播放視頻,而不是從網絡服務器或流式文件服務器上播放視頻...假定沒有網絡連接。

略相關的問題:Loading a video from the local file system…(但我的問題不涉及網絡瀏覽器)

回答

11

我記住的用途是需要使用程序化。我正在尋找一種直接使用ActionScript完成此操作的方法。

我終於迷迷糊糊到我希望的......使用NetStream對象的解決方案,但(非直覺),你可以用它來訪問本地文件以及:

private function playVideo():void { 
    var nc:NetConnection = new NetConnection(); 
    nc.connect(null); 

    var ns:NetStream = new NetStream(nc); 

    # onMetaData listener is required otherwise you get a ReferenceError 
    var client:Object = new Object(); 
    client.onMetaData = function(metadata:Object):void { 
    trace(metadata.duration); 
    } 
    ns.client = client; 

    var v:Video = new Video(); 
    v.attachNetStream(ns); 
    stage.addChild(v); 

    var f:File = new File("/tmp/test.flv"); 
    ns.play(f.url); 
} 
+0

啊,我看 - - 我不知道這就是你要做的。很高興你找到了一個解決方案 - 我必須收藏這本書供將來使用;感謝您發佈它! – 2009-01-16 06:09:35

0

嘗試增加「-use網=假」到Flex編譯器設置。這將使您可以訪問加載本地資源,這可能是問題的根源;沙盒規則有些敏感,所以如果您確定不需要網絡連接,那麼調整此設置可能會放鬆一點。

跨越這也跑了,這可能是以及相關:

http://soenkerohde.com/2008/06/playing-local-files-with-air/

在我的情況下,雖然只是簡單的測試,無論是在調試和發佈了以下工作來建立,而無需修改編譯器設置,如果它只是你使用引用FLV文件的文字:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:VideoDisplay source="D:\Data\Projects\Flex 3\AirLocalVideo\bin-debug\NightSky.flv" /> 
</mx:WindowedApplication> 

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
    <mx:VideoDisplay source="file://D:/Data/Projects/Flex 3/AirLocalVideo/bin-debug/NightSky.flv" /> 
</mx:WindowedApplication> 

...所以我想這也許很難在不提供更多的信息來診斷。希望這有助於 - 如果您想分享更多信息,我會密切關注評論。