jimu-decompiled/sources/com/hw/videoprocessor/VideoUtil.java
2025-05-13 19:24:51 +02:00

84 lines
2.9 KiB
Java

package com.hw.videoprocessor;
import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaExtractor;
import android.media.MediaFormat;
import com.baidu.cloud.media.player.misc.IMediaFormat;
import com.hw.videoprocessor.util.CL;
import java.io.IOException;
/* loaded from: classes.dex */
public class VideoUtil {
public static int a(MediaExtractor mediaExtractor, boolean z) {
int trackCount = mediaExtractor.getTrackCount();
for (int i = 0; i < trackCount; i++) {
String string = mediaExtractor.getTrackFormat(i).getString(IMediaFormat.KEY_MIME);
if (z) {
if (string.startsWith("audio/")) {
return i;
}
} else if (string.startsWith("video/")) {
return i;
}
}
return -5;
}
public static int b(String str) {
MediaExtractor mediaExtractor = new MediaExtractor();
try {
mediaExtractor.setDataSource(str);
MediaFormat trackFormat = mediaExtractor.getTrackFormat(a(mediaExtractor, false));
return trackFormat.containsKey("frame-rate") ? trackFormat.getInteger("frame-rate") : -1;
} catch (IOException e) {
CL.a(e);
return -1;
} finally {
mediaExtractor.release();
}
}
public static float a(String str) throws IOException {
MediaExtractor mediaExtractor = new MediaExtractor();
mediaExtractor.setDataSource(str);
int i = 0;
mediaExtractor.selectTrack(a(mediaExtractor, false));
long j = 0;
while (true) {
long sampleTime = mediaExtractor.getSampleTime();
if (sampleTime < 0) {
mediaExtractor.release();
return i / ((j / 1000.0f) / 1000.0f);
}
i++;
mediaExtractor.advance();
j = sampleTime;
}
}
public static boolean a(MediaCodec mediaCodec, String str, MediaFormat mediaFormat, int i, int i2) {
MediaCodecInfo.CodecProfileLevel[] codecProfileLevelArr = mediaCodec.getCodecInfo().getCapabilitiesForType(str).profileLevels;
if (codecProfileLevelArr == null) {
return false;
}
for (MediaCodecInfo.CodecProfileLevel codecProfileLevel : codecProfileLevelArr) {
if (codecProfileLevel.profile == i && codecProfileLevel.level == i2) {
mediaFormat.setInteger("profile", i);
mediaFormat.setInteger("level", i2);
return true;
}
}
return false;
}
public static int a(MediaCodec mediaCodec, String str) {
try {
return mediaCodec.getCodecInfo().getCapabilitiesForType(str).getVideoCapabilities().getBitrateRange().getUpper().intValue();
} catch (Exception e) {
CL.a(e);
return -1;
}
}
}