社区
多媒体/流媒体开发
帖子详情
用ffmpeg转yuv420p到rgb565
tianma_25
2010-04-14 10:21:38
如何用编译出的swscale.dll将av_decode_video解码出来的yuv420p里面的数据转换为rgb565格式的,swscale.dll里有现成的函数可以用吗?是哪个?
望指点。
...全文
1411
11
打赏
收藏
用ffmpeg转yuv420p到rgb565
如何用编译出的swscale.dll将av_decode_video解码出来的yuv420p里面的数据转换为rgb565格式的,swscale.dll里有现成的函数可以用吗?是哪个? 望指点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
用这两个
从零开始学习音视频编程技术(十五)
YUV
420P
转
RGB
32
从零开始学习音视频编程技术(十五)
YUV
420P
转
RGB
32 这是Qt的工程,建议使用Qt Creator 打开 Qt的版本是4.8.4,当然是用Qt5也是没有影响的,不过编译器记得使用Mingw。
FFMPEG
的版本是2.5.2 记得将
ffmpeg
/bin...
YUV
420与
RGB
24
转
换
转
换
YUV
420到
RGB
24的过程涉及到以下几个步骤: 1. **解交织**:由于
YUV
420的色度分量Cb和Cr是交错存储的,需要先进行解交织,将它们恢复成完整的二维图像。 2. **色度插值**:由于色度分量只有亮度分量分辨率的一半...
[免费]
FFmpeg
实现
YUV
420P
视频序列
转
RGB
24视频序列(VC2010).rar
创建一个`SwsContext`,指定输入和输出的像素格式,然后使用这个上下文进行
YUV
420P
到
RGB
24的
转
换。 7. **创建输出文件**:创建一个`AVOutputFormat`对象,指定输出格式,如MP4或AVI,然后使用`avformat_alloc_...
FFmpeg
实现
YUV
420P
视频序列
转
RGB
24视频序列(VC2010)
在这个场景中,我们关注的是如何使用
FFmpeg
库在C++环境下,将
YUV
420P
视频序列
转
换为
RGB
24视频序列,具体操作在Visual Studio 2010(VC2010)下进行。
YUV
420P
是一种常见的视频色彩空间,它以一种节省带宽的方式存储...
Qt播放
YUV
420P
文件
零开始学习音视频编程技术(十五)
YUV
420P
转
RGB
32 在
转
换的基础加上了Qt显示的界面。实现了Qt播放
YUV
420P
文件 这是Qt的工程,建议使用Qt Creator 打开 Qt的版本是4.8.4,当然是用Qt5也是没有影响的,不过编译器...
多媒体/流媒体开发
2,553
社区成员
20,277
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章