Я пытаюсь найти способ скопировать мои данные opencv в мой выходной поток RTMP после декодирования потока
avcodec_decode_video2.
Но когда я использую ret = av_write_uncoded_frame (out_pFormatCtx,frame_index, pFrameRGB) ;
, я получил ошибку -40 из переменной 'ret'.
ret = avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);// Decode video frame
if (frameFinished)
{
static struct SwsContext* img_convert_ctx;
if (img_convert_ctx == NULL)
{
int w = pCodecCtx->width;
int h = pCodecCtx->height;
img_convert_ctx = sws_getContext(w, h,
pCodecCtx->pix_fmt,
w, h, AV_PIX_FMT_RGB24, 4,
NULL, NULL, NULL);
if (img_convert_ctx == NULL)
{
fprintf(stderr, "Cannot initialize the conversion context!\n");
return -1;
}
}
int ret = sws_scale(img_convert_ctx, pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameRGB->data, pFrameRGB->linesize);
if (ret == 0)
{
fprintf(stderr, "SWS_Scale failed [%d]!\n", ret);
return -2;
}
// Save the frame to disk
if (Save>0)
{
SaveFrame(pFrameRGB, pCodecCtx->width, pCodecCtx->height, frame_index);
}
if (Show > 0)
{
CopyDate(pFrameRGB, pCodecCtx->width, pCodecCtx->height, packet.pts - prepts);
//ret = av_write_uncoded_frame(out_pFormatCtx, frame_index, pFrameRGB);........<<<error -40
if (!out_pFormatCtx->oformat->write_uncoded_frame)
{
return AVERROR(ENOSYS);
}
}
frame_index++;
}