我想建立一个基于 Ubuntu 16.04/Gnome/VLC 2.2.2 的视频客户端。它应该在两个屏幕上启动后直接全屏播放单个视频。视频通过 VLC 网络界面进行控制。
一切都在一个屏幕上运行良好。但是,对于多个屏幕,我遇到了全屏模式仅显示在其中一个屏幕上的问题。
我尝试了几种方法来修复它:
1) 使用正常的全屏模式。
只在一个屏幕上显示视频
2) 使用此处描述的墙视频过滤器:http://windows7themes.net/en-us/stretch-videomovie-across-2-monitors/
这有多个问题。通常,它无法正确显示视频。其中一个窗口出现输出错误。我也不知道如何自动定位这些窗口并使它们进入(伪)全屏模式。阅读有关此功能的一些线程让我认为它目前已损坏。
3)调整窗口大小以填满整个屏幕(手动)
这通常有效。但是,它仍然会在视频和 Gnome 的桌面元素周围显示一个窗口。是否可以解决此问题并在启动时自动调整视频大小/位置?
我怎样才能让它工作?
最佳答案
在尝试了几种方法后,这是我最终得到的解决方案:
这是为了全屏启动两个 vlc 实例:
vlc --http-port 8080 --http-password vlc123 --loop --video-x=0 --video-y==100 --fullscreen --qt-fullscreen-screennumber=1 '/path/to/my/video1' &
vlc --http-port 8090 --http-password vlc123 --loop --video-x=2000 --video-y==100 --fullscreen --qt-fullscreen-screennumber=2 '/path/to/my/video2' &
这里是 CherryPy 代理:
class VlcProxy(object):
@cherrypy.expose
def index(self, **args):
command_parameter = ""
if args.has_key("command"):
command_parameter = "?command=" + args["command"]
if args.has_key("val"):
command_parameter += "&val=" + args["val"]
# if there is a command, send it to both running vlc instances
url = videoclient_baseurl + ":8090/requests/status.xml" + command_parameter
thread.start_new_thread(self.request, (url, "", "vlc123"))
# if it is only a status, then one response is enough
response = self.request(videoclient_baseurl + ":8080/requests/status.xml" + command_parameter, "", "vlc123")
return response
这不是我所期望的干净简单的解决方案,但到目前为止效果很好。缺点是您需要代理 vlc 调用,并且视频可能(理论上)不同步。但是,在我的情况下,这从未发生过。
好的部分是 vlc 网络界面现在是我的应用程序的一部分。如果我只想重新定位按钮,则不需要更新 vlc。
关于ubuntu - 使用 VLC 在两个屏幕上显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100413/