安卓 MediaMuxe 保存ts格式
时间: 2023-07-08 19:34:53 浏览: 274
在Android平台上,可以使用MediaMuxer类来保存TS格式的视频文件。下面是一个简单的示例代码:
```java
MediaMuxer muxer = new MediaMuxer(outputPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_2_TS);
int videoTrackIndex = muxer.addTrack(videoFormat);
int audioTrackIndex = muxer.addTrack(audioFormat);
muxer.start();
ByteBuffer buffer = ByteBuffer.allocate(bufferSize);
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
while (true) {
int trackIndex = mediaExtractor.readSampleData(buffer, 0);
if (trackIndex < 0) {
break;
}
bufferInfo.offset = 0;
bufferInfo.size = mediaExtractor.readSampleData(buffer, 0);
bufferInfo.presentationTimeUs = mediaExtractor.getSampleTime();
bufferInfo.flags = mediaExtractor.getSampleFlags();
muxer.writeSampleData(trackIndex, buffer, bufferInfo);
mediaExtractor.advance();
}
muxer.stop();
muxer.release();
```
其中,`outputPath`是输出文件路径,`videoFormat`和`audioFormat`分别是视频和音频的格式信息,`bufferSize`是缓冲区大小,`mediaExtractor`是用于读取视频文件的`MediaExtractor`对象。这段代码可以将视频文件中的音视频数据写入到一个TS格式的文件中。需要注意的是,在使用`MediaMuxer`写入数据时,需要分别按照轨道的顺序写入数据,即先写入视频数据,再写入音频数据。
阅读全文