我尝试渲染一个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,我在手刹中尝试了几个设置,一切都没有成功。
我的代码有什么明显的错误,或者是视频格式还是别的什么 - 我做错了什么?
提前致谢, 托马斯。
答案 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的麻烦,不得不进一步降低音量。可能值得一试。