ffmpeg使用麦克风设备出现的问题

在使用ffmpeg从dshow设备获取麦克风输入时遇到找不到输出pin的错误。问题出在尝试从视频设备中搜索音频设备,特别是麦克风(SteamStreamingMicrophone)。经过检查,发现是由于系统权限问题导致无法访问设备。开启权限后,问题得到解决。
摘要由CSDN通过智能技术生成

在使用ffmpeg获取麦克风设备时出现了以下错误:

[dshow @ 000001e37fe16440] Could not find output pin from audio only capture device.
[dshow @ 000001e37fe16440] Searching for audio device within video devices for 麦克风 (Steam Streaming Microphone)
[dshow @ 000001e37fe16440] Could not find audio only device with name [麦克风 (Steam Streaming Microphone)] among source
 devices of type video.
audio=麦克风 (Steam Streaming Microphone): I/O error

一开始以为是设备名有问题,可能是编码之类的问题。后续检查排除了这个问题。

在网上查找资料发现同样的问题,多是采用软件模拟解决,但是在此之前有过使用ffmpeg获取麦克风设备的经历,所有没用尝试这种方法。

解决方案:

因为有过成功使用麦克风的经历,所以一开始确认了设备是可以正常使用的,之后考虑有没有可能是因为系统权限导致无法正常获取设备。

查看后发现权限确实是关闭的,把它打开再次尝试后,发现问题解决。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C++ 中,可以使用 FFmpeg 库的 avdevice 模块来获取麦克风的名称及设备 ID。以下是一个简单的示例代码: ```cpp #include <iostream> #include <string> #include "libavdevice/avdevice.h" int main() { avdevice_register_all(); AVInputFormat *inputFmt = av_find_input_format("avfoundation"); if (!inputFmt) { std::cerr << "Failed to find avfoundation input format." << std::endl; return 1; } AVFormatContext *fmtCtx = nullptr; int ret = avformat_open_input(&fmtCtx, "default", inputFmt, nullptr); if (ret < 0) { std::cerr << "Failed to open input device: " << av_err2str(ret) << std::endl; return 1; } AVDeviceInfoList *devList = nullptr; ret = avdevice_list_input_sources(inputFmt, nullptr, nullptr, &devList); if (ret < 0) { std::cerr << "Failed to list input sources: " << av_err2str(ret) << std::endl; return 1; } std::cout << "Found " << devList->nb_devices << " input devices:" << std::endl; for (int i = 0; i < devList->nb_devices; ++i) { std::cout << i << ": " << devList->devices[i]->device_name << std::endl; } avformat_close_input(&fmtCtx); avdevice_free_list_devices(&devList); return 0; } ``` 这个示例程序使用 avfoundation 输入格式来获取麦克风的信息。通过 av_find_input_format 函数来获取输入格式,然后使用 avformat_open_input 函数来打开默认的输入设备。之后,使用 avdevice_list_input_sources 函数来列出所有的输入设备,并输出它们的名称。最后,通过 avformat_close_input 和 avdevice_free_list_devices 函数来释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值