Воспроизведение видео дает черный экран, но со звуком

Я в тупике.

Я пытаюсь воспроизвести видео с помощью Media Player, но пока воспроизводится звук, все, что я вижу, - это черное окно.

Я видел другие сообщения об этой проблеме, но мне не приходилось искать решения. Я попытался последовать их предложениям.

Медиаплеер подготавливается перед воспроизведением. Держатель поверхности был создан и настроен на отображение медиаплеера перед воспроизведением.

Проверено на Samsung Galaxy Tab и Samsung Galaxy S.

Я компилирую с использованием API уровня 7.

Само видео можно воспроизводить в видеоприложении устройства с SD-карты, поэтому оно должно быть совместимым.

Вид поверхности отличается по размеру от видео. Так что это может быть проблемой. Мне нужно что-то с этим делать, или растяжка выполняется автоматически?

Вот что у меня есть при инициализации:

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(width, height);
lp.leftMargin = x;
lp.topMargin = y;
mSurfaceView = new SurfaceView(mActivity);
mSurfaceView.requestFocus();
mSurfaceView.setZOrderOnTop(true);
mSurfaceView.getHolder().addCallback(player);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mLayout.addView(mSurfaceView, lp);

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(), assetDescriptor.getStartOffset(), assetDescriptor.getLength());
mMediaPlayer.setOnErrorListener(player);
mMediaPlayer.setOnPreparedListener(player);
mMediaPlayer.prepare();                    

и вот мои обратные вызовы:

public void onPrepared(MediaPlayer mp)
{
    mMediaPlayer.start();
}


public void surfaceCreated (SurfaceHolder holder)
{
    mMediaPlayer.setDisplay(holder);
}

Что расстраивает, так это то, что некоторая версия кода работала должным образом некоторое время назад, но теперь это не так.

9
задан rds 31 August 2014 в 10:53
поделиться