Hi!
I’ve seen a few posts about this, but I haven’t found a definitive solution yet. I’m trying to play a video in an OpenFL project targeting iOS.
This works fine when targeting HTML5, but on iOS the NetStream
doesn’t load:
package no.hpeide.closecloserclosest;
import openfl.display.Sprite;
import openfl.media.Video;
import openfl.net.NetStream;
import openfl.net.NetConnection;
import openfl.events.AsyncErrorEvent;
import openfl.events.NetStatusEvent;
import openfl.events.MouseEvent;
import openfl.events.Event;
class VideoPlayer extends Sprite {
private var _url:String;
private var video:Video;
private var stream:NetStream;
public function new(url:String) {
super();
_url = url;
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event) {
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
var connection = new NetConnection();
connection.connect(null);
stream = new NetStream(connection);
var client:Dynamic = {};
client.onMetaData = client_onMetaData;
stream.client = client;
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function(_) {
trace("Error: Could not load video");
});
stream.addEventListener(NetStatusEvent.NET_STATUS, function(e:NetStatusEvent) {
trace(e.info.code);
});
video = new Video();
video.attachNetStream(stream);
addChild(video);
stage.addEventListener(MouseEvent.CLICK, (_) -> {
trace("Resuming playback");
stream.play(_url);
});
}
private function client_onMetaData(metaData:Dynamic):Void {
trace("Metadata:", metaData);
video.width = video.videoWidth > 0 ? video.videoWidth : 560;
video.height = video.videoHeight > 0 ? video.videoHeight : 320;
}
}