Нет видео при воспроизведении файла mp4 на Android - PullRequest
4 голосов
/ 08 июля 2011

Я пытаюсь отобразить файл mp4, добавленный в ресурсы Android в res/raw, примерно так:

public class Main extends RoboActivity
{
    @InjectView(R.id.introVideo)
    private VideoView introVideo;

    private MediaPlayer player;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);

        player = MediaPlayer.create(this, R.raw.intro_video2);
        SurfaceHolder holder = introVideo.getHolder();
        player.setDisplay(holder);
        player.start();

        player.setOnCompletionListener(new OnCompletionListener() {
            public void onCompletion(MediaPlayer mp)
            {
                startActivity(new Intent(Main.this, Story.class));
                releasePlayer();
            }
        });
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        releasePlayer();
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        releasePlayer();
    }

    private void releasePlayer()
    {
        if (player != null)
        {
            player.release();
        }
    }
}

но все, что я испытываю, это звук видео, экран остается пустым на моем Samsung GalaxyTab. Исходный файл представляет собой файл mp4 (H.264 AVC, 960x640, 30 кадров в секунду) и может прекрасно воспроизводиться с Quicktime и VLC.

Я пытался уменьшить и изменить размер исходного видео с помощью Handbrake, до 480x320 и 25 кадров в секунду, я пробовал несколько настроек в ручном тормозе, все безуспешно.

Что-то явно не так с моим кодом, или это формат видео или что-то еще - что я делаю не так?

Спасибо заранее, Томас.

Ответы [ 2 ]

3 голосов
/ 09 июля 2011

Я не смог заставить работать вышеуказанный способ, но обнаружил, что он работает, когда я использовал только предоставленную функциональность Android VideoView, например:

...
String videoUri = "android.resource://my.package.path/raw/intro_video";
introVideo.setVideoURI(Uri.parse(videoUri));
introVideo.start();
...
2 голосов
/ 08 июля 2011

Это вкладка 10.1v (3.0 или 3.1) или «старая» 2.2?

В соответствии с этим: http://developer.android.com/guide/appendix/media-formats.html вам кажется, что вам нужно 3.0+ для H.264 AVC. У меня были проблемы с H 264, даже с рекомендуемыми значениями, мне пришлось еще больше уменьшить звук. Может быть стоит посмотреть.

...