Как играть видео в андроиде от папки активов или необработанной папки?

Я пытаюсь играть видео в эмуляторе андроида, у меня есть видео в моей папке активов, а также необработанной папке, Но после проведения некоторого исследования все еще я не могу играть видео в своем эмуляторе, я работаю над форматом видео android 2.1 My, mp4, таким образом, я не думаю, что это должно быть проблемой, кто-либо мог просто дать мне пример кода так, чтобы я мог понять немного больше?

Проблема состоит в том, что VideoView, что я должен отобразить Видео, возьмет только URI или Путь к файлу для указания на Видео.

Если я сохраняю видео в сырых данных или папке активов, я могу только получить входной поток или дескриптор файла, и кажется, что ничто из этого не может использоваться для инициализации VideoView.

Обновление

Я более тщательно изучил пример MediaPlayer и попытался запустить MediaPlayer с FileDescriptor в файлы активов как в коде ниже:

SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);

player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {

   @Override
   public void onPrepared(MediaPlayer mp) {
      mp.start();
   }
});

Теперь я получаю следующее исключение:

java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

Кажется, что нет никакого другого пути, затем копируя файл в sdcard на запуске, и это походит на пустую трату времени и память.

67
задан Janusz 19 August 2010 в 12:31
поделиться

5 ответов

Я думаю, вам нужно посмотреть на этот - там должно быть все, что вы хотите.

РЕДАКТИРОВАТЬ: Если вы не хотите смотреть на ссылку - это в значительной степени резюмирует то, что вам нужно.

MediaPlayer mp = MediaPlayer.create (контекст, R.raw.sound_file_1); mp.start ();

Но все же рекомендую прочитать информацию по ссылке.

1
ответ дан 24 November 2019 в 14:32
поделиться
  1. Используйте MediaPlayer API и пример кода.

  2. Поместите медиафайл в папку raw .

  3. Получить файловый дескриптор в файл.

  4. mediaplayer.setDataSource (fd, offset, length); - это тройка конструктор аргументов.

  5. Затем, когда onPreared , mediaplayer.start ();

0
ответ дан 24 November 2019 в 14:32
поделиться

MainCode

Uri raw_uri=Uri.parse("android.resource://<package_name>/+R.raw.<video_file_name>);

myVideoView=(VideoView)findViewbyID(R.idV.Video_view);

myVideoView.setVideoURI(raw_uri);
myVideoView.setMediaController(new MediaController(this));
myVideoView.start();
myVideoView.requestFocus();

XML

<?xml version="1.0" encoding="utf-8" ?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
        <VideoView
            android:id="+@/Video_View"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        />
</LinearLayout>
-1
ответ дан 24 November 2019 в 14:32
поделиться

Пробовали ли вы вручную поместить видео на SDCard и попробовать воспроизвести магазин видео на SDCard?

Если все работает, вы можете найти способ копирования с Raw на SDcard здесь:

android-copy-rawfile-to-sdcard-video-mp4.

3
ответ дан 24 November 2019 в 14:32
поделиться

Если я хорошо помню, у меня была такая же проблема при загрузке материалов из папки ресурсов, но с база данных. Кажется, что у материала в папке с активами может быть 2 статистики: сжатые или нет.
Если он сжат, вам разрешается 1 Мб памяти для его распаковки, в противном случае вы получите такое исключение. Есть несколько отчетов об ошибках по этому поводу, потому что документация не ясна. Поэтому, если вы все еще хотите использовать свой формат, вам нужно либо использовать несжатую версию, либо дать вашему файлу расширение, например .mp3 или .png. Я знаю, что это немного безумно, но я загружаю базу данных с расширением .mp3, и она отлично работает. Другое решение - упаковать ваше приложение специальной опцией, чтобы не сжимать определенное расширение. Но тогда вам нужно создать приложение вручную и добавить опцию «zip -0».
Преимущество несжатого сборки заключается в том, что на этапе zip-align перед публикацией приложения данные будут правильно выровнены, чтобы при загрузке в память их можно было напрямую сопоставить.

Итак, решения:

  • измените расширение файла на .mp3 или .png и посмотрите, работает ли оно
  • создайте приложение вручную и используйте параметр zip-0
4
ответ дан 24 November 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: