3gpの動画はすべてうまく動作しますが、mp4を試したときには(この動画も含めていくつかの動画を使用しましたが、良いと有効 - commonsware.com/misc/test.mp4)、私は例外がある。MediaPlayer.prepare()が有効なhttpリンクで失敗する
私はテストのためにアンドロイド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)
エラー情報を投稿してください。 – ciphor
投稿を編集して追加しましたが、私が誤解しているようで、prepare(またはprepareAsync、両方とも同じ結果が得られます)で失敗します。 – alchemiss
prepareAsyncの直後に 'gMp.start 'gMp.setOnPreparedListener()'を介して 'MediaPlayer.OnPreparedListener'を呼び出します。このリスナーでは、あなたのプレイヤーを開始する時間です。 – OleGG