Skip to content

录制新增可选的设备音频第二音轨(麦克风仍为主音轨) #20

Description

@sunimp

取代 #17#17 把主/次音轨弄反了(主张设备音频作主轨),本 issue 为方向修正后的版本。

定位

本工具录制的核心音源是麦克风(讲解 / 口述 / QA 旁白),这也是当前 RecordingService(AVAudioRecorder + 麦克风)已实现并随 PR #16 发布的行为,不改

本 issue 只做一件增量的事:在麦克风主音轨之外,新增一条可选的「设备音频」第二音轨(App 音效 / 视频 / 通话声),默认关闭,由用户在偏好里单独开启。用于需要同时留存设备原声的场景。

  • 麦克风:主音轨,默认开,核心。
  • 设备音频:可选第二音轨,默认关。

现状:设备音频已在管线中,仅用于播放未落盘

  • iOS(IOSDeviceSource.handleAudioSampleBuffer):已拿到设备音频 CMSampleBuffer,现仅喂 AudioPlayer 播放。CMSampleBufferAVAssetWriter 标准输入,接 writer 即可落盘。
  • Android(ScrcpyDeviceSource opusDecoder.onDecodedAudio):已拿到解码后 PCM,现仅推播放器。同一路 PCM 分流做 AAC 编码即可写文件。

地基(PR #16 / #10 已就绪)

  • 音频可选化、RecordingSession.audioURL?ReplayClock 抽象(无音频用 VirtualReplayClock)。
  • 偏好已有「投屏录制」分页与麦克风开关,可平行加"录制设备音频"开关。

待确认 / 待验证

  1. 多音轨落盘形态:麦克风与设备音频各存一个文件,还是合成多轨容器。回放端需能区分/选择。
  2. iOS CMSampleBuffer 音频是否始终可得(ReplayKit / CoreMediaIO 采集路径与授权),需实测。
  3. 多设备同时录:设备音频每设备一条(契合现有 iOS-xxx/Android-xxx/ 目录)还是混一路。
  4. 回放端多音轨的 UI 与 ReplayClock 适配(音轨选择 / 混音)。
  5. 外放回声:设备音频经扬声器外放时,麦克风会录进外放声。是否需提示用户用耳机,或仅在开启设备音轨时告警。

相关

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions