I have built a simple app that uses OSMF to play an MP4 by http progressive download. When I build my app to an Android device, the video does not display the last frame. The progress events indicate that the correct time has been reached, but the last frame (or frames) do not get displayed. The last frame displayed changes each time, but it is within roughly 1 second of the end. This is all I'm doing:
var media_factory: DefaultMediaFactory = new DefaultMediaFactory(); var container:MediaContainer = new MediaContainer(); this.addChild( container ); mplayer = new MediaPlayer(); mplayer.autoPlay = false; mplayer.autoRewind = false; mplayer.loop = false; var ur:URLResource = new URLResource( "http://flash.delmar.cengage.com/DLvideo/00/03/30/33058.mp4" ); var element:MediaElement = media_factory.createMediaElement( ur ); container.addMediaElement( element ); mplayer.media = element; mplayer.play();
There is also a button that calls 'mplayer.play()' again in order to replay the media. I can post the complete project, but there's really nothing to it.
Does anyone know anything about this?
From the looks of it, it's not an OSMF issue but something in the video itself or in the AIR/android code. Please raise a bug and we'll prioritize it for investigation.
In the meantime, you could try to re-encode the video with different GOP parameters to see if the last GOP is created correctly.
The same video (from the same URL, through the same player) plays correctly in iOS or Windows. It is only in the Android build that the last frames are not reached. While there may be something in the video encoding that affects this, it is only in AIR for Android that it is seen. I will file a bug on AIR.