【问题标题】:Android Playing Movie Files In A Live WallpaperAndroid 在动态壁纸中播放电影文件
【发布时间】:2011-08-17 09:03:33
【问题描述】:

这甚至可能吗?我曾尝试使用 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 类型。

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

【问题讨论】:

  • 我建议阅读文档:developer.android.com/reference/android/media/MediaPlayer.html。对于初学者,您需要在调用 start() 之前调用 prepare() 或 prepareAsync();
  • 光是想想就感觉电池在耗尽……
  • 您能否获取代码以在常规应用中播放视频?这是排除您的代码是否存在问题的一种方法。

标签: java android media-player nullpointerexception live-wallpaper


【解决方案1】:

你可以使用下面的代码

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

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

【讨论】:

    【解决方案2】:

    以前没有尝试过,但我认为您可以使用完全免费的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多