java校验mpeg_Java MimeTypes.AUDIO_MPEG属性代码示例

该代码段展示了如何使用Java进行MPEG音频校验,通过判断不同的codecId来确定MIME类型,如VIDEO_VP8、VIDEO_VP9、AUDIO_AAC等,并创建对应的MediaFormat。特别地,当codecId为CODEC_ID_MP3时,MIME类型被设置为MimeTypes.AUDIO_MPEG。
摘要由CSDN通过智能技术生成

/** Returns a {@link MediaFormat} built using the information in this instance. */

public MediaFormat getMediaFormat(long durationUs) throws ParserException {

String mimeType;

List initializationData = null;

int maxInputSize = UNKNOWN;

switch (codecId) {

case CODEC_ID_VP8:

mimeType = MimeTypes.VIDEO_VP8;

break;

case CODEC_ID_VP9:

mimeType = MimeTypes.VIDEO_VP9;

break;

case CODEC_ID_MPEG4_SP:

case CODEC_ID_MPEG4_ASP:

case CODEC_ID_MPEG4_AP:

mimeType = MimeTypes.VIDEO_MP4V;

initializationData =

codecPrivate == null ? null : Collections.singletonList(codecPrivate);

break;

case CODEC_ID_H264:

mimeType = MimeTypes.VIDEO_H264;

Pair, Integer> h264Data = parseAvcCodecPrivate(

new ParsableByteArray(codecPrivate));

initializationData = h264Data.first;

nalUnitLengthFieldLength = h264Data.second;

break;

case CODEC_ID_H265:

mimeType = MimeTypes.VIDEO_H265;

Pair, Integer> hevcData = parseHevcCodecPrivate(

new ParsableByteArray(codecPrivate));

initializationData = hevcData.first;

nalUnitLengthFieldLength = hevcData.second;

break;

case CODEC_ID_VORBIS:

mimeType = MimeTypes.AUDIO_VORBIS;

maxInputSize = VORBIS_MAX_INPUT_SIZE;

initializationData = parseVorbisCodecPrivate(codecPrivate);

break;

case CODEC_ID_OPUS:

mimeType = MimeTypes.AUDIO_OPUS;

maxInputSize = OPUS_MAX_INPUT_SIZE;

initializationData = new ArrayList<>(3);

initializationData.add(codecPrivate);

initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(codecDelayNs).array());

initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(seekPreRollNs).array());

break;

case CODEC_ID_AAC:

mimeType = MimeTypes.AUDIO_AAC;

initializationData = Collections.singletonList(codecPrivate);

break;

case CODEC_ID_MP3:

maxInputSize = MP3_MAX_INPUT_SIZE;

mimeType = MimeTypes.AUDIO_MPEG;

break;

case CODEC_ID_AC3:

mimeType = MimeTypes.AUDIO_AC3;

break;

default:

throw new ParserException("Unrecognized codec identifier.");

}

if (MimeTypes.isAudio(mimeType)) {

return MediaFormat.createAudioFormat(mimeType, maxInputSize, durationUs, channelCount,

sampleRate, initializationData);

} else if (MimeTypes.isVideo(mimeType)) {

return MediaFormat.createVideoFormat(mimeType, maxInputSize, durationUs, pixelWidth,

pixelHeight, initializationData);

} else {

throw new ParserException("Unexpected MIME type.");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值