ActionScript NetStream与iOS播放mp4

时间:2018-10-22 10:27:29

标签: ios actionscript-3 flex air mp4

我正在尝试使用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:”的文件。

1 个答案:

答案 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。