Я пытаюсь воспроизвести видео в эмуляторе Android. У меня есть видео в папке с активами, а также в папке raw. Но после некоторых исследований я не могу воспроизвести видео в моем эмуляторе, я работаю на Android 2.1. Мой формат видеоmp4, так что я не думаю, что это должно быть проблемой. Может ли кто-нибудь просто дать мне пример кода, чтобы я мог понять немного больше?
Проблема в том, что VideoView, который мне нужен для отображения видео, будет приниматьтолько URI или путь к файлу, указывающий на видео.
Если я сохраняю видео в папке raw или assets, я могу получить только входной поток или дескриптор файла, и, похоже, ничего этого нельзя использовать для инициализации 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
Кажется, нет другого способа, кроме как скопировать файл на SD-карту при запуске, и это кажется пустой тратой времени и памяти.