一、MediaExtractor介绍
MediaExtractor是Android系统中的媒体解封装库,它可以从视频或音频文件中提取媒体轨道的数据,例如视频、音频、字幕等,并将其分离出来,提供给应用程序进行解码、处理和播放。需要注意的是,MediaExtractor只能解封装媒体文件中的音视频等媒体轨道,而不能解析整个媒体文件的结构。如果需要解析整个媒体文件的结构,需要使用其他库或框架。MediaExtractor支持的格式包括但不限于MP4、3GP、MKV、FLV等。
以下是一个简单的使用MediaExtractor提取音频数据的例子:
MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource(filePath);
int audioTrackIndex = -1;
for (int i = 0; i < extractor.getTrackCount(); i++) {
MediaFormat format = extractor.getTrackFormat(i);
String mime = format.getString(MediaFormat.KEY_MIME);
if (mime.startsWith("audio/")) {
audioTrackIndex = i;
break;
}
}
if (audioTrackIndex >= 0) {
extractor.selectTrack(audioTrackIndex);
ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
while (extractor.readSampleData(buffer, 0) >&#