Я написал код видеопроигрывателя в android. Но одна проблема, с которой я столкнулся, - это когда я отлаживаю свое кодовое видео правильно, но когда я запускаю это, видео не появляется, только звук может быть прослушан.
Любая помощь будет оценена.
Это основной метод моего видеопроигрывателя.
private void playVideo(String url)
{
try
{
media.setEnabled(false);
if (player==null)
{
player=new MediaPlayer();
player.setScreenOnWhilePlaying(true);
//player.reset();
}
else
{
player.stop();
player.reset();
}
player.setOnErrorListener(this);
player.setDataSource(url);
player.setDisplay(holder);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(this);
player.prepareAsync();
player.setOnBufferingUpdateListener(this);
player.setOnCompletionListener(this);
}
catch(IllegalStateException ex)
{
try
{
player.reset();
player.setOnErrorListener(this);
player.setDataSource(url);
player.setDisplay(holder);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(this);
player.prepareAsync();
player.setOnBufferingUpdateListener(this);
player.setOnCompletionListener(this);
}
catch(Exception ex1)
{
ex1.printStackTrace();
}
}
catch (Throwable t)
{
Log.e(TAG, "Exception in media prep", t);
goBlooey(t);
}
}
Если звук воспроизводится, но не видео, возможно, вы неправильно настроили свой держатель поверхности, как видно из документации MediaPlayer:
public void setDisplay (SurfaceHolder ш)
Устанавливает SurfaceHolder для использования отображение видеофрагмента СМИ. Этот вызов является необязательным. Не вызов его при воспроизведении видео приведет только к звуковой дорожке воспроизводится.
Параметры sh - SurfaceHolder для использование для отображения видео
Возможно, вам нужно сделать что-то вроде следующего в вашем onCreate():
mPreview = (SurfaceView) findViewById(R.id.surface);
holder = mPreview.getHolder();