首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由ffmepg解码的帧存储在哪里?

由ffmepg解码的帧存储在哪里?
EN

Stack Overflow用户
提问于 2013-08-26 05:55:39
回答 1查看 216关注 0票数 0

我尝试解码视频并将帧转换为rgb32或gb565le格式。

然后通过JNI将此帧从C传递到Android缓冲区。

到目前为止,我知道如何将缓冲区从C传递到Android,以及如何解码视频和解码帧。

我的问题是如何将解码后的帧转换为rgb32 (或rgb565le),它存储在哪里?

下面是我的代码,我不确定是否正确。

-Jargo

代码语言:javascript
复制
img_convert_ctx = sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, 100, 100, PIX_FMT_RGB32, SWS_BICUBIC, NULL, NULL, NULL);
if(!img_convert_ctx) return -6;

while(av_read_frame(pFormatCtx, &packet) >= 0) {
   // Is this a packet from the video stream?
   if(packet.stream_index == videoStream) {
       avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);

       // Did we get a video frame?
       if(frameFinished) {
            AVPicture pict;

            if(avpicture_alloc(&pict, PIX_FMT_RGB32, 100, 100) >= 0) {
                sws_scale(img_convert_ctx, (const uint8_t * const *)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pict.data, pict.linesize);
            }
       } // End of if( frameFinished )
   } // End of if( packet.stream_index == videoStream )

   // Free the packet that was allocated by av_read_frame
   av_free_packet(&packet);
}
EN

回答 1

Stack Overflow用户

发布于 2013-08-26 05:58:44

解码后的帧进入pict。(pFrame是一个原始帧。)

100x100可能不好,您必须根据pict大小计算pFrame大小。我想应该是pFrame->width*pFrame->height*32;

你必须自己分配pict

请参阅本教程http://dranger.com/ffmpeg/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18437486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档