我正在尝试开发一个嵌入了许多视频的应用程序,我想调用 Android 的媒体播放器,视频位于 VideoView 对象上。但是,我收到这些奇怪的错误:
- I/MediaPlayer(2874):信息(1,26)
- E/MediaPlayer(2874):错误(-4,-4)
- D/VideoView(2874):错误:-4,-4
当我尝试播放 mp4 视频或其他不是从我的手机录制的 3gp 视频时。我的代码是这样的:
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.MediaController;
import android.widget.VideoView;
public class PlayTest2 extends Activity{
private MediaController ctlr;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.test2);
try {
VideoView video = (VideoView) findViewById(R.id.test2);
// Load and start the movie
video.setVideoPath("android.resource://com.example.child.protector/raw/output");
ctlr=new MediaController(this);
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.start();
//video.requestFocus();//this line is new
}
catch (Exception e) {
Log.e("---------- this is my app --------", "error: " + e.getMessage(), e);
}
}
}
我的布局是这样的:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:id="@+id/test2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
/>
</FrameLayout>
我的代码有问题吗?
我知道我的文件就在那里。我已经使用示例 3GP 视频运行此代码,它运行良好(但我从手机录制了视频并将其复制到我的计算机,然后重新打包到我的应用程序中,位于 Eclipse 的 /res/raw 文件夹下)。但是,问题是由于某种原因,我的媒体播放器只能播放某些 3GPP 文件。如果我尝试使用 MobileMediaConverter 将 MP4 转换为 3GP,它会在我的笔记本电脑上播放,但不会在这个应用程序中播放。另请注意,如果我将视频作为文件打开(换句话说,调用我的三星 Galaxy S 手机上的默认视频播放器)它工作得很好(这意味着我的手机具有这些功能)。所以我想知道:
- 这是代码有问题吗?
- 这更像是将 mp4 转换为 3gp 的错误吗?
任何帮助将不胜感激。谢谢!!