gpt4 book ai didi

ffmpeg - 使用 FFmpeg 和 DirectShow(dshow 输入)捕获 48 kHz 音频

转载 作者:行者123 更新时间:2023-12-04 13:52:08 28 4
gpt4 key购买 nike

我尝试在 FFmpeg 中捕获 48 kHz 的音频,代码如下:

 AVInputFormat* ifmt = av_find_input_format("dshow");
CHECK_POINTER_RETURN_VALUE(ifmt, false)

pFmtCtx = avformat_alloc_context();
CHECK_POINTER_RETURN_VALUE(pFmtCtx, false)

AVDictionary *param = nullptr;
std::string sr = std::to_string(48000);
av_dict_set(&param, "sample_rate",sr.c_str(), 0);

int error = avformat_open_input(&pFmtCtx, ffName.c_str(), ifmt, &param);
if (error != 0) {
char buf[2014];
av_strerror(error, buf, 1024);
LOG(ERROR)<<"open audio device failed,err is "<<buf;
return false;
}
但是“avformat_open_input”返回失败,err 显示“I/O 错误”,如果采样率为 44100,则一切正常。
现在 FFmpeg 不支持捕获 48 kHz 音频了吗?

最佳答案

这是 FFmpeg 使用的 DirectShow API 的问题。已通过对 FFmpeg 的更改解决:https://github.com/FFmpeg/FFmpeg/commit/d9a9b4c877b85fea5a5bad74c3d592a756047f79
具体来说,DirectShow 没有充分描述 AUDIO_STREAM_CONFIG_CAPS 的音频设备功能。当音频设备同时支持 44.1 kHz 和 48 kHz 作为时钟倍数时。 WAVEFORMATEXAM_MEDIA_TYPE 内必须改为使用。

关于ffmpeg - 使用 FFmpeg 和 DirectShow(dshow 输入)捕获 48 kHz 音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68298723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com