在libavcodec中初始化hwaccel_context

时间:2018-01-03 03:38:40

标签: c++ ffmpeg hardware-acceleration libavcodec

我正在尝试使用libavcodec来运行硬件加速视频。我使用hw_decode.c示例作为起点,但无法使其工作。 AVCodecContext->hwaccelAVCodecContext->hwaccel_context都是NULL

我相信hwaccel的某些部分正在工作,因为我看到输出

libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0

与我运行时的情况相同

ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mpg -f null -

但在此之后我立即收到以下错误消息

[h264 @ 0x1df2cc0] Hardware acceleration context (hwaccel_context) does not exist.
Failed to get HW surface format.
[h264 @ 0x1df2cc0] decode_slice_header error
[h264 @ 0x1df2cc0] no frame!

我查看了similar question,答案显示了如何获得AVCodecContext->hwaccel。但即使AVCodecContext->hwaccel是有效的VAApih264解码器,我仍然会收到相同的错误消息。

如何初始化AVCodecContext->hwaccel_context,之后还需要做些什么才能让硬件加速视频在ffmpeg中运行?

0 个答案:

没有答案