类 VideoWriter


  • public class VideoWriter
    extends java.lang.Object
    视频写入器类。此类提供用于写入视频文件或图像序列的 C++ API。
    • 字段摘要

      字段 
      修饰符和类型 字段 描述
      protected long nativeObj  
    • 构造函数摘要

      构造函数 
      修饰符 构造函数 描述
        VideoWriter()
      默认构造函数 构造函数/函数初始化视频写入器。
      protected VideoWriter​(long addr)  
        VideoWriter​(java.lang.String filename, int fourcc, double fps, Size frameSize)  
        VideoWriter​(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)  
        VideoWriter​(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)
      params 参数允许指定编码为对的额外编码器参数 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)
        VideoWriter​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)
      apiPreference 参数允许指定要使用的 API 后端。
        VideoWriter​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)
      apiPreference 参数允许指定要使用的 API 后端。
        VideoWriter​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)  
    • 方法摘要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      static VideoWriter __fromPtr__​(long addr)  
      protected void finalize()  
      static int fourcc​(char c1, char c2, char c3, char c4)
      将 4 个字符连接到 fourcc 代码
      double get​(int propId)
      返回指定的 VideoWriter 属性
      java.lang.String getBackendName()
      返回使用的后端 API 名称 **注意:**应打开流。
      long getNativeObjAddr()  
      boolean isOpened()
      如果视频写入器已成功初始化,则返回 true。
      boolean open​(java.lang.String filename, int fourcc, double fps, Size frameSize)
      初始化或重新初始化视频写入器。
      boolean open​(java.lang.String filename, int fourcc, double fps, Size frameSize, boolean isColor)
      初始化或重新初始化视频写入器。
      boolean open​(java.lang.String filename, int fourcc, double fps, Size frameSize, MatOfInt params)  
      boolean open​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize)  
      boolean open​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, boolean isColor)  
      boolean open​(java.lang.String filename, int apiPreference, int fourcc, double fps, Size frameSize, MatOfInt params)  
      void release()
      关闭视频写入器。
      boolean set​(int propId, double value)
      设置 VideoWriter 中的属性。
      void write​(Mat image)
      写入下一个视频帧
      • 继承自类 java.lang.Object 的方法

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 字段详情

      • nativeObj

        protected final long nativeObj
    • 构造函数详情

      • VideoWriter

        protected VideoWriter​(long addr)
      • VideoWriter

        public VideoWriter()
        默认构造函数 构造函数/函数初始化视频写入器。
        • 在 Linux 上,使用 FFMPEG 写入视频;
        • 在 Windows 上,使用 FFMPEG 或 MSWF 或 DSHOW;
        • 在 MacOSX 上,使用 AVFoundation。
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int fourcc,
                           double fps,
                           Size frameSize,
                           boolean isColor)
        参数
        filename - 输出视频文件的名称。
        fourcc - 用于压缩帧的编解码器的 4 字符代码。例如,VideoWriter::fourcc('P','I','M','1') 是 MPEG-1 编解码器,VideoWriter::fourcc('M','J','P','G') 是 motion-jpeg 编解码器等。可以在 [MSDN](https://docs.microsoft.com/en-us/windows/win32/medfound/video-fourccs) 页面或 [fourcc 网站](https://fourcc.org/codecs.php) 的此页面上获得代码列表(更完整的列表)。使用 MP4 容器的 FFMPEG 后端原生使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 关于 fourcc 代码转换的警告消息。
        fps - 创建的视频流的帧率。
        frameSize - 视频帧的大小。
        isColor - 如果它不为零,则编码器将期望并编码彩色帧,否则它将使用灰度帧。 **提示**
        • 对于某些后端,fourcc=-1 会弹出系统的编解码器选择对话框。
        • 要保存图像序列,请使用正确的文件名(例如 img_%02d.jpg)和 fourcc=0fps=0。使用未压缩的图像格式(例如 img_%02d.BMP)保存原始帧。
        • 大多数编解码器都是有损的。如果您想要无损视频文件,则需要使用无损编解码器(例如 FFMPEG FFV1、Huffman HFYU、Lagarith LAGS 等)。
        • 如果启用了FFMPEG,使用`codec=0; fps=0;`可以创建未压缩的(原始)视频文件。
        • 如果使用FFMPEG,我们允许奇数宽或高帧,但在这种情况下,我们会截断最右列/最底行。可能应该更优雅地处理这个问题,但FFMPEG swscale内部的一些函数需要偶数宽/高。
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int fourcc,
                           double fps,
                           Size frameSize)
        参数
        filename - 输出视频文件的名称。
        fourcc - 用于压缩帧的编解码器的 4 字符代码。例如,VideoWriter::fourcc('P','I','M','1') 是 MPEG-1 编解码器,VideoWriter::fourcc('M','J','P','G') 是 motion-jpeg 编解码器等。可以在 [MSDN](https://docs.microsoft.com/en-us/windows/win32/medfound/video-fourccs) 页面或 [fourcc 网站](https://fourcc.org/codecs.php) 的此页面上获得代码列表(更完整的列表)。使用 MP4 容器的 FFMPEG 后端原生使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 关于 fourcc 代码转换的警告消息。
        fps - 创建的视频流的帧率。
        `frameSize` - 视频帧的大小。支持灰度帧。**提示**
        • 对于某些后端,fourcc=-1 会弹出系统的编解码器选择对话框。
        • 要保存图像序列,请使用正确的文件名(例如 img_%02d.jpg)和 fourcc=0fps=0。使用未压缩的图像格式(例如 img_%02d.BMP)保存原始帧。
        • 大多数编解码器都是有损的。如果您想要无损视频文件,则需要使用无损编解码器(例如 FFMPEG FFV1、Huffman HFYU、Lagarith LAGS 等)。
        • 如果启用了FFMPEG,使用`codec=0; fps=0;`可以创建未压缩的(原始)视频文件。
        • 如果使用FFMPEG,我们允许奇数宽或高帧,但在这种情况下,我们会截断最右列/最底行。可能应该更优雅地处理这个问题,但FFMPEG swscale内部的一些函数需要偶数宽/高。
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int apiPreference,
                           int fourcc,
                           double fps,
                           Size frameSize,
                           boolean isColor)
        `apiPreference`参数允许指定要使用的API后端。如果有多个可用,则可以使用它来强制使用特定的读取器实现:例如cv::CAP_FFMPEG或cv::CAP_GSTREAMER。
        参数
        `filename` - 自动生成
        `apiPreference` - 自动生成
        `fourcc` - 自动生成
        `fps` - 自动生成
        `frameSize` - 自动生成
        `isColor` - 自动生成
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int apiPreference,
                           int fourcc,
                           double fps,
                           Size frameSize)
        `apiPreference`参数允许指定要使用的API后端。如果有多个可用,则可以使用它来强制使用特定的读取器实现:例如cv::CAP_FFMPEG或cv::CAP_GSTREAMER。
        参数
        `filename` - 自动生成
        `apiPreference` - 自动生成
        `fourcc` - 自动生成
        `fps` - 自动生成
        `frameSize` - 自动生成
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int fourcc,
                           double fps,
                           Size frameSize,
                           MatOfInt params)
        `params`参数允许指定额外编码器参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ... ),参见cv::VideoWriterProperties
        参数
        `filename` - 自动生成
        `fourcc` - 自动生成
        `fps` - 自动生成
        `frameSize` - 自动生成
        `params` - 自动生成
      • VideoWriter

        public VideoWriter​(java.lang.String filename,
                           int apiPreference,
                           int fourcc,
                           double fps,
                           Size frameSize,
                           MatOfInt params)
    • 方法详情

      • getNativeObjAddr

        public long getNativeObjAddr()
      • __fromPtr__

        public static VideoWriter __fromPtr__​(long addr)
      • open

        public boolean open​(java.lang.String filename,
                            int fourcc,
                            double fps,
                            Size frameSize,
                            boolean isColor)
        初始化或重新初始化视频写入器。此方法打开视频写入器。参数与构造函数VideoWriter::VideoWriter中的参数相同。
        参数
        `filename` - 自动生成
        `fourcc` - 自动生成
        `fps` - 自动生成
        `frameSize` - 自动生成
        `isColor` - 自动生成
        返回
        如果视频写入器已成功初始化,则返回`true`。此方法首先调用VideoWriter::release关闭已打开的文件。
      • open

        public boolean open​(java.lang.String filename,
                            int fourcc,
                            double fps,
                            Size frameSize)
        初始化或重新初始化视频写入器。此方法打开视频写入器。参数与构造函数VideoWriter::VideoWriter中的参数相同。
        参数
        `filename` - 自动生成
        `fourcc` - 自动生成
        `fps` - 自动生成
        `frameSize` - 自动生成
        返回
        如果视频写入器已成功初始化,则返回`true`。此方法首先调用VideoWriter::release关闭已打开的文件。
      • open

        public boolean open​(java.lang.String filename,
                            int apiPreference,
                            int fourcc,
                            double fps,
                            Size frameSize,
                            boolean isColor)
      • open

        public boolean open​(java.lang.String filename,
                            int apiPreference,
                            int fourcc,
                            double fps,
                            Size frameSize)
      • open

        public boolean open​(java.lang.String filename,
                            int fourcc,
                            double fps,
                            Size frameSize,
                            MatOfInt params)
      • open

        public boolean open​(java.lang.String filename,
                            int apiPreference,
                            int fourcc,
                            double fps,
                            Size frameSize,
                            MatOfInt params)
      • isOpened

        public boolean isOpened()
        如果视频写入器已成功初始化,则返回 true。
        返回
        自动生成
      • release

        public void release()
        关闭视频写入器。此方法会由后续的VideoWriter::open和VideoWriter析构函数自动调用。
      • write

        public void write​(Mat image)
        写入下一个视频帧
        参数
        `image` - 写入的帧。通常情况下,预期彩色图像为BGR格式。该函数/方法将指定的图像写入视频文件。它必须与打开视频写入器时指定的大小相同。
      • set

        public boolean set​(int propId,
                           double value)
        设置 VideoWriter 中的属性。
        参数
        `propId` - 来自cv::VideoWriterProperties的属性标识符(例如cv::VIDEOWRITER_PROP_QUALITY)或REF: videoio_flags_others中的一个。
        `value` - 属性的值。
        返回
        如果VideoWriter实例使用的后端支持该属性,则返回`true`。
      • get

        public double get​(int propId)
        返回指定的 VideoWriter 属性
        参数
        `propId` - 来自cv::VideoWriterProperties的属性标识符(例如cv::VIDEOWRITER_PROP_QUALITY)或REF: videoio_flags_others中的一个。
        返回
        指定属性的值。当查询VideoWriter实例使用的后端不支持的属性时,返回的值为0。
      • fourcc

        public static int fourcc​(char c1,
                                 char c2,
                                 char c3,
                                 char c4)
        将 4 个字符连接到 fourcc 代码
        参数
        `c1` - 自动生成
        `c2` - 自动生成
        `c3` - 自动生成
        `c4` - 自动生成
        返回
        一个fourcc代码。此静态方法构造要在构造函数VideoWriter::VideoWriter或VideoWriter::open中使用的编解码器的fourcc代码。
      • getBackendName

        public java.lang.String getBackendName()
        返回使用的后端 API 名称 **注意:**应打开流。
        返回
        自动生成
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        类`java.lang.Object`中的`finalize`
        抛出
        java.lang.Throwable