我正在尝试使用Flash Builder 4.7,AIRSDK 31.0和ios 12从应用播放视频。
private function init():void{
holder.addChild(video);
this.addElement(holder);
nc.connect(null);
ns = new NetStream(nc);
ns.client = {};
ns.client.onMetaData = ns_onMetaData;
ns.client.onCuePoint = ns_onCuePoint;
video.attachNetStream(ns);
ns.play("Videos/video.mp4");
ns.addEventListener(NetStatusEvent.NET_STATUS, statusNet);
}
这适用于模拟器和Android设备,但不适用于ios设备。我已经看到了几个类似的问题,但是他们试图从我使用本地文件的“ http”地址流式传输mp4。
尽管我已经阅读了使用FLV文件的文件,但仍被要求坚持mp4格式。
iOS AIR 3.0中H.264视频的特殊注意事项 对于H.264视频,用于视频播放的iOS API仅接受文件或流的URL。您无法传入要解码的H264视频数据缓冲区。
那么,除了netStream之外,我还需要找到一种播放视频的新方法吗?还是我最好切换到其他文件类型?
作为旁注,Adobe表示要这样编写mp4 URL:
(“ mp4:samples / myvideo.mp4”);
我的应用程序找不到URL开头带有“ mp4:”的文件。
答案 0 :(得分:0)
如果您要播放与iOS应用程序打包在一起的视频,请务必在编译应用程序时将其包括在内。
未经测试,但类似的东西应该可以工作。
var _dFile:File;
var _ns:NetStream;
var _nc:NetConnection;
var _customClient:Object;
var _video:Video;
_customClient = new Object();
_customClient.onMetaData = metaDataHandler;
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_ns.client = _customClient;
//this is the important bit for finding files within the .ipa bundle.
_dFile = File.applicationStorageDirectory.resolvePath("nameOfYourVideoDirectory/nameOfVideo.mp4");
_ns.play(_dFile.url);
_video = new Video(480, 340);
_video.attachNetStream(_ns);
_ns.addEventListener(NetStatusEvent.NET_STATUS, onNSComplete, false, 0, true);
private function metaDataHandler(infoObject:Object):void {
trace("Length of video",infoObject.duration);
}
private function onNSComplete(e:NetStatusEvent):void{
if(e.info.code == "NetStream.Buffer.Empty") {
//do something
}
}
但是,我强烈建议您使用ANE通过本机媒体播放器在移动设备上播放视频。看看Distriqt MediaPlayer ANE。