我正在尝试建立一个系统,能够将局域网上的其他几台PC的屏幕截图广播.
到目前为止,我设法使用rtmp模块在Raspberry Pi上安装nginx,我可以通过OBS使用Raspberry作为RTMP服务器进行流式传输.我使用VLC观看流.
这是问题所在.进行广播的主要电脑将显示倒计时和潜在摄像机馈送的计时器,因此理想的是将广播延迟保持在最低(实时?).我目前在屏幕上发生的事情和流之间有4-6秒的延迟,我正在寻找进一步减少它的方法.
提前致谢 :)
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
while(true)
{
ArrayList<File> wallpapers = new ArrayList<File>();
File dir = new File("C:/Windows/System32/oobe/info/backgrounds/");
if(dir.listFiles() == null)
System.out.println("Empty");
for(File img : dir.listFiles())
{
if(img.getName().endsWith(".jpg") && img.getName() != "backgroundDefault.jpg")
wallpapers.add(img);
}
File current = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
int i = 1;
for(File img : wallpapers)
{
File f = new File("C:/Windows/System32/oobe/info/backgrounds/"+ i++ +".jpg");
current.renameTo(f);
File file = new File("C:/Windows/System32/oobe/info/backgrounds/backgroundDefault.jpg");
img.renameTo(file);
Thread.sleep(60000);
}
}
} }
}
Run Code Online (Sandbox Code Playgroud)
此代码每分钟更改Windows登录屏幕的背景图像.listFiles()为dir返回null,我得到一个NullPointerException for(File img:dir.listFiles()).我以为文件权限可能有问题,所以我尝试将文件路径更改为我桌面上的目录,并且工作正常.所以我假设我无法访问系统文件,因为我的程序没有足够的权限.我还要确切地说,这段代码直到最近一直运行良好.它没有被修改.我刚刚发现我的登录壁纸不再改变了.即使程序确实有效,我也无法在通过Eclipse启动程序时修改文件名,但是我会将其导出为.jar,并使用具有最高权限的任务计划程序安排它,以便为其提供管理权限,直到它工作没有任何问题,直到最近.我还尝试忽略错误,认为它们与访问权限相关,并尝试通过任务计划程序以及使用批处理文件启动具有最高权限的可执行jar.我甚至尝试通过我用管理员权限打开的cmd启动jar无效但仍然在cmd中说NullPointerException.我有点失落,也会感激任何帮助.