我有一个存储在char *中的压缩图像,我想将其放回AVPacket,以便可以将其放入ffmpeg解码器。有人可以显示如何执行此操作吗?任何示例或教程将不胜感激。

提前致谢

最佳答案

我向您展示了与某些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;
}

关于c++ - 如何将原始字符*放入AVPacket,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23186010/

10-11 22:23