def setMonoWave(self, stream):
sampwidth = stream.getsampwidth()
delta = 2**(8*sampwidth)
frames = stream.getnframes()
ratio = frames / 255
data = stream.readframes(float('inf'))
wavepath = QtGui.QPainterPath()
try:
for frame_set in xrange(256):
frame_min = frame_max = 0
for frame in xrange(ratio):
try:
value = audioop.getsample(data, sampwidth, frame + frame_set * ratio)
frame_min = min(frame_min, value)
frame_max = max(frame_max, value)
except:
break
wavepath.moveTo(frame_set, delta - frame_min)
wavepath.lineTo(frame_set, delta - frame_max)
except:
pass
self.wavepath = self.scene.addPath(wavepath)
self.wavepath.setPen(self.pen)
self.wavepath.setY(delta * .5)
self.fitInView(0, 0, 256, delta)
self.centerOn(self.wavepath)
self.setBackgroundBrush(QtCore.Qt.white)
评论列表
文章目录