Python Webkit网络摄像头权限

2024-04-18 08:03:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个简单的webkit程序。该程序加载一个小的web浏览器。一切似乎都正常工作,除了网络摄像头接入。如果我加载了一个试图访问网络摄像头的网站(使用JS getUserMedia()函数),它就无法正常工作。(我有一个网络摄像头)

请有人帮我用python浏览器使用webkit(或qtwebengine)可以访问网络摄像头。在

以下是我目前掌握的代码:

import pygtk
pygtk.require('2.0')
import gtk

import webkit
import gobject

class Browser:
    default_site = "https://www.pubnub.com/developers/demos/webrtc/"

    def delete_event(self, widget, event, data=None):
        return False

    def destroy(self, widget, data=None):
        gtk.main_quit()

    def __init__(self):
        gobject.threads_init()
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_resizable(True)

        self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)

        #webkit.WebView allows us to embed a webkit browser
        #it takes care of going backwards/fowards/reloading
        #it even handles flash

        self.web_view = webkit.WebView()


        self.settings = self.web_view.get_settings()

        self.settings.set_property("enable-java-applet", True)
        self.settings.set_property("enable-plugins", True)
        self.settings.set_property("enable-scripts", True)

        self.settings.set_property("enable-file-access-from-file-uris", True)

        self.settings.set_property("enable-private-browsing", False)
        self.settings.set_property("enable-spell-checking", False)
        self.settings.set_property("enable-universal-access-from-file-uris", True)
        self.settings.set_property("enable-dns-prefetching", True)
        self.settings.set_property("enable-webaudio", True)
        self.settings.set_property("enable-webgl", True)
        self.settings.set_property("enable-fullscreen", True)
        self.settings.set_property("enable-xss-auditor", True)
        self.settings.set_property("javascript-can-open-windows-automatically", True)
        self.settings.set_property("enable-media-stream", True)
        self.settings.set_property("enable-mediasource", True)



        self.web_view.set_settings(self.settings)
        self.web_view.open(self.default_site)

        toolbar = gtk.Toolbar()

        #create the back button and connect the action to
        #allow us to go backwards using webkit
        self.back_button = gtk.ToolButton(gtk.STOCK_GO_BACK)
        self.back_button.connect("clicked", self.go_back)

        #same idea for forward button
        self.forward_button = gtk.ToolButton(gtk.STOCK_GO_FORWARD)
        self.forward_button.connect("clicked", self.go_forward)

        #again for refresh
        refresh_button = gtk.ToolButton(gtk.STOCK_REFRESH)
        refresh_button.connect("clicked", self.refresh)

        #add the buttons to the toolbar
        toolbar.add(self.back_button)
        toolbar.add(self.forward_button)
        toolbar.add(refresh_button)

        #entry bar for typing in and display URLs, when they type in a site
        #and hit enter the on_active function is called
        self.url_bar = gtk.Entry()
        self.url_bar.connect("activate", self.on_active)

        #anytime a site is loaded the update_buttons will be called
        self.web_view.connect("load_committed", self.update_buttons)

        scroll_window = gtk.ScrolledWindow(None, None)
        scroll_window.add(self.web_view)


        vbox = gtk.VBox(False, 0)
        vbox.pack_start(toolbar, False, True, 0)
        vbox.pack_start(self.url_bar, False, True, 0)
        vbox.add(scroll_window)

        self.window.add(vbox)
        self.window.show_all()

    def on_active(self, widge, data=None):
        '''When the user enters an address in the bar, we check to make
           sure they added the http://, if not we add it for them.  Once
           the url is correct, we just ask webkit to open that site.'''
        url = self.url_bar.get_text()
        try:
            url.index("://")
        except:
            url = "http://"+url
        self.url_bar.set_text(url)
        self.web_view.open(url)

    def go_back(self, widget, data=None):
        '''Webkit will remember the links and this will allow us to go
           backwards.'''
        self.web_view.go_back()

    def go_forward(self, widget, data=None):
        '''Webkit will remember the links and this will allow us to go
 self.web_view.go_forward()

    def refresh(self, widget, data=None):
        '''Simple makes webkit reload the current back.'''
        self.web_view.reload()

    def update_buttons(self, widget, data=None):
        '''Gets the current url entry and puts that into the url bar.
           It then checks to see if we can go back, if we can it makes the
           back button clickable.  Then it does the same for the foward
           button.'''
        self.url_bar.set_text( widget.get_main_frame().get_uri() )
        self.back_button.set_sensitive(self.web_view.can_go_back())
        self.forward_button.set_sensitive(self.web_view.can_go_forward())

    def main(self):
        gtk.main()

if __name__ == "__main__":
    browser = Browser()
    browser.main()

谢谢你能提供的任何帮助。欢迎使用示例代码:)


Tags: theselfviewwebtrueurlgogtk