05 ffmpeg桌面图像h264编码并封装avi
来源:互联网 发布:java单点登录解决方案 编辑:程序博客网 时间:2024/05/21 08:09
当ffmpeg获取桌面图像数据时, 数据格式是ARGB8888, 需要转换成yuv420p.ARGB8888 --> RGB888 --> yuv444 --> yuv420pY Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 U Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 V Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128 rgb32转换成yuv420p的实现代码:int rgb32_2_yuv420p(unsigned char *rgb32, unsigned char *y, unsigned char *u, unsigned char *v, int w, int h){ int i, j, n; int r, g, b; for (i = 0; i < h; i+=2) //每两行来操作, 每行两个像素组合操作 { for (j = 0; j < w; j+=2) //第一行 Y0 U0 Y1 { n = (i*w+j); //第几个像素, 在rgb32每个像素4字节 b = rgb32[n*4]; g = rgb32[n*4+1]; r = rgb32[n*4+2]; // rgb32的高8位丢掉 *y++ = 0.299*r + 0.587*g + 0.114*b + 0; *u++ = -0.169*r - 0.331*g + 0.499*b + 128; // v数据丢掉 ///////////// n += 1; //同一行的下一个像素 b = rgb32[n*4]; g = rgb32[n*4+1]; r = rgb32[n*4+2]; *y++ = 0.299*r + 0.587*g + 0.114*b + 0; // u, v数据丢掉 } for (j = 0; j < w; j+=2) //第二行 Y0 V0 Y1 { n = ((i+1)*w+j); //第几个像素, 在rgb32每个像素4字节 b = rgb32[n*4]; g = rgb32[n*4+1]; r = rgb32[n*4+2]; *y++ = 0.299*r + 0.587*g + 0.114*b + 0; *v++ = 0.499*r - 0.418*g - 0.0813*b + 128 ; ///////////// n += 1; //同一行的下一个像素 b = rgb32[n*4]; g = rgb32[n*4+1]; r = rgb32[n*4+2]; *y++ = 0.299*r + 0.587*g + 0.114*b + 0; } } return (w*h*3)>>1;}
////////////////
编码过程与上一例子完全一样.
完整工程:
http://download.csdn.net/detail/jklinux/9846480
阅读全文
0 0
- 05 ffmpeg桌面图像h264编码并封装avi
- FFmpeg 开发记录---H264编码,avi封装,暴风影音,qq影音播放有声无画
- ffmpeg avi转h264
- ffmpeg h264转avi
- FFMPEG 用H264编码封装mp4 有声音无图像。或者解码错误
- DirecrShow 实时采集桌面并进行H264和AAC编码后封装成MP4保存
- ffmpeg解码jpg并编码成h264
- ffmpeg解码jpg并编码成h264
- Qt基于ffmpeg库封装H264成MP4、AVI,png、jpg图片提取
- ffmpeg封装本公司的h264编码库
- 图像视频编码和FFmpeg(4)-----h264格式简单介绍
- 利用FFmpeg对RGB图像进行H264编码
- 视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS扫盲
- linux下编译ffmpeg,并加入H264编码支持
- linux下交叉编译ffmpeg,并加入H264编码支持
- linux下交叉编译ffmpeg,并加入H264编码支持
- linux下交叉编译ffmpeg,并加入H264编码支持
- ffmpeg--编码解码h264
- springmvc与dubbo和zookeeper的配置关系
- 一个简单的复制文件的方法
- docker学习笔记之数据管理
- 勒索病毒WannaCry肆意攻击教育系统,几维安全再次对教育类APP进行全方位的安全评估! [APP安全报告第26期]
- Apache Beam是什么?
- 05 ffmpeg桌面图像h264编码并封装avi
- 数字货币开发专题(创世区块里藏着什么秘密)
- java常用集合效率测试
- Java基础编程2—邮件验证
- BOS项目
- 欢迎使用CSDN-markdown编辑器
- Java序列化与反序列化
- AOP实现日志和异常处理
- 判断是否是手机访问