使用 android.media.MediaMetadataRetriever 时遇到一个奇怪的问题。它无法从具有 Android 版本 4.0.4 和 4.1.2 的三星手机上的视频文件中提取视频宽度。调用 metaRetriever.extractMetadata() 似乎返回 null 或空字符串,因为我的应用程序的用户正在报告带有错误代码 ASVF_3 的 VideoSetupException。
它适用于具有上述 Android 版本和所有其他 Android 版本和设备的 Google 模拟器。
知道可能是什么原因造成的吗?在我看来,三星分发的 Android 版本中存在一个错误。
非常感谢。
M。
private void setVideoViewDimensionToMatchVideoMetadata(VideoView videoView, Uri uri) {
String metadataVideoWidth;
String metadataVideoHeight;
try {
final MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(getActivity(), uri);
metadataVideoWidth = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
metadataVideoHeight = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
metaRetriever.release();
} catch (NullPointerException | IllegalArgumentException ex) {
throw new VideoSetupException(getActivity().getString(R.string.ASVF_2)
+ StringUtils.SPACE + ex.getLocalizedMessage(), ex);
}
if (StringUtils.isEmpty(metadataVideoWidth)) {
throw new VideoSetupException(getActivity().getString(R.string.ASVF_3));
}