问题:
FFmpeg使用filter+cuda转码,在使用下面3个SDK后出现:
av_buffersrc_add_frame
av_buffersink_get_frame
av_hwframe_transfer_data
表现:发现GPU内存爆了。
[AVHWDeviceContext @ 00000207131862c0] cu->cuMemcpy2DAsync(&cpy, hwctx->stream) failed -> CUDA_ERROR_OUT_OF_MEMORY: out of memory
原因:
av_hwframe_transfer_data代码说明:Copy data to or from a hw surface。是从hw中copy数据到CPU中,没有释放。
解决:
av_hwframe_transfer_data(frameCuda, result_frame, 0);
av_frame_unref(result_frame);