ffmpeg未定义av_register_all();
时间: 2023-09-02 07:06:25 浏览: 63
在较新的版本中,FFmpeg已经移除了av_register_all()函数。相反,现在应该使用avformat_network_init()函数来初始化网络模块,并使用avformat_close_input()函数来关闭输入流。因此,你可以尝试以下代码:
```
avformat_network_init();
AVFormatContext *formatContext = avformat_alloc_context();
if (!formatContext) {
// 分配AVFormatContext失败
return -1;
}
if (avformat_open_input(&formatContext, inputUrl, NULL, NULL) != 0) {
// 打开输入流失败
return -1;
}
if (avformat_find_stream_info(formatContext, NULL) < 0) {
// 查找流信息失败
return -1;
}
// 处理流
...
avformat_close_input(&formatContext);
```
这应该可以解决你的问题。
相关问题
ffmpeg-4.4的av_register_all()
`av_register_all()` 函数是 FFmpeg 库中的函数,用于注册所有的编解码器、复用器和解复用器等。在 FFmpeg 4.4 版本中,`av_register_all()` 函数已经被废弃,因为 FFmpeg 已经使用了自动注册机制。
在 FFmpeg 4.4 版本及以后的版本中,你不需要再调用 `av_register_all()` 函数。相反,你只需要在使用相应的编解码器、复用器和解复用器之前,通过 `avformat_network_init()` 函数初始化网络协议和 `avcodec_register_all()` 函数注册编解码器即可。
例如,以下是初始化 FFmpeg 库的示例代码:
```
avformat_network_init();
avcodec_register_all();
```
希望这些信息能对你有所帮助。
av_register_all的作用
av_register_all是FFmpeg中的函数,它的作用是注册所有可用的文件格式和编解码器。在使用FFmpeg进行音视频处理之前,需要先调用这个函数,以确保所有的编解码器和文件格式都已经被注册。这样可以让FFmpeg正确地识别各种格式的音视频文件,并且能够使用相应的编解码器进行解码或编码。如果没有调用av_register_all函数,那么在使用FFmpeg时可能会出现无法识别文件格式或者无法使用相应的编解码器的情况。