ios - replayKit RPSampleBufferType 没有视频
问题描述
我正在使用 ReplayKit 来录制屏幕。但是,我对视频缓冲区有一个非常奇怪的问题。当用户点击录制按钮时,会调用以下方法;
rpScreenRecorder.startCapture { (sampleBuffer, bufferType, error) in
if let error = error {
print(error.localizedDescription)
}
switch bufferType {
case .video:
print("video")
case .audioApp:
print("audioApp")
case .audioMic:
print("audioMic")
@unknown default:
print("default")
}
} completionHandler: { (error) in
if let error = error {
print(error.localizedDescription)
}
}
问题是,bufferType 没有 video。当我打印所有案例时,audioMic 和 audioApp 将永远返回,但 video 永远不会返回。
当我删除应用程序并再次安装时,我只能在第一次启动时轻松重复此问题。它在其他情况下按预期工作。
ps:在问这个问题之前我看了其他问题。他们都没有解决问题。
解决方案
经过几天几夜的解决这个问题,我终于想出了一个解决方案。
简单地说,原因是关于主窗口
主窗口对于回放套件很重要,因为它正在记录主窗口。
我正在使用不同的窗口来隐藏录制视频中的一些视图。我还更改了主窗口的 windowLevel。今天,我注意到删除与主窗口相关的所有调整都解决了这个问题。(其他窗口无效。)
推荐阅读
- python - 如何将具有相同内容的文件复制到不同的目录中
- python - 更改嵌套列表中元组的值
- go - 何时以及为什么使用 go 的 atomic 包比较 =,+
- java - java中的Hazelcast Sql查询
- javascript - no_image 的图像滑块无法正常工作
- mysql - 有问题的查询中的“AND title <> 'MySQL'”是否使用全文索引?
- sql - 消息 4861,第 16 层,状态 1,第 1 行,无法打开。操作系统错误代码3(系统找不到指定的路径。)
- python - 在不使用任何浏览器的情况下使用 Selenium
- android - 从firestore中查询具有多个值的字段中的特定值
- spring-boot - Spring 应用程序关闭时的 JMS 会话提交