【问题标题】:I want to play a video from my assets or raw folder我想播放我的资产或原始文件夹中的视频
【发布时间】:2010-09-19 15:48:20
【问题描述】:

我想在我的 Android 应用中播放我的资产或原始文件夹中的视频 使用VideoView 我收到错误,因为无法播放视频 请任何人给我一个解决方案。

这是我使用的代码

VideoView vd = (VideoView)findViewById(R.id.Video);         
Uri uri = Uri.parse("android.resource:"  + R.raw.video);
MediaController mc = new MediaController(this);
vd.setMediaController(mc);
vd.setVideoURI(uri); 
vd.start();

【问题讨论】:

  • 嘿@Macarse,你能不能给我一个坚实的基础并接受我在这个问题上的最高投票答案?

标签: android android-videoview


【解决方案1】:

需要注意的几点:

  1. 您必须将视频复制到项目的 res/raw 文件夹中。
  2. 它必须采用受支持的格式(3gp、wmv、mp4)并在其文件名中使用小写、数字、下划线和圆点命名:my_video_file.mp4
  3. 当您在代码中使用此资源时,您将通过生成的 R 静态数据进行引用 - 它将删除文件扩展名:R.raw.my_video_file
  4. Activity 类有一个辅助方法 getPackageName(),您的代码可以在构建视频的正确 URI 时使用该方法。
VideoView vv = (VideoView)this.findViewById(R.id.videoView)
String uri = "android.resource://" + getPackageName() + "/" + R.raw.my_video_file;
vv.setVideoURI(Uri.parse(uri));
vv.start();

有更多关于这个here的信息。

【讨论】:

  • 我使用VideoView播放原始文件夹中的视频,但低于2.3的较低版本无法播放视频。它显示错误“无法播放视频”请指导我哪里有问题,因为视频在其他版本中播放。
  • 当我在播放视频的过程中旋转屏幕时,它会从第一个开始。那么我该怎么做才能防止它从头开始呢?
  • @AnandSavjani 你无法控制它。旋转屏幕时,android会重新加载当前activity
  • 您可以跟踪您的位置并使用 savedInstanceBundle developer.android.com/guide/topics/resources/… 传递信息
【解决方案2】:

你必须在 uri 中包含包名:

  Uri uri = Uri.parse("android.resource://[package]/raw/video")

  Uri uri = Uri.parse("android.resource://[package]/"+R.raw.video);

另外,请查看these examples

【讨论】:

    【解决方案3】:

    VideoView 出错的方法有很多!主要是因为logcat没有给你任何帮助,总是报UNKNOWN错误。

    我发现此链接是迄今为止最好的入门方式... 一个完整的描述,所以你不会出错。感谢作者...

    http://androidexample.com/Play_Video_File_-_Android_Example/index.php?view=article_discription&aid=124&aaid=144

    【讨论】:

    • 链接已失效!不幸的是,我很赞同你所说的!我在 Android 上播放视频有一段时间苦苦挣扎,我缺少的是对该主题的结构化介绍,Android 开发人员指南在这里没有多大帮助....如果您能找到链接的内容,那就太好了再次更新帖子。 (也可能是链接暂时不可用……)
    • 链接似乎对我有用。如果你仍然有问题谷歌“androidexample.com Play_Video_File__-_Android_Example”
    【解决方案4】:

    当我们在/resource/raw/assets/ 中包含视频资源时,默认情况下,它会查找.mp4 格式,它不会接受.wmv 文件。如果您从外部位置读取视频文件(例如:/mnt/sdcard/demo.wmv),那么它将接受它们。

    【讨论】:

      【解决方案5】:

      试试:

         AssetFileDescriptor afd = getAssets().openFd(fileName);
         player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
      

      【讨论】:

        【解决方案6】:

        确保写入文件视频名称不带扩展名

        【讨论】:

          猜你喜欢
          • 2011-03-03
          • 2012-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多