Я не стал отвечать, но, поскольку никто не взвесил, я сделаю попытку.
Я не уверен, будет ли это связано с веб-камерой (хотя, вероятно, это будет), но вы можете создать две области рисования ( gtk.DrawingArea ) в PyGTK для ваших двух экранов. Затем вы можете подключить видео к ним.
Я делаю что-то похожее в моем коде для воспроизведения видео. Это может потребовать от вас создания двух отдельных раковин, но, честно говоря, я не уверен. (Если кто-то может расширить эту идею, пожалуйста, не стесняйтесь делать это в комментариях.)
Вот фрагмент кода, который я сейчас использую (взят из def __ init __. Я имею дело с небольшим затруднением в Ubuntu (я думаю, это связано с JACK), но я уверен, что это зависит от компьютера. Обратите внимание, у меня есть предопределенный путь.
def __init__(self):
def on_message(bus, message):
if message.type == gst.MESSAGE_EOS:
# End of Stream
player.set_state(gst.STATE_NULL)
elif message.type == gst.MESSAGE_ERROR:
player.set_state(gst.STATE_NULL)
(err, debug) = message.parse_error()
print "Error: %s" % err, debug
def on_sync_message(bus, message):
if message.structure is None:
return False
if message.structure.get_name() == "prepare-xwindow-id":
if sys.platform == "win32":
win_id = videowidget.window.handle
else:
win_id = videowidget.window.xid
assert win_id
imagesink = message.src
imagesink.set_property("force-aspect-ratio", True)
imagesink.set_xwindow_id(win_id)
win = gtk.Window()
win.set_resizable(False)
win.set_has_frame(False)
win.set_position(gtk.WIN_POS_CENTER)
fixed = gtk.Fixed()
win.add(fixed)
fixed.show()
videowidget = gtk.DrawingArea()
fixed.put(videowidget, 0, 0)
videowidget.set_size_request(640, 480)
videowidget.show()
# Setup GStreamer
player = gst.element_factory_make("playbin", "MultimediaPlayer")
bus = player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
#used to get messages that GStreamer emits
bus.connect("message", on_message)
#used for connecting video to your application
bus.connect("sync-message::element", on_sync_message)
player.set_property("uri", "file://" + os.getcwd() + "/VID/SEQ-GAME-OPEN.ogv")
player.set_state(gst.STATE_PLAYING)
win.show()
Вот, надеюсь, это поможет вам, некоторые.