Проблема с Android 2.2 VideoView
Я хочу играть в кино с моей SD-карты. Ive попытался использовать следующий код:
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();
Но когда я пытаюсь воспроизвести файл, я получаю сообщение об ошибке. "видео не найдено" или что-то подобное. Когда я попробовал потоковое вещание из Интернета, видео работало, но было очень лаги. Какой способ воспроизведения видео в моем приложении?
Спасибо
Ответы
Ответ 1
Попробуйте это...
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();
Ответ 2
Наблюдается, что 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
Используйте этот код. Надеюсь, он будет работать
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();
}
}
}
Ответ 4
Попробуйте
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();
Ответ 5
Ваша проблема в том, что путь видео не установлен правильно:
просто переключитесь на этот код:
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/robot.avi";
который решит вашу проблему, если видеоролик "robot.avi" существует в корневой папке SD-карты.
Ответ 6
Может быть 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();
}
}
}
Ответ 7
Вы воспроизводите свое видео в своем собственном 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);