@king bily on your NetStream instance, set the following to eliminate the green flashes:
netStream.useHardwareDecoder = false;
Regarding the freezing issue, I'm not sure if this'll help, but perhaps give it a go. I don't commence playback of videos until the playback buffer is full. This also allows you to do other things in that moment while it's buffering, such as show an image, a transition, visible = false, etc etc.
// Add this event listener to your NetStream instance.
netStream.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
private function netStatus(event:NetStatusEvent):void
{
switch (event.info.code)
{
case "NetStream.Buffer.Full":
netStream.resume();
break;
default:
trace("NetStatusEvent:", event.info.code);
}
}
/**
* Cueue's a video file for playback. Playback is paused until the NetStream buffer is full.
* @param fileName Path to the video file.
*/
private function cueVideo(fileName:String):void
{
trace("Play " + fileName);
netStream.play(fileName, 0);
netStream.pause();
}
Lastly, it may help to encode your videos targeting the lowest viable H.264 Profile and Level. If 1920x1080, this is Profile = Baseline, Level = 4.0. This will increase the file size of the video files, but also improve playback overhead and latency.
To offer hope, I've had many purpose built AIR apps over the years designed to do little more than loop high resolution (1836x2750) video indefinitely. These apps do not have the luxury of system reboots or app restarts, they run 24/7 on a 2 story LED video wall. Based on this, I offer that AIR should be a viable and reliable solution for you, hopefully it's just a case of nutting out an issue.