I'm using classic VideoView
implementation to play video on Android.
Same mp4 file url works fine on HTC Desire. However it doesn't work on Samsung devices.
Samsung Galaxy S1 and Samsung Galaxy Tab say: "Cannot play video. Unable to play video. Invalid streaming data"
Samsung 5110 says: "Cannot play video. Sorry this video is not valid for streaming to this device"
When I looked at mp4 file with a text editor, I realized that mdat tag is before moov.
My question is how does it work on HTC whereas it doesn't on samsung devices. And I dont have any chances to change the format of mp4 files, so how can I overcome this problem?
07-29 15:24:21.740: ERROR/PlayerDriver(2402): PlayerDriver::it is a not Protected file
07-29 15:24:21.763: ERROR/(2402): IIIIIII Inside Constructor of PVMFMemoryBufferWriteDataStreamImpl
07-29 15:24:21.806: ERROR/MediaPlayerService(2402): Client::notify In
07-29 15:24:21.806: ERROR/(2402): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl
07-29 15:24:21.806: ERROR/(2402): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl
07-29 15:24:21.810: ERROR/MediaPlayer(15339): message received msg=3, ext1=0, ext2=0
07-29 15:24:21.810: ERROR/MediaPlayer(15339): callback application
07-29 15:24:21.810: ERROR/MediaPlayer(15339): back from callback
07-29 15:24:21.822: ERROR/(2402): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl
07-29 15:24:21.822: ERROR/(2402): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl
07-29 15:24:21.822: ERROR/MediaPlayerService(2402): Client::notify In
07-29 15:24:21.822: ERROR/MediaPlayer(15339): message received msg=200, ext1=1, ext2=26
07-29 15:24:21.822: ERROR/MediaPlayer(15339): callback application
07-29 15:24:21.822: ERROR/MediaPlayer(15339): back from callback
07-29 15:24:21.822: ERROR/PlayerDriver(2402): Command PLAYER_INIT completed with an error or info -82
07-29 15:24:21.822: ERROR/MediaPlayerService(2402): Client::notify In
07-29 15:24:21.822: ERROR/MediaPlayer(15339): message received msg=100, ext1=200, ext2=-82
07-29 15:24:21.822: ERROR/MediaPlayer(15339): error (200, -82)
07-29 15:24:21.822: ERROR/MediaPlayer(15339): callback application
07-29 15:24:21.826: ERROR/MediaPlayer(15339): back from callback
07-29 15:24:22.025: ERROR/MediaPlayer(15339): Error (200,-82)
finally i've found the problem.
When i hinted the mp4 file with mp4box, it played on samsung devices as well.
mp4box -hint
This process rearranged moov and mdat tags of the video file correctly.
Before that, same file plays well on devices with android 2.3 but not with the devices using android 2.2. I'm not sure but the limitation for "safe for streaming" may have been canceled after 2.3 version.