如何在python中打开和保存视频文件?

时间:2014-08-27 14:18:22

标签: python opencv video ffmpeg pygtk

我刚刚开始使用PyGtk创建一个ubuntu应用程序。我的第一个目标是打开,转换然后保存视频文件。忽略转换阶段,我将植入开放保存功能。但是,当我打开一个视频文件并保存它时,我得到了11B大小的非视频文件。我只是google这个,发现OpenCV用于python。但我不确定这是否是最佳方式。我还认为我将使用ffmpeg库对视频文件进行一些操作。这是我想要的还是可能有其他内置库?

顺便说一下,这是打开并保存文件的代码:

    def on_openFile_clicked(self, widget):
        filename=None
        dialog = Gtk.FileChooserDialog("Please choose a file", self,
            Gtk.FileChooserAction.OPEN,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OPEN, Gtk.ResponseType.OK))

        response = dialog.run()
        self.add_filters(dialog)

        if response == Gtk.ResponseType.OK:
            filename = dialog.get_filename()
        elif response == Gtk.ResponseType.CANCEL:
            print 'Cancel Clicked'
        dialog.destroy()

        print "File Choosen: ", filename

    def add_filters(self, dialog):

        filter_py = Gtk.FileFilter()
        filter_py.set_name("Video Files")
        filter_py.add_mime_type("video/mp4")
        filter_py.add_mime_type("video/x-flv")
        dialog.add_filter(filter_py)

        filter_any = Gtk.FileFilter()
        filter_any.set_name("Any files")
        filter_any.add_pattern("*")
        dialog.add_filter(filter_any)

    def on_saveFile_clicked(self, widget):
        filename=None
        dialog = Gtk.FileChooserDialog("Please choose a file", self,
            Gtk.FileChooserAction.SAVE,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_SAVE, Gtk.ResponseType.OK))

        response = dialog.run()
        self.add_filters(dialog)

        if response == Gtk.ResponseType.OK:
            filename = dialog.get_filename()
        elif response == Gtk.ResponseType.CANCEL:
            print 'Cancel Clicked'
        dialog.destroy()

        if filename != None:
            save_file=open(filename, 'w')
            save_file.write("Sample Data")
            save_file.close()
        print "File Saved: ", filename

1 个答案:

答案 0 :(得分:0)

我认为 OpenCV 是最好的方法!因为它具有多样化和强大的处理媒体功能!并且还支持WindowsLinuxMac OSiOSAndroid。 OpenCV专为提高计算效率而设计,专注于实时应用。该库以优化的C / C ++编写,可以利用多核处理。你可以在OpenCV中找到许多Video Analysis函数!