我已经搜索了一个关于如何在 Windows 中使用 ffmpeg 使用硬件加速解码 H264 流的简单示例,但我找不到任何内容。我知道我应该使用 dxva2 和 ffmpeg 来进行硬件加速。
我可以在 CPU 上使用 ffmpeg 解码 H264,然后将 NV12 格式转换为 RGBA 并将帧保存为 bmp 文件,这要归功于post中提供的示例项目。
我已按照以下帖子中提供的内容获取有关 dxva2 的帮助:发布
我相信我可以用 dxva2 成功解码;但是,当我想获取解码帧并将其转换为 RGBA 格式并将其保存为 bmp 文件时,我收到有关源指针的错误。
我解码和检索帧如下:
int videoFrameBytes = avcodec_decode_video2(pCodecCtx_hwaccel, pFrameYuv, &got_picture_ptr, avpkt);
if (got_picture_ptr==1)
{
if(dxva2_retrieve_data_call(pCodecCtx_hwaccel, pFrameYuv) == 0)
{
fprintf(stderr, "Got frame successfully\n");
result = true;
}
}
并将输出帧馈送到:
sws_scale(pImgConvertCtx, pFrameYuv->data, pFrameYuv->linesize, 0, height, frame->data, frame->linesize);
我收到此错误:
[swscaler @ 030c5c20] 错误的 src 图像指针
显然有些问题,pFrameYuv->data
但我不知道是什么。
我们如何将使用 DXVA2 解码的 NV12 帧转换为使用 sws_scale 的 RGBA?