13

这甚至可能吗?我曾尝试使用 MediaPlayer,但它会在 MediaPlayer 对象上引发 NullPointerException。我可以让音频工作,但视频不会。

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

样本为 .mp4 类型。

任何人都知道为什么会发生这种情况,或者对另一种播放视频的方法有建议吗?

4

2 回答 2

3

您可以使用以下代码

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

我试图在我的模拟器上播放 mp4 但它没有显示视频但是当我在设备上尝试时它工作正常。

于 2012-07-03T04:20:07.887 回答
1

以前没有尝试过,但我认为你可以使用完全免费的 vlcj 框架,并且可以有效地播放几乎任何类型的视频(当然也可以播放 .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

于 2012-12-10T18:14:02.097 回答