いくつかの方法を試した後、これは私がなってしまったソリューションです:
- スプリット二つの部分
- スタートVLC
- の2つのインスタンス内の映像がスクリーン
の1にそれぞれフルスクリーンを作ります
- 各vlcインスタンスに、それを制御するための別のhttpポートを与える
- vlcのWebインターフェイスを自分のWebサイトにコピーする(一部のjavascript、画像、cssおよびhtmlファイル)
- 私のウェブサーバー上で "/requests/status.xml"を呼び出します。これは、プレーヤーの現在のステータスを取得してコマンドを送信するためにvlc webinterfaceが呼び出すものです。
- plain status.xml要求をインスタンスの1つに転送し、コマンドを含むすべてのものをvlcの両方のインスタンスに転送します。
これは、フルスクリーンでの2つの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 webinterfaceが私のアプリケーションの一部になっていることです。ボタンの位置を変更したいだけなら、vlcを更新する必要はありません。