1

使用 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));
    }
4

0 回答 0