如何将原始char *放到AVPacket

时间:2014-04-20 18:17:54

标签: c++ ffmpeg

我有一个存储在char *中的压缩图像,我想把它放回AVPacket,这样我就可以把它放到一个ffmpeg解码器中。有人可以说明如何做到这一点?任何样本或教程都将不胜感激。

提前致谢

1 个答案:

答案 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;
}