11

我想从我的 SD 卡播放电影。我尝试使用以下代码:

VideoView videoView = (VideoView) findViewById(R.id.videoView);

final String MEDIA_PATH = new String("/sdcard/robot.avi");

MediaController mediaController = new MediaController(this);

mediaController.setAnchorView(videoView);

videoView.setVideoPath(MEDIA_PATH);

videoView.setMediaController(mediaController);

videoView.start();

但是当我尝试播放该文件时,我收到一条错误消息。“找不到视频”或类似的东西。当我尝试从网络流式传输时,视频可以正常播放,但非常滞后。在我的应用中播放视频的最佳方式是什么?

谢谢

4

7 回答 7

9

尝试这个...

VideoView videoView = (VideoView) findViewById(R.id.videoView);

final String MEDIA_PATH = new String(Environment.getExternalStorageDirectory()+"/sdcard/robot.avi");

MediaController mediaController = new MediaController(this);

mediaController.setAnchorView(videoView);

videoView.setVideoPath(MEDIA_PATH);

videoView.setMediaController(mediaController);

videoView.start();
于 2012-05-25T09:25:25.850 回答
5

观察到setVideoPath()失败,但对Web 和本地setVideoURI()都很好,所以我坚持你要使用它。

 VideoView videoView = (VideoView) findViewById(R.id.videoView);

    final String MEDIA_PATH = new String("file:///sdcard/robot.avi");

    MediaController mediaController = new MediaController(this);

    mediaController.setAnchorView(videoView);

    videoView.setVideoURI(MEDIA_PATH);

    videoView.setMediaController(mediaController);

    videoView.start();
于 2012-05-24T15:30:37.533 回答
3

您的问题是视频路径设置不正确:

只需切换到此代码:

final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/robot.avi";

如果视频“robot.avi”存在于 sd 卡的根文件夹中,这将解决您的问题

于 2012-05-27T17:21:08.773 回答
3

使用此代码。希望它会起作用

public class VideoPlayActivity extends Activity {
private VideoView video;
private MediaController ctlr;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);

File clip=new File(Environment.getExternalStorageDirectory(),
               "haha.mp4");


if (clip.exists()) {
video=(VideoView)findViewById(R.id.video);
video.setVideoPath(clip.getAbsolutePath());

ctlr=new MediaController(this);
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
video.start();
}
}
}
于 2012-05-24T09:31:30.783 回答
3

尝试

video_view.setVideoURI(Uri.parse(path));

如果您尝试设置为 uri,则不能直接作为字符串路径传递。对我来说工作正常的代码:

    path = Environment.getExternalStorageDirectory() + "/file_name";

    // Add controls to a MediaPlayer like play, pause.
    MediaController mc = new MediaController(this);
    video_view.setMediaController(mc);

    // Set the path of Video or URI.
    video_view.setVideoURI(Uri.parse(path));

    // Set the focus.
    video_view.requestFocus();

    video_view.start();
于 2012-05-25T13:59:28.930 回答
2

可能是 avi 不支持在 android.convert 成 mp4 或 wmv 或 3gp。试试这个代码

public class VideoPlayActivity extends Activity {
 private VideoView video;
 private MediaController ctlr;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);

File clip=new File(Environment.getExternalStorageDirectory(),
                   "robot.mp4");

if (clip.exists()) {
  video=(VideoView)findViewById(R.id.video);
  video.setVideoPath(clip.getAbsolutePath());

  ctlr=new MediaController(this);
  ctlr.setMediaPlayer(video);
  video.setMediaController(ctlr);
  video.requestFocus();
  video.start();
}
}
}
于 2012-05-24T06:38:13.243 回答
2

您正在播放自己的视频VideoView,但是如果您没有什么可定制的,只想在屏幕上显示视频,为什么不使用默认播放器来播放视频。

File imgFile = new File(Environment.getExternalStorageDirectory()+"FileName");
//make sure the video is in SDCard, 
//if its located in any folder care to pass full absolute path 
Intent tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(imgFile.getPath()), "video/*");
startActivity(tostart);
于 2012-05-24T11:47:50.167 回答