4
4

2 に答える 2

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);
}
于 2009-01-16T06:03:26.793 に答える
0

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>

...ですから、もう少し情報がなければ診断す​​るのは難しいかもしれません。これがお役に立てば幸いです。もう少し情報を共有したい場合は、コメントを監視します。

于 2009-01-16T04:57:20.030 に答える