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);
代码来自于网络,亲测有效!