Qt-音视频
亭台六七座
大圣,此去欲何?踏南天,碎凌霄。若一去不回...?便一去不回!
展开
-
使用FFMPEG解码视频之保存成图片
1.首先需要先初始化一下,使用如下函数:1av_register_all(); //初始化FFMPEG 调用了这个才能正常适用编码器和解码器使用这个函数完成编码器和解码器的初始化,只有初始化了编码器和解码器才能正常使用,否则会在打开编解码器的时候失败。2.接着需要分配一个AVFormatContext,FFMPEG所转载 2017-10-27 19:20:19 · 5827 阅读 · 0 评论 -
ffmpeg+SDL2 实现简单播放器
本篇实现基于ffmpeg动态库用测试程序播放本地文件和RTSP视频流。参考文章:http://blog.csdn.net/leixiaohua1020/article/details/8652605, http://blog.csdn.net/guanghua2_0beta/article/details/37578299创建工程,参考上一篇文章:转载 2017-10-29 16:29:17 · 747 阅读 · 0 评论 -
在window7下编译ffmpeg
FFmpeg是一个开源免费跨平台的视频和音频流项目,它提供了录制、转换以及流化音视频的完整解决方案。本文作者将尝试使用该库实现一个可适应复杂网络环境的,支持标准rtsp协议的流媒体服务器。由于Visual Studio提供的C/C++编译器对C99标准的不兼容,因此它不能直接使用MSVC++编译,本文采用在Windows下配置一个类似Linux的编译环境的方式编译ffmpeg源码。转载 2017-10-29 16:32:51 · 663 阅读 · 0 评论 -
通过rtsp获取H264裸流并保存到mp4文件
本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中。1、VS2010建立VC++ win32控制台项目2、在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下转载 2017-10-29 16:36:27 · 5047 阅读 · 0 评论 -
Qt FFMPEG环境搭建
FFMPEG下载地址:https://ffmpeg.zeranoe.com/builds/配置环境变量(需重启电脑):PATH:E:/ffmpeg/Shared/bin;PRO添加如下代码:INCLUDEPATH += E:/ffmpeg/dev/includeLIBS += -LE:/ffmpeg/dev/lib/ -lavcodec -lavdevic原创 2017-10-27 13:04:07 · 1133 阅读 · 0 评论 -
ffmpeg常用基本命令
1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4转载 2017-10-31 16:00:10 · 881 阅读 · 0 评论 -
Qt 之 WAV文件属性计算(比特率、文件大小、文件时长)
简述在 Qt 之 WAV文件解析 中给出了WAV文件属性的计算,具体包括文件大小、音频时长、比特率等属性,这里我们再次验证一下这些属性值的计算 。在计算之前,我们要知道一下wav文件中的三个参数 采样频率、音频通道数、每次采样得到的样本位数 ,这三个参数用来表示声音,同时决定了wav文件的音质,大小。下面简单介绍一下这三个参数。采样频率指每秒钟取得声音样本的次数转载 2017-10-15 19:21:41 · 5669 阅读 · 0 评论 -
Qt 之 解析wav文件的头信息(详细分析、对比不同wav文件的数据)
简述在 Qt 之 WAV文件解析 中我们对wav文件的文件头中的数据进行了分析,在 Qt之实现录音播放及raw(pcm)转wav格式 中我们实现了录音/播放功能,并将.raw格式的音频文件转为wav格式文件,那我们拿到一个wav文件如何获取文件的具体信息呢,这一篇将叙述对wav文件的头信息进行解析。注意在看这篇文章前希望读者看一下 Qt 之 WAV文件解析 和 Qt之实现录转载 2017-10-15 19:24:35 · 612 阅读 · 0 评论 -
Qt之实现录音播放及raw(pcm)转wav格式
简述在上一篇 Qt 之 WAV文件解析 中详细地分析了wav格式文件的文件头信息。通过QAudioInput实现录音功能,但是录音生成的文件并不能用播放器打开,就算更改后缀名也无法识别(有时候下载的一些音频文件通过修改文件名可以播放)。在Qt助手中将录音生成的文件保存为.raw格式,那么这个raw到底是什么格式呢?其实看raw字面的意思是原始的、未处理的、未加工的,从此看来QAud转载 2017-10-15 19:26:01 · 4401 阅读 · 0 评论 -
Qt 之 WAV文件解析
简介最近看了一下Qt的处理音频方面的资料,本身利用QAudioInput 和 QAudioOutput 就可以实现录音和播放功能,代码也很简单,但是录音生成的文件并不能用播放器打开,就算更改后缀名也无法识别(有时候下载的一些音频文件通过修改文件名可以播放)。本质上通过QAudioInput生成的音频文件并没有什么格式,只是一堆音频数据,换言之就是没有文件头,只有数据,当然播放器识别不出来了转载 2017-10-15 19:28:03 · 3107 阅读 · 1 评论 -
FFMPEG Qt视频播放器之同步进阶篇
前面我们已经为播放器加上了简单音视频同步功能。 播放mp4文件的时候似乎没啥问题,但是当播放rmvb文件的时候,问题就暴露出来了。 以电影天堂下载的电影文件为例:下载地址:CD1ftp://dygod2:dygod2@d204.dygod.cn:2088/黑客帝国3.[中英双字.1024高分辨率]/[电影天转载 2017-10-27 20:39:30 · 659 阅读 · 1 评论 -
FFMpeg 常用命令格式转换,视频合成
FFmpeg都是命令行的,用起来肯定不方便。但是,这对技术宅应该不成问题。下面,我就罗列一些比较实用的使用方法吧。FFmpeg的下载与安装FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exe/dll即可。可以到http://www.ffmpeg.org/download.html,然后点击“Windows Builds”,再根据你当前的机器是32位还是64位转载 2018-01-01 14:54:15 · 32241 阅读 · 1 评论 -
ffmpeg常用转换命令,支持WAV转AMR
音频转换:1.转换amr到mp3:ffmpeg -i shenhuxi.amr amr2mp3.mp32.转换amr到wav:ffmpeg -acodec libamr_nb -i shenhuxi.amr amr2wav.wav3.转换mp3到wav:ffmpeg -i DING.mp3 -f wav test.wav4.转换w转载 2018-01-01 15:36:17 · 1947 阅读 · 0 评论 -
FFMPEG录屏软件开发之最终完善
上面我们已经生成了录屏的视频,然而这个视频并不是理想中的那样,随时时间的增加,音视频会越来越不同步。原因就是因为保存视频的方式采用的是固定帧率的方式,既时间戳间隔也是固定的。举个栗子:假如视频的帧率是10,就是每秒钟10张图像,那么这十张图像是平均分布的,位置分别是:0.1s、0.2s...0.9s、1s。然而我们每秒钟采集到的屏幕图像是不固定的,这一秒15张,下一秒有转载 2017-10-27 20:59:36 · 2258 阅读 · 0 评论 -
FFMPEG录屏软件开发之录屏生成MP4
到这里我们已经知道如何生成视频文件了。接下来就用屏幕图像和麦克风的声音合成视频。首先是使用ffmpeg获取屏幕图像,捕获屏幕一样使用libavdevice。在Windows系统使用libavdevice抓取屏幕数据有两种方法:gdigrab和dshow。1). 使用gdigrabgdigrab是FFmpeg专门转载 2017-10-27 20:58:04 · 2626 阅读 · 0 评论 -
FFMPEG录屏软件开发之YUV AAC合成MP4
我们已经获取到了屏幕的图像和麦克风的声音,现在就将它们合并一个普通的视频文件。所谓视频,其实就是一种容器,里面以某种固定的格式放置了视频和音频数据(比如我们前面生成的H264和AAC)。先来感受一下FLV的格式:也就是说只需要按上面规定的方式把图像和音频数据写入文件,最后生成的文件就是一个FLV视频文件了。转载 2017-10-27 20:55:52 · 1744 阅读 · 0 评论 -
FFMPEG Qt视频播放器之显示图像
前面讲解了如何用FFMPEG解码视频。现在,我们就着手用FFMPEG+Qt写一个视频播放器吧:由于现在我们需要显示图像了,因此现在开始需要使用Qt GUI工程了。创建工程的时候记得选择Qt GUI应用。引用FFMPEG请参考前面的文章,这里不再介绍。做过图像界面开发的都知道,任何耗时的操转载 2017-10-27 20:33:56 · 1945 阅读 · 1 评论 -
FFMPEG Qt视频播放器之SDL的使用
前面介绍了使用FFMPEG+Qt解码视频并显示。现在我们就着手给它加上声音播放。播放声音有很多种方式:以windows系统为例,可以使用如下方法播放音频:1.直接调用系统API的wavein、waveout等函数2.使用directsound播放这些方法都只能在windows上使用,且相当难用(至少我这么觉得),这个对于新转载 2017-10-27 20:35:13 · 1591 阅读 · 2 评论 -
FFMPEG Qt视频播放器之音视频同步
前面分别讲解了:用FFMPEG和Qt解码视频并显示到界面上。用FFMPEG+SDL解码播放音频。现在我们就将视频和音频合并,并让声音和画面同步。加入音频的部分就不做讲解了,这里主要讲下声音和视频同步的步骤。首先刚开始播放的时候通过av_gettime()获取系统主时钟,记录下来。以后便不断调转载 2017-10-27 20:36:37 · 1605 阅读 · 0 评论 -
FFMPEG Qt视频播放器之播放控制
到这里,我们的视频播放器已经可以同步播放音视频了。现在 是时候给他加上一些控制的功能了。如播放、暂停、跳转等。一、暂停功能实现 我们是在一个单独的线程中循环读取视频,所以只需要在需要暂停的时候,让读取的操作等下来即可。做法如下:1.首先引入一个变量用来记录是否处于暂停状态:1bool isPause;转载 2017-10-27 20:42:19 · 1887 阅读 · 0 评论 -
FFMPEG Qt视频播放器之美化界面
到这,播放器功能基本都已经实现了,现在就是把界面美化一下就好了:美化界面直接使用Qt的QSS来做,QSS语法和CSS非常相似,还是相当好用的。美化后的界面如下:由于做界面是一件相对技术含量比较低的工作,重点是真的是太繁琐了,因此 我只是稍微美化了一下。不过做界面需要用到的技术都在代码里面了,同时我还在里面加上了一些常用的Q转载 2017-10-27 20:46:18 · 893 阅读 · 0 评论 -
FFMPEG Qt录屏软件开发之视频采集
前面讲解了视频播放器的开发,初步掌握了使用FFMPEG解码音视频。现在我们就接着讲解使用FFMPEG来编码音视频,主要是实现一个录屏软件的制作。一个录屏软件的流程基本就是:图像采集图像编码将解码好的图像封装成视频图像的采集:FFmpeg中有一个和多媒体设备交互的类库:Libavdevice。使用这个转载 2017-10-27 20:47:35 · 5269 阅读 · 3 评论 -
FFmpeg录屏软件开发之屏幕录像
上一节 讲解了摄像头的采集,初步掌握了libavdevice的使用。现在接着使用libavdevice来采集屏幕的图像。在Windows系统使用libavdevice抓取屏幕数据有两种方法:gdigrab和dshow。1. gdigrabgdigrab是FFmpeg专门用于抓取Windows桌面的设备。非常适合用于屏幕录制。它通过不同的输入URL支持两种方式的抓转载 2017-10-27 20:48:43 · 1937 阅读 · 0 评论 -
RGB/YUV格式详解
上一节,我们采集了屏幕图像 并且转换成YUV420P写入了文件中。既然得到了yuv420p数据,那么接下来的操作就是编码了。在开始编码之前,我们先发点时间了解下YUV420P这种格式,当然,不了解这个对我们开发录屏软件是没有影响的。不过既然要做视频开发,不了解YUV420P似乎有点说不过去吧。那么,下面就开始讲解YUV420P吧。转载 2017-10-27 20:50:05 · 420 阅读 · 0 评论 -
YUV420P转RGB32
上一节讲解了YUV420P格式的内容。我说过,我们不是为了做研究。 平白无故讲了YUV420P的理论知识,要是不做点什么总说不过去吧。 那么,我们就练练刀,写个播放YUV420P的程序吧,将前面保存的YUV420P图像用自己写的播放器播放出来。这里我们还是一样使用Qt来显示图像。之前做播放器的时候,是将YUV420P转换成RGB32,然后放到QI转载 2017-10-27 20:51:16 · 1707 阅读 · 0 评论 -
采集屏幕编码H264
前面介绍了采集屏幕图像并转换成YUV420p。传送门YUV420p数据是原始的图像数据,100张1920x1080的图像 总大小就达到了300M。太可怕了! 可见,这样直接写入文件是行不通的。因此我们需要把它编码成h264之后在写入文件。至于什么是h264,前面有介绍,这里就不介绍了。废话不多说,直接进入正文吧。编码h264还是一样使用f转载 2017-10-27 20:51:50 · 1346 阅读 · 1 评论 -
FFMPEG录屏软件开发之音频采集
前面讲解了如何使用libavdevice采集摄像头图像同样 libavdevice 也可以采集麦克风的声音。下面就讲解麦克风声音的采集:采集声音和采集摄像头本质上没有多大的却别,基本上就是换个名字:首先还是一样注册libavdevice:1avdevice_register_all();转载 2017-10-27 20:52:34 · 2195 阅读 · 0 评论 -
FFMPEG录屏软件开发之编码AAC
之前讲到了使用ffmpeg读取麦克风并保存成PCM文件。传送门获取到了PCM之后,下一步当然是编码生成AAC了。与之前说过的YUV是视频的原始数据类似,PCM是音频的原始数据,因此它的大小也相对比较大,因此就有必要将PCM数据编码。同样,音频的编码方式也有很多种,常见如MP3,AAC。我们以后使用比较多的就是AAC,因此本文只讲解将pcm编码成AAC。转载 2017-10-27 20:54:13 · 683 阅读 · 1 评论 -
Qt 播放音频文件
Qt播放音频文件的方法有好多中,简单介绍几种不过一下几种方式都需要在Qt工程文件中添加[cpp] view plain copyQT += multimedia 第一QMediaPlayer类可以播放MP3文件,同时使用也是最简单的了,具体代码转载 2017-10-20 17:54:40 · 2004 阅读 · 1 评论 -
cvCopy与cvCopyimage的区别
如果设定了ROI等参数的时候,cvCopy只是复制被设定的区域,复制到一个和所设定参数相吻合的新的IplImage中而cvCloneImage则是将整个IplImage结构复制到新的IplImage中,其中的ROI等参数也会一同复制。新的IplImage将会和原来的一模一样.而cvCopyImage复制图像,复制图像的ROI部分介绍如下 :cvCopyvoid cvCopy(c转载 2018-01-10 08:24:31 · 2141 阅读 · 2 评论