最近使用阿里云推送本地视频数据到远端播放!需要将图像数据转换为YUV420格式的,网上大部分是C++写的,这里将代码转换为C#格式,记录如下!

1.原料准备!首先我们获得RGB原始数据,这里不能使用JPG等压缩格式图片,需要先将图片转换为RGB格式的裸数据保存!这里提供一个网站 ,可以做转换!https://convertio.co/zh/

2.转码:使用下面的代码即可转换为YUV420!有需要的同学可以试试看!

 FileStream fs = new FileStream("./test.rgb", FileMode.Open);BinaryReader br = new BinaryReader(fs);int length = (int)fs.Length;byte[] yuv = br.ReadBytes((int)fs.Length);br.Close();fs.Close();//将RGB 数据转化为420后传递//1.读取RGB数据int Height = 240;int Width = 320;byte r, g, b;byte[] yuvList = new byte[Width * Height * 3 / 2]; //存储YUV数据//2.转为YUV数据 // 开始数据转换int count = 0;int ycount = 0;for (int i = 0; i < Height; i++){for (int j = 0; j < Width; j++){r = yuv[3 * (i * Width + j) + 0];g = yuv[3 * (i * Width + j) + 1];b = yuv[3 * (i * Width + j) + 2];yuvList[ycount] = Convert.ToByte(((66 * r + 129 * g + 25 * b + 128) >> 8) + 16);ycount++;// 每 4 个Y,取一个U ,一个V if (j % 2 == 0 && i % 2 == 0){yuvList[Height * Width + count] = Convert.ToByte(((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128);yuvList[Height * Width * 5 / 4 + count] = Convert.ToByte(((112 * r - 94 * g - 18 * b + 128) >> 8) + 128);count++;}}}//将二进制流写入文件fs = new FileStream("./1.yuv", FileMode.OpenOrCreate);BinaryWriter bw = new BinaryWriter(fs);bw.Write(yuvList);bw.Close();fs.Close();

3.验证!本人是使用远端获取流数据解析后能看到我发送的图片来验证的!使用YUV 图片查看器!网上查找了好几个YUV 图片查看器都打不开,不知道什么问题!大家有好用的工具可以提供下!哈哈!

注意:这里我的RGB图片大小是320 * 240,原始图片和YUV图片的尺寸应该保持一致!

使用C#将RGB24转换为YUV420格式相关推荐

  1. 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像

    文章目录 转换公式 需要注意 函数代码 测试用例 下载 本文介绍了将rgb视频图像转换为yuv420格式视频图像的方法,附有详细的代码和图像示例.文中rgb24和yuv420文件需要使用yuv/rgb ...

  2. FFmpeg开发实战(五):bmp转换为jpeg格式图像

    文章目录 1. bmp结构 2. bgr24转yuv420p 3. yuv420转jpeg 4. 下载 本文介绍了将bmp格式图像转换为jpeg格式图像的方法,附有详细的代码和图像示例. 1. bmp ...

  3. 电子书格式怎么在线转换为PDF格式

    电子书格式怎么在线转换为PDF格式,现在很多朋友喜欢用PDF格式的电子书,因为其有纸质书的排版和格局,但实际生活中出现的最多的是TXT等格式的电子书,那如何将其进行转换成PDF格式的呢,下面就由小编来 ...

  4. java pdf 多页转换为png格式的图片

    java pdf 多页转换为png格式的图片  适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...

  5. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)

    R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式.为dataframe的每一列绘制密度图和直方图(堆叠) 目录 R语言ggplot2可视化:应用pivot_lon ...

  6. 在线qmc0转换mp3工具_如何将M4A格式的音频转换为MP3格式?只需一步搞定

    随着网络技术的发达,会有很多人喜欢在网上下载东西,特别是很喜欢在网上下载音乐,但是下载音乐之后发现是M4A格式?这样用起来很不方便,都喜欢MP3格式的,那么如何将M4A格式的音频转换为MP3格式?今天 ...

  7. MATLAB批量实现dicom转换为bmp格式

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 参考 MATLAB实现dicom转换为png格式 %%MATLAB实现dicom转换为bmp格式 clc;clear;c ...

  8. 如何将qlv格式倚天屠龙记转换为MP4格式

    一提到金庸,那绝对是家喻户晓的名字,不仅是带给我们不少童年的欢乐和记忆,更是父辈们的偶像.他作品众多,比较熟知和经典大概有<书剑恩仇录>.<射雕英雄传>.<神雕侠侣> ...

  9. python matplotlib模块画出的图像转换为.tiff格式

    利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...

  10. 将widerface标注转换为VOC格式

    验证工具代码: https://github.com/wondervictor/WiderFace-Evaluation 将widerface标注转换为VOC格式 原文:https://blog.cs ...

最新文章

  1. 法大大刘谦:法务智能化创新实践与行业趋势
  2. 阿里云短信发送触发天级流量及解决办法
  3. 兄弟||弟兄,以前看过一个“母亲”,现在是“弟兄”,感人!
  4. 朴素贝叶斯算法详解及python代码实现
  5. tomcat修改端口号与eclipse中的tomcat保持一致
  6. Spring IOC容器-注解的方式
  7. Docker轻量级管理工具Portainer
  8. PG基于repmgr实现自动和手动故障切换
  9. HDU 2588 GCD 【Euler + 暴力技巧】
  10. 敏捷测试与普通测试的区别
  11. java中eq、ne、gt、lt、ge、le分别代表含义
  12. 37、我的C#学习笔记3
  13. java读取txt文件字符串_java读取txt文件,对字符串进行操作后导出txt文件
  14. 使用Hbase Shell和Java API分别进行Hbase的增删改查操作
  15. 基层群众工作存在的问题_联系服务群众方面存在的问题及原因
  16. 【渝粤题库】陕西师范大学200521 普通语言学
  17. k8s pod控制器详解(ReplicaSet、Deployment、Horizontal Pod Autoscaler)
  18. 分屏演示PPT,你可同时看见幻灯片备注信息
  19. 写500字关于漫威英雄的论文
  20. python 股市 无风险套利_Python期货期权无风险套利监控升级版

热门文章

  1. Stimulsoft Reports.Web 2022.2.3 Crack
  2. 谷歌插件firebug和xpath下载,并解决包括拖拽无法安装、提示“组件无法安装 未通过验证”等问题
  3. 第一代计算机硬件逻辑主要采用,第一代计算机的硬件逻辑主要采用电子管,程序设计语言采用BASIC语言...
  4. wshShell.SendKeys模拟键盘操作
  5. win7我的计算机无法搜索,win7搜索功能无法正常使用的有效解决方法
  6. SIM900A常用指令
  7. 【UE4】解决局域网联机游戏连接不上的问题
  8. linux 搜狗输入法包名,搜狗输入法
  9. 为什么acdsee服务器怎在运行,为何打开网页时会出现安装acdsee 5.0.1 powerpack
  10. 什么是shapefile文件