gpt4 book ai didi

android - 将第二个音轨添加到 MediaMuxer

转载 作者:行者123 更新时间:2023-12-02 23:42:43 27 4
gpt4 key购买 nike

我有一个视频文件 .mp4 - 只有视频轨道。

我正在使用 MediaExtractorMediaMuxer 添加音频文件。这很好用。

我想在处理后的文件上添加另一个音轨。

所以我再次使用 MediaExtractorMediaMuxer 来复制文件,(创建视频和音频轨道,读取 [extractor] 和写入 [muxer]) .此外,我正在尝试将第二条音轨添加到多路复用器。但这会引发错误 Failed to add the track to the muxer

在此link我们可以看到 muxer 不支持多轨。

代码来自链接:

// Throws exception b/c 2 audio tracks were added.
muxer = new MediaMuxer(outputFile, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
muxer.addTrack(MediaFormat.createAudioFormat("audio/mp4a-latm", 48000, 1));
try {
muxer.addTrack(MediaFormat.createAudioFormat("audio/mp4a-latm", 48000, 1));
fail("should throw IllegalStateException.");
} catch (IllegalStateException e) {
// expected
}

还有其他方法吗?优雅的方式?

顺便说一句,我正在努力避免使用第 3 方——比如 ffmpeg 之类的......但如果这是我唯一的解决方案......

--编辑--

我的代码的相关部分

MediaMuxer muxer = new MediaMuxer(outputFile, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);

MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource(videoAndAudioFile);

for (int currTrackIdx = 0; currTrackIdx < extractor.getTrackCount(); currTrackIdx++) {
MediaFormat trackFormat = extractor.getTrackFormat(currTrackIdx);
tracksIdx.add(muxer.addTrack(trackFormat));
}

MediaExtractor extractor2 = new MediaExtractor();
extractor2.setDataSource(secondAudioFile);
MediaFormat trackFormat = extractor2.getTrackFormat(0);
tracksIdx.add(muxer.addTrack(trackFormat)); // Crashes here

最佳答案

对于到达这里的人,我在 link 找到了这个官方文档. Muxing Multiple Video/Audio Tracks 似乎在旧 API 版本中不受支持,甚至在最新版本中受到限制。

关于android - 将第二个音轨添加到 MediaMuxer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com