I've just found a possible workaround for avoiding the green flash issue:
private var renderTexture:RenderTexture;
protected function creationCompleteHandler(event:starling.events.Event):void
{
renderTexture = new RenderTexture(stage.stageWidth, stage.stageHeight);
playVideo();
}
private function playVideo(fillTexture:Texture = null):void
{
imageLoader.source = fillTexture;
videoPlayer.videoSource = null;
videoPlayer.videoSource = "video.mp4";
}
protected function videoPlayer_readyHandler(event:starling.events.Event):void
{
imageLoader.source = videoPlayer.texture;
}
protected function videoPlayer_completeHandler(event:starling.events.Event):void
{
renderTexture.draw(imageLoader);
playVideo(renderTexture);
}
Essentially, the RenderTexture draws the last frame of the video, which is then displayed while the VideoPlayer reloads the video, and the ready event is fired again.
Of course, I am aware that different machines behave differently, but I've managed to achieve seamless looping on my machine.
As for the crashing issue, that sucks - and is worrying for me as I'm releasing a big, video-heavy application soon. Does the app crash whether or not it is playing video? Perhaps periodically resetting videoSource to null as above could avoid this (some kind of low-level memory leak?)
Anyway, let me know if this works for you guys...