android - 如何使用 MediaCodec 和 MediaMuxer 录制视频和音频

标签 android audio video android-mediacodec mediamuxer

我能够在 MediaCodec 和 MediaMuxer 的帮助下录制(编码)视频。接下来,我需要在 MediaCodec 和 MediaMuxer 的帮助下处理音频部分并将音频与视频混合。

我面临两个问题:

  1. 如何使用 MediaCodec 对音频进行编码。我需要编码音频和 单独线程中的视频?

  2. 如何将音频和视频数据传递给 MediaMuxer(如 writeSampleData() 方法一次只接受一种类型的数据)?

我提到了 MediaMuxerTest但它正在使用 MediaExtractor。我需要使用 MediaCodec,因为视频编码是使用 MediaCodec 完成的。如果我错了,请纠正我。

任何建议或忠告都将非常有帮助,因为没有适用于这些新 API 的适当文档。

注意:

  1. 我的应用面向 API 18+ (Android 4.3+)。
  2. 我提到了Grafika用于视频编码。

最佳答案

  1. 不,您不一定需要单独的音频线程,只需使用两个单独的 MediaCodec 实例即可。

  2. writeSampleData的第一个参数是trackIndex,它允许您指定每个数据包对应的轨道。 (通过运行 addTrack 两次,每个轨道一次,您将获得两个单独的轨道 ID。)

关于android - 如何使用 MediaCodec 和 MediaMuxer 录制视频和音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628677/

相关文章:

java - 如何在sqlite android中通过循环限制添加的数据

javascript - 添加带有爆米花 TTML 字幕的视频元素

javascript - Javascript如何从CLI发出噪音

android - Videoportal PWA(Progressive Web App)视频离线功能?

android - 摩托罗拉 2.3.3 中的 SD 卡无法播放视频

android - react native : How to get the list of apps installed in mobile phone in react native

java - 如何将 Zxing 库包含到 android 项目中?

java - 我是否正确访问文件?

python - 一旦音量低于python-sounddevice的阈值,停止记录

apache-flex - 使用byteArray和Adobe Air或Flex录制x秒的静音音频文件