AVInputFormat *ifmt=av_find_input_format(“x11grab”); avformat_open_input(&pInputFormatContext,“:0.0”,ifmt,&options)截副屏怎么改
时间: 2024-10-16 17:10:42 浏览: 24
ffmpeg编程读取摄像头信息,保存为裸yuv420p、yuyv422视频流
4星 · 用户满意度95%
在使用FFmpeg处理屏幕抓取(即从X11系统捕获视频流)时,`av_find_input_format("x11grab")`用于查找对应的输入格式描述符。然而,如果你想改变从默认显示器截取屏幕,`":0.0"`这个地址表示获取默认显示设备,你需要指定具体的显示器编号。
如果你想要更改显示器源,可以将`:0.0`替换为一个特定的显示器ID,例如:
```c++
AVInputFormat *ifmt = av_find_input_format("x11grab");
int display_id = 0; // 如果你想选择第一台显示器,如果有多台则自行替换
char *display_device = "DISPLAY="; // 前缀字符串
av_strlcat(display_device, ":", sizeof(display_device)); // 添加冒号
av_strlcat(display_device, std::to_string(display_id), sizeof(display_device)); // 添加显示器编号
// 然后在打开输入上下文时使用修改后的设备名
avformat_open_input(&pInputFormatContext, display_device, ifmt, &options);
free(display_device); // 注意释放分配的内存
```
记得替换`display_id`为你需要的具体显示器编号,然后运行程序。如果遇到错误,可能需要检查FFmpeg是否支持指定的显示器或权限问题。
阅读全文