2014-04-20 44 views
1

我有一个压缩的图像存储在一个char *中,我想把它放回一个AVPacket,以便我可以将它放入一个ffmpeg解码器。有人可以展示如何做到这一点?任何示例或教程将不胜感激。如何把一个原始char *转换成AVPacket

在此先感谢

回答

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