今天记录一个坑,使用MediaPlayer播放视频时出现了黑屏的情况,然后看控制台输出的系统日志中包含了一个“MediaPlayer error (1, -2147483648)”
然后我就去查了一下源码,发现了这个
public interface OnErrorListener
{
/**
* Called to indicate an error.
*
* @param mp the MediaPlayer the error pertains to
* @param what the type of error that has occurred:
* <ul>
* <li>{@link #MEDIA_ERROR_UNKNOWN}
* <li>{@link #MEDIA_ERROR_SERVER_DIED}
* </ul>
* @param extra an extra code, specific to the error. Typically
* implementation dependent.
* <ul>
* <li>{@link #MEDIA_ERROR_IO}
* <li>{@link #MEDIA_ERROR_MALFORMED}
* <li>{@link #MEDIA_ERROR_UNSUPPORTED}
* <li>{@link #MEDIA_ERROR_TIMED_OUT}
* <li><code>MEDIA_ERROR_SYSTEM (-2147483648)</code> - low-level system error.
* </ul>
* @return True if the method handled the error, false if it didn't.
* Returning false, or not having an OnErrorListener at all, will
* cause the OnCompletionListener to be called.
*/
boolean onError(MediaPlayer mp, int what, int extra);
}
那么我所遇到的问题就是“MEDIA_ERROR_SYSTEM”这个错误,其原因是“系统版本过低错误”(瞎翻译的)。。。然后我又在网上查了一波,发现是因为视频文件通常是mp4、avi等格式的,但是即便是同一种文件格式,它们的编码格式也可能不一样。比如常见的编码格式有:H.264、H.263等。但许多Andorid设备都只能支持部分编码方式,这也就导致了有些视频没法在Andorid设备上播放,如果非要对这些视频进行播放,就涉及到了视频转码的复杂的操作了。。。目前我还没学会这种技能,也算挖个坑,以后慢慢填吧