在PyQt4窗体中播放mjpg-streamer输出视频
最近买了TP-LINK703N路由器,按照论坛中的资料成功刷入openwrt。安装mjpg-streamer后,可正常在网页中观看视频。后面打算自己写个上位机程序,就研究了下如何用在基于PyQt4的窗口中播放视频。以下示例代码可正常播放视频,希望对有相同需求的同学有所帮助。两个文件:PyStreamClientUi.py,PyStreamClient.py。双击PyStreamClient.py运行# -*- coding: utf-8 -*-
#filename: PyStreamClientUi.py
# Form implementation generated from reading ui file 'StreamClient.ui'
#
# Created: Fri Nov 23 21:50:32 2012
# by: PyQt4 UI code generator 4.8.3
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_PyStreamClientForm(object):
def setupUi(self, PyStreamClientForm):
PyStreamClientForm.setObjectName(_fromUtf8("PyStreamClientForm"))
PyStreamClientForm.resize(345, 259)
self.label = QtGui.QLabel(PyStreamClientForm)
self.label.setGeometry(QtCore.QRect(10, 10, 320, 240))
self.label.setFrameShape(QtGui.QFrame.StyledPanel)
self.label.setText(_fromUtf8(""))
self.label.setObjectName(_fromUtf8("label"))
self.retranslateUi(PyStreamClientForm)
QtCore.QMetaObject.connectSlotsByName(PyStreamClientForm)
def retranslateUi(self, PyStreamClientForm):
PyStreamClientForm.setWindowTitle(QtGui.QApplication.translate("PyStreamClientForm", "PyStreamClient", None, QtGui.QApplication.UnicodeUTF8))
#-*- coding: utf-8 -*-
#author: apache
#filename: PyStreamClient.py
import sys, httplib
from PyQt4.QtGui import QWidget, QApplication, QPixmap
from PyQt4.QtCore import QTimer
from PyStreamClientUi import Ui_PyStreamClientForm
class QueryImage:
def __init__(self, host, port, argv="/?action=snapshot"):
self.host = host
self.port = port
self.argv = argv
def queryImage(self):
http = httplib.HTTP(self.host, self.port)
http.putrequest('GET', self.argv)
http.putheader('Host', self.host)
http.putheader('User-agent', 'python-httplib')
http.putheader('Content-type', 'image/jpeg')
http.endheaders()
(returncode, returnmsg, headers) = http.getreply()
if returncode != 200:
print returncode, returnmsg
return None
return http.getfile().read()
class StreamClientForm(QWidget):
TIMEOUT = 50
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_PyStreamClientForm()
self.queryImage = QueryImage("192.168.2.1", 8080)
self.timer = QTimer(timeout=self.playStream)
self.__setup()
def __setup(self):
self.ui.setupUi(self)
self.timer.start(StreamClientForm.TIMEOUT)
def transToPixmap(self):
data = self.queryImage.queryImage()
if not data:
return None
pixmap = QPixmap()
pixmap.loadFromData(data)
return pixmap
def playStream(self):
pixmap = self.transToPixmap()
if pixmap:
self.ui.label.setPixmap(pixmap)
else:
print "frame lost"
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyle("plastique")
form = StreamClientForm()
form.show()
sys.exit(app.exec_())
请问楼主,用的703N刷的openwrt挂载的是什么摄像头?UVC的摄像头要怎么安装驱动呢?
页:
[1]