Android 获取视频宽/高/时间(工具类)

1,867 阅读1分钟
public class VideoUtils {
    private final VideoInfoClick mVideoInfo;

    public VideoUtils(VideoInfoClick mVideoInfo) {
        this.mVideoInfo = mVideoInfo;
    }

    //获取视频的宽高,和时长
    public void getVideoWidthAndHeightAndVideoTimes(String videoUrl) {
        final MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(videoUrl, new HashMap<>());
        new Thread() {
            @Override
            public void run() {
                float videoTimes = 0;
                float videoWidth = 0;
                float videoHeight = 0;
                super.run();
                try {
                    videoTimes = Float.parseFloat(mediaMetadataRetriever.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION));
                    videoWidth = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
                    videoHeight = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
                } catch (Exception e) {
                    videoTimes = 0;
                    videoWidth = 0;
                    videoHeight = 0;
                } finally {
                    Log.i("szj", "视频的宽:  " + videoWidth);
                    Log.i("szj", "视频的高:  " + videoHeight);
                    Log.i("szj", "视频的长度:  " + videoTimes);
                    mediaMetadataRetriever.release();
                    mVideoInfo.dealWithVideoInformation(videoWidth, videoHeight, videoTimes);
                }
            }
        }.start();
    }

    public interface VideoInfoClick {
        void dealWithVideoInformation(float w, float h, float vt);
    }
}

使用:


VideoUtils videoUtils = new VideoUtils((width, height, rotation) -> {
    runOnUiThread(() -> {
        //width 视频宽
        //height 视频高
        //rotaion 视频长度
    });
}

videoUtils.getVideoWidthAndHeightAndVideoTimes(url);

代码来自于网络,亲测有效!