什么video格式将在所有Android设备上播放?

Android可以播放各种video格式 ,但我需要选择一种适用于所有设备的格式。

所有Android 2.3设备都支持完全相同的格式吗? 即如果格式将在模拟器中播放,这是否意味着它也将在所有硬件上播放? 或者不同的设备支持不同的格式,具体取决于它们具有哪些解码芯片

如果它们完全相同,那么显然最好的格式是H.264,具有高比特率和分辨率。 如果没有,那么在90%的设备上播放的最佳编解码器/比特率/分辨率是多少? 谷歌是否提供了一些查询设备videofunction和选择合适格式的方法?

Solutions Collecting From Web of "什么video格式将在所有Android设备上播放?"

仿真器对编解码器的测试很差,并且在一些领域中不起作用。 是的设备制造商可能会为他们的Android构建添加额外的编解码器。 但是,您可能需要查看Android兼容性并阅读兼容性定义文档,了解制造商在设备上获取Android Market所需的详细信息。 不幸的是,快速查看它并没有说明最低比特率,所以根据您愿意支持的Android版本的年龄可能存在问题。

在很多设备上测试后(对于一个非常受欢迎的应用程序的video闪屏)。 我的建议是:

video codec : H.264 file format: .mp4 video bitrate: 256kbps video frame/second: 24 

注意:我的video没有声音!!

但即使有了这个建议,有些video也无法解决问题。 所以我创建了一个棘手的代码:我将所有video的所有video嵌入到我的raw文件夹中,在我的VideoView添加了一个setOnErrorListener ,每次发生错误时我都尝试启动一个较小的video。

这是我的原始文件夹:

 raw/ splashmdpi.mp4 splashhdpi.mp4 splashxhdpi.mp4 

这是我的java代码:

 int densityoffset = 0; VideoView video = new VideoView(this); video.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { video.start(); } } video.setOnErrorListener(new OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { densityoffset++; String suff = getDensitySuffix(getContext(), densityoffset); video.setVideoPath("android.resource://com.example.packagename/raw/splash"+suff); if(offset>5) return false; else return true; } }); String suff = getDensitySuffix(this,offset); video.setVideoPath("android.resource://com.example.packagename/raw/splash"+suff); private String suffix[]={"ldpi","mdpi","hdpi","xhdpi"}; /** *Return the suffix concerning your device less offset value **/ private String getDensitySuffix(Context ctx, int offset){ int dens = 2; int d = getContext().getResources().getDisplayMetrics().densityDpi if(d==DisplayMetrics.DENSITY_LOW) dens = 0; else if(d==DisplayMetrics.DENSITY_MEDIUM) dens = 1; else if(d==DisplayMetrics.DENSITY_HIGH)) dens = 2; else if(d==DisplayMetrics.DENSITY_XHIGH)) dens = 3; return suffix[Math.max(0, dens-offset)]; } 

http://developer.android.com/guide/appendix/media-formats.html

我相信您可以使用MediaPlayer类来查看特定function。