在Android上播放mp4文件时无法显示视频

时间:2011-07-07 23:32:36

标签: android video mp4 galaxy-tab

我尝试渲染一个mp4文件,我在res/raw添加到我的android资源中,如下所示:

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

但我体验的只是视频的声音,屏幕在我的三星GalaxyTab上保持空白。源文件是mp4文件(H.264 AVC,960x640,30fps),可以使用Quicktime和VLC完美播放。

我尝试使用Handbrake缩小尺寸并调整原始视频的大小,降至480x320和25fps,我在手刹中尝试了几个设置,一切都没有成功。

我的代码有什么明显的错误,或者是视频格式还是别的什么 - 我做错了什么?

提前致谢, 托马斯。

2 个答案:

答案 0 :(得分:3)

我无法通过上述方式工作,但我发现当我单独使用Android VideoView提供的功能时,它可以正常工作:

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

答案 1 :(得分:2)

是10.1v标签(运行3.0或3.1)还是运行2.2的“旧”标签?

根据这个:http://developer.android.com/guide/appendix/media-formats.html你似乎需要3.0+用于H.264 AVC。 即使使用推荐值,我自己也遇到过H 264的麻烦,不得不进一步降低音量。可能值得一试。