【问题标题】:Android: Record raw audio and record video at the same timeAndroid:同时录制原始音频和录制视频
【发布时间】:2016-10-11 15:11:49
【问题描述】:

我开发了一个基于声音和视频记录的 Android 应用。我想在预览和捕捉视频和声音的同时实时播放耳机中的麦克风音频。

我现在拥有的,一个人工作正常:

1) 使用 Superpowered 库来录制音频并实时播放(在预览和录制期间)。在幕后,它通过将缓冲区推送到输出(耳机)直接使用 C++ 完成 AudioRecord 的工作。目标是实时对原始声音应用音频效果。

2) 使用 mediaRecorder 捕捉视频

当音频播放运行时,我尝试启动视频记录,它开始崩溃:

E/MediaRecorder: start failed: -2147483648

我想我不能同时启动两个录制过程。我认为使用 AudioRecord 或 Superpowered 库是处理原始音频的好方法,但我不知道如何在不与当前音频录制冲突的情况下录制视频。

那么有没有办法实现我的功能?

(minSdk 16)

【问题讨论】:

  • 我设法同时使用没有 audioSource 的 MediaRecorder 录制视频(并避免没有 MediaMuxer 作为 api16 的 MediaCodec 的复杂性)和我的 Superpowered 音频库。之后,我使用 ffmpeg 合并我的两个文件。

标签: android audio-recording video-recording


【解决方案1】:

根据bigflake

MediaCodec 类首先在 Android 4.1 (API 16) 中可用。添加它是为了允许直接访问设备上的媒体编解码器。

在 Android 4.3 (API 18) 中,MediaCodec 被扩展为包含一种通过 Surface 提供输入的方法(通过 createInputSurface 方法)。这允许输入来自相机预览或 OpenGL ES 渲染。

因此,如果可能,请考虑将 MinSDK 增加到 18 并使用 AudioVideoRecordingSampleHWEncoderExperiments 作为示例。

【讨论】:

  • 我设法使用 MediaCodec 在surfaceView 上预览相机,这是一个好的开始。对于记录,我肯定会同时写入一个文件。通常我的音频部分可以同时录制。
  • 音视频有延迟
  • 不是最好的答案,但可以接受的答案:使用 mediaCodec 和 API 18 工作得很好。但我需要使用 API 16。正如我在之前的评论中所说,我从我的录音机中禁用了 audioSource,减少音频和视频计算之间的延迟以及与 ffmpeg 的良好合并。干杯,伙计们。
猜你喜欢
  • 2014-08-02
  • 2020-10-04
  • 2017-10-17
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多