要解决avformat_open_input无法打开一个包含原始opus音频数据的文件的问题,您可以使用以下代码示例:
#include
#include
#include
#include
int main() {
// 注册所有的封装器、解封装器和协议
av_register_all();
AVFormatContext *formatContext = NULL;
// 打开文件
int ret = avformat_open_input(&formatContext, "input.opus", NULL, NULL);
if (ret != 0) {
printf("无法打开文件: %s\n", av_err2str(ret));
return -1;
}
// 检索流信息
ret = avformat_find_stream_info(formatContext, NULL);
if (ret < 0) {
printf("无法获取流信息: %s\n", av_err2str(ret));
avformat_close_input(&formatContext);
return -1;
}
// 打印音频信息
av_dump_format(formatContext, 0, "input.opus", 0);
// 关闭文件
avformat_close_input(&formatContext);
return 0;
}
请注意,您需要将input.opus
替换为您要打开的实际文件名。此示例代码将打开一个包含原始opus音频数据的文件,并打印出音频信息。如果打开文件失败,它将输出错误消息并返回-1。否则,它将打印出音频信息,并关闭文件。
确保在编译代码时链接到libavformat库,并将相关的头文件包含到您的代码中。
希望这可以帮助到您!