我在我的应用程序中播放视频,我不想录制。 Netflix 应用程序所做的是,在录制屏幕时,他们会让音频捕获而不是视频。
任何人都知道如何实现此功能?
答案 0 :(得分:3)
您可以收听UIScreenCapturedDidChange
通知。
NotificationCenter.default.addObserver(self, selector: #selector(screenCaptureChanged), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
当iOS 11屏幕录制开始和结束时调用此方法。当用户录制屏幕时,您可以修改用户界面以阻止您不想录制的任何内容。
UIScreen
isCaptured
属性更改时会触发此通知。您也可以自己检查这个属性:
UIScreen.main.isCaptured
答案 1 :(得分:0)
我创建了一个黑色视图并将其添加到UIWindow的顶部。然后,在PlayerVideo的视图控制器中,创建观察者
NotificationCenter.default.addObserver(self, selector: #selector(screenCaptureChanged), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil)
然后,在screenCaptureChanged
:
(void) screenCaptureChanged {
if (@available(iOS 11.0, *)) {
BOOL isCaptured = [[UIScreen mainScreen] isCaptured];
if (isCaptured) {
self.blackView.hidden = false;
}
else {
self.blackView.hidden = true;
}
}
}
此解决方案将在用户录制时阻止PlayerVideo。但是,我想创建类似Netflix的东西。我想让用户在看电影时做他们想做的事。如果他们正在录制,他们可以继续观看没有黑视图的视频。但是,当他们停止录制时,视频将以黑色视图保存。我还在弄清楚Netflix是怎么做到的。
答案 2 :(得分:0)
Netflix解决方案与代码无关。它称为DRM或数字版权管理。它可以保护数据免遭任何盗版。包括屏幕记录/快照和下载。伙计,那很贵。
答案 3 :(得分:0)
我相信,Netflix可以利用Apple提供的“ FairPlay Streaming”技术。根据{{3}}
如果您的应用程序使用FairPlay Streaming(FPS),则您的视频内容 将不会自动被iOS 11屏幕录像捕获 功能或Mac OS上的QuickTime Player。您的应用程序的一部分 正在播放的内容将被涂黑。
注意:FairPlay流式传输只会为视频提供保护 您内容的一部分。为了防止捕获音频部分,您需要 仍应使用本文档中讨论的UIScreen API来 如果屏幕捕获开始,则向用户提供适当的消息。
可以从下面的链接深入了解FPS:
任何应用程序都可以结合FPS,以获得与Netflix相同的结果。