Android игры в кино в живом фоне

Возможно ли это? Я попытался использовать MediaPlayer, но он выбрал исключение NullPointerException для объекта MediaPlayer. Я могу заставить звук работать, но видео не будет.

 mp=MediaPlayer.create(getApplicationContext(), R.raw.sample);
 mp.start();
 mp.setOnCompletionListener(new OnCompletionListener() 
 {
     public void onCompletion(MediaPlayer mp) {
          mp.release();
          playing = false;
     }
 });

образец имеет тип .mp4.

У кого-нибудь есть идея, почему это происходит или есть предложение о другом способе воспроизведения видео?

Ответы

Ответ 1

Вы можете использовать следующий код

VideoView videoView;
    VideoView = (VideoView) findViewById (R.id.txt1);
    videoView.setVideoPath(path);
    videoView.setVisibility(VideoView.VISIBLE);
videoView.start();

Я попытался воспроизвести mp4 на своем эмуляторе, но он не показывал видео, но когда я пытался работать на устройстве, он работал нормально.

Ответ 2

Не пробовал это раньше, но я думаю, вы можете использовать vlcj framework, который полностью свободен и может эффективно воспроизводить практически любой тип видео (и, конечно же, играет видеофайлы .mp4). Я не могу дать вам какой-либо код в Android потому что никогда не работал с android, но я знаю java, и он просто работает. Вот здесь я использую в Java:

NativeLibrary.addSearchPath("libvlc",path); //To set path of libvlc
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);//To import libvlc
//The path can be a folder in your android project.All the files needed are in vlc player installation folder.so yes you have to install vlc in your computer to get those files but just once.
canvas = new WindowsCanvas();
panel.add(canvas);//panel is like your VideoView
canvas.setVisible(true);
canvas.setBackground(Color.black);

mediaPlayerFactory = new MediaPlayerFactory();
player12 = mediaPlayerFactory.newEmbeddedMediaPlayer();
CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
player12.setVideoSurface(videoSurface);
player12.setPlaySubItems(true);
player12.startMedia(yourVideoPath); 

player12.setAspectRatio(""+panel.getWidth()+":"+panel.getHeight()); //Those two lines are for your video to be adusted in your panel or better to your VideoView
player12.setCropGeometry(""+panel.getWidth()+":"+panel.getHeight()); 

Файлы jar, которые вы должны включить в свой путь к классам, - jna-3.4.0.jar, platform-3.4.0.jar, vlcj-2.1.0.jar