音视频
文章平均质量分 53
若歌
仰望星空,脚踏实地
展开
-
FFmpeg-AVFrame RGB32转BMP
先用ffmpeg将图像进行翻转,得到RGB32的AVFrame,然后将RGB32图像转为BMP。翻转过程:https://blog.csdn.net/qq_36568418/article/details/113563986BMP格式详解:https://blog.csdn.net/nicholas_duan/article/details/90717599转换过程代码:// bpp->BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32// 例 RGB32原创 2021-02-02 16:58:35 · 777 阅读 · 0 评论 -
FFmpeg对颠倒的RGB图像翻转显示
转载:https://blog.csdn.net/zhoubotong2012/article/details/103304698很多使用FFmpeg做解码的用户都可能遇到过一个问题,他们对解码出来的图像转为RGB格式之后显示图像是颠倒的。有些用户对其原因不大明白,其实原因跟RGB图像的存储方式有关。RGB图像即RGB位图有两种存储方式:一种是从上往下扫描,另一种是从下往上扫描。从上扫描的图像第一行的首地址即为图像Buffer的起始地址,而从下往上扫描的图像第一行的首地址为:buffer_d转载 2021-02-02 16:30:03 · 899 阅读 · 2 评论 -
FFmpeg+MFC动态桌面(三)
后记总结:音视频同步音视频同步过程中(将视频同步到音频),最重要就算是pts的计算,以及时延的处理音频的pts计算:(音频做参考时钟)//获取当前AVPacket的ptsif (pPacket.pts != AV_NOPTS_VALUE){ audio_clock = av_q2d(stream->time_base) * pPacket.pts;}//由于一个packet中可以包含多个帧,packet中的PTS比真正的播放的PTS可能会早很多,//可以根据Sample原创 2021-02-01 17:50:36 · 271 阅读 · 3 评论 -
FFmpeg+MFC动态桌面(二)
对于音视频文件的解码,ffmpeg无疑是很好的选择,对于ffmpeg雷神又不得不提雷神博客地址:https://blog.csdn.net/leixiaohua1020/category_1843731.html另附一个ffmpeg的简单demo地址:http://dranger.com/ffmpeg/tutorial02.html最开始采用了最简单的音视频解码流程,将音频视频同时解码显示输出,但是当视频的分辨率达到1920*1080时,视频的解码转换速度开始变低,此时音频的卡顿听起来就很明显,原创 2021-02-01 16:57:04 · 367 阅读 · 0 评论 -
FFmpeg+MFC动态桌面(一)
蛰伏了半年,啥事也没干成,惨淡~一直以来比较感兴趣stream上的 Dynamic Wallpaper,现在整好有时间把它搞了搞,打鱼晒网的花了差不多两周,这里总结一下,感兴趣的小伙伴可以参考,这里留作笔记。项目内核基于FFmpeg+SDL解码音视频,用MFC封装做了个界面,VS2013开发。目前测试通过 Win7 Win10 Win8未测试。talk is cheap,show me the code!首先了解一下windows桌面:https://jrhar.blog.csdn.原创 2021-01-31 22:48:15 · 264 阅读 · 0 评论 -
有无符号指数哥伦布编码 以及解析SPS
关于指数哥伦布编码资料:Golomb及指数哥伦布编码原理介绍及实现0阶无符号指数哥伦布编码感谢大佬们的资料!h264官方协议文档中定义了4类指数哥伦布编码分为: ue(v)无符号指数哥伦布编码 、se(v)有符号指数哥伦布编码、 te(v)截断指数哥伦布编码 和me(v)映射指数哥伦布编码工程相关,这里仅实现了 ue(v)、se(v),剩下留待以后有时间慢慢整理...原创 2019-09-25 11:36:30 · 1029 阅读 · 1 评论 -
关于FFTW的收尾工作--内存清理
最近有个项目,涉及频谱转换,需要将时域数据转化到频域显示,自然而然用到FFT,提到FFT,不得又不说FFTW.FFTW的编译以及使用晚上很多例程,难度也不大,有兴趣可以自行百度。下边说说项目中遇到的FFTW的坑:先说一下项目大体用到FFTW的地方,刚开始只是处理来自拾音器的音频数据,于是我封装了个环形队列缓冲区,实时数据传入缓冲区,缓冲区启动数据处理线程,传出时域或者对应频域的数据到界...原创 2019-08-21 13:54:48 · 1653 阅读 · 0 评论 -
PCM实时音频缓冲区设计
音频项目,涉及到音频的频域图绘制以及音频的保存。因为前端摄像机一直是实时音视频流的回传,在它的音视频获取回调函数中,不能做太复杂函数处理,否则会影响音视频质量,导致数据缓冲区异常。所以用到了环。说一下思路:取一块足够长的缓冲区(这块自己计算一下即可,选个合适的长度),作为数据存储区,声明两个指针(读写指针),两个指针独立存在:。1:当需要往环中写数据时,先判断一下环的有效数据长度,如果...原创 2019-07-03 17:29:04 · 2010 阅读 · 0 评论 -
C++基于Windows GDI自己绘制BMP图像
无意中看到这个帖子:http://news.cnblogs.com/n/501488/仿照大神代码研究了一下,自己按照位图格式填充到数据区生成的图片。可能位图信息填充不完善会有缺失,不过确实可以用照片查看器或者绘图打开查看。#include <iostream>#include <Windows.h>#include <cmath>#include <...原创 2018-05-18 16:04:37 · 3491 阅读 · 0 评论 -
speex库音频降噪(含代码)
speex库中音频降噪效果不错,应该是应用最广泛的吧,speex库下载地址https://www.speex.org/downloads/,可以直接下载二进制代码使用,像配置OpenCV一样配置speex库就可以了。speex库的API参考文档下载:http://download.csdn.net/detail/yizhaoyanbo/9856894。贴出C语言实现的音频降噪代码如下。...转载 2019-08-22 09:36:50 · 1948 阅读 · 3 评论 -
PCM数据保存为WAV文件
因工程需要,需要截取一段PCM数据将其保存为WAV文件。网上代码很多,这里仅记录一下,方便自己以后查阅。关于WAV文件格式不多余赘述这里直接上一张图:图片来源:https://www.cnblogs.com/danju/p/3716194.html下面附代码:结构体声明文件:#ifndef _CWAVEDEF_H#define _CWAVEDEF_H#include ...原创 2019-06-28 16:58:55 · 2145 阅读 · 0 评论 -
WAVE绘制频谱图(四)——总结其它一些将PCM数据转为分贝值算法
原文地址:https://blog.csdn.net/balijinyi/article/details/802845201:计算分贝 音频数据与大小首先我们分别累加每个采样点的数值,除以采样个数,得到声音平均能量值。然后再将其做100与32767之间的等比量化。得到1-100的量化值。通常情况下,人声分布在较低的能量范围,这样就会使量化后的数据大致分布在1-20的较小区间,不能够很敏...转载 2019-06-12 16:13:00 · 4199 阅读 · 0 评论 -
FFmpeg+SDL2.0简单视频播放器(注释详细)
代码来源于雷神博客,作为学习又敲了一遍,并添加了详细注释加深理解。链接:https://blog.csdn.net/leixiaohua1020/article/details/38868499至于环境配置可以翻看我的前一篇博客。// FFmpeg_Test1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define _STDC_CONSTANT_M...转载 2018-04-24 16:20:56 · 268 阅读 · 0 评论 -
FFMPEG学习笔记---SDL+FFmpeg解码音频数据
音频解析流程基本跟视频差不太多,都是借助FFMpeg打开文件,获取文件相关信息,找到音视频流,打开解码器,进行数据读取,其中有时会用到装换函数,将图片格式或者音频格式转换为我们想要的或者设备可以识别的格式,然后进行读取播放即可;仍旧参考雷神博客:https://blog.csdn.net/leixiaohua1020/article/details/38979615下面是代码:#include &...原创 2018-05-10 15:51:29 · 941 阅读 · 2 评论 -
FFMPEG学习笔记---实现H264与Hevc解码保存YUV文件
学习自雷神博客:https://blog.csdn.net/leixiaohua1020/article/details/42181571 整篇文章不同于解码一般视频文件在于,视频文件(Mp4/AVI/MKV)一般是在码流(裸流)的基础上又封装了一层,这里解析的文件为裸流文件。重点函数为:av_parser_parse2(),解析数据获得一个Packet, 从输入的数据流中分离出一帧...转载 2018-04-28 13:33:02 · 1633 阅读 · 3 评论 -
FFMPEG学习笔记---实现H264与Hevc文件播放(一)
接上篇博文代码实现:#define TEST_H264 1#define TEST_HEVC 0int _tmain(int argc, _TCHAR* argv[]){ AVCodec *pCodec; //编解码器结构体 AVCodecContext *pCodecCtx= NULL;//编解码器信息头 AVCodecParserContext *pCodecPars...原创 2018-04-28 14:12:02 · 2034 阅读 · 0 评论 -
FFMPEG学习笔记---实现H264与Hevc文件播放(二)
实现先创建SDL窗体,解析完成视频文件后进行图像拉伸或者缩放处理显示。注意sws_scale函数 要求为长宽均为16的倍数,否则会有警告提示字节不对齐。#define TEST_H264 1#define TEST_HEVC 0int _tmain(int argc, _TCHAR* argv[]){ AVCodec *pCodec; //编解码器结构体 AVCodecCo...原创 2018-04-28 16:07:36 · 647 阅读 · 0 评论 -
傅里叶分析之掐死教程(完整版)
作 者:韩 昊知 乎:Heinrich微 博:@花生油工人知乎专栏:与时间无关的故事谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。——更新于2014.6.6,想直接看更新的同学可以直接跳到第四章————我保证这篇文章和你以前看过的所有文章都不同,这是12年还在果壳的时...转载 2019-04-23 10:42:10 · 2029 阅读 · 2 评论 -
WAVE绘制频谱图(一)——WAVE文件基础
最近有个项目涉及到PCM数据绘制频谱图,因为WAVE文件中音频为PCM,所以就拿读取WAVE文件来显示测试。项目基本完成,记录一下当做笔记。参考文章:https://blog.csdn.net/xiangyu5945/article/details/5524296Wave 文件的基础知识经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit ...原创 2019-06-12 14:56:44 · 4007 阅读 · 0 评论 -
WAVE绘制频谱图(二)——WAVE文件解析提取PCM数据
为了不太多依赖于平台环境,音频数据提取部分尽量都用c++实现。话不多说,直接还是上代码,代码比较详细不再赘述。WAVE格式头结构体://RIFF头的宏定义缩写,便于后面的比较 低字节-》高字节#define ID_RIFF mmioFOURCC('R', 'I', 'F', 'F')#define ID_WAVE mmioFOURCC('W', 'A', 'V', 'E')#d...原创 2019-06-12 15:14:41 · 3054 阅读 · 9 评论 -
WAVE绘制频谱图(三)——PCM数据处理以及图谱显示
承接上一篇文章,要对取出的PCM数据进行处理还原,做傅里叶变换(这里采用FFT),如果对傅里叶变换不了解的同学,可以参见一下:https://blog.csdn.net/qq_36568418/article/details/89467717。有个大致的了解即可,毕竟我们不是专门做数学的。对于FFT算法库,我网上有很多开源的库可以参考,这里我也用了一个开源库地址:https://...原创 2019-06-12 15:57:47 · 8922 阅读 · 30 评论 -
Vs2010配置FFMpeg环境
1.首先创建vs2010控制台工程命名为 FFmpeg_Test1;创建完成如下图:2:打开工程项目属性。(右键单击FFmpeg_Test1->属性)修改输出目录(方便库文件输出,不用多次拷贝)3:打开 C/C++ ==》附加包含目录 ==》添加 ../include (ffmpeg头文件存放文件夹)4:打开 链接器 ==》附加库目录 ==》 添加 ../lib...原创 2018-04-23 13:53:20 · 886 阅读 · 0 评论