Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何配置vtkAVIWriter,使其在末尾具有小的avi文件?_Python_Video_Vtk_Avi - Fatal编程技术网

Python 如何配置vtkAVIWriter,使其在末尾具有小的avi文件?

Python 如何配置vtkAVIWriter,使其在末尾具有小的avi文件?,python,video,vtk,avi,Python,Video,Vtk,Avi,我正在尝试使用vtkAVIWriter从我的vtk视图制作视频。 我的问题是生成的文件相当大(以5帧/秒的速度播放40秒的视频时,大约500英里) 我如何改进配置,使视频在10-20Mo左右具有可接受的质量 以下是生成视频的代码部分: def Play_PB_click(self): if self.timer is None: window = float(self.window_LE.text()) if window < 0.01:

我正在尝试使用
vtkAVIWriter
从我的vtk视图制作视频。 我的问题是生成的文件相当大(以5帧/秒的速度播放40秒的视频时,大约500英里) 我如何改进配置,使视频在10-20Mo左右具有可接受的质量

以下是生成视频的代码部分:

def Play_PB_click(self):
    if self.timer is None:
        window = float(self.window_LE.text())
        if window < 0.01:
            window = 0.01
        delay = int(window * 1000)
        if self.Rec_RB.isChecked():
            fileName = QFileDialog.getSaveFileName(caption='Movie file', filter="AVI (*.avi)")
            if (fileName[0] == []):
                return
            self.imageFilter = vtk.vtkWindowToImageFilter()
            self.imageFilter.SetInput(self.MV_plot.vtkWidget.GetRenderWindow())
            self.imageFilter.SetInputBufferTypeToRGB()
            self.imageFilter.ReadFrontBufferOff()
            self.imageFilter.Update()
            self.writer = vtk.vtkAVIWriter()
            self.writer.SetInputConnection(self.imageFilter.GetOutputPort())
            self.writer.SetQuality(1)
            self.writer.SetRate(int(1 / window))
            self.writer.SetCompressorFourCC("DIB")
            self.writer.SetFileName(fileName[0])
            self.writer.Start()
        else:
            self.imageFilter = None
            self.writer = None

        self.timer = QTimer()
        self.timer.setInterval(delay)
        self.timer.timeout.connect(self.fromPlay)
        self.timer.start()
        self.Play_PB.setText('Pause')
    else:
        self.timer.stop()
        self.timer = None
        if not self.writer is None:
            self.writer.End()
            self.imageFilter = None
        self.writer = None
        self.Play_PB.setText('Play')


def fromPlay(self):
    self.myslider.setValue(self.myslider.value() + 1)
    if not self.imageFilter is None:
        self.imageFilter.Modified()
        self.writer.Write()
    if self.myslider.value() >= self.myslider.maximum():
        self.timer.stop()
        self.timer = None
        if not self.writer is None:
            self.writer.End()
        self.imageFilter = None
        self.writer = None
        self.Play_PB.setText('Play')
def Play_PB_单击(自身):
如果self.timer为None:
window=float(self.window\u LE.text())
如果窗口<0.01:
窗口=0.01
延迟=整数(窗口*1000)
如果self.Rec_RB.isChecked():
fileName=QFileDialog.getSaveFileName(标题='Movie file',filter=“AVI(*.AVI)”)
如果(文件名[0]=[]):
返回
self.imageFilter=vtk.vtkWindowToImageFilter()
self.imageFilter.SetInput(self.MV_plot.vtkWidget.GetRenderWindow())
self.imageFilter.SetInputBufferTypeToRGB()
self.imageFilter.ReadFrontBufferOff()
self.imageFilter.Update()
self.writer=vtk.vtkAVIWriter()
self.writer.SetInputConnection(self.imageFilter.GetOutputPort())
self.writer.SetQuality(1)
自写入器设置率(整数(1/窗口))
self.writer.SetCompressorFourCC(“DIB”)
self.writer.SetFileName(文件名[0])
self.writer.Start()
其他:
self.imageFilter=None
self.writer=无
self.timer=QTimer()
自定时器设置间隔(延迟)
self.timer.timeout.connect(self.fromPlay)
self.timer.start()
self.Play_PB.setText(‘暂停’)
其他:
self.timer.stop()
self.timer=无
如果不是self.writer,则为None:
self.writer.End()
self.imageFilter=None
self.writer=无
self.Play_PB.setText(“Play”)
def fromPlay(自我):
self.myslider.setValue(self.myslider.value()+1)
如果不是self.imageFilter,则为无:
self.imageFilter.Modified()
self.writer.Write()
如果self.myslider.value()>=self.myslider.max():
self.timer.stop()
self.timer=无
如果不是self.writer,则为None:
self.writer.End()
self.imageFilter=None
self.writer=无
self.Play_PB.setText(“Play”)

我转而使用vtkOggTheoraWriter,它可以生成更小的电影