Android 2.2 VideoView проблема - PullRequest
       4

Android 2.2 VideoView проблема

11 голосов
/ 03 января 2011

Я хочу воспроизвести фильм с моей 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();

Но когда я пытаюсь воспроизвести файл, я получаю сообщение об ошибке. "видео не найдено" или что-то подобное. Когда я попробовал потоковую передачу из Интернета, видео сработало, но было очень медленным. Какой лучший способ воспроизведения видео в моем приложении?

Спасибо

Ответы [ 7 ]

9 голосов
/ 25 мая 2012

Попробуйте это ...

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();
5 голосов
/ 24 мая 2012

Замечено, что setVideoPath() терпит неудачу, в то время как setVideoURI() хорошо работает как для Web, так и для Local , поэтому я настаиваю, чтобы вы использовали это.

 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();
3 голосов
/ 27 мая 2012

Ваша проблема в том, что путь к видео не установлен правильно:

просто переключитесь на этот код:

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

, который решит вашу проблему, если в корневой папке карты SD есть видео «robot.avi»

3 голосов
/ 25 мая 2012

Попробуйте с помощью

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();
3 голосов
/ 24 мая 2012

Используйте этот код. Надеюсь, он будет работать

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();
}
}
}
2 голосов
/ 24 мая 2012

Вы воспроизводите видео на своем собственном 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);
2 голосов
/ 24 мая 2012

Может быть, AVI не поддерживает в Android. Преобразуйте его в 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();
}
}
}
...