2 に答える
私が念頭に置いている使用法は、プログラムによる使用法である必要があります。これを 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);
}
Flexコンパイラ設定に「-use-network=false」を追加してみてください。これにより、問題の原因となる可能性のあるローカルリソースをロードするためのアクセスが可能になります。サンドボックスのルールはやや敏感なので、ネットワーク接続が必要ないことが確実な場合は、この設定を微調整すると少しリラックスできる可能性があります。
また、これに遭遇しました。これも関連している可能性があります。
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>
...ですから、もう少し情報がなければ診断するのは難しいかもしれません。これがお役に立てば幸いです。もう少し情報を共有したい場合は、コメントを監視します。