vlc二次开发播放视频,direct3d 11 output窗口问题

vlc二次开发,mfc窗口,调用libvlc,播放海康rtsp流,出现了两个窗口,一个mfc dialog窗口,一个vlc direct3d 11 output窗口,视频就显示了最初一帧,就停了。请大家解决。
代码如下:

#pragma once
# ifdef __cplusplus
extern "C" {
# endif
void cfgvlc(int winid);
void play();
# ifdef __cplusplus
}
# endif

```c++
typedef int ssize_t;
#include "vlc/vlc.h"
libvlc_instance_t* _vlcinstance;
libvlc_media_player_t* _mp;
libvlc_media_t* _m;
void cfgvlc(int winid)
{
    const char* const vlc_args[] = {
       "--verbose=2", //be much more verbose then normal for debugging purpose
     "--network-caching=100",
    };

    //create a new libvlc instance
    _vlcinstance= libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);  //tricky calculation of the char space used
    // Create a media player playing environement
    _mp = libvlc_media_player_new(_vlcinstance);


    ///* Create a new LibVLC media descriptor */
    _m = libvlc_media_new_location(_vlcinstance, "rtsp://admin:a8628391@192.168.1.64:554/h265/ch1/main/av_stream");
    libvlc_media_player_set_media(_mp, _m);
    ///* Get our media instance to use our window */
    //int windid = (int)GetDlgItem(IDC_STATIC_VLC)->m_hWnd;//ui->frame->winId();
    libvlc_media_player_set_xwindow(_mp, winid);
    ///* Play */
    libvlc_media_player_play(_mp);


    return;
}

void play()
{
    libvlc_media_player_play(_mp);
}





```c++

// MFCvlcDlg.h: 头文件
//

#pragma once

//#include "vlc/vlc.h"
// CMFCvlcDlg 对话框
class CMFCvlcDlg : public CDialogEx
{
// 构造
public:
    CMFCvlcDlg(CWnd* pParent = nullptr);    // 标准构造函数

// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_MFCVLC_DIALOG };
#endif

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

public:

// 实现
protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnTimer(UINT_PTR nIDEvent); 
    DECLARE_MESSAGE_MAP()
};



```c++

// MFCvlcDlg.cpp: 实现文件
//
//#include "vlc/vlc.h"
#include "pch.h"
#include "framework.h"
#include "MFCvlc.h"
#include "MFCvlcDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//#undef WIN32_LEAN_AND_MEAN
#include "myvlc.h"
#define TIMERID 8

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_ABOUTBOX };
#endif

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CMFCvlcDlg 对话框



CMFCvlcDlg::CMFCvlcDlg(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_MFCVLC_DIALOG, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCvlcDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCvlcDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_WM_TIMER()
END_MESSAGE_MAP()


// CMFCvlcDlg 消息处理程序

BOOL CMFCvlcDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != nullptr)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码
    //libvlc_instance_t* _vlcinstance;
    //libvlc_media_player_t* _mp;
    //libvlc_media_t* _m;

    const char* const vlc_args[] = {
        //   "--verbose=2", //be much more verbose then normal for debugging purpose
     "--network-caching=100",
    };

    //create a new libvlc instance
    ///*_vlcinstance*/ libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);  //tricky calculation of the char space used
    // Create a media player playing environement
    //_mp = (void *)libvlc_media_player_new(_vlcinstance);


    ///* Create a new LibVLC media descriptor */
    //_m = (void*)libvlc_media_new_location(_vlcinstance, "rtsp://admin:a8628391@192.168.1.64:554/h265/ch1/main/av_stream");
    //libvlc_media_player_set_media(_mp, _m);
    ///* Get our media instance to use our window */
    //int windid = (int)GetDlgItem(IDC_STATIC_VLC)->m_hWnd;//ui->frame->winId();
    //libvlc_media_player_set_xwindow(_mp, windid);
    ///* Play */
    //libvlc_media_player_play(_mp);


    cfgvlc((int)GetDlgItem(IDC_STATIC_VLC)->m_hWnd);
    SetTimer(TIMERID, 1, 0);

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CMFCvlcDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CMFCvlcDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 用于绘制的设备上下文

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // 使图标在工作区矩形中居中
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // 绘制图标
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCvlcDlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}

void CMFCvlcDlg::OnTimer(UINT_PTR nIDEvent)
{
    play();
}



```

该回答引用GPT与博主@晓码自在合作编写:

从代码中可以看出,有以下几个问题:

  1. 创建了两个窗口,一个MFC的dialog窗口,一个libvlc的video输出窗口。这会导致视频显示在libvlc的窗口中,而不是MFC的dialog窗口中。

解决方法: 在创建libvlc_media_player_t对象后,调用libvlc_media_player_set_hwnd()函数设置其HWND为MFC dialog窗口的句柄,而不是调用libvlc_media_player_set_xwindow()设置X窗口ID。这样可以使视频输出到MFC窗口中。

  1. 视频播放后就停止了,只显示第一帧。

这可能是由于网络连接或其他原因导致的。可以在Timer事件回调函数中不停地调用libvlc_media_player_play()函数来重播视频,这可以避免视频播放结束后停止的问题。

  1. 两个窗口会重叠显示,视频窗口会覆盖在MFC窗口上面。

可以调用SetWindowPos()函数设置视频窗口的位置,使其不会覆盖MFC窗口。

修改后的代码如下:

cpp
void CMFCvlcDlg::OnInitDialog()
{
    // ...

    // 创建libvlc实例和media player
    libvlc_instance_t* _vlcinstance = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);  
    libvlc_media_player_t* _mp = libvlc_media_player_new(_vlcinstance);

    // 设置media
    libvlc_media_t* _m = libvlc_media_new_location(_vlcinstance, "rtsp://admin:a8628391@192.168.1.64:554/h265/ch1/main/av_stream");
    libvlc_media_player_set_media(_mp, _m);
    
    // 设置HWND而不是X窗口ID
    libvlc_media_player_set_hwnd(_mp, m_hWnd);  

    // 播放视频
    libvlc_media_player_play(_mp);
}

void CMFCvlcDlg::OnTimer(UINT_PTR nIDEvent) 
{
    // 重复调用播放来避免视频停止
    libvlc_media_player_play(_mp);
}

void CMFCvlcDlg::OnInitDialog() 
{
    // ...
   
    // 设置视频窗口位置
    libvlc_video_set_position(_mp, 100, 100, 640, 480); 
}

希望这能帮助解决vlc播放海康rtsp流时遇到的问题。

答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题
根据你提供的代码,出现了两个窗口的问题可能是由于直接使用libvlc的默认输出窗口导致的。要解决这个问题,你可以尝试使用以下方法之一:

  1. 禁用libvlc的默认输出窗口:在调用libvlc_media_player_new函数之前,添加以下参数来禁用libvlc的默认输出窗口:
const char* const vlc_args[] = {
    "--no-video-title-show", // 禁用视频输出窗口
    "--network-caching=100",
};
_vlcinstance = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

这样做会禁用libvlc的默认输出窗口,但仍然可以通过libvlc_media_player_set_xwindow函数将视频渲染到指定的窗口。

  1. 使用回调函数渲染视频:定义一个回调函数,将视频帧渲染到MFC的窗口中。首先,你需要修改cfgvlc函数和相关的全局变量:
#include <vlc/libvlc.h>
libvlc_instance_t* _vlcinstance;
libvlc_media_player_t* _mp;
libvlc_media_t* _m;

// 定义回调函数
static void* lock(void* data, void** p_pixels);
static void unlock(void* data, void* id, void* const* p_pixels);
static void display(void* data, void* id);

void cfgvlc(int winid)
{
    const char* const vlc_args[] = {
        "--verbose=2",
        "--no-video-title-show",
        "--network-caching=100",
    };

    _vlcinstance = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
    _mp = libvlc_media_player_new(_vlcinstance);

    _m = libvlc_media_new_location(_vlcinstance, "rtsp://admin:a8628391@192.168.1.64:554/h265/ch1/main/av_stream");
    libvlc_media_player_set_media(_mp, _m);

    // 设置回调函数
    libvlc_video_set_callbacks(_mp, lock, unlock, display, NULL);

    // 设置回调数据
    libvlc_video_set_format(_mp, "RV32", 1920, 1080, 1920 * 4);

    libvlc_media_player_play(_mp);
}

然后,实现回调函数:

static void* lock(void* data, void** p_pixels)
{
    // 在此函数中,你可以获取视频帧数据并返回给调用者
    // 修改以下代码以适应你的MFC窗口
    // 这里使用假数据来进行演示

    int width = 1920;
    int height = 1080;
    static uint8_t* pixels = NULL;

    if (!pixels)
        pixels = new uint8_t[width * height * 4];

    *p_pixels = pixels;
    return NULL;
}

static void unlock(void* data, void* id, void* const* p_pixels)
{
    // 在此函数中,你可以处理完成的视频帧数据
}

static void display(void* data, void* id)
{
    // 在此函数中,你可以将视频帧渲染到MFC

窗口中
    // 修改以下代码以适应你的MFC窗口
}

这样,你就可以使用回调函数将视频渲染到MFC的窗口中,而不需要使用libvlc的默认输出窗口。

请注意,以上的代码修改仅供参考,你需要根据你的MFC窗口和需求进行适当的调整。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据代码和问题描述,可能是因为MFC窗口和Direct3D 11窗口重叠在一起,导致视频只显示了最初一帧并停止。建议尝试以下方法:

  1. 在调用 libvlc_media_player_set_xwindow 之前,将MFC窗口的样式设置为 WS_CLIPCHILDREN,这样可以避免重叠问题。代码如下:
CWnd* pStaticVLC = GetDlgItem(IDC_STATIC_VLC);
if (pStaticVLC && ::IsWindow(pStaticVLC->m_hWnd))
{
    pStaticVLC->ModifyStyle(0, WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
}
  1. 如果仍然出现问题,请尝试使用其他 VLC 的 Video output 模块,例如 Direct2D,或 OpenGL。

  2. 如果以上方法不起作用,还可以试试使用其他的视频播放库,例如 FFmpeg 或 GStreamer,这些库也可以在 MFC 窗口中呈现视频。

参考代码如下:

void cfgvlcpp(HWND hWnd)
{
    const char* const vlc_args[] = {
        "--verbose=2",
        "--no-xlib", // required for Windows
        "--no-plugins-cache",
        "--no-http-logging",
    };

    libvlc_instance_t* inst = libvlc_new(sizeof(vlc_args) / sizeof(*vlc_args), vlc_args);

    libvlc_media_player_t* mp = libvlc_media_player_new(inst);
    libvlc_media_t* m = libvlc_media_new_location(inst, "rtsp://xxx.xxx.xxx.xxx/xxx");

    libvlc_video_set_callbacks(mp, lock, unlock, display, nullptr);
    libvlc_video_set_format(mp, "RV32", 1280, 720, 1280 * 4);

    HWND vlcWinHandle = ::CreateWindowEx(
        0, L"STATIC", NULL, 
        WS_CHILD | WS_VISIBLE | SS_OWNERDRAW, // your style here
        0, 0, 640, 480,  // your position and size here
        hWnd, NULL, (HINSTANCE__*)::GetWindowLong(hWnd, GWL_HINSTANCE), NULL);

    libvlc_media_player_set_hwnd(mp, vlcWinHandle);

    libvlc_media_player_play(mp);

    WaitForSingleObject(g_pStopThread, INFINITE);

    libvlc_media_release(m);
    libvlc_media_player_release(mp);
    libvlc_release(inst);
}

其中,lock, unlock, display 等回调函数可以根据需要自行实现,这些函数用于处理视频数据和窗口绘制。
如果我的回答解决了您的问题,请采纳!

可以借鉴下

用法: vlc [选项] [流] ...
您可以在命令行中指定多个流。
它们将被加入播放列表队列。
指定的首个项目将被首先播放。

选项风格:
  --选项  用于设置程序执行期间的全局选项。
   -选项  单字母版本的全局 --选项。
   :选项  仅对此选项之前的单条流生效,
            且优先级高于先前的设置。

流媒体 MRL 语法:
  [[协议][/分流]://]URL[#[标题][:章节][-[标题][:章节]]]
  [:选项=值 ...]

  许多全局 --选项 也可作为 MRL 特定的 :选项 使用。
  可指定多组 :选项=值。

URL 语法:
  file:///路径/文件              纯媒体文件
  http://主机[:端口]/文件        HTTP URL
  ftp://主机[:端口]/文件         FTP URL
  mms://主机[:端口]/文件         MMS URL
  screen://                      屏幕捕获
  dvd://[设备]                   DVD 设备
  vcd://[设备]                   VCD 设备
  cdda://[设备]                  音频 CD 设备
  udp://[[<源地址>]@[<绑定地址>][:<绑定端口>]]
                                 流服务器发送的 UDP 流
  vlc://pause:<秒数>              暂停播放列表一定时间
  vlc://quit                     用于退出 VLC 的特殊项目

 可视化滤镜 (visual)
   通用:
      --effect-list=<字符串>        效果列表
          可视化效果列表,由逗号分隔。 当前可用的效果包括: dummy、scope、spectrum(频谱)、spectrometer(频谱仪)与 vuMeter。
      --effect-width=<整数>        视频宽度
          效果视频窗口的宽度,单位为像素。
      --effect-height=<整数>       视频高度
          效果视频窗口的高度,单位为像素。
      --effect-fft-window={none,hann,flattop,blackmanharris,kaiser} 
                                 FFT 窗口
          基于频谱的可视化所使用的 FFT 窗口类型。
      --effect-kaiser-param=<浮点> Kaiser 窗口参数
          Kaiser 窗口的 alpha 参数。增加 alpha 即增大主瓣宽度并减小副瓣波幅。
   频谱分析器:
      --visual-80-bands, --no-visual-80-bands 
                                 显示 80 段而非 20 段
                                 (默认启用)
          显示 80 段而非 20 段
      --visual-peaks, --no-visual-peaks 
                                 在分析器中绘制峰值
                                 (默认启用)
          在分析器中绘制峰值
   频谱仪:
      --spect-show-original, --no-spect-show-original 
                                 启用原始图形频谱
                                 (默认禁用)
          启用频谱仪的「flat」频谱分析。
      --spect-show-base, --no-spect-show-base 
                                 绘制波段基底
                                 (默认启用)
          绘制波段基底
      --spect-radius=<整数>        基本像素半径
          定义基本波段 (开始) 的半径大小,单位为像素。
      --spect-sections=<整数 [1 .. 2147483647]> 
                                 频谱区域
          频谱将存在多少个区域。
      --spect-color=<整数>         V 平面颜色
          YUV 颜色立方体在 V 平面的移位 ( 0 - 127 )--spect-show-bands, --no-spect-show-bands 
                                 在频谱仪中绘制波段
                                 (默认启用)
          在频谱仪中绘制波段
      --spect-80-bands, --no-spect-80-bands 
                                 显示 80 段而非 20 段
                                 (默认启用)
          显示 80 段而非 20 段
      --spect-separ=<整数>         波段之间的空白像素数量。
          波段之间的空白像素数量。
      --spect-amp=<整数>           增强
          修改波段高度的系数。
      --spect-show-peaks, --no-spect-show-peaks 
                                 在分析器中绘制峰值
                                 (默认启用)
          在分析器中绘制峰值
      --spect-peak-width=<整数>    峰值扩展宽度
          对峰值宽度增加或减少像素。
      --spect-peak-height=<整数>   峰值高度
          峰值项目的总像素高度。

 libprojectM 效果 (projectm)
      --projectm-preset-path=<字符串> 
                                 projectM 预设路径
          projectM 预设文件目录路径
      --projectm-title-font=<字符串> 
                                 标题字体
          用于标题的字体
      --projectm-menu-font=<字符串> 字体菜单
          用于菜单的字体
      --projectm-width=<整数>      视频宽度
          视频窗口的宽度,单位为像素。
      --projectm-height=<整数>     视频高度
          视频窗口的高度,单位为像素。
      --projectm-meshx=<整数>      mesh 宽度
          mesh 宽度,单位为像素。
      --projectm-meshy=<整数>      mesh 高度
          mesh 高度,单位为像素。
      --projectm-texture-size=<整数> 
                                 纹理大小
          纹理大小,单位为像素。

 Goom 效果 (goom)
      --goom-width=<整数>          Goom 显示宽度
          允许您设置 Goom 显示的分辨率 (分辨率越大越漂亮但消耗 CPU 资源也更多)--goom-height=<整数>         Goom 显示高度
          允许您设置 Goom 显示的分辨率 (分辨率越大越漂亮但消耗 CPU 资源也更多)--goom-speed=<整数 [1 .. 10]> 
                                 Goom 动画速度
          允许您设置动画速度 (1 到 10 之间,默认为 6)。

 3D OpenGL 频谱可视化 (glspectrum)
      --glspectrum-width=<整数>    视频宽度
          可视化窗口的宽度,单位为像素。
      --glspectrum-height=<整数>   视频高度
          可视化窗口的高度,单位为像素。

 墙视频滤镜 (wall)
      --wall-cols=<整数 [1 .. 15]> 列数
          视频画面在水平方向切割的窗口数量。
      --wall-rows=<整数 [1 .. 15]> 行数
          视频画面在垂直方向切割的窗口数量。
      --wall-active=<字符串>        活动窗口
          活动窗口列表(用逗号分隔),默认为全部
      --wall-element-aspect=<字符串> 
                                 元素宽高比
          构成墙的各显示器的宽高比。

 Panoramix: 边界重叠式视频墙 视频滤镜 (panoramix)
 将视频画面切割为多个窗口以便在屏幕墙上显示
      --panoramix-cols=<整数 [-1 .. 15]> 
                                 列数
          选择视频画面在水平方向切割的视频窗口数量
      --panoramix-rows=<整数 [-1 .. 15]> 
                                 行数
          选择视频画面在垂直方向切割的视频窗口数量
      --panoramix-bz-length=<整数 [0 .. 100]> 
                                 重叠区域长度 (%)
          选择重合部分的长度,单位为百分比
      --panoramix-bz-height=<整数 [0 .. 100]> 
                                 重叠区域高度 (%)
          选择重合部分的高度,单位为百分比 (例如 2x2 的墙)
      --panoramix-attenuate, --no-panoramix-attenuate 
                                 衰减
                                 (默认启用)
          如果您希望由此插件负责重合部分的衰减,请选择本选项 (如果选项未选中,衰减将由 OpenGL 完成)
      --panoramix-bz-begin=<整数 [0 .. 100]> 
                                 衰减, 开头 (%)
          选择重合部分开头的拉格朗日系数,单位为百分比
      --panoramix-bz-middle=<整数 [0 .. 100]> 
                                 衰减, 中间 (%)
          选择重合部分中部的拉格朗日系数,单位为百分比
      --panoramix-bz-end=<整数 [0 .. 100]> 
                                 衰减, 末尾 (%)
          选择重合部分末尾的拉格朗日系数,单位为百分比
      --panoramix-bz-middle-pos=<整数 [1 .. 99]> 
                                 中间位置 (%)
          选择重合部分中间点 (拉格朗日系数) 的百分比位置 (50 为中间)
      --panoramix-bz-gamma-red=<浮点 [0.000000 .. 5.000000]> 
                                 伽玛 (红) 矫正
          选择重合部分的伽玛矫正 (红或 Y 成分)
      --panoramix-bz-gamma-green=<浮点 [0.000000 .. 5.000000]> 
                                 伽玛 (绿) 矫正
          选择重合部分的伽玛矫正 (绿或 U 成分)
      --panoramix-bz-gamma-blue=<浮点 [0.000000 .. 5.000000]> 
                                 伽玛 (蓝) 矫正
          选择重合部分的伽玛矫正 (蓝或 V 成分)
      --panoramix-bz-blackcrush-red=<整数 [0 .. 255]> 
                                 用于红色的黑压挤
          选择重合部分的黑压挤 (红或 Y 成分)
      --panoramix-bz-blackcrush-green=<整数 [0 .. 255]> 
                                 用于绿色的黑压挤
          选择重合部分的黑压挤 (绿或 U 成分)
      --panoramix-bz-blackcrush-blue=<整数 [0 .. 255]> 
                                 用于蓝色的黑压挤
          选择重合部分的黑压挤 (蓝或 V 成分)
      --panoramix-bz-whitecrush-red=<整数 [0 .. 255]> 
                                 用于红色白压挤
          选择重合部分的白压挤 (红或 Y 成分)
      --panoramix-bz-whitecrush-green=<整数 [0 .. 255]> 
                                 用于绿色的白压挤
          选择重合部分的白压挤 (绿或 U 成分)
      --panoramix-bz-whitecrush-blue=<整数 [0 .. 255]> 
                                 用于蓝色的白压挤
          选择重合部分的白压挤 (蓝或 V 成分)
      --panoramix-bz-blacklevel-red=<整数 [0 .. 255]> 
                                 红色的黑等级
          选择重合部分的黑等级 (红或 Y 成分)
      --panoramix-bz-blacklevel-green=<整数 [0 .. 255]> 
                                 绿色的黑等级
          选择重合部分的黑等级 (绿或 U 成分)
      --panoramix-bz-blacklevel-blue=<整数 [0 .. 255]> 
                                 蓝色的黑等级
          选择重合部分的黑等级 (蓝或 V 成分)
      --panoramix-bz-whitelevel-red=<整数 [0 .. 255]> 
                                 红色的白等级
          选择重合部分的白等级 (红或 Y 成分)
      --panoramix-bz-whitelevel-green=<整数 [0 .. 255]> 
                                 绿色的白等级
          选择重合部分的白等级 (绿或 U 成分)
      --panoramix-bz-whitelevel-blue=<整数 [0 .. 255]> 
                                 蓝色的白等级
          选择重合部分的白等级 (蓝或 V 成分)
      --panoramix-active=<字符串>   活动窗口
          活动窗口列表(用逗号分隔),默认为全部

 克隆视频滤镜 (clone)
 将视频复制到多个窗口和/或视频输出模块
      --clone-count=<整数>         克隆数量
          要克隆的视频窗口数量。
      --clone-vout-list=<字符串>    视频输出模块
          您可以指定用于克隆的视频输出模块。输入逗号分隔的模块列表。

 YUV 视频输出 (yuv)
      --yuv-file=<字符串>           设备,先进先出(fifo)或文件名
          写入 yuv 帧的目的设备、fifo 或文件名。
      --yuv-chroma=<字符串>         使用的色度
          强制输出使用指定的色度。
      --yuv-yuv4mpeg2, --no-yuv-yuv4mpeg2 
                                 添加 YUV4MPEG2 头
                                 (默认禁用)
          YUV4MPEG2 头与 mplayer yuv 视频输出兼容,要求 fourcc 为 YV12/I420。

 用于 OpenGL 的 WGL 扩展 (wgl)
      --gpu-affinity=<整数>        GPU 关联
          GPU 关联

 显存输出 (vmem)
      --vmem-width=<整数>          宽度
          显存缓冲宽度。
      --vmem-height=<整数>         高度
          显存缓冲高度。
      --vmem-pitch=<整数>          行距
          显存缓冲的行距,单位为字节。
      --vmem-chroma=<字符串>        色度
          内存图像的输出色度,用 4 个字符的字符串表示,例如「RV32」。

 dummy 视频输出 (vdummy)
      --dummy-chroma=<字符串>       dummy 图像色度格式
          强制 dummy 视频输出使用指定的色度格式创建图像,而非为了尝试提升性能而使用最高效的格式。

 OpenGL 视频输出 (gl)
      --gl={any,wgl,none}        OpenGL 扩展
          用来调用开放图形库 (OpenGL) 的扩展。
      --glconv={any,direct3d9,none} 
                                 Open GL/GLES hardware converter
          Force a "glconv" module.
   Colorspace conversion:
      --rendering-intent={0 (Perceptual), 1 (Relative colorimetric), 2 (Absolute colorimetric), 3 (饱和度)} 
                                 Rendering intent for color conversion
          The algorithm used to convert between color spaces
      --target-prim={0 (Unknown primaries), 1 (ITU-R Rec. BT.601 (525-line = NTSC, SMPTE-C)), 2 (ITU-R Rec. BT.601 (625-line = PAL, SECAM)), 3 (ITU-R Rec. BT.709 (HD), also sRGB), 4 (ITU-R Rec. BT.470 M), 5 (ITU-R Rec. BT.2020 (UltraHD)), 6 (Apple RGB), 7 (Adobe RGB (1998)), 8 (ProPhoto RGB (ROMM)), 9 (CIE 1931 RGB primaries), 10 (DCI-P3 (Digital Cinema)), 11 (Panasonic V-Gamut (VARICAM)), 12 (Sony S-Gamut)} 
                                 Display primaries
          The primaries associated with the output display
      --target-trc={0 (Unknown gamma), 1 (ITU-R Rec. BT.1886 (CRT emulation + OOTF)), 2 (IEC 61966-2-4 sRGB (CRT emulation)), 3 (Linear light content), 4 (Pure power gamma 1.8), 5 (Pure power gamma 2.2), 6 (Pure power gamma 2.8), 7 (ProPhoto RGB (ROMM)), 8 (ITU-R BT.2100 PQ (perceptual quantizer), aka SMPTE ST2048), 9 (ITU-R BT.2100 HLG (hybrid log-gamma), aka ARIB STD-B67), 10 (Panasonic V-Log (VARICAM)), 11 (Sony S-Log1), 12 (Sony S-Log2)} 
                                 Display gamma / transfer function
          The gamma/transfer function associated with the output display
   Tone mapping:
      --tone-mapping={3 (Hable (filmic mapping, recommended)), 1 (Mobius (linear + knee)), 2 (Reinhard (simple non-linear)), 4 (Gamma-Power law), 5 (Linear stretch (peak to peak)), 0 (Hard clip out-of-gamut)} 
                                 Tone-mapping algorithm
          Algorithm to use when converting from wide gamut to standard gamut, or from HDR to SDR
      --tone-mapping-param=<浮点>  Tone-mapping parameter
          This parameter can be used to tune the tone-mapping curve. Specifics depend on the curve used.
      --tone-mapping-warn, --no-tone-mapping-warn 
                                 Highlight clipped pixels
                                 (默认禁用)
          Debugging tool to indicate which pixels were clipped as part of the tone mapping process.
   Dithering:
      --dither-algo={-1 (禁用), 0 (Blue noise), 3 (White noise), 1 (Bayer matrix (ordered dither))} 
                                 Dithering algorithm
          The algorithm to use when dithering to a lower bit depth (degrades performance on some platforms).
      --dither-depth=<整数 [0 .. 16]> 
                                 Dither depth override (0 = framebuffer depth)
          Overrides the detected framebuffer depth. Useful to dither to lower bit depths than otherwise required.
      --tone-mapping-desat=<浮点>  Tone-mapping desaturation coefficient
          How strongly to desaturate overbright colors towards white. 0.0 disables this behavior.

 用于 Windows 的 OpenGL 视频输出 (glwin32)
      --glconv={any,direct3d9,none} 
                                 Open GL/GLES hardware converter
          Force a "glconv" module.
   Colorspace conversion:
      --rendering-intent={0 (Perceptual), 1 (Relative colorimetric), 2 (Absolute colorimetric), 3 (饱和度)} 
                                 Rendering intent for color conversion
          The algorithm used to convert between color spaces
      --target-prim={0 (Unknown primaries), 1 (ITU-R Rec. BT.601 (525-line = NTSC, SMPTE-C)), 2 (ITU-R Rec. BT.601 (625-line = PAL, SECAM)), 3 (ITU-R Rec. BT.709 (HD), also sRGB), 4 (ITU-R Rec. BT.470 M), 5 (ITU-R Rec. BT.2020 (UltraHD)), 6 (Apple RGB), 7 (Adobe RGB (1998)), 8 (ProPhoto RGB (ROMM)), 9 (CIE 1931 RGB primaries), 10 (DCI-P3 (Digital Cinema)), 11 (Panasonic V-Gamut (VARICAM)), 12 (Sony S-Gamut)} 
                                 Display primaries
          The primaries associated with the output display
      --target-trc={0 (Unknown gamma), 1 (ITU-R Rec. BT.1886 (CRT emulation + OOTF)), 2 (IEC 61966-2-4 sRGB (CRT emulation)), 3 (Linear light content), 4 (Pure power gamma 1.8), 5 (Pure power gamma 2.2), 6 (Pure power gamma 2.8), 7 (ProPhoto RGB (ROMM)), 8 (ITU-R BT.2100 PQ (perceptual quantizer), aka SMPTE ST2048), 9 (ITU-R BT.2100 HLG (hybrid log-gamma), aka ARIB STD-B67), 10 (Panasonic V-Log (VARICAM)), 11 (Sony S-Log1), 12 (Sony S-Log2)} 
                                 Display gamma / transfer function
          The gamma/transfer function associated with the output display
   Tone mapping:
      --tone-mapping={3 (Hable (filmic mapping, recommended)), 1 (Mobius (linear + knee)), 2 (Reinhard (simple non-linear)), 4 (Gamma-Power law), 5 (Linear stretch (peak to peak)), 0 (Hard clip out-of-gamut)} 
                                 Tone-mapping algorithm
          Algorithm to use when converting from wide gamut to standard gamut, or from HDR to SDR
      --tone-mapping-param=<浮点>  Tone-mapping parameter
          This parameter can be used to tune the tone-mapping curve. Specifics depend on the curve used.
      --tone-mapping-warn, --no-tone-mapping-warn 
                                 Highlight clipped pixels
                                 (默认禁用)
          Debugging tool to indicate which pixels were clipped as part of the tone mapping process.
   Dithering:
      --dither-algo={-1 (禁用), 0 (Blue noise), 3 (White noise), 1 (Bayer matrix (ordered dither))} 
                                 Dithering algorithm
          The algorithm to use when dithering to a lower bit depth (degrades performance on some platforms).
      --dither-depth=<整数 [0 .. 16]> 
                                 Dither depth override (0 = framebuffer depth)
          Overrides the detected framebuffer depth. Useful to dither to lower bit depths than otherwise required.
      --tone-mapping-desat=<浮点>  Tone-mapping desaturation coefficient
          How strongly to desaturate overbright colors towards white. 0.0 disables this behavior.

 Flaschen-Taschen video output (flaschen)
      --flaschen-display=<字符串>   Flaschen-Taschen display address
          IP address or hostname of the Flaschen-Taschen display. Something like ft.noise or ftkleine.noise
      --flaschen-width=<整数>      宽度
          视频宽度
      --flaschen-height=<整数>     高度
          视频高度

 嵌入窗口视频 (drawable)
      --drawable-hwnd=<整数>       窗口句柄 (HWND)
          视频将嵌入在指定的现有窗口。如果为零,则将创建新窗口。

 DirectX (DirectDraw) 视频输出 (directdraw)
 推荐供 Windows XP 使用的视频输出。与 Vista 的 Aero 接口不兼容
      --directx-hw-yuv, --no-directx-hw-yuv 
                                 使用硬件 YUV->RGB 转换
                                 (默认启用)
          尝试为 YUV->RGB 转换使用硬件加速。此选项在使用覆盖层时没有任何效果。
      --directx-overlay, --no-directx-overlay 
                                 覆盖视频输出
                                 (默认启用)
          覆盖层是您显卡的硬件加速功能 (直接渲染视频的能力)。VLC 默认会尝试使用它。
      --directx-use-sysmem, --no-directx-use-sysmem 
                                 在系统内存中使用系统缓存
                                 (默认禁用)
          在系统内存中(而不是显存)创建视频缓冲。不推荐这么做,因为通常使用显存可从硬件加速中更多地获益 (如调整大小或 YUV->RGB 转换)。此选项在使用覆盖层时将不起任何作用。
      --directx-3buffering, --no-directx-3buffering 
                                 为覆盖使用三重缓冲
                                 (默认启用)
          在使用 YUV 覆盖时尝试使用三重缓冲。可获得更高的视频质量 (不闪烁)--directx-device={,display,\\.\DISPLAY1} 
                                 指定显示设备名称
          在多显示器配置中您可以指定希望打开视频窗口的显示器的 Windows 设备名称。例如,「\\.\DISPLAY1」或「\\.\DISPLAY2」。

 Direct3D9 视频输出 (direct3d9)
 推荐供 Windows Vista 及更新版本使用的视频输出
      --direct3d9-hw-blending, --no-direct3d9-hw-blending 
                                 使用硬件合成支持
                                 (默认启用)
          尝试为字幕/OSD 合成使用硬件加速。
      --direct3d9-shader={Disabled,Invert,Grayscale,Convert601to709,GammaCorrection18,GammaCorrection22,GammaCorrectionBT709,WidenColorSpace,HLSL File} 
                                 像素着色器
          选择要应用的像素着色器。
      --direct3d9-shader-file=<字符串> 
                                 HLSL 文件路径
          HLSL 文件路径,文件中包含单个像素着色器。

 Direct3D11 视频输出 (direct3d11)
 Windows 8 及更高版本推荐使用的视频输出
      --direct3d11-hw-blending, --no-direct3d11-hw-blending 
                                 使用硬件合成支持
                                 (默认启用)
          尝试为字幕/OSD 合成使用硬件加速。

 视频变换滤镜 (transform)
 旋转或翻转视频
      --transform-type={90,180,270,hflip,vflip,transpose,antitranspose} 
                                 变换类型
          变换类型

 锐化视频滤镜 (sharpen)
 增加轮廓间的对比度。
      --sharpen-sigma=<浮点 [0.000000 .. 2.000000]> 
                                 锐化强度 (0-2)
          设置锐化强度,在 0 和 2 之间。默认为 0.05。

 棕褐色视频滤镜 (sepia)
 通过应用棕褐色效果给视频更温暖的色调
      --sepia-intensity=<整数 [0 .. 255]> 
                                 棕褐色强度
          棕褐色效果的强度

 场景视频滤镜 (scene)
 将视频发至图片文件
      --scene-format=<字符串>       图像格式
          输出图像的格式 (png, jpeg, ...)--scene-width=<整数>         图像宽度
          您可以强制指定图像的宽度。VLC 默认 (-1) 自动适应视频参数。
      --scene-height=<整数>        图像高度
          您可以强制指定图像的高度。VLC 默认 (-1) 自动适应视频参数。
      --scene-prefix=<字符串>       文件名前缀
          输出图像文件名的前缀。如替换不为真,输出文件名将是 "前缀数字.格式" 的形式。
      --scene-path=<字符串>         目录路径前缀
          图像文件保存的目录路径。若不设置,图像将自动保存到用户的主目录。
      --scene-replace, --no-scene-replace 
                                 总是写入到相同的文件中
                                 (默认禁用)
          总是写入到相同的文件中,而不是为每幅图像创建一个文件。此情况下,文件名后将不添加数字。
      --scene-ratio=<整数 [1 .. 2147483647]> 
                                 录制比率
          录制图像的比率。3 表示三幅图像中的一幅将被录制。

 旋转视频滤镜 (rotate)
      --rotate-angle=<浮点>        角度值
          角度值 (0 到 359)
      --rotate-use-motion, --no-rotate-use-motion 
                                 使用运动传感器
                                 (默认禁用)
          使用 HDAPS, AMS, APPLESMC 或 UNIMOTION 运动传感器旋转视频

 解谜交互游戏视频滤镜 (puzzle)
      --puzzle-rows=<整数 [2 .. 42]> 
                                 解谜游戏的行数
          解谜游戏的行数
      --puzzle-cols=<整数 [2 .. 42]> 
                                 解谜游戏的列数
          解谜游戏的列数
      --puzzle-border=<整数 [0 .. 40]> 
                                 边框
          原图边框宽度。
      --puzzle-preview, --no-puzzle-preview 
                                 小预览
                                 (默认禁用)
          显示小预览。
      --puzzle-preview-size=<整数 [0 .. 100]> 
                                 小预览大小
          显示小预览的大小 (源的百分比)--puzzle-shape-size=<整数 [0 .. 100]> 
                                 切片边缘形状大小
          切片边缘弯曲大小
      --puzzle-auto-shuffle=<整数 [0 .. 30000]> 
                                 自动重排
          游戏过程中自动重排的延时
      --puzzle-auto-solve=<整数 [0 .. 30000]> 
                                 自动求解
          游戏过程中自动求解的延时
      --puzzle-rotation={0 (0), 1 (0/180), 2 (0/90/180/270), 3 (0/90/180/270/mirror)} 
                                 旋转
          旋转参数: none;180;90-270;mirror
      --puzzle-mode={0 (拼图), 1 (滑块), 2 (交换), 3 (互换)} 
                                 游戏模式
          选择游戏模式变种,从拼图到滑块类应有尽有。

 视频后处理滤镜 (postproc)
      --postproc-q=<整数 [0 .. 6]> 后期处理质量
          后处理的质量。有效范围为 0 (禁用) 到 6 (最高) 级别越高,需要的 CPU 资源也越多,但产生的画面质量也更高。 对于默认的滤镜链,其值可映射到下述滤镜: 1: hb, 2-4: hb+vb, 5-6:
          hb+vb+dr
      --postproc-name=<字符串>      FFmpeg 后处理滤镜链
          FFmpeg 后处理滤镜链

 色调简化视频滤镜 (posterize)
 通过减少颜色数量将视频海报化
      --posterize-level=<整数 [2 .. 256]> 
                                 色调简化级别
          色调简化级别 (颜色数为此值的立方)

 运动模糊滤镜 (motionblur)
      --blur-factor=<整数 [1 .. 127]> 
                                 模糊系数 (1-127)
          模糊程度,从 1 到 127。

 镜像视频滤镜 (mirror)
 将视频切割为两个相同的部分,就像在镜子中一样
      --mirror-split={0 (垂直), 1 (水平)} 
                                 镜像方向
          定义镜像切割的方向。 可以是垂直或水平。
      --mirror-direction={0 (从左到右/从上到下), 1 (从右到左/从下往上)} 
                                 方向
          镜像方向。

 高质量 3D 降噪器滤镜 (hqdn3d)
      --hqdn3d-luma-spat=<浮点 [0.000000 .. 254.000000]> 
                                 空间亮度强度 (0-254)
          空间亮度强度 (0-254)
      --hqdn3d-chroma-spat=<浮点 [0.000000 .. 254.000000]> 
                                 空间色度强度 (0-254)
          空间色度强度 (0-254)
      --hqdn3d-luma-temp=<浮点 [0.000000 .. 254.000000]> 
                                 时序亮度强度 (0-254)
          时序亮度强度 (0-254)
      --hqdn3d-chroma-temp=<浮点 [0.000000 .. 254.000000]> 
                                 时序色度强度 (0-254)
          时序色度强度 (0-254)

 颗粒视频滤镜 (grain)
 添加经过滤的高斯噪点
      --grain-variance=<浮点 [0.000000 .. 10.000000]> 
                                 差量
          高斯噪点差量
      --grain-period-min=<整数 [1 .. 64]> 
                                 最小限制
          噪点颗粒的最小限制,单位为像素。
      --grain-period-max=<整数 [1 .. 64]> 
                                 最大限制
          噪点颗粒的最大限制,单位为像素。

 梯度视频滤镜 (gradient)
 应用色彩梯度或边界侦测效果
      --gradient-mode={gradient,edge,hough} 
                                 失真模式
          失真模式,可以是「gradient(梯度)」「edge(边缘)」或「hough(霍夫变换)」。
      --gradient-type=<整数 [0 .. 1]> 
                                 梯度图像类型
          梯度图像类型 (0 或 1)。 0 将使图像变为白色,1 将保持颜色。
      --gradient-cartoon, --no-gradient-cartoon 
                                 应用卡通效果
                                 (默认启用)
          应用卡通效果。仅在「梯度」与「边界」模式下生效。

 gradfun 视频滤镜 (gradfun)
 去色带算法
      --gradfun-radius=<整数 [4 .. 32]> 
                                 半径
          半径,单位为像素
      --gradfun-strength=<浮点 [0.510000 .. 255.000000]> 
                                 强度
          用于修改像素值的强度

 高斯模糊视频滤镜 (gaussianblur)
 添加模糊效果
      --gaussianblur-sigma=<浮点 [0.010000 .. 4096.000000]> 
                                 高斯标准差
          高斯标准偏差。模糊将根据各方向 3*sigma 的像素计算。

 FPS 转换视频滤镜 (fps)
      --fps-fps=<字符串>            帧率
          帧率

 提取 RGB 成分视频滤镜 (extract)
      --extract-component={16711680 (红色), 65280 (绿色), 255 (蓝色)} 
                                 要提取的 RGB 成分
          要提取的 RGB 成分。0 为红、1 为绿、2 为蓝。

 擦除视频滤镜 (erase)
 以图片为掩码移除视频区域
      --erase-mask=<字符串>         图像掩码
          图像掩码。alpha 值大于 50% 的像素将被擦除。
      --erase-x=<整数>             X 坐标
          掩码的 X 坐标。
      --erase-y=<整数>             Y 坐标
          掩码的 Y 坐标。

 反交错视频滤镜 (deinterlace)
      --sout-deinterlace-mode={discard,blend,mean,bob,linear,x,yadif,yadif2x,phosphor,ivtc} 
                                 串流反交错模式
          要用于串流的反交错模式。
      --sout-deinterlace-phosphor-chroma={1 (最晚(Latest)), 2 (行交替(AltLine)), 3 (混合), 4 (色度采样提升(Upconvert))} 
                                 用于 4:2:0 输入的 Phosphor 色度模式
          选择如何处理落在输入帧边界的输出帧的颜色。   Latest(最晚): 只提取新 (亮) 场的色度。适合交错输入,例如录像机生成的视频。   AltLine(行交替):
          色度的第一行从顶场提取,第二行从底场提取,如此类推。  默认模式,适合 NTSC telecine 输入 (动画 DVD 等)。   Blend(合并): 取输入场色度的平均值。可能会同时造成新 (亮) 场颜色失真。 
           Upconvert(色度采样提升): 以 4:2:2 格式输出 (各场色度独立)。最佳模拟,但需要更多的 CPU 资源与内存带宽。
      --sout-deinterlace-phosphor-dimmer={1 (关), 2 (低), 3 (中), 4 (高)} 
                                 Phosphor 旧场暗化强度
          控制暗化滤镜的强度,用于 Phosphor 帧率加倍器模拟 CRT TV 旧场的荧光衰减。默认: 低。

 视频裁剪滤镜 (croppadd)
   裁剪:
      --croppadd-croptop=<整数 [0 .. 2147483647]> 
                                 从顶部开始裁剪的像素
          从图像顶部开始裁剪的像素数量。
      --croppadd-cropbottom=<整数 [0 .. 2147483647]> 
                                 从底部开始裁剪的像素
          从图像底部开始裁剪的像素数量。
      --croppadd-cropleft=<整数 [0 .. 2147483647]> 
                                 从左侧开始裁剪的像素
          从图像左侧开始裁剪的像素数量。
      --croppadd-cropright=<整数 [0 .. 2147483647]> 
                                 从右侧开始裁剪的像素
          从图像右侧开始裁剪的像素数量。
   添加(padd):
      --croppadd-paddtop=<整数 [0 .. 2147483647]> 
                                 要添加到顶部的像素
          图像裁剪后要添加到顶部的像素数量。
      --croppadd-paddbottom=<整数 [0 .. 2147483647]> 
                                 要添加到底部的像素
          图像裁剪后要添加到底部的像素数量。
      --croppadd-paddleft=<整数 [0 .. 2147483647]> 
                                 要添加到左侧的像素
          图像裁剪后要添加到左侧的像素数量。
      --croppadd-paddright=<整数 [0 .. 2147483647]> 
                                 要添加到右侧的像素
          图像裁剪后要添加到右侧的像素数量。

 色彩阈值滤镜 (colorthres)
 选择视频中的颜色
      --colorthres-color={16711680 (红色), 16711935 (紫红色), 16776960 (黄色), 65280 (酸橙绿色), 255 (蓝色), 65535 (水蓝色)} 
                                 颜色
          与该颜色相似的颜色将被保留,其它的将被灰度化。必须为十六进制的值 (类似 HTML 颜色)。前两个字符是红,然后是绿、蓝。#000000 = 黑、#FF0000 = 红、#00FF00 = 绿、#FFFF00 = 黄
          (红 + 绿)#FFFFFF = 白
      --colorthres-saturationthres=<整数> 
                                 饱和度阈值
      --colorthres-similaritythres=<整数> 
                                 相似阈值

 画布视频滤镜 (canvas)
 自动调整大小并为视频加边
      --canvas-width=<整数 [0 .. 2147483647]> 
                                 输出宽度
          输出 (画布) 图像宽度
      --canvas-height=<整数 [0 .. 2147483647]> 
                                 输出高度
          输出 (画布) 图像高度
      --canvas-aspect=<字符串>      输出画面宽高比
          设置画布的画面宽高比。如果留空,则认为画布的 SAR 与输入画面的相同。
      --canvas-padd, --no-canvas-padd 
                                 视频加边
                                 (默认启用)
          如果启用,视频将在缩放后加边以适应画布。否则,视频将缩放再裁剪以适应画布。

 蓝幕视频滤镜 (bluescreen)
 此效果,又称为「绿幕」或「关键色度」,将前景图像中的「蓝色部分」与背景混合 (类似于天气预报)。您可以选择用于混合的「关键」颜色 (默认为蓝色)--bluescreen-u=<整数 [0 .. 255]> 
                                 蓝幕 U 值
          蓝幕关键色 (YUV 值) 中的「U」值。从 0 到 255。默认为 120,即蓝色。
      --bluescreen-v=<整数 [0 .. 255]> 
                                 蓝幕 V 值
          蓝幕关键色 (YUV 值) 中的「V」值。从 0 到 255。默认为 90,即蓝色。
      --bluescreen-ut=<整数 [0 .. 255]> 
                                 蓝幕 U 容忍
          蓝幕混合器在 U 平面的颜色差异容忍值。10 到 20 之间的值似乎比较明智。
      --bluescreen-vt=<整数 [0 .. 255]> 
                                 蓝幕 V 容忍
          蓝幕混合器在 V 平面的颜色差异容忍值。10 到 20 之间的值似乎比较明智。

 合成跑分滤镜 (blendbench)
   跑分:
      --blendbench-loops=<整数>    合成次数
          执行合成的次数
      --blendbench-alpha=<整数 [0 .. 255]> 
                                 合成图像的 Alpha 值
          要合成图像的 Alpha 值
   基本图像:
      --blendbench-base-image=<字符串> 
                                 要合成的图像
          将被合成的图像
      --blendbench-base-chroma=<字符串> 
                                 基本图像的色度
          载入基本图像使用的色度模式
   合成图像:
      --blendbench-blend-image=<字符串> 
                                 将被合成的图像
          将被合成到基本图像的图像
      --blendbench-blend-chroma=<字符串> 
                                 合成图像的色度
          载入合成图像使用的色度模式

 球视频滤镜 (ball)
 增强现实球游戏
      --ball-color={red,green,blue,white} 
                                 球颜色
          球颜色
      --ball-speed=<整数 [1 .. 15]> 
                                 球速
          设置球速度,位移像素数/帧。
      --ball-size=<整数 [5 .. 30]> 球大小
          设置球的半径长度,单位为像素
      --ball-gradient-threshold=<整数 [1 .. 200]> 
                                 梯度阈值
          设置边界计算的梯度阈值。
      --ball-edge-visible, --no-ball-edge-visible 
                                 边界可见性
                                 (默认启用)
          设置边界可见度。

 antiflicker 视频滤镜 (antiflicker)
      --antiflicker-window-size=<整数 [0 .. 100]> 
                                 窗口尺寸
          帧数 (0 到 100)
      --antiflicker-softening-size=<整数 [0 .. 31]> 
                                 柔化值
          平滑处理帧数 (0 到 30)

 将 3D 画面转换为分色立体图像的视频滤镜 (anaglyph)
      --anaglyph-scheme={red-green,red-blue,red-cyan,trioscopic,magenta-cyan} 
                                 色彩方案
          定义眼镜的色彩方案

 Alpha 掩码视频滤镜 (alphamask)
 使用图像的 alpha 通道作为透明掩码。
      --alphamask-mask=<字符串>     透明掩码
          Alpha 混合透明掩码。使用一个 png alpha 通道。

 图像属性滤镜 (adjust)
      --contrast=<浮点 [0.000000 .. 2.000000]> 
                                 图像对比度 (0-2)
          设置图像对比度, 在 0 和 2 之间。默认为 1。
      --brightness=<浮点 [0.000000 .. 2.000000]> 
                                 图像亮度 (0-2)
          设置图像亮度, 在 0 和 2 之间。默认为 1。
      --hue=<浮点 [-180.000000 .. 180.000000]> 
                                 图像色调 (-180..180)
          设置图像色调,-180 到 180。默认为 0。
      --saturation=<浮点 [0.000000 .. 3.000000]> 
                                 图像饱和度 (0-3)
          设置图像饱和度, 在 0 和 3 之间。默认为 1。
      --gamma=<浮点 [0.010000 .. 10.000000]> 
                                 图像色度 (0-10)
          设置图像色度,在 0.01 和 10 之间。默认为 1。
      --brightness-threshold, --no-brightness-threshold 
                                 亮度阈值
                                 (默认禁用)
          启用此模式时,像素将被显示为黑色和白色。阈值将使用下面定义的亮度。

主要是用了location,还有set hwnd两个函数。