
音视频数据处理
音视频数据处理
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_USERPTR - NV12格式 - 2plane
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_USERPTR - NV12格式 - 2plane1、配置摄像头输出 NV12格式数据2、获得NV12格式的Buffer size3、申请DMA Buffer4、下发 Buffer 地址到V4L25、循环获取数据分别测试拷贝数据到本地的时间6、释放Buffer本文代码和前面《 Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane》差不多,唯一不一样的就是将 YU原创 2020-11-14 10:59:22 · 1935 阅读 · 3 评论 -
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_DMABUF-YUYV格式-1plane
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_DMABUF-YUYV格式-1plane一、配置驱动准备DMA 类型Buffer二、应用层申请DMA Buffer三、申请DMA Buffer四、应用层下发Buffer 指针五、循环获取 Camera 数据六、释放Buffer 与 fd前面我们分析实现了 USERPTR 与 MMAP 两种方式的代码实例:《Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane》《原创 2020-11-14 10:01:12 · 4777 阅读 · 5 评论 -
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane一、Android ION CMA分配连续物理内存二、获取摄像头数据代码实例2.1 初始化摄像头(打开节点,配置输出格式)2.2 配置驱动Stream Buffer2.3 申请Stream Buffer 内存2.4 申请 ION 物理连续内存 alloc_ion_dma_buff()2.5 下发 Buffer地址给到V4L22.6 SteamON 开始输出图片2.7 循环获取摄像头数据2.8原创 2020-11-11 18:50:32 · 2190 阅读 · 2 评论 -
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_MMAP 方式实现
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_MMAP 方式实现一、打开摄像头 video0 节点,查询摄像头属性二、配置摄像头输出格式三、配置V4L2底层申请Buffer,Native层来mmap映射 Buffer四、下发Stream on命令,开始吐数据五、循环获取摄像头数据V4L2_MEMORY_MMAP 方式是由V4L2 驱动层来实现申请连续buff,Native 层通过mmap 方式来映射读取数据。相关代码可参考高通默认代码:\vendor\qcom\prop原创 2020-11-11 18:42:07 · 2165 阅读 · 0 评论 -
【音视频数据数据处理 14】【FLV篇】解析FLV视频码流,并分离FLV中的视频及MP3音频文件
【音视频数据数据处理 13】【FLV篇】解析FLV码流一、FLV封装原理1.1 Tag Data1.1.1 Audio Tag Data结构(音频Tag)1.1.2 Video Tag Data结构(视频Tag)1.1.3 Script Tag Data结构(控制帧)二、准备FLV素材三、FLV 数据分析四、代码实现五、运行结果封装格式数据在视频播放器中的位置如下所示:一、FLV封装原理以下原理知识转自:《视音频编解码学习工程:FLV封装格式分析器》FLV(Flash Video)是Adob原创 2020-08-31 18:36:16 · 1503 阅读 · 3 评论 -
【音视频数据数据处理 13】【AAC篇】解析AAC码流中的ADTS frame
【音视频数据数据处理 13】【AAC篇】解析AAC码流中的ADTS frame一、AAC音频编码介绍1.1 AAC的音频文件格式1.2 AAC的解码流程二、获取所有ADTS frame内容 - 程序代码实现一、AAC音频编码介绍AAC共有9种规格,以适应不同的场合的需要:MPEG-2 AAC LC 低复杂度规格(Low Complexity)比较简单,没有增益控制,但提高了编码效率,在中等码率的编码效率以及音质方面,都能找到平衡点MPEG-2 AAC Main 主规格原创 2020-08-31 07:51:34 · 1283 阅读 · 0 评论 -
【音视频数据数据处理 12】【H.264篇】解析H.264原始码流中的I帧 / P帧 / B帧数据(暂未解决,本文先放着,来日更新)
【音视频数据数据处理 12】【H.264篇】解析H.264原始码流中的I帧 / P帧 / B帧数据一、如何判断是 I帧 / P帧 / B帧本文接着前文,《【音视频数据数据处理 11】【H.264篇】解析H.264原始码流中所有的NAL单元数据》在前文中,我们实现了对 H.264 原始码流的的NAL单元解析,如下是输出的一个GOP组的数据,可以看出IDR,但后面的 SLICE,我们不知道哪个是P帧,哪个是B帧。今天,本文就来实现一下,对SLICE 类型的判断。 683| 7706366|原创 2020-08-30 21:48:16 · 1732 阅读 · 0 评论 -
【音视频数据数据处理 11】【H.264篇】解析H.264原始码流中所有的NAL单元数据
【音视频数据数据处理 11】【H.264篇】解析H.264原始码流中所有的NAL单元数据一、NAL头组成二、准备H.264 视频素材三、解析H.264码流NAL单元代码实现四、运行结果有关H.264的基础知识,可以参考下我之前转载学习的文章《 H264编码基本原理(一)》在第六章中,我们学习到,在实际的网络数据传输过程中H264的数据结构是以NALU(NAL单元)进行传输的,传输数据结构组成为[NALU Header]+[RBSP],如下图所示:简单来说,就是H.264的原始码流数据是由一个一个N原创 2020-08-30 21:07:36 · 1284 阅读 · 0 评论 -
【音视频数据数据处理 10】【PCM篇】将PCM转为WAV格式音频
【音视频数据数据处理 10】【PCM篇】将PCM转为WAV格式音频一、WAV头信息1.1 RIFF区块1.2 FORMAT区块1.3 DATA区块二、PCM 转 WAV 代码实现PCM转为WAV格式是相对比较简单的,因为WAV格式的内容其实就是PCM数据,所以在PCM 的基础上加上一个WAV头信息,就成了播放器认识的wav文件了。好,写代码前,我们来认识一下WAV头信息。一、WAV头信息WAV文件遵循RIFF规则,其内容以区块(chunk)为最小单位进行存储。WAV文件一般由3个区块组成:RI原创 2020-08-28 17:50:38 · 1108 阅读 · 0 评论 -
【音视频数据数据处理 9】【PCM篇】修改PCM左/右声道音量,转换PCM16为PCM8格式
【音视频数据数据处理 9】【PCM篇】修改PCM左/右声道音量,修改PCM的采样率一、修改PCM左/右声道音量二、修改PCM16为PCM8采样精度本文接着前文:《【音视频数据数据处理 8】【PCM篇】分离双声道PCM的左右声道数据》一、修改PCM左/右声道音量以修改PCM左声道 为原来的一半为例:#include <stdio.h>#include <stdlib.h>char name[]="tiankongzhicheng_44100_2ch_16bit.pcm"原创 2020-08-28 16:17:03 · 1359 阅读 · 0 评论 -
【音视频数据数据处理 8】【PCM篇】分离双声道PCM的左右声道数据
【音视频数据数据处理 8】【PCM篇】分离PCM16LE的左右声道数据本文开始学习使用C语言处理PCM文件。如果没有PCM的同学可以使用 ffmpeg 来进行转换:ffmpeg命令:wav转pcm: ffmpeg -i input.wav -f s16le -ar 16000 -ac 1 -acodec pcm_s16le output.pcmffmpeg命令:pcm转wav: ffmpeg -i input.pcm -f s16le -ar 16000 -ac 2 -acodec pcm_s16l原创 2020-08-28 15:29:22 · 2105 阅读 · 3 评论 -
【音视频数据数据处理 7】【RGB/BMP篇】生成24色 RGB24图 和 BMP图
【音视频数据数据处理 7】【RGB篇】生成一张24色 RGB24图 和 BMP图一、生成24色 RGB24图代码实现二、生成24色 BMP图代码实现先上24色图,及其对应的RGB值。好,接下来,我们来生成一张24色彩图,图片格式RGB24。一、生成24色 RGB24图代码实现代码如下:#include <stdio.h>#include <stdlib.h> unsigned char color_24[][3]={ {230,0, 18}, {235,9原创 2020-08-28 14:49:43 · 855 阅读 · 0 评论 -
【音视频数据数据处理 6】【RGB篇】将RGB24图片转为YUV420格式图片
【音视频数据数据处理 6】【RGB篇】将RGB24图片转为YUV420格式图片一、RGB24 理论知识二、YUV420 理论知识三、RGB24_to_YUV420_I420 代码实现本文主要内容为,实现将 RGB24图片转为YUV420格式,写代码之前,我们分别来分析下RGB24和YUV420各自的理论知识。一、RGB24 理论知识参考《 【音视频数据数据处理 4】【RGB篇】分离RGB图片的R、G、B分量》RGB24图像每个像素用8比特位表示,占1个字节,注意:在内存中RGB各分量的排列顺序原创 2020-08-28 13:49:54 · 1164 阅读 · 8 评论 -
【音视频数据数据处理 5】【RGB篇】将RGB24图片封装为BMP格式图片
【音视频数据数据处理 5】【RGB篇】将RGB24图片封装为BMP格式图片一、BMP数据格式1.1 BMP文件头1.2 BMP信息头1.3 BMP调色板1.4 BMP图像数据区二、代码实现2.1 运行结果本文接着前文:《【音视频数据数据处理 4】【RGB篇】分离RGB图片的R、G、B分量》前面我们实现了对RGB24格式图片的R\G\B分分量分离,本文我们来将RGB24数据,封装为BMP图片。一、BMP数据格式BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Window原创 2020-08-27 18:26:31 · 751 阅读 · 0 评论 -
【音视频数据数据处理 4】【RGB篇】分离RGB图片的R、G、B分量
【音视频数据数据处理 4】【RGB篇】分离RGB24图片的R、G、B分量一、RGB24数据格式二、代码实现在做该实验之前,我们先生成一张RGB图片。ffmpeg转换命令为:ffmpeg -i Test.jpg -s 500x500 -pix_fmt rgb24 test.rgb查看rgb24图片:ffplay -pix_fmt rgb24 -s 500x500 test.rgb工具:《YUVplayer》好,图片生成好了一、RGB24数据格式RGB24图像每个像素用8比特位表示,占1个字原创 2020-08-27 17:18:11 · 1047 阅读 · 0 评论 -
【音视频数据数据处理 3】【YUV篇】将YUV420P_I420图片去除颜色、亮度减半、添加白色边框
【音视频数据数据处理 3】【YUV篇】将YUV420P_I420图片去除颜色一、将YUV420P_I420图片 去除颜色二、将YUV420P_I420图片 亮度减半三、将YUV420P_I420图片 加上10 pixel 白色边框四、将YUV420P_I420图片 生成灰阶测试图本文主要处理 YUV420P_I420 图片,如果是其他YUV格式,如YUV422 ,原理也是一样,只要确定格式,再修改对应的BUFF 数据即可。一、将YUV420P_I420图片 去除颜色我们知道 YUV420P_I420原创 2020-08-27 15:55:04 · 712 阅读 · 1 评论 -
【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90°-180°-270°-镜像旋转
【音视频数据数据处理 2】【YUV篇】将YUV420P_I420数据旋转90°一、理论分析(以yuv420p_i420格式为例)二、顺时针旋转90° 代码实现三、顺时针旋转180° 代码实现四、旋转90°-180°-270°-镜像旋转,完整代码实现五、运行结果本文接着前文:《【音视频数据数据处理 1】【YUV篇】分离YUV420P像素数据中的Y、U、V分量》一、理论分析(以yuv420p_i420格式为例)如下,以2x4的源图为例:而,经过顺时针旋转90度后取数据时,相当于下面黑色方向的箭原创 2020-08-27 11:05:50 · 1294 阅读 · 0 评论 -
【音视频数据数据处理 1】【YUV篇】分离YUV420P像素数据中的Y、U、V分量
【音视频数据数据处理 1】【YUV篇】分离YUV420P像素数据中的Y、U、V分量1. 分离YUV420P像素数据中的Y、U、V分量1. 分离YUV420P像素数据中的Y、U、V分量《视音频数据处理入门:RGB、YUV像素数据处理》...原创 2020-08-25 17:59:50 · 2161 阅读 · 0 评论