视频不再录制音频(PBJVision/AVFoundation)

3
我有一个企业级分布式OTA应用程序,除了其他功能外,还记录视频剪辑。突然间,我们开始收到缺少音频的视频上传,现在这个问题似乎已经完全可以重现。我一直在使用PBJVision库,它似乎工作得很好,但我也使用了SwiftyCam(另一个基于AVFoundation的库)进行了测试,并获得了相同的结果。目前尚不清楚是什么时候引入的,但我已经检查了以下内容:
  • 确保在目标.plist中设置了NSMicrophoneUsageDescription
  • 确保系统设置中显示已授予相机和麦克风权限
  • 尝试在设置中禁用麦克风权限(应用程序会正确提示用户重新启用权限)
  • 尝试早期版本的视频捕获库以防止出现回归
  • 尝试不同的视频捕获库
  • 明确设置PBJVision/SwiftyCamera的音频启用和比特率,并确保会话至少在日志中报告具有音频(即,库和AVFoundation认为已经设置了输入,正在处理输入流)
  • 使用系统相机拍摄视频,并通过应用程序上传 - 在这种情况下,音频是有效的(这不是硬件问题)
  • 在设备上重置所有内容和权限,以确保没有某种缓存的权限挂起
  • 确保音量未被静音

保存到相机胶卷的副本也是无声的,因此当视频上传时并不会发生这种情况。我还开始使用AVFoundation进行录制,但如果会产生相同的结果,我就不想浪费时间了。是什么导致特定的应用程序无法记录视频的音频?我查看了相关问题,但没有提供的解决方案可以解决我在这里遇到的问题。

编辑:

这里是启动、录制和停止PBJVision会话时出现的日志:

[5411:1305718] VISION: camera setup
[5411:1305718] VISION: switchDevice 1 switchMode 1
[5411:1305718] VISION: capture session setup
[5411:1305291] VISION: session was started
[5411:1305718] VISION: capture session running
[5411:1305291] VISION: starting video capture
[5411:1305718] VISION: ready for video (1)
[5411:1305718] VISION: audio stream setup, channels (1) sampleRate (44100.000000)
[5411:1305718] VISION: ready for audio (1)
[5411:1305291] VISION: ending video capture
[5411:1305963] VISION: capture session stopped
[5411:1305963] VISION: session was stopped
[5411:1305291] CMTimeMakeWithSeconds(8.396 seconds, timescale 24): warning: error of -0.021 introduced due to very low timescale
1个回答

2
事实证明,这实际上是由于在开始视频录制后使用另一个库播放声音所致。显然,这会抢占音频通道进行录制,因此最终录制的为空 (参见Record Audio/Video with AVCaptureSession and Playback Audio simultaneously?)。似乎无论其他声音播放是在开始录像之前还是之后启动,都不会影响结果。这是有关使用多个涉及相同系统API的库的良好警告案例-在某些情况下,例如本例,它们以不希望的方式相互作用。
在这种情况下,解决方案是确保两个源没有使用相同的AVAudioSessionCategory ,以避免冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接