C实现NV12转I420
功能
将NV12的视频序列转换至I420格式
代码
#include<iostream>
#include<stdint.h>int main(int argc, char* argv[]) {char const* input;char const* output;input = argv[1];//输入NV12序列路径int num_frame = atoi(argv[2]);//处理帧数uint64_t w = atoi(argv[3]);//宽uint64_t h = atoi(argv[4]);//高output = argv[5];//输出I420序列路径int i = 1;uint8_t* buffer[3];buffer[0] = (uint8_t*)malloc(w * h);buffer[1] = (uint8_t*)malloc((w >> 1) * (h >> 1));buffer[2] = (uint8_t*)malloc((w >> 1) * (h >> 1));FILE* fp;fopen_s(&fp, input, "rb+");FILE* fp1;fopen_s(&fp1, output, "wb+");while (i <= num_frame) {fread(buffer[0], 1, w * h, fp);for (int i = 0; i < (h >> 1); i++) {for (int j = 0; j < (w >> 1); j++) {fread(&buffer[1][i * (w >> 1) + j], 1, 1, fp);fread(&buffer[2][i * (w >> 1) + j], 1, 1, fp);}}fwrite(buffer[0], 1, w * h, fp1);fwrite(buffer[1], 1, (w >> 1) * (h >> 1), fp1);fwrite(buffer[2], 1, (w >> 1) * (h >> 1), fp1);i++;}fclose(fp1);fclose(fp);free(buffer);return 0;
}
使用方法
1、利用VS生成exe可执行文件。
2、利用bat文件调用exe,在bat文件中按顺序输入相关参数,参数之间用空格分开。
bat文件示例
NV12to420.exe D:\4K_NV12\nightLab_3840x2160_iso3200_8bit_30fps_850f_nv12.yuv 850 3840 2160 D:\4K_I420\nightLab_3840x2160_iso3200_8bit_30fps_850f_I420.yuv
C实现NV12转I420相关推荐
- yv12转nv12,nv12转I420
yv12跟I420区别其实就是u.v顺序不一样,是平面格式,内存中u.v在连续的一块,nv12是打包格式,u.v交叉. yv12转nv12: void swapYV12toNV12(byte[] yv ...
- yuv420格式nv12,nv21,I420,YV12互转
YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式,每个像素点的Y ...
- 视频存储格式YUV420 NV12 NV21 i420 YV12
1)YUV简介 YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式 ...
- 视频存储格式YUV420 NV12 NV21 i420 YV12详解
1.YUV简介 YUV格式有两大类:planar和packed. 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V. 对于packed的YUV格式 ...
- android nv21 nv12,視頻存儲格式YUV420 NV12 NV21 i420 YV12
1)YUV簡介 YUV格式有兩大類:planar和packed. 對於planar的YUV格式,先連續存儲所有像素點的Y,緊接着存儲所有像素點的U,隨后是所有像素點的V. 對於packed的YUV格式 ...
- yv12、I420、nv12、nv21相互转换
YUV420P,Y,U,V三个分量都是平面格式,分为I420和YV12.I420格式和YV12格式的不同处在U平面和V平面的位置不同.在I420格式中,U平面紧跟在Y平面之后,然后才是V平面(即:YU ...
- 常用视频格式转换nv12,i420,i444,p010
文章目录 视频存储格式 NV12转I420 NV12转I444 P010转I420 视频存储格式 P010格式与NV12格式一样,区别就是两个字节存一个像素值. Y Y Y Y Y Y Y Y Y Y ...
- 基于 WebRTC 实现自定义编码分辨率发送
导读:2020年如果问什么技术领域最火?毫无疑问:音视频.2020年远程办公和在线教育的强势发展,都离不开音视频的身影,视频会议.在线教学.娱乐直播等都是音视频的典型应用场景. 文|何敬敬 网易云信客 ...
- 如何从开发小白到音视频专家
如何从开发小白到音视频专家 原文地址:http://blog.csdn.net/dev_csdn/article/details/78738806 作者:卢俊,七牛云客户端团队技术负责人.拥有丰富的音 ...
- (转)从开发小白到音视频专家
从开发小白到音视频专家 转载:https://blog.csdn.net/zhangbijun1230/article/details/83658012 本文整理自卢俊的演讲,目标读者是对音视频开发感 ...
最新文章
- Android studio 开发工具,试图预览工具不见了找会设置
- 使用HttpOnly提升Cookie安全性
- Packet Tracer 5.0配置cisco路由器详细说明
- [转]SQL Server 2005链接字符串
- 如何有效利用SD-WAN改善网络性能?
- Ubuntu环境下挂载新硬盘 --硬盘要挂载在某个文件夹下面
- rubymine 调试 redmine
- MySQL 基础———— UNION 联合查询
- 操作系统之进程管理:7、进程同步、进程互斥
- 微信小程序启动、更新机制
- 从数据仓库到大数据平台再到数据中台(内附13张架构图)
- 项目管理沙龙第十一次聚会纪要--当敏捷没有共识的时候
- 判断日期是否是合法的:
- hash hmac java_认证加密算法php hash_hmac和java hmacSha1的问题
- jdk优先级队列、延迟队列原理
- Bitwise Operators
- 如何安装Mac 下的markman破解版
- ipad/iphone内存管理二
- 如何在分割视频的基础上,分离视频中的音频
- kindle paperwhite 使用体验