首页 文章

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

提问于
浏览
3

我有一个应用程序(企业,分布式OTA),其中包括记录视频剪辑 . 突然之间,我们开始获得缺少音频的视频上传,现在这个问题似乎完全可以重现 . 我一直在使用PBJVision库,它看起来效果很好,但我也用SwiftyCam(另一个基于AVFoundation的库)测试了它,结果相同 . 目前还不清楚这是什么时候引入的,但我检查了以下内容:

  • 确保在目标.plist中设置了 NSMicrophoneUsageDescription

  • 确保在系统设置中将摄像头和麦克风权限显示为已授予权限

  • 尝试在设置中禁用麦克风权限(应用正确提示用户重新启用权限)

  • 在回归的情况下尝试早期版本的视频捕获库

  • 尝试不同的视频捕获库

  • 为PBJVision / SwiftyCamera明确设置音频启用和比特率,并确保会话至少报告它在日志中有音频(即,库和AVFoundation认为正在处理's an input set up, with an input stream that')

  • 使用系统相机拍摄视频,然后通过应用程序上传 - 在这种情况下,音频确实有效(硬件没有问题)

  • 重置设备上的所有内容和权限,以确保没有某种缓存权限挂出

  • 确保音量未静音

保存到相机胶卷的副本也是静音的,因此在上传视频时不会发生这种情况 . 我也开始使用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 回答

  • 1

    事实证明,这实际上是由于在开始视频录制后使用另一个库播放声音 . 这显然是抢占录音的音频通道,因为它最终是空的(见Record Audio/Video with AVCaptureSession and Playback Audio simultaneously?) . 在开始视频录制之前或之后是否开始其他声音播放似乎无关紧要 . 这是一个很好的警告案例,围绕使用多个都接触相同系统API的库 - 在某些情况下,像这样,它们以不合需要的方式进行交互 .

    在这种情况下,解决方案是确保两个源不使用相同的AVAudioSessionCategory,因此它们不会发生冲突 .

相关问题