ffmpeg 解压后怎样将AVFrame的数据存储成可以直接render的YV12格式

lwang1108 2012-04-10 10:32:50
请教高手一个问题:
我使用avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,int *got_picture_ptr,const uint8_t *buf, int buf_size)函数将数据解压,怎样将picture中的数据存储成可以直接render的YV12格式,即怎么给pDestBuffer(输出IMediaSampe对应的内存指针)赋值?
...全文
1370 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
random_2011 2014-08-29
  • 打赏
  • 举报
回复
RGB32也可以的
buaalei 2013-03-28
  • 打赏
  • 举报
回复
引用 楼主 lwang1108 的回复:
请教高手一个问题: 我使用avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture,int *got_picture_ptr,const uint8_t *buf, int buf_size)函数将数据解压,怎样将picture中的数据存储成可以直接render的YV12格式,即怎么给pDestBuffer(输出IMediaSampe对应的内存指针)赋值?
解决了么?怎么解决的啊?
buaalei 2013-03-28
  • 打赏
  • 举报
回复
问题解决了,我也有这方面的需求。
rightorwrong 2012-04-12
  • 打赏
  • 举报
回复
是不是directshow在协商媒体信息那里视频信息高是负值
rightorwrong 2012-04-11
  • 打赏
  • 举报
回复
avcodec_decode_video解码后,本来就是YV12了
你根据picture的frame[i]和linesize[i]把数据取出来就可以了
lwang1108 2012-04-11
  • 打赏
  • 举报
回复
我根据picture的frame[i]和linesize[i]把数据取出来,存在一个数组pDeData中,然后写成文件可以 播放出来,但是直接把pDeData传给pDestBuffer,播放时全部都是条纹,基本图像完全看不见。avcodec_decode_video解码后解码后应该是YUV420P格式的吧,我今天想用sws_scale做转换,但是还是不行。
lwang1108 2012-04-10
  • 打赏
  • 举报
回复
我是把ffmepg的部分源码抽出来封装了,然后在directshow 里面用作解码的功能,没有directshow 自带的解码filter,用方便以后修改
LiuYinChina 2012-04-10
  • 打赏
  • 举报
回复
用 ffmepg + directshow ?没看懂你想干嘛,

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧