Java &引用;Can';“不要播放此视频”;在Android Studio上使用VideoView…尝试了很多东西,但仍然没有';行不通

Java &引用;Can';“不要播放此视频”;在Android Studio上使用VideoView…尝试了很多东西,但仍然没有';行不通,java,android,video,android-videoview,Java,Android,Video,Android Videoview,您好,我正在尝试在Android Studio应用程序上播放432x320.mp4视频(我已手动转换为.mp4 H.264格式),使用帧布局中的相对布局。我一直收到“无法播放此视频错误” 以下是我的.xml文件(注意,我有许多按钮/imagebutton,我在这里的帖子中省略了它们,因为它们不相关,并且占用了很多空间) 而且 String uriPath = "android.resource://" + "com.android.engineersdream.ed_video/

您好,我正在尝试在Android Studio应用程序上播放432x320.mp4视频(我已手动转换为.mp4 H.264格式),使用帧布局中的相对布局。我一直收到“无法播放此视频错误”

以下是我的.xml文件(注意,我有许多按钮/imagebutton,我在这里的帖子中省略了它们,因为它们不相关,并且占用了很多空间)

而且

    String uriPath = "android.resource://" +
    "com.android.engineersdream.ed_video/" + R.raw.alphie_vidprompt;
    Uri uri = Uri.parse(uriPath);
    mVideoView.setVideoURI(uri);
    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {

  mVideoView.start();
    }
});
尽管我尝试了一些建议,但我还是没能让任何东西发挥作用,这些建议是给那些在视频浏览视频工作中遇到类似问题的人提出的。有没有其他建议我可能会错过?我的视频格式不正确吗?在Android Studio上播放视频还有其他更简单的方法吗?谢谢

编辑: 我试着按照建议将video.mp4文件复制到SD卡上,但仍然不起作用。我已将这些文件放在Android Manifest.xml文件中: android.permission.READ_外部存储和android.permission.WRITE_外部存储

这是我为OnCreate所做的

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.alphie_ii);
    mVideoView = (VideoView)findViewById(R.id.videoView);
    push = (ImageButton) findViewById(R.id.On);
    //imgButton.setOnClickListener(imgButtonHandler);
    final int[] mvids = new int[] { R.raw.alphie_vidprompt, R.raw.alphie_vidcorrect };
    for (int i = 0; i < mvids.length; i++) {
        try {
            String path = Environment.getExternalStorageDirectory() + "/Alphie";
            File dir = new File(path);
            if (dir.mkdirs() || dir.isDirectory()) {
                String str_song_name = i + ".mp4";
                CopyRAWtoSDCard(mvids[i], path + File.separator + str_song_name);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private void CopyRAWtoSDCard(int id, String path) throws IOException {
    InputStream in = getResources().openRawResource(id);
    FileOutputStream out = new FileOutputStream(path);
    byte[] buff = new byte[1024];
    int read = 0;
    try {
        while ((read = in.read(buff)) > 0) {
            out.write(buff, 0, read);
        }
    } finally {
        in.close();
        out.close();
    }
}
我仍然收到同样的信息“无法播放此视频”
虽然我还有很多东西要学,但我还是不明白为什么要把视频复制到SD卡上。我希望从res/raw目录运行它足够简单。

您给出了错误的包名(
com.example.s3project
com.android.engineersdream.ed\u video
)。您的布局应该是
com.example.kenneth.alphieii
com.example.kenneth
。但您应该使用上下文中的包名称,如:

getPackageName();
所以在你的情况下,你应该使用

"android.resource://".concat(getPackageName()).concat("/raw/").concat(R.raw.alphie_vidprompt);

你能试着将视频复制到你的设备并链接到该路径吗?我实际上使用的是Android Emulator,理想情况下,我希望视频成为整个Gradle(和应用程序的一部分)的一部分,而不是与应用程序分离。我的意思是将你的应用程序更改为使用SD卡作为URI,而不是资源。请确保您使用的设备支持H264格式和相同的代码,尝试播放.mp4文件。如果它有效,那么代码中就没有问题。问题可能在于您将.mp4从AT转换为H264的方式
 Uri vidFile = Uri.parse(
 Environment.getExternalStorageDirectory().getAbsolutePath()
 + "alphie/alphie_vidprompt");

    mVideoView.setVideoURI(vidFile);
    mVideoView.start();
getPackageName();
"android.resource://".concat(getPackageName()).concat("/raw/").concat(R.raw.alphie_vidprompt);