自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 从零开始学习音视频编程技术(41) H.264播放器

2019-10-24更新: 1.更新为ffmpeg4.1,同时支持播放h265。 下载地址:https://download.csdn.net/download/qq214517703/11914710 Github地址:https://github.com/yundiantech/FFMP...

2018-05-20 11:12:29 751 3

原创 从零开始学习音视频编程技术(40) H.264数据解析

前面我们已经开发了视频播放器和录屏软件,但目前为止,我们对原理性的东西其实还不是很了解。 现在我们需要稍微了解一下理论知识,然后才能继续,先从h.264数据讲起。 H.264数据结构解析: NALU可以简单认为就是一帧视频数据(我们暂且先这样认定),那么h264的结构就是一帧帧数...

2018-05-18 09:43:25 553 0

原创 从零开始学习音视频编程技术(35) windows下编译并调试ffmpeg

前面介绍了Linux下编译ffmpeg的方法,考虑到大部分时候测试ffmpeg功能都是使用的windows系统(至少我是这样的),因此将战场重新转移到windows上。    前面写了那么多的代码,但都只是简单的调用了ffmpeg的API,并不知道他内部是如何实现的。如果可以在调试的时候打个断点就...

2018-02-27 20:37:57 451 0

原创 从零开始学习音视频编程技术(二十二) FFMPEG Qt视频播放器之BUG修复

======新增功能 Begin ======= 2017-12-07更新: 1.打开视频黑屏,无法打开视频问题 2.暂停出现吱吱声 3.界面新增拖动大小功能 4.新增暂停的时候跳转画面跟着变。 下载地址:http://download.csdn.net/download/qq2145...

2018-02-27 20:35:04 573 0

原创 从零开始学习音视频编程技术(34) Linux篇之编译ffmpeg

 水了这么多篇,是时候开始干正事了。Linux基础知识已经掌握了,现在可以开始编译ffmpeg了:一、下载ffmpeg首先下载ffmpeg的源代码,ffmpeg所有版本源代码下载地址:http://ffmpeg.org/releases/截至本文编写时,ffmpeg最新版本是3.3,但我们还是一如...

2018-02-27 20:33:16 452 0

原创 从零开始学习音视频编程技术(33) Linux篇之Makefile

原文地址:http://blog.yundiantech.com/?log=blog&id=32 回想上节我们写的main.c和function.c,编译这2个文件的时候我们用了3条命令,分别是: gcc  -c  main.c gcc  -c  function.c gcc  -o...

2017-07-12 17:20:20 546 1

原创 从零开始学习音视频编程技术(32) Linux篇之编译和链接

原文地址:http://blog.yundiantech.com/?log=blog&id=31 在windows下写程序的时候,通常我们所说的“编译”程序,就是直接点IDE工具上的那个运行图标,程序就运行起来了。 所以windows下开发的时候很少对程序编译的整个过程有大概的了解,...

2017-07-11 16:40:26 559 0

原创 从零开始学习音视频编程技术(31) Linux篇之hello world

原文地址:http://blog.yundiantech.com/?log=blog&id=30 Linux和window在使用上有一定的区别,百度上搜一下如何学习Linux都会有各种书籍推荐,呼声最高的就是《鸟哥的linux私房菜》,有兴趣的可以搞一本看看,当初我也买了一本(然...

2017-07-03 15:39:27 1559 0

原创 从零开始学习音视频编程技术(30) Linux篇之系统安装

原文地址:http://blog.yundiantech.com/?log=blog&id=29   到这里,我们已经掌握了windows下使用ffmpeg。谈不上精通,但至少已经算是入门了,现在,我们没有继续深入研究ffmpeg,因为深入研究的过程是很枯燥的(主要是我也只会这些了)...

2017-06-14 15:07:56 933 0

原创 从零开始学习音视频编程技术(二十一) 录屏软件开发之最终完善

原文地址:http://blog.yundiantech.com/?log=blog&id=28 上面我们已经生成了录屏的视频,然而这个视频并不是理想中的那样,随时时间的增加,音视频会越来越不同步。 原因就是因为保存视频的方式采用的是固定帧率的方式,既时间戳间隔也是固定的。...

2017-04-27 16:46:50 1497 0

原创 从零开始学习音视频编程技术(二十) 录屏软件开发之录屏生成MP4

原文地址:http://blog.yundiantech.com/?log=blog&id=27 到这里我们已经知道如何生成视频文件了。 接下来就用屏幕图像和麦克风的声音合成视频。 首先是使用ffmpeg获取屏幕图像,捕获屏幕一样使用libavdevice...

2017-04-27 13:40:14 3611 0

原创 从零开始学习音视频编程技术(十九) 录屏软件开发之YUV AAC合成MP4

原文地址:http://blog.yundiantech.com/?log=blog&id=26 我们已经获取到了屏幕的图像和麦克风的声音,现在就将它们合并一个普通的视频文件。 所谓视频,其实就是一种容器,里面以某种固定的格式放置了视频和音频数据(比...

2017-04-27 09:43:03 921 0

原创 从零开始学习音视频编程技术(十八) 录屏软件开发之编码AAC

原文地址:http://blog.yundiantech.com/?log=blog&id=24 光阴似箭,日月如梭。 时间过的可真快。。。  一转眼 大半年就过去了,差点就忘记学习了。。 学习贵在坚持和积累,然而就是很难做到坚持。。 不知不觉已经半年没有更新了,对...

2017-04-25 20:20:58 1204 1

原创 从零开始学习音视频编程技术(十七) 录屏软件开发之音频采集

前面讲解了如何使用libavdevice采集摄像头图像 同样 libavdevice 也可以采集麦克风的声音。 下面就讲解麦克风声音的采集: 采集声音和采集摄像头本质上没有多大的却别,基本上就是换个名字: 首先还是一样注册libavdevice: ...

2016-11-29 09:43:11 1288 0

原创 从零开始学习音视频编程技术(十六) 采集屏幕编码H264

前面介绍了采集屏幕图像并转换成YUV420p。传送门 YUV420p数据是原始的图像数据,100张1920x1080的图像 总大小就达到了300M。太可怕了! 可见,这样直接写入文件是行不通的。因此我们需要把它编码成h264之后在写入文件。至于什么是h264,前面有介绍,这里就不介绍了。 ...

2016-10-15 17:07:29 1714 0

原创 从零开始学习音视频编程技术(十五) YUV420P转RGB32

原文地址:http://blog.yundiantech.com/?log=blog&id=19 上一节讲解了YUV420P格式的内容。 我说过,我们不是为了做研究。 平白无故讲了YUV420P的理论知识,要是不做点什么总说不过去吧。 那么,我们就练练刀,写个播放YUV420P的程序吧...

2016-09-30 10:20:09 5370 3

原创 从零开始学习音视频编程技术(十四) RGB/YUV格式详解

原文地址:http://blog.yundiantech.com/?log=blog&id=18 上一节,我们采集了屏幕图像 并且转换成YUV420P写入了文件中。 既然得到了yuv420p数据,那么接下来的操作就是编码了。 在开始编码之前,我们先发点时间了解...

2016-09-30 10:18:23 1235 0

原创 从零开始学习音视频编程技术(十三) 录屏软件开发之屏幕录像

原文地址:http://blog.yundiantech.com/?log=blog&id=17 上一节 讲解了摄像头的采集,初步掌握了libavdevice的使用。 现在接着使用libavdevice来采集屏幕的图像。 在Windows系统使用libavdevice...

2016-09-28 20:09:53 2923 0

原创 从零开始学习音视频编程技术(十二) 录屏软件开发之视频采集

原文地址:http://blog.yundiantech.com/?log=blog&id=15 前面讲解了视频播放器的开发,初步掌握了使用FFMPEG解码音视频。 现在我们就接着讲解使用FFMPEG来编码音视频,主要是实现一个录屏软件的制作。 一个录屏软件的...

2016-09-28 20:07:52 2224 1

原创 从零开始学习音视频编程技术(十一) FFMPEG Qt视频播放器之美化界面

原文地址:http://blog.yundiantech.com/?log=blog&id=14 到这,播放器功能基本都已经实现了,现在就是把界面美化一下就好了: 美化界面直接使用Qt的QSS来做,QSS语法和CSS非常相似,还是相当好用的。 美化后的界面如下...

2016-09-23 10:19:28 1828 3

原创 从零开始学习音视频编程技术(十) FFMPEG Qt视频播放器之播放控制

原文地址:http://blog.yundiantech.com/?log=blog&id=13 到这里,我们的视频播放器已经可以同步播放音视频了。现在 是时候给他加上一些控制的功能了。如播放、暂停、跳转等。 一、暂停功能实现     我们是在一个单独的线程中...

2016-09-23 10:11:38 1699 0

原创 从零开始学习音视频编程技术(九) FFMPEG Qt视频播放器之同步进阶篇

原文地址:http://blog.yundiantech.com/?log=blog&id=12 前面我们已经为播放器加上了简单音视频同步功能。     播放mp4文件的时候似乎没啥问题,但是当播放rmvb文件的时候,问题就暴露出来了。     以电影天堂下载的电...

2016-09-22 10:19:56 1724 0

原创 从零开始学习音视频编程技术(八) FFMPEG Qt视频播放器之音视频同步

原文地址:http://blog.yundiantech.com/?log=blog&id=11 前面分别讲解了: 用FFMPEG和Qt解码视频并显示到界面上。 用FFMPEG+SDL解码播放音频。 现在我们就将视频和音频合并,并让声...

2016-09-22 10:17:14 2377 0

原创 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用

原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用FFMPEG+Qt解码视频并显示。 现在我们就着手给它加上声音播放。 播放声音有很多种方式: 以windows系统为例,可以使用如下方法播...

2016-09-22 10:13:56 5056 7

原创 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像

原文地址:http://blog.yundiantech.com/?log=blog&id=9 前面讲解了如何用FFMPEG解码视频。 现在,我们就着手用FFMPEG+Qt写一个视频播放器吧: 由于现在我们需要显示图像了,因此现在开始需要使...

2016-09-22 10:01:27 9150 5

原创 从零开始学习音视频编程技术(五) 使用FFMPEG解码视频之保存成图片

原文地址:http://blog.yundiantech.com/?log=blog&id=8 前面我们已经知道怎么使用FFMPEG了。 现在,开始着手使用FFMPEG吧: 首先来个简单的例子,使用FFMPEG打开视频文件,并解码保存成一张张的图片。 ...

2016-09-22 09:51:55 2895 8

原创 从零开始学习音视频编程技术(四) FFMPEG的使用

============= 2019-10-31更新: 这篇文章使用的是ffmpeg2.5版本,现如今2.5已经过时了,就连官网也下载不到了。因此不推荐再使用2.5版本了, Qt5引用ffmpeg4.1版本的例子,请参考:http://blog.yundiantech.com/?log=blog&...

2016-09-20 09:46:00 7609 6

原创 从零开始学习音视频编程技术(三) 开发环境搭建

============= 2019-10-31更新: Qt4已经淘汰了,不建议使用了,推荐使用Qt开发。 Qt5开发环境的搭建,请参考:http://blog.yundiantech.com/?log=blog&id=37 ============= 前面介绍了音频...

2016-09-19 10:08:37 5816 2

原创 从零开始学习音视频编程技术(二) 音频格式讲解

原文地址:http://blog.yundiantech.com/?log=blog&id=5 1. 音频简介     前面我们说过视频有一个每秒钟采集多少张的概念,这就叫做视频的帧率。     和视频的帧率一样的道理,声音也有一个频率,叫做采样率。   人对频率的识别范围是...

2016-09-18 09:16:56 2379 0

原创 从零开始学习音视频编程技术(一) 视频格式讲解

原文地址:http://blog.yundiantech.com/?log=blog&id=4  所谓视频,其实就是将一张一张的图片连续的放出来,就像放幻灯片一样,由于人眼的惰性,因此只要图片的数量足够多,就会觉得是连续的动作。 所以,只需要将一张一张的图片保存下来,这样就可以构成一...

2016-09-16 09:33:56 9764 0

原创 YUV420图像裁剪

前面使用dshow获取到了屏幕的截图,并且转换成了yuv420格式。、 现在需要能获取截图的部分区域。 本来打算在dshow获取截图的时候直接裁剪获得某个区域的rgb图像,但发现这样做,有时候成功不了。 因此只能选择获取完整的屏幕截图,转换成yuv后再进行裁剪: YUV420裁剪代码如下: ...

2016-08-25 15:30:17 2880 0

原创 RGB24转yuv420 高效率 且颜色没有失真

前面使用dshow获取到的屏幕截图是一段rgb24的数据,需要将其转换成yuv420格式才能进行编码等操作。 网上找了很多资料,发现能用的并不多,这里总结一下。 1.雷大神写的 bmp转yuv: http://blog.csdn.net/leixiaohua1020/article/detai...

2016-08-25 14:48:18 5977 4

原创 使用dshow获取屏幕截图 不包含鼠标

正常录制屏幕可以使用ffmpeg直接获取屏幕图像: 使用ffmpeg获取屏幕图像 但是 现在有时希望获取的屏幕截图上不要有鼠标,研究了好久 发现ffmpeg似乎做不到。 查了好久发现可以直接使用dshow来获取: 代码如下: #ifndef GETSCREEN_H #define ...

2016-08-25 14:12:00 794 0

原创 使用手机控制电脑 实现音乐播放 电影播放控制 关机等操作

寒冷的冬天躲在被窝里用电脑看电影的时候,相信大家都希望不想起身操作电脑,这时候能有个遥控器可以直接控制电脑该多好。 下面就像大家介绍一个用手机控制电脑的方法: 一、软件下载 首先需要下载一款软件叫“KK遥控” ,这是一款手机控制电脑的软件,需要在手机和电脑上都安装才能使用。 软件下...

2016-08-24 13:34:07 3773 1

原创 Qt写的一个截图软件

程序主界面: 截图界面:     录屏生成gif: 截图历史记录(支持将图片直接拖拽到文件系统): 源代码: Qt写的截图软件 包含可执行程序和源代码

2013-04-10 09:17:03 1975 4

原创 Qt + SDL实现的实时录音并播放的程序,类似KTV唱歌

熟话说:没有什么比研究源代码本身更好的了。 所以这里不啰说了,直接上代码了。 Qt + SDL实现的KTV程序 【说明】 采集音频用的是QAudioInput 播放音频用SDL, 不用QAudioOutput是因为QAudioOutput播放声音必须是IO 他需要先打开,然后才能播放,打开的...

2013-03-15 14:27:13 6202 8

原创 Makefile书写规则

Makefile 书写规则:   总目标:依赖1依赖2... 目标1:依赖 命令 目标2:依赖 命令   /* ######## makefile #######*/ helloworld:hello.o main.o        gcc -o helloworld hell...

2012-10-21 21:47:36 1038 0

原创 一个超级好用的linux下编程的IDE工具

不知道大家在写Linux程序的时候用的是什么工具。     我见过有人在windows下用UE编辑了然后拿到里面编译,感觉这样太麻烦了吧。      网上把 vi + gcc + gdb传的那么神,于是本人也亲自配置了体验一下,发现根本没那回事。 用惯了windows下的IDE工具 在纯文本...

2012-09-30 08:16:36 2857 0

原创 linux网络编程之TCP编程----初级

linux网络编程之TCP编程----初级   TCP编程步骤 一、TCP服务器: TCP编程的服务器端一般步骤是: 1、创建一个socket,用函数socket(); 2、设置socket属性,用函数setsockopt(); * 可选 3、绑定IP地址、端口等信息到socket上,用函数bin...

2012-09-27 13:23:35 743 0

原创 Qt定时器

Qt定时器:    QTimer *testTimer = new QTimer(this);  //创建定时器    将定时器超时信号与槽(功能函数)联系起来:    connect( testTimer, SIGNAL(timeout()), this, SLOT(testFunct...

2012-09-26 17:46:04 675 0

提示
确定要删除当前文章?
取消 删除