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与博主@晓码自在合作编写:
从代码中可以看出,有以下几个问题:
解决方法: 在创建libvlc_media_player_t对象后,调用libvlc_media_player_set_hwnd()函数设置其HWND为MFC dialog窗口的句柄,而不是调用libvlc_media_player_set_xwindow()设置X窗口ID。这样可以使视频输出到MFC窗口中。
这可能是由于网络连接或其他原因导致的。可以在Timer事件回调函数中不停地调用libvlc_media_player_play()函数来重播视频,这可以避免视频播放结束后停止的问题。
可以调用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的默认输出窗口导致的。要解决这个问题,你可以尝试使用以下方法之一:
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
函数将视频渲染到指定的窗口。
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窗口重叠在一起,导致视频只显示了最初一帧并停止。建议尝试以下方法:
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);
}
如果仍然出现问题,请尝试使用其他 VLC 的 Video output 模块,例如 Direct2D,或 OpenGL。
如果以上方法不起作用,还可以试试使用其他的视频播放库,例如 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两个函数。