Android Studio: считывание .mp4 из каталога res / raw / по кадрам - PullRequest
0 голосов
/ 02 апреля 2019

Для моего приложения мне нужно загрузить отдельные изображения видеофайла, расположенного в моей директории res / raw /, в список / массив изображений.Из этого списка / массива изображений мне нужно выбрать некоторые значения, которые будут сохранены в новом видео-видеофайле, также расположенном в каталоге res / raw /.

Проблема в том, что я не могу получить путьна мое видео.Если я пытаюсь использовать:

Файл f = new Flie ("app / res / raw / test.mp4");

Я получаю ошибку: файл не найден.

Я пытался использовать Uri, например:

String videopath = "android.resource: //" + getPackageName () + R.raw.test;Файл f = new Flie (videopath.toString ());

Но это тоже не работает.

Вот псевдокод, который мне понадобится:

List<Picture> video = new ArrayList<Picture>();
File file = new file("path_to_file/test.mp4");
FrameGrab grab = FrameGrab.createFrameGrab(NIOUtils.readableChannel(file));
Picture picture;

while (null != (picture = grab.getNativeFrame())) {
    video.add(picture);
}


List<picture> video_new = new ArrayList<picture>();
int[] idx = {1,2,4,6,8 ...}

for(int i= 0; i<idx.length; i++){
    picture= video.get(idx[i]);
    video_new.add(picture);
}

//stores the new video into the same path but with a different name
storefile("path_to_file/test_new.mp4", video_new);

1 Ответ

0 голосов
/ 02 апреля 2019

Похоже, вам не хватает косой черты в пути к файлу.

Попробуйте изменить:

String videopath ="android.resource://" + getPackageName()+ R.raw.test

Кому:

String videopath ="android.resource://" + getPackageName()+ "/" + R.raw.test

Использование этого для доступа и воспроизведения видео будет выглядеть так:

VideoView view = (VideoView)findViewById(R.id.videoView);
String videopath ="android.resource://" + getPackageName()+ "/" + R.raw.test
view.setVideoURI(Uri.parse(videopath));
view.start();

Примечание

Для извлечения кадров из мультимедийного файла (например, видео) Android предоставляет класс MediaMetadataRetriever

...