用ffmpeg转yuv420p到rgb565

tianma_25 2010-04-14 10:21:38
如何用编译出的swscale.dll将av_decode_video解码出来的yuv420p里面的数据转换为rgb565格式的,swscale.dll里有现成的函数可以用吗?是哪个?
望指点。
...全文
1441 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fashionmany 2010-10-21
  • 打赏
  • 举报
回复
请问max123456和tianma_25:
avpicture_fill((AVPicture *)m_pFrameYUV, lpOut, PIX_FMT_YUYV422, m_CodecCtx->width, m_CodecCtx->height);
我使用这个函数如何转换从摄像头获取的MJPG数据,是不是将lpOut替换成从摄像头获取的数据Buffer,另外
sws_scale(img_convert_ctx, m_picture->data, m_picture->linesize,
0, m_pCodecCtx->height, m_pFrameYUV->data, m_pFrameYUV->linesize);
这个函数将数据格式转换,是么?
max123456 2010-04-28
  • 打赏
  • 举报
回复
才看到,不知道解决了没有。 加上屏避的那部分代码就可以了
max123456 2010-04-28
  • 打赏
  • 举报
回复
avpicture_fill((AVPicture *)m_pFrameYUV,(unsigned char*) m_pBufPic, PIX_FMT_YUYV422, m_pCodecCtx->width, m_pCodecCtx->height);

static struct SwsContext *img_convert_ctx = NULL;
if (!img_convert_ctx)
{
img_convert_ctx = sws_getContext(m_pCodecCtx->width, m_pCodecCtx->height,
m_pCodecCtx->pix_fmt,
m_pCodecCtx->width, m_pCodecCtx->height,
PIX_FMT_YUYV422,
SWS_BICUBIC, NULL, NULL, NULL);
}

//ͼÏñ·­×ª
// m_picture->data[0] += m_picture->linesize[0] * (m_pCodecCtx->height - 1);
// m_picture->linesize[0] *= -1;
// m_picture->data[1] += m_picture->linesize[1] * (m_pCodecCtx->height / 2 - 1);
// m_picture->linesize[1] *= -1;
// m_picture->data[2] += m_picture->linesize[2] * (m_pCodecCtx->height / 2 - 1);
// m_picture->linesize[2] *= -1;

sws_scale(img_convert_ctx, m_picture->data, m_picture->linesize,
0, m_pCodecCtx->height, m_pFrameYUV->data, m_pFrameYUV->linesize);

如果图像翻转的话,加上 “图像翻转”下面的那几行代码就可以了
max123456 2010-04-19
  • 打赏
  • 举报
回复
是应该在 sws_scale 之前调用的没错, avpicture_fill函数的主要用途就是给 m_pFrameYUV分配图像的存储空间, 你可以看一下源码, avpicture_fill 主要做的工作入是 把lpOut 地址赋给 m_pFrameYUV->data
tianma_25 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 max123456 的回复:]

引用 4 楼 tianma_25 的回复:
引用 3 楼 max123456 的回复:

avpicture_fill((AVPicture *)m_pFrameYUV, lpOut, PIX_FMT_YUYV422, m_CodecCtx->width, m_CodecCtx->height);

static struct SwsContext *img_convert_ctx =……
[/Quote]
那照你这样说avpicture_fill(),应该在sws_scale()调用后啊,你怎么在之前调用
max123456 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tianma_25 的回复:]
引用 3 楼 max123456 的回复:

avpicture_fill((AVPicture *)m_pFrameYUV, lpOut, PIX_FMT_YUYV422, m_CodecCtx->width, m_CodecCtx->height);

static struct SwsContext *img_convert_ctx = NULL;
if (!img_convert……
[/Quote]

你把 buffer 替换为 lpOut, 根据格式不同来调整 PIX_FMT_就可以了
tianma_25 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 max123456 的回复:]

avpicture_fill((AVPicture *)m_pFrameYUV, lpOut, PIX_FMT_YUYV422, m_CodecCtx->width, m_CodecCtx->height);

static struct SwsContext *img_convert_ctx = NULL;
if (!img_convert_ctx)
{
img_convert_……
[/Quote]

我是说怎么使用你这个m_pFrameYUV->data里的数据,不同的PIX_FMT_格式,copy到输出buffer里的方法应该不一样吧,我需要RGB565的。
tianma_25 2010-04-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 max123456 的回复:]

是应该在 sws_scale 之前调用的没错, avpicture_fill函数的主要用途就是给 m_pFrameYUV分配图像的存储空间, 你可以看一下源码, avpicture_fill 主要做的工作入是 把lpOut 地址赋给 m_pFrameYUV->data
[/Quote]

那我现在用转换出的RGB565格式的数据显示出来,为什么图像是倒着的?这个咋解决呢!
max123456 2010-04-16
  • 打赏
  • 举报
回复
avpicture_fill((AVPicture *)m_pFrameYUV, lpOut, PIX_FMT_YUYV422, m_CodecCtx->width, m_CodecCtx->height);

static struct SwsContext *img_convert_ctx = NULL;
if (!img_convert_ctx)
{
img_convert_ctx = sws_getContext(m_CodecCtx->width, m_CodecCtx->height,
m_CodecCtx->pix_fmt,
m_CodecCtx->width, m_CodecCtx->height,
PIX_FMT_YUYV422,
SWS_BICUBIC, NULL, NULL, NULL);
}

sws_scale(img_convert_ctx, m_picture->data, m_picture->linesize,
0, m_CodecCtx->height, m_pFrameYUV->data, m_pFrameYUV->linesize);
tianma_25 2010-04-16
  • 打赏
  • 举报
回复
继续请教,我用
sws_scale(m_pSws,m_pPicture->data,m_pPicture->linesize,0,240,m_pRGBPicture->data,m_pRGBPicture->linesize);
转成RGB后,怎么使用m_pRGBPicture->data里的数据,将他copy到输出bufffer里面呢?
warsour 2010-04-15
  • 打赏
  • 举报
回复
sws_getContext
sws_scale
用这两个
内容概要:本报告基于寻汇与万事达卡在2026年联合发布的《超越自动化:定义智能体驱动的全球支付》白皮书,系统分析了AI智能体在B2B跨境支付领域的应用与发展。报告指出,传统跨境支付存在效率低、人工干预多、合规风险高等问题,当前正从数字化、数据化迈向“自主化”新阶段。AI智能体可在授权下自主完成支付、换汇、合规审核、对账等全流程操作,核心技术包括深度强化学习、自然语言处理和图神经网络,用于路径优化、合规解析与异常检测。报告揭示了决策可解释性不足、跨系统协同标准缺失、安全审计机制缺位三大研究空白,并探讨了法律责任归属、监管碎片化、数据主权与技术可靠性四大现实挑战。寻汇与万事达卡的合作构建了“智能体编排引擎”与全球合规决策网络,首次提出L0-L5的智能体自主化等级框架,推动行业标准化。预计2026至2027年将实现首批大规模商业部署,提升支付效率超30%。; 适合人群:金融科技研究人员、AI技术开发者、跨境支付行业从业者、企业财资管理人员及政策监管机构相关人员。; 使用场景及目标:①理解AI智能体在跨境支付中的技术架构与应用场景;②把握自主化支付的演进趋势与商业化前景;③为金融机构和技术公司布局AI驱动型支付系统提供战略参考;④助力监管机构制定适应智能体时代的合规框架。; 阅读建议:本报告兼具技术深度与产业视野,建议结合白皮书原文及相关技术文献对照研读,重点关注智能体决策逻辑、合规实现机制与跨系统集成方案,并关注后续试点项目的实际成效与监管反馈。

2,554

社区成员

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

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