Как играть в видеофайл в Android?
Я помещаю видео MP4 в свое доменное пространство. У меня есть общедоступный URL-адрес, теперь я хочу воспроизвести его в своем приложении для Android; но не знаю, как я могу это сделать. Я использовал следующий код, который не работает. Трек-контроллер движется, но я не вижу видео на экране.
public class MPlayer extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playvideo);
VideoView videoView = new VideoView(MPlayer.this);
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse("http://www.semanticdevlab.com/abc.mp4"));
videoView.requestFocus();
videoView.start();
LinearLayout l = (LinearLayout)findViewById(R.id.mplayer);
l.addView(videoView);
}
}
Ответы
Ответ 1
В большинстве случаев я использую следующий код:
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
для получения дополнительной информации смотрите на этой странице: http://developer.android.com/guide/topics/media/index.html
а также
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
Ответ 2
Класс VideoView может загружать изображения из разных источников (например, ресурсы или поставщики контента), заботится о вычислении его измерения из видео, чтобы он мог использоваться в любом менеджере компоновки и предоставлял различные параметры отображения, такие как масштабирование и тонировка.
код:
videoView = (VideoView)findViewById(R.id.ViewVideo);
videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.video));
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
если вы хотите увидеть исходный код: Воспроизвести видеофайл с помощью VideoView в Android
Ответ 3
Я думаю, что это может помочь вам найти какое-то решение.
mp=new MediaPlayer();
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();
Ответ 4
Если вы пытаетесь это сделать в своем эмуляторе, возможно, вам придется попробовать его на реальном устройстве, потому что иногда я тоже использую ту же проблему. Я не смогу просматривать видео в эмуляторе, но видео будет воспроизводиться без проблем на мобильном устройстве. проблема в том, что я думаю с эмулятором, а не с вашим кодом.
Ответ 5
Вы должны сделать это в onResume
, потому что в onCreate
VideoView
не знает его размер и не может создать правильную поверхность для отображения видео.
public class MPlayer extends Activity{
VideoView videoView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playvideo);
videoView = new VideoView(MPlayer.this);
videoView.setMediaController(new MediaController(this));
LinearLayout l = (LinearLayout)findViewById(R.id.mplayer);
l.addView(videoView);
}
@Override
protected void onResume() {
super.onResume();
videoView.setVideoURI(Uri.parse("http://www.semanticdevlab.com/abc.mp4"));
videoView.start();
}