Windows에서 ffmpeg를 사용하여 하드웨어 가속을 사용하여 H264 스트림을 디코딩하는 방법에 대한 간단한 예제를 검색했지만 찾을 수 없습니다. ffmpeg와 함께 dxva2를 사용해야 하드웨어 가속을 사용할 수 있다는 것을 알고 있습니다.ffmpeg와 함께 DXVA2를 사용하여 프레임을 디코딩하고 프레임을 얻는 방법
CPU에서 ffmpeg로 H264를 디코딩 한 다음 NV12 형식을 RGBA로 변환하고 프레임을 bmp 파일로 저장할 수 있습니다 (post에 제공된 예제 프로젝트 덕분입니다).
나는 dxva2에 대한 도움을 얻을 수있는 다음과 같은 게시물에 제공되는 것을 따랐다 : 나는 성공적으로 dxva2과 디코딩 수 있다고 생각 post
을; 그러나 디코딩 된 프레임을 가져 와서 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;
}
}
을하고 출력 프레임을 공급 :
[swscaler @ 030c5c20] bad src image pointers
분명히 뭔가 잘못입니다 :이 오류가
sws_scale(pImgConvertCtx, pFrameYuv->data, pFrameYuv->linesize, 0, height, frame->data, frame->linesize);
pFrameYuv->data
그러나 나는 무엇을 모른다.
어떻게 swsw_scale을 사용하여 DXVA2로 디코딩 된 NV12 프레임을 RGBA로 변환 할 수 있습니까?