开发者

No video display when playing an mp4 file on Android

I try to render an mp4 file I added to my android ressources in re开发者_如何学运维s/raw like so:

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();
        }
    }
}

but all I experience is the sound of the video, the screen keeps blank on my Samsung GalaxyTab. The source file is an mp4 file (H.264 AVC, 960x640, 30fps) and can be played perfectly fine with Quicktime and VLC.

I tried to downscale and resize the original video with Handbrake, down to 480x320 and 25fps, I tried several settings in handbrake, everything without success.

Is there anything obviously wrong with my code or is it the video format or something else - what am I doing wrong?

Thanks in advance, Thomas.


I couldn't get the above way to work, but I found that it worked when I solely used the provided functionality of Android's VideoView like this:

...
String videoUri = "android.resource://my.package.path/raw/intro_video";
introVideo.setVideoURI(Uri.parse(videoUri));
introVideo.start();
...


Is it the 10.1v tab (running 3.0 or 3.1) or an "old" one running 2.2?

According to this: http://developer.android.com/guide/appendix/media-formats.html you seem to need 3.0+ for H.264 AVC. I have had troubles with H 264 myself even with recommended values, had to downscale the sound even more. Might be worth looking in to.


Give MediaPlayer a PreparedListener. And call MediaPlayer.start() in PreparedListener.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜