ffmpeg编码中的一些问题

发布时间 2023-07-05 22:04:28作者: 时间在哪

1.在查看设备支持的dshow设备时出现:

[dshow @ 00000286dc5e7e40] Could not enumerate video devices (or none found).

解决:

下载screen capture recorder并安装(github上有),然后就可以正常使用。
2.avformat_open_input打开输入设备时报错返回码为-5?源码如下:
extern "C" {
#include <libavformat/avformat.h>
#include <libavutil/error.h>
}

 AVFormatContext* ctx = nullptr;
 const char* audio_device = "virtual-audio-capturer";
 int ret = 0;
 if((ret = avformat_open_input(&ctx, audio_device, fmt, nullptr)) != 0) {
     char buff[1024] = {0};
     ret = av_strerror(ret, buff, 1024);
     qWarning() << "无法打开屏幕输入设备, ret:" << buff;
     return;
 }

然后使用av_strerror得到错误码,并且在程序结束后给出如下打印:

无法打开屏幕输入设备, ret: I/O error
[dshow @ 0000022f68e0c040] Malformed dshow input string.

搜索发现是avformat_open_input第二个参数填写错误,正确地应该是"audio=virtual-audio-capturer"。