我有一个存储在char *中的压缩图像,我想把它放回AVPacket,这样我就可以把它放到一个ffmpeg解码器中。有人可以说明如何做到这一点?任何样本或教程都将不胜感激。
提前致谢
答案 0 :(得分:1)
我向您展示了与某些ffmpeg编码器相关的示例代码。
static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
const AVFrame *pict, int *got_packet) {
unsigned char *buf;
int ret, bufLen;
int64_t maxsize;
// Store image data to buf variable.
buf = ....
// Calculate buf length.
bufLen = ....
// Allocate AVPacket.
maxsize = FF_MIN_BUFFER_SIZE + avctx->width * avctx->height * 9;
if ((ret = ff_alloc_packet2(avctx, pkt, maxsize)) < 0)
return ret;
// Copy buf to AVPacket.
memcpy(pkt->data, buf, bufLen);
pkt->size = bufLen;
*got_packet = 1;
return 0;
}