Windowsでffmpegを使用してH264ストリームをハードウェアアクセラレーションでデコードする方法の簡単な例を検索しましたが、何も見つかりませんでした。 ffmpegでdxva2を使用して、ハードウェアアクセラレーションを使用する必要があることは知っています。ffmpegでDXVA2を使用してフレームをデコードして取得する方法
postで提供されているサンプルプロジェクトのおかげで、H264をCPU上でffmpegでデコードし、NV12形式をRGBAに変換してフレームをbmpファイルとして保存できます。
私はdxva2についてのヘルプを表示するには、以下の記事で提供されるものに続いていますpost
私は成功し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] bad src image pointers
明らかに何かがと間違っていますpFrameYuv->data
しかし、私は何を知りません。
DXVA2でデコードされたNV12フレームをsws_scaleでRGBAに変換するにはどうすればよいですか?