macos - 基于 VLCKit 的应用程序阻止屏幕保护程序

标签 macos cocoa vlc libvlc nsnotifications

我最近基于 VLCKit 构建了一个简单的 Swift macOS 应用程序;其目的主要是通过 RTSP 在屏幕上始终可见的窗口中播放 IP 摄像机流(即监控门)。

考虑到应用程序的用途,我会一直保持流媒体播放,除非用户在 Dock 中将其最小化(这意味着我只在 viewDidDisappear 中调用 mediaPlayer?.stop)。

该应用程序运行得很好,但我最近发现,除非将其最小化(因此,播放已经停止),否则某些东西会阻止屏幕保护程序运行

我尝试订阅所有 NSNotificationCenter com.apple.screensaver.* 通知,并且我意识到,当播放运行时,它们都不会被触发; 如果我最小化应用程序并停止播放,一切都会正常运行(屏幕保护程序在定期延迟后启动,所有 com.apple.screensaver 通知都会被正确检测到)。

我还尝试运行 pmset -g 来检查我的应用是否被列为阻止 sleep ,但事实并非如此。

我的印象是,我的 VLCMediaPlayer 实例默认会阻止屏幕保护程序启动,但我可能是错的。

我知道在 VLC Mac 应用程序中可以通过高级设置手动阻止屏幕保护程序,但我似乎无法找到在代码中设置的参数来告诉 VLCKit 停止阻止屏幕保护程序。

据您所知,默认情况下 VLCKit 会阻止屏幕保护程序运行?有没有办法改变这种行为?

如果您需要更多详细信息,请告诉我...提前致谢!

最佳答案

在 VLC 中,有名为“--disable-screensaver”和“--no-disable-screensaver”的选项。默认情况下,使用“--disable-screensaver”。

如果您想启用屏幕保护程序,只需执行以下操作:

NSArray *options = @[@"--no-disable-screensaver"];
_mediaPlayer1 = [[VLCMediaPlayer alloc] initWithOptions:options];

您的 VLC 库中还有哪些可用选项?将选项“--help”传递给您的 VLC,它将列出所有可用选项。

完整的选项列表是什么? https://wiki.videolan.org/VLC_command-line_help/

enter image description here

关于macos - 基于 VLCKit 的应用程序阻止屏幕保护程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49494426/

相关文章:

swift - macOS 中的 NSUserNotificationCenter

python 查找 mac os 内部版本号

c# - GTK 中的 LibVLC.NET#

xcode - 在 OS X 10.10 (Yosemite) 下编译 VLCKit

c++ - Qt 的默认线程

MacOS 和 JSVC : SCARD_E_NO_SERVICE: The Smart card resource manager is not running

objective-c - 应用程序访问的文件的名称

cocoa - 在 NSTextView 中显示隐藏字符

cocoa - 当文档是 txt 文件时,保存文档的首选项

python - 通过Python在VLC中打开视频文件