【发布时间】:2015-01-09 08:42:07
【问题描述】:
我在项目中创建了一个 res/raw 文件夹,其中放置了一个文件 t.mp4。我打算通过实现相关接口使用纹理视图通过 SurfaceTextureAvailable 侦听器播放视频文件。
我在 onSurfaceTextureAvailable 方法中创建了一个媒体播放器对象
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Surface s = new Surface(surface);
Log.d("debug", "Surface Texture Available");
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.t));
Log.d("debug", "data source set");
mMediaPlayer.setSurface(s);
Log.d("debug", "Surface set");
mMediaPlayer.prepare();
Log.d("debug", "prepared");
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
Log.d("debug", "listeners set");
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
}
}
这在我运行应用程序的前几次运行良好,但在我的项目的另一个(非相关)部分工作后,它突然停止工作。
在日志中,我不断收到 IOException,我 90% 确定这是因为应用程序找不到文件。
发生了什么?
干杯
【问题讨论】:
-
logcat 对异常有什么看法?
-
01-09 11:23:16.240 20537-20554/com.edifyelectronics.tv.app E/MediaPlayer: 错误 (1, -2147483648) 01-09 11:23:16.243 20537-20537/ com.edifyelectronics.tv.app W/System.err: java.io.IOException: Prepare failed.: status=0x1
-
我尝试使用 FileInputStream 对象更改 setDataSource。然后我得到一个 FileNotFound 错误
标签: android io android-mediaplayer