4

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

公共类 Main 扩展 RoboActivity
{
    @InjectView(R.id.introVideo)
    私人 VideoView 介绍视频;

    私人 MediaPlayer 播放器;

    @覆盖
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        设置内容视图(R.layout.main);

        播放器 = MediaPlayer.create(this, R.raw.intro_video2);
        SurfaceHolder 支架 = introVideo.getHolder();
        player.setDisplay(holder);
        播放器.start();

        player.setOnCompletionListener(new OnCompletionListener() {
            公共无效 onCompletion(MediaPlayer mp)
            {
                startActivity(new Intent(Main.this, Story.class));
                释放播放器();
            }
        });
    }

    @覆盖
    受保护的无效 onPause()
    {
        超级.onPause();
        释放播放器();
    }

    @覆盖
    受保护的无效 onDestroy()
    {
        super.onDestroy();
        释放播放器();
    }

    私人无效释放播放器()
    {
        如果(玩家!= null)
        {
            播放器.release();
        }
    }
}

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

我尝试使用 Handbrake 缩小和调整原始视频的大小,降低到 480x320 和 25fps,我在 handbrake 中尝试了几种设置,但一切都没有成功。

我的代码有什么明显的问题,还是视频格式或其他什么 - 我做错了什么?

在此先感谢,托马斯。

4

2 回答 2

4

我无法以上述方式工作,但我发现当我仅使用 Android 提供的功能时它可以工作,VideoView如下所示:

...
String videoUri = "android.resource://my.package.path/raw/intro_video";
introVideo.setVideoURI(Uri.parse(videoUri));
introVideo.start();
...
于 2011-07-08T21:29:23.387 回答
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 的问题,不得不进一步缩小声音。可能值得关注。

于 2011-07-07T23:43:16.863 回答