android播放器MediaPlayer快进报错error (-2147483648, 0)&error (-38, 0),分析log解决问题

来源:互联网 发布:贵州大数据先天优势是 编辑:程序博客网 时间:2024/06/06 13:00
=================================================
01-02 09:43:00.842: E/tips(6475): ************setViewSeekTo: opCode:1003;curPos:8935;desPos:10635
01-02 09:43:00.842: E/tips(6475): seekTo:10635
01-02 09:43:00.842: V/MediaPlayer(6475): getDuration
01-02 09:43:00.842: V/MediaPlayer(6475): seekTo 10635
01-02 09:43:00.842: V/MediaPlayer(6475): Seek in progress - queue up seekTo[10635]
01-02 09:43:00.842: V/MediaPlayer(6475): isPlaying: 0
01-02 09:43:00.852: V/MediaPlayer(6475): message received msg=200, ext1=1005, ext2=0
01-02 09:43:00.852: W/MediaPlayer(6475): info/warning (1005, 0)
01-02 09:43:00.852: V/MediaPlayer(6475): callback application
01-02 09:43:00.852: V/MediaPlayer(6475): back from callback
01-02 09:43:00.862: V/MediaPlayer(6475): Using cached seek position: 10635
01-02 09:43:00.862: E/tips(6475): ************onSeekComplete: mLastOpCode:1003;curPos:10635
01-02 09:43:00.862: V/MediaPlayer(6475): start
01-02 09:43:01.092: D/skia(6475): failed to malloc mmz memory:230 kbytes
01-02 09:43:01.112: D/skia(6475): failed to malloc mmz memory:4 kbytes
01-02 09:43:01.122: I/MediaPlayer(6475): Info (1005,0)
01-02 09:43:01.132: V/MediaPlayer(6475): isPlaying: 1
01-02 09:43:01.132: V/MediaPlayer(6475): isPlaying: 1
01-02 09:43:01.132: V/MediaPlayer(6475): pause
01-02 09:43:01.132: V/MediaPlayer(6475): message received msg=100, ext1=-2147483648, ext2=0
01-02 09:43:01.132: E/MediaPlayer(6475): error (-2147483648, 0)
01-02 09:43:01.132: V/MediaPlayer(6475): callback application
01-02 09:43:01.132: V/MediaPlayer(6475): back from callback
01-02 09:43:01.142: V/MediaPlayer(6475): Using cached seek position: 10635
01-02 09:43:01.142: E/tips(6475): ************setViewSeekTo: opCode:1003;curPos:10635;desPos:12335
01-02 09:43:01.142: E/tips(6475): seekTo:12335
01-02 09:43:01.142: V/MediaPlayer(6475): getDuration
01-02 09:43:01.142: E/MediaPlayer(6475): Attempt to call getDuration without a valid mediaplayer
01-02 09:43:01.142: V/MediaPlayer(6475): message received msg=100, ext1=-38, ext2=0
01-02 09:43:01.142: E/MediaPlayer(6475): error (-38, 0)
01-02 09:43:01.142: V/MediaPlayer(6475): callback application
01-02 09:43:01.142: V/MediaPlayer(6475): back from callback
01-02 09:43:01.142: I/tips(6475): seekTo: mCanPause=true
01-02 09:43:01.142: I/tips(6475): seekTo: mCanSeekBack=true
01-02 09:43:01.142: I/tips(6475): seekTo: mCanSeekForward=true
01-02 09:43:01.142: V/MediaPlayer(6475): seekTo 12335
01-02 09:43:01.142: E/MediaPlayer(6475): Attempt to perform seekTo in wrong state: mPlayer=0x5ec860, mCurrentState=0
01-02 09:43:01.142: V/MediaPlayer(6475): message received msg=100, ext1=-38, ext2=0
01-02 09:43:01.142: E/MediaPlayer(6475): error (-38, 0)
01-02 09:43:01.142: V/MediaPlayer(6475): callback application
01-02 09:43:01.142: V/MediaPlayer(6475): back from callback
01-02 09:43:01.142: V/MediaPlayer(6475): isPlaying: 1
01-02 09:43:01.142: V/MediaPlayer(6475): pause
01-02 09:43:01.142: E/MediaPlayer(6475): pause called in state 0
01-02 09:43:01.142: V/MediaPlayer(6475): message received msg=100, ext1=-38, ext2=0
01-02 09:43:01.142: E/MediaPlayer(6475): error (-38, 0)
01-02 09:43:01.142: V/MediaPlayer(6475): callback application
01-02 09:43:01.152: V/MediaPlayer(6475): back from callback
01-02 09:43:01.152: E/MediaPlayer(6475): Error (-2147483648,0)
01-02 09:43:01.152: D/VideoPlayer(6475): Error: -2147483648,0
01-02 09:43:01.332: D/skia(6475): failed to malloc mmz memory:67 kbytes
01-02 09:43:01.362: E/MediaPlayer(6475): Error (-38,0)
01-02 09:43:01.362: D/VideoPlayer(6475): Error: -38,0
01-02 09:43:01.372: E/MediaPlayer(6475): Error (-38,0)
01-02 09:43:01.372: D/VideoPlayer(6475): Error: -38,0
01-02 09:43:01.372: E/MediaPlayer(6475): Error (-38,0)
01-02 09:43:01.372: D/VideoPlayer(6475): Error: -38,0
01-02 09:43:01.382: D/skia(6475): failed to malloc mmz memory:230 kbytes
01-02 09:43:01.382: D/skia(6475): failed to malloc mmz memory:4 kbytes
=================================================

代码流程:
1.seekTo函数
mMediaPlayer.seekTo(sec);
mMediaPlayer.pause(); 
2. onSeekComplete函数
mMediaPlayer.start();  
 
错误1:
01-02 09:43:01.132: E/MediaPlayer(6475): error (-2147483648, 0)

分析log,在 onSeekComplete之后,执行了start和pause(异步操作,延迟到onSeekComplete之后才执行)操作,产生了错误,所以有可能是因为pause引起的错误。
由MediaPlayer状态机(http://blog.csdn.net/thl789/article/details/7370438),我们可以知道,在Started的状态下是可以直接执行seekTo操作。
代码修改方式如下:
1.在seekTo之后,去掉mMediaPlayer.pause(); 
2.在onSeekComplete之后,去掉mMediaPlayer.start();  
测试播放快进正常,修改正确。

错误2
01-02 09:43:01.142: V/MediaPlayer(6475): getDuration
01-02 09:43:01.142: E/MediaPlayer(6475): Attempt to call getDuration without a valid mediaplayer
01-02 09:43:01.142: V/MediaPlayer(6475): message received msg=100, ext1=-38, ext2=0
01-02 09:43:01.142: E/MediaPlayer(6475): error (-38, 0)
错误2是由于错误1产生后引起的错误。


解决这个错误的过程告诉我们解决问题的方法:
1.先通过log错误查找百度,有现成方案可直接使用。
2.在没有现成的解决方案的情况下,先了解原理,然后再对应原理分析log错误,找到引起问题的原因,进而获得解决方案。
0 0
原创粉丝点击