我有一个企业级分布式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