我们在 Ubuntu 20.04 系统上使用 ffmpeg 4.3。在我们的多线程应用程序中,我们在多布局视图中流式传输来自不同摄像机的视频。通过软件解码,它可以正常工作。当我们使用硬件解码(通过参考 vaapi_transcode.c 示例程序)时,它最初可以工作。如果我们继续更改关闭和打开解码器的布局,av_hwdevice_ctx_create() 返回错误 -542398533。我们发现它映射到“外部库中的一般错误”。如果我们频繁打开和关闭解码器,ffmpeg 4.3 是否存在问题?我们在调用 ffmpeg API 时确保了线程安全。
我们遵循 vaapi_transcode.c 中的步骤,即使用 avcodec_alloc_context3 创建 AVCodecContext,并在关闭时使用 avcodec_free_context() 和 av_buffer_unref()。
相同的应用程序在 16.04 和 ffmpeg 3.2.4 上运行良好。但是,使用的硬件解码 API 是不同的。那里我们提到了ffmpeg_vaapi.c。当我们迁移到 20.04 时,我们无法使用相同的版本,因为我们必须升级到 ffmpeg 4.3。
我们在 20.04 中遗漏了什么吗?在这方面的帮助将不胜感激。