[英]What video format will play on all Android devices?
Android可以播放各种视频格式 ,但我需要选择一种适用于所有设备的格式。
所有Android 2.3设备都支持完全相同的格式吗? 即如果格式将在模拟器中播放,这是否意味着它也将在所有硬件上播放? 或者不同的设备支持不同的格式,具体取决于它们具有哪些解码芯片
如果它们完全相同,那么显然最好的格式是高比特率和分辨率的H.264。 如果没有,那么90%的设备上最好的编解码器/比特率/分辨率是多少? 谷歌是否提供了一些查询设备视频功能和选择合适格式的方法?
在很多设备上测试后(对于一个非常受欢迎的应用程序的视频闪屏)。 我的建议是:
video codec : H.264
file format: .mp4
video bitrate: 256kbps
video frame/second: 24
注意:我的视频没有声音!!
但即使有了这个建议,一些视频也无法解决问题。 所以我创建了一个棘手的代码:我将所有视频的所有视频嵌入到我的raw
文件夹中,在我的VideoView
添加了一个setOnErrorListener
,并且每次发生错误时我都尝试启动一个较小的视频。
这是我的原始文件夹:
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)];
}
仿真器对编解码器的测试很差,并且在一些领域不起作用。 是的,设备制造商可能会为其Android版本添加额外的编解码器。 但是,您可能需要查看Android兼容性并阅读兼容性定义文档,了解制造商在设备上获取Android Market所需的更多详细信息。 不幸的是,快速查看它并没有说明最低比特率,所以根据您愿意支持的Android版本的年龄可能存在问题。
http://developer.android.com/guide/appendix/media-formats.html
我相信您可以使用MediaPlayer类来查看特定功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.