【问题标题】:Android path to resource inside package包内资源的Android路径
【发布时间】:2012-04-11 17:26:50
【问题描述】:

我尝试将视频路径添加到 Android 示例项目 - MediaPlayerDemo

我可以播放存储在sdcard中的视频,路径是 “文件:///sdcard/dcim/a.m4v”

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

我可以在调试模式下读取视频的 ID,但无法重播视频。

如何解决?

更新

谢谢你的回复,到目前为止我已经试过了:

  1. 将视频放入assets,设置路径为“file:///android_asset/a.m4v”。
  2. 将视频放入原始格式,将路径设置为 ("android.resource://" +this.getPackageName () + "/" + R.raw.a) 或 ("android.resource://" +this.getPackageName () + "/raw/a)

但他们都不能播放视频。 我的视频是 1.8Mb,这有关系吗?

【问题讨论】:

  • 这样使用'Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.a); videoHolder.setVideoURI(myUri);'
  • 但正确的方法是将您的视频作为 Mayani ans 放入资产或原始文件夹中。
  • 我尝试了很多方法,但仍然得到 setDataSourceFD failed: status=0x80000000
  • 好的,然后发布您的代码和日志?

标签: android resources path media-player


【解决方案1】:

res 文件夹中创建一个名称为 raw 的新文件夹,如果已经创建,则顺其自然。将您的可播放视频文件(例如 myvideo.mp4)复制到 raw 文件夹。在您的应用中使用以下代码。

String uriPath = "android.resource://"+getPackageName()+"/raw/myvideo";
Uri uri = Uri.parse(uriPath);
mVideoView.setVideoURI(uri);

我测试过,它对我有用。如果视频可以从 sdcard 播放,则只能从 raw 文件夹播放,否则会显示对话框无法播放视频

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

【讨论】:

  • 我试过你的方法,还是不行。使用 API 级别 10。我什至无法通过 VideoView 播放 sdcard 中的视频。我正在使用媒体播放器。还是谢谢!
  • 我终于可以播放我的本地视频了! Thks 但不要忘记删除 uri 路径中的文件扩展名,不知道为什么,但在我删除 .mp4 扩展名之前它不起作用
【解决方案2】:

仅供参考,drawable 是为应用程序存储图标、图像、drawables。因此,您可以将相同的视频放在assetsraw 文件夹中。

【讨论】:

  • 谢谢。但我仍然无法播放这两个文件夹中的视频。
【解决方案3】:

我找到了解决方案,但不是直截了当的方法。

首先,file not found问题不是路径问题,是权限问题。

为了解决这个问题,很多人建议将文件复制到 FileInputStream 中。但还是有文件未找到问题。

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

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

【讨论】:

  • 文件临时文件 = File.createTempFile("mediaplayer", "temp");字符串 tempfilepath = tempfile.getAbsolutePath(); FileOutputStream fo = new FileOutputStream(tempfile); BufferedOutputStream bis = new BufferedOutputStream(fo);字节 buf[] = 新字节[128]; do { int numread = is.read(buf); if (numread
  • 请使用帖子下方的编辑链接按钮向其添加更多信息,而不是使用评论部分。它更难阅读。
【解决方案4】:

这个问题太老了,还没有很好的回答,所以我在这里回答一下。

首先,不要将视频放在 assets 文件夹中。这是一种不好的做法。创建另一个文件夹(最好是名为 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();

希望这能澄清你的疑问!

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 2016-05-12
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多