MediaPlayer.prepare () завершается ошибкой с действительной ссылкой http - PullRequest
1 голос
/ 31 января 2012

Я пытался транслировать несколько видео: с 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)

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Пожалуйста, отметьте это: в вашем коде у вас есть ссылка http://www.commonsware.com/misc/test.mp4, а реальная ссылка без www (также, я проверил в своем браузере, ссылка с www не существует).

0 голосов
/ 31 января 2012

Вам нужно сначала запустить () / сбросить () медиаплеер.Смотрите действительные и недействительные состояния здесь: http://developer.android.com/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States

...