程序包内资源的Android路径

程序包内资源的Android路径,android,resources,path,media-player,Android,Resources,Path,Media Player,我试图为Android示例项目MediaPlayerDemo添加一个视频路径 我可以播放存储在SD卡中的视频,路径为 "file:///sdcard/dcim/a.m4v" 但我无法播放存储在res/drawable中的视频。路径是 “android.resource://”+this.getPackageName()+“/”+R.drawable.a 我可以在调试模式下读取视频的id,但无法重放视频 如何解决 更新 感谢您的回复,到目前为止,我已尝试: 将视频放入资源中,将路径设置为“file

我试图为Android示例项目MediaPlayerDemo添加一个视频路径

我可以播放存储在SD卡中的视频,路径为 "file:///sdcard/dcim/a.m4v"

但我无法播放存储在res/drawable中的视频。路径是 “android.resource://”+this.getPackageName()+“/”+R.drawable.a

我可以在调试模式下读取视频的id,但无法重放视频

如何解决

更新

感谢您的回复,到目前为止,我已尝试:

  • 将视频放入资源中,将路径设置为“file:///android_asset/a.m4v“
  • 将视频置于原始状态,将路径设置为 (“android.resource://“+this.getPackageName()+”/“+R.raw.a)或(“android.resource://“+this.getPackageName()+”/raw/a)
  • 但他们都不能播放视频。
    我的视频是1.8Mb,这有关系吗?

    仅供参考,drawable用于存储应用程序的图标、图像和可绘制内容。因此,您可以将相同的视频放在
    资产
    原始
    文件夹中。

    res文件夹中创建一个名为原始的新文件夹,如果已经创建,就让它继续吧。复制您的可播放视频文件(例如,myvideo.mp4)到raw文件夹。在应用程序中使用以下代码

    String uriPath = "android.resource://"+getPackageName()+"/raw/myvideo";
    Uri uri = Uri.parse(uriPath);
    mVideoView.setVideoURI(uri);
    
    我测试过,它对我有用。如果视频可以从SD卡播放,那么只有它可以从原始文件夹播放,否则它会显示一个对话框,上面写着“无法播放视频”


    试试看,让我知道发生了什么。

    我找到了解决办法,但不是一条直截了当的道路

    首先,文件未找到的问题不是路径问题,这是因为权限问题

    为了解决这个问题,许多人建议将文件复制到FileInputStream中。但仍然存在文件未找到的问题

    但是文件可以写入Inputstream,但是Mediaplayer类的setDataSource()不接受Inputstream,因此需要通过BufferedOutputStream将Inputstream写入临时文件


    最后,setDataSource(tempfile_path)没有错误。

    这个问题很老了,仍然没有得到很好的回答,所以我将在这里回答

    首先,不要将视频放在资产文件夹中。这是一种不好的做法。请创建另一个文件夹(最好是名为raw的文件夹)

    第二件事是,请不要使用m4v格式。请使用mp4视频

    以下是插入视频的代码:

        //Here it is assumed here that the file name of video in raw folder is demo        
        VideoView video = (VideoView) findViewById(R.id.videoView);
        video.setVideoPath("android.resource//" + getPackageName() + "/" + R.raw.demo);
        video.start();
    

    希望这能澄清你的疑问!

    用这种方式“Uri myUri=Uri.parse”(“android.resource://“+getPackageName()+“/”+R.drawable.a);videoHolder.setVideoURI(myUri)'但将您的视频作为Mayani ans放入资产或原始文件夹的正确方法。我尝试了许多方法,但仍然获得一个setDataSourceFD失败:状态=0x80000000确定,然后发布您的代码和日志?谢谢。但我仍然无法在这两个文件夹中播放视频。我尝试了您的方法,仍然不起作用。使用API级别10。我甚至无法通过VideoVi从SD卡播放视频ew.我正在使用MediaPlayer。无论如何,谢谢!我终于能够播放我的本地视频了!Thks但别忘了删除uri路径中的文件扩展名,不知道为什么,直到我删除了。mp4 extensionFile tempfile=file.createTempFile(“MediaPlayer”,“temp”);String tempfilepath=tempfile.getAbsolutePath();FileOutputStream fo=新的FileOutputStream(tempfile);BufferedOutputStream bis=新的BufferedOutputStream(fo);字节buf[]=新字节[128];do{int numread=is.read(buf);如果(numread请使用帖子下方的“编辑链接”按钮添加更多信息,而不是使用评论部分。阅读起来要困难得多。