Android путь к ресурсу внутри пакета - PullRequest
3 голосов
/ 28 марта 2012

Я попытался добавить путь к видео в пример проекта Android - MediaPlayerDemo

Я могу воспроизвести видео, когда оно хранится в SDCard, путь это "file: ///sdcard/dcim/a.m4v"

Но я не могу воспроизвести видео, когда оно сохранено в res / drawable.путь "android.resource: //" + this.getPackageName () + "/" + R.drawable.a

Я могу прочитать идентификатор видео в режиме отладки, но просто не могуВоспроизвести видео.

Как решить?

ОБНОВЛЕНИЯ

Спасибо за ответ, пока я пытался:

  1. поместить видео в ресурсы, установить путь к файлу "file: ///android_asset/a.m4v".
  2. поместить видео в сыром виде, установить путь к ("android.resource: //"+ this.getPackageName () +" / "+ R.raw.a) или (" android.resource: // "+ this.getPackageName () +" / raw / a)

но никто из них не может воспроизводить видео. Мое видео имеет размер 1,8 Мб, это имеет значение?

Ответы [ 4 ]

6 голосов
/ 28 марта 2012

Создайте новую папку с именем raw в папке res , если она уже создана.Скопируйте воспроизводимый видеофайл (например, myvideo.mp4 ) в папку raw .Используйте код ниже в вашем приложении.

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

Я тестировал, это работает для меня.Если видео можно воспроизводить с SD-карты, то только оно будет воспроизводиться из необработанной папки, в противном случае будет отображено диалоговое окно с сообщением Невозможно воспроизвести видео .

, попробуйте и дайте мне знать, что произошло.

2 голосов
/ 28 марта 2012

FYI, drawable для хранения значков, изображений, рисований для приложения.Таким образом, вы можете поместить одно и то же видео в папку assets или raw.

0 голосов
/ 23 июня 2017

Этот вопрос довольно старый и до сих пор не получил хорошего ответа, поэтому здесь я отвечу.

Прежде всего, не помещайте видео в папку ресурсов.Это плохая практика.Создайте другую папку (желательно одну с именем 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();

Надеюсь, это прояснит ваши сомнения!

0 голосов
/ 28 марта 2012

Я нашел решение, но не прямой путь.

Во-первых, проблема не найденного файла - это не проблема пути, а потому, что проблема с разрешениями.что многие люди предлагают скопировать файл в FileInputStream.Но проблема с файлом не найдена.

Но файл можно записать в Inputstream.Однако setDataSource () класса Mediaplayer не принимает InpuStream.Поэтому необходимо записать Inputstream во временный файл с помощью BufferedOutputStream.

наконец, setDataSource (tempfile_path) без ошибок.

...