以与 AVAudioSession 的采样率不同的频率捕获的 AVCaptureSession 音频样本

布罗根麦克帕特兰

我正在使用 AVFoundation 捕获会话通过 AVCaptureAudioDataOutput 输出音频缓冲区。捕获会话使用默认应用程序音频会话。(即 captureSession.usesApplicationAudioSession = true)。我不会以任何方式更改音频会话。

奇怪的行为是捕获会话返回以与默认音频会话的采样率不同的频率捕获的音频缓冲区。

具体来说:

print(AVAudioSession.sharedInstance().sampleRate) \\ 48000

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
        if connection.audioChannels.first != nil {
            print(sampleBuffer.presentationTimeStamp) \\ CMTime(value: 2199812320, timescale: 44100, flags: __C.CMTimeFlags(rawValue: 3), epoch: 0)
            delegate?.captureOutput(sampleBuffer: sampleBuffer, mediaType: .audio)
        } 
    }

我的预期行为是样本缓冲区的时间刻度也是 48000。

对于一些额外的信息,如果我确实更改了默认音频会话,例如,将首选采样率更改为 48000,则示例缓冲区的时间刻度将按预期更改为 48000。这是一个错误还是我误解了什么?

有节奏的拳手

automaticallyConfiguresApplicationAudioSession在开始捕获会话之前,您需要将捕获会话设置为 false 并进行自己的音频会话配置。

像这样:

// use audioSession.setPreferredSampleRate() to request desired sample rate
captureSession.automaticallyConfiguresApplicationAudioSession = false
try! AVAudioSession.sharedInstance().setCategory(.playAndRecord) // or just record
try! AVAudioSession.sharedInstance().setActive(true) // worked without this, but feels wrong

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

OSX上的AVAudioSession替代品以获得音频驱动程序采样率

macOS / swift通过AVCaptureSession捕获音频

音频的采样率和样本大小是什么意思?

Python Wave音频采样率

从音频捕获不同的频率?

Pulseaudio检测到错误的采样率。强制脉冲音频采样率

iOS 14 AVCaptureSession 通过视频录制捕获立体声音频

使用 AVAudioSession 时背景音频安静

当采样率很高时,非实时操作系统如何捕获音频而不会丢失信号?

AVCaptureDevice,以特定的采样频率捕获WAV音频

如何使用avprobe / ffprobe检测音频采样率?

如何获得Windows音频播放的当前采样率?

使用python检查音频的采样率

IP摄像机的音频采样率和FFT

使用MediaCodec确定视频帧率和音频采样率

在 AVCaptureSession 中使用蓝牙设备录制音频

音频未记录在AVCaptureSession中

将音频样本的字节数组更改为频率

在OSX上录制音频(AVAudioSession不可用)

AVAudioSession无法识别来自蓝牙设备的音频

iOS AVAudioSession,如何访问AVAudioRecorder音频电平表

Linux:如何将多个 FLAC 音频文件合并为 1 个具有不同采样率但不改变音高的文件

AVCaptureSession addInput导致背景音频出现故障

AVCaptureSession音频不适用于长视频

捕获的照片使用AVCaptureSession sessionPreset = AVCaptureSessionPresetPhoto拉伸

如何合并通过avcapturesession捕获的视频?

ffmpeg 不从连接的 VOB 文件中复制音频。说未设置采样率

确定JavaScript中大型音频文件的采样率?

iPhone Objective C蓝牙免提音频增加8000采样率