Я пытался транслировать несколько видео: с 3gp все работает нормально и плавно, но когда я попробовал mp4 (я использовал несколько видео для тестов, включая это, которое определенно должно быть хорошим и действительным - commonsware.com/misc/test.mp4), я получил исключение.
У меня планшет для Android 2.2 для тестирования, у меня проблема из-за этого?Будет ли mp4-via-http работать на Android 2.3 или новее?Или есть какие-то конкретные подготовительные шаги для mp4, о которых я не знаю?Теперь я просто делаю следующее:
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
gMp=new MediaPlayer();
gMp.setDisplay(hndlr);
try {
gMp.setDataSource(this, Uri.parse("http://commonsware.com/misc/test.mp4"));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
gMp.prepareAsync();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
gMp.start();
}
Вот мои журналы ошибок:
I/ActivityManager( 107): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.video.mp/.VideoSharingViaMPActivity }
I/ActivityManager( 107): Start proc com.video.mp for activity com.video.mp/.VideoSharingViaMPActivity: pid=746 uid=10055 gids={1015, 3003}
D/dalvikvm( 746): GC_FOR_MALLOC freed 576 objects / 46928 bytes in 37ms
I/dalvikvm-heap( 746): Grow heap (frag case) to 3.549MB for 1000016-byte allocation
D/dalvikvm( 746): GC_FOR_MALLOC freed 170 objects / 8488 bytes in 44ms
D/MediaPlayer( 746): Couldn't open file on client side, trying server side
V/MediaPlayerService( 67): Client(3) constructor
V/MediaPlayerService( 67): Create new client(3) from pid 746, url=http://commonsware.com/misc/test.mp4, connId=3
V/MediaPlayerService( 67): setDataSource(http://commonsware.com/misc/test.mp4)
V/MediaPlayerService( 67): player type = 1
V/MediaPlayerService( 67): create PVPlayer
V/MediaPlayerService( 67): setDataSource
V/MediaPlayerService( 67): [3] setVideoSurface(0x3cfd8)
V/MediaPlayerService( 67): [3] setAudioStreamType(3)
V/MediaPlayerService( 67): [3] prepareAsync
V/MediaPlayerService( 67): [3] notify (0x3b2f8, 3, 0, 0)
I/PlayerDriver( 67): buffering (1)
V/MediaPlayerService( 67): [3] notify (0x3b2f8, 3, 1, 0)
V/MediaPlayerService( 67): [3] notify (0x3b2f8, 200, 1, 26)
W/MediaPlayer( 746): info/warning (1, 26)
E/PlayerDriver( 67): Command PLAYER_INIT completed with an error or info PVMFErrResource
V/MediaPlayerService( 67): [3] notify (0x3b2f8, 100, 1, -17)
W/PlayerDriver( 67): PVMFInfoErrorHandlingComplete
E/MediaPlayer( 746): error (1, -17)
W/System.err( 746): java.io.IOException: Prepare failed.: status=0x1
W/System.err( 746): at android.media.MediaPlayer.prepare(Native Method)
W/System.err( 746): at com.video.mp.VideoSharingViaMPActivity.surfaceCreated(VideoSharingViaMPActivity.java:146)