我想播放视频,以及使用adobe air显示图像和可能的其他Flash内容,以及从本地文件系统读取。我一直在搜索API,但我还没有能够连接点。
我知道 flash.filesystem.File 和 flash.filesystem.FileStream ,并尝试过加载和读取文件。我相信我可以用这种方式加载图像,但还没试过。
至于视频:
mx.controls.VideoDisplay当 - 似乎接受了一个file:// URI来源,但是我无法让它工作。
flash.media.Video - 接受NetStream或者可以直接从视频输入加载视频,似乎找不到引用本地文件的方法
任何人都可以帮助我吗?我特别希望直接在本地磁盘上加载和播放视频,而不是从Web服务器或流式文件服务器加载...假设没有网络连接。
稍微相关的问题:Loading a video from the local file system…(但我的问题不涉及网络浏览器)
答案 0 :(得分: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);
}
答案 1 :(得分: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>
...所以我想如果没有更多的信息可能很难诊断。希望这会有所帮助 - 如果您想分享更多信息,我会留意评论。