类 VideoWriter


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

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

      构造函数 
      修饰符 构造函数 描述
        VideoWriter()
      默认构造函数。 构造函数/函数初始化视频写入器。
      保护 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)  
    • 方法摘要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 描述
      静态 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) 页面或此 [页面](https://fourcc.org/codecs.php) 的 fourcc 网站上获取,以获取更完整的列表)。带有 MP4 容器的 FFMPEG 后端本机使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 的关于 fourcc 代码转换的警告消息。
        fps - 创建的视频流的帧速率。
        frameSize - 视频帧的大小。
        isColor - 如果不为零,则编码器将期望并编码彩色帧,否则它将处理灰度帧。提示
        • 对于某些后端,fourcc=-1 会弹出系统中的编解码器选择对话框。
        • 要保存图像序列,请使用正确的文件名(例如img_%02d.jpg)和 fourcc=0 OR fps=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) 页面或此 [页面](https://fourcc.org/codecs.php) 的 fourcc 网站上获取,以获取更完整的列表)。带有 MP4 容器的 FFMPEG 后端本机使用其他值作为 fourcc 代码:参见 [ObjectType](http://mp4ra.org/#/codecs),因此您可能会收到来自 OpenCV 的关于 fourcc 代码转换的警告消息。
        fps - 创建的视频流的帧速率。
        frameSize - 视频帧的大小。将处理灰度帧。提示
        • 对于某些后端,fourcc=-1 会弹出系统中的编解码器选择对话框。
        • 要保存图像序列,请使用正确的文件名(例如img_%02d.jpg)和 fourcc=0 OR fps=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)
      • 打开

        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 以关闭已打开的文件。
      • 打开

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

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

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

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

        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 析构函数自动调用。
      • 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
        重写
        finalize 在类 java.lang.Object
        抛出
        java.lang.Throwable