前面介绍了Linux下编译ffmpeg的方法,考虑到大部分时候测试ffmpeg功能都是使用的windows系统(至少我是这样的),因此将战场重新转移到windows上。前面写了那么多的代码,但都只是简单的调用了ffmpeg的API,并不知道他内部是如何实现的。如果可以在调试的时候打个断点就可以进入ffmpeg代码调试看看实现该好友多好!梦想总是要有的,万一实现了呢!百度了一下发现可以做到,...
水了这么多篇,是时候开始干正事了。Linux基础知识已经掌握了,现在可以开始编译ffmpeg了:一、下载ffmpeg首先下载ffmpeg的源代码,ffmpeg所有版本源代码下载地址:http://ffmpeg.org/releases/截至本文编写时,ffmpeg最新版本是3.3,但我们还是一如既然的使用2.5.6.2.5.6下载地址: http://ffmpeg.org/releases/ff...
上一节讲解了YUV420P格式的内容。 我说过,我们不是为了做研究。 平白无故讲了YUV420P的理论知识,要是不做点什么总说不过去吧。 那么,我们就练练刀,写个播放YUV420P的程序吧,将前面保存的YUV420P图像用自己写的播放器播放出来。 这里我们还是一样使用Qt来显示图像。 之前做播放器的时候,是将YUV420P转换成RGB32,然后放到QImage里面显示出来。 由于Qt不支持直接
YUV420p数据是原始的图像数据,100张1920x1080的图像 总大小就达到了300M。太可怕了! 可见,这样直接写入文件是行不通的。因此我们需要把它编码成h264之后在写入文件。至于什么是h264,前面有介绍,这里就不介绍了。 废话不多说,直接进入正文吧。 编码h264还是一样使用ffmpeg,方法如下: 1.打开编码器 1 2
现在我们就将视频和音频合并,并让声音和画面同步。 加入音频的部分就不做讲解了,这里主要讲下声音和视频同步的步骤。 首先刚开始播放的时候通过av_gettime()获取系统主时钟,记录下来。 以后便不断调用av_gettime()获取系统时钟 减去之前记录下的差值,便得到了一个视频播放了多久的实际时间。 对于视频的同步我们这样做: 从视频读取出的数据中包含一个pts的信息(每一帧图像都会带有pts
.
============= 前面介绍了音频格式和视频格式,理论知识就不在多说了。 其他的理论上知识在以后用多少讲多少,毕竟我们不是为了做研究,而是实实在在的做项目,因此要把的重心放在实践上。 在正式开始之前呢,先讲下开发环境的选择。 首先操作系统的选择,总的来说大家都是用windows系统的,因此我们先从windows讲起,前期的项目也都是在windows下进行的,后期我们在讲解
前面讲解了如何用FFMPEG解码视频。 现在,我们就着手用FFMPEG+Qt写一个视频播放器吧: 由于现在我们需要显示图像了,因此现在开始需要使用Qt GUI工程了。 创建工程的时候记得选择Qt GUI应用。 引用FFMPEG请参考前面的文章,这里不再介绍。 做过图像界面开发的都知道,任何耗时的操作都不能放在主线程进行,一旦主线程阻塞了,那么体现出来的就是界面卡了。 而我们读取视频和解码视频是一
前面介绍了使用FFMPEG+Qt解码视频并显示。 现在我们就着手给它加上声音播放。 播放声音有很多种方式: 以windows系统为例,可以使用如下方法播放音频: 1.直接调用系统API的wavein、waveout等函数 2.使用directsound播放 这些方法都只能在windows上使用,且相当难用(至少我这么觉得),这个对于新手来说要把它们用好并稳定运行比较难。 想想我们使用FFMPE
由于人眼的惰性,因此只要图片的数量足够多,就会觉得是连续的动作。 所以,只需要将一张一张的图片保存下来,这样就可以构成一个视频了。 但是,由于目前网络和存储空间的限制,直接存储图片显然不可行。举个例子:在视频聊天中,假定从摄像头采集的图片每张大小200KB,每秒钟发送大概15帧图片,这样每秒钟需要的流量就需要3M(意味着需要24M的宽带),显然这个要求太高了。 于是,就可以考虑
1. 音频简介 前面我们说过视频有一个每秒钟采集多少张的概念,这就叫做视频的帧率。 和视频的帧率一样的道理,声音也有一个频率,叫做采样率。 人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。
前面我们已经知道怎么使用FFMPEG了。 现在,开始着手使用FFMPEG吧: 首先来个简单的例子,使用FFMPEG打开视频文件,并解码保存成一张张的图片。 具体的步骤如下所示: 1.首先需要先初始化一下,使用如下函数: 1 av_register_all(); //初始化FFMPEG 调用了这个才能正常适用编码器和解码器 使用这个函数完成编码器和解码器的初始化,只有初
地址:://blog.yundiantech./?log=blog&id=12前面我们已经为播放器加上了简单音视频同步功能。 播放mp4文件的时候似乎没啥问题,但是当播放rmvb文件的时候,问题就暴露出来了。 以电影天堂下载的电影文件为例:下载地址:CD1ftp://dygod2:
地址:://blog.yundiantech./?log=blog&id=29 到这里,我们已经掌握了windows下使用ffmpeg。谈不上精通,但至少已经算是入门了,现在,我们没有继续深入研究ffmpeg,因为深入研究的过程是很枯燥的(主要是我也只会这些了)。既然ffmpeg是跨平台的,那么就来感受一下吧,我们先从Linux开始,将之前实现的功能移植到Linux系统
前面我们已经开发了视频播放器和录屏软件,但目前为止,我们对原理性的东西其实还不是很了解。现在我们需要稍微了解一下理论知识,然后
AAC基本格式AAC音频格式有ADIF和ADTS:ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频
Linux下Qt5.13引用ffmpeg4.2
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号