在Ubuntu下面搭建开发环境,其实就是装一下用到的各个库。
我没有用自己编译源码的方法,直接sudo apt-get install xxx了。
这里面sdl,ffmpeg的库需要装,另外avcodec avformat swscale的库也要装,并不是包含在ffmpeg里面的。
装完了之后,默认的路径是在/usr/include下面有头文件
因此在源码中#include的是libavcdec/avcodec.h这种的格式,如果是自己编译的源码,那么路径可能会不一样
ffmpeg tutorial是在网上找到的教程文档,提供了源码下载,但是教程比较老了,一些函数被废弃了。因此各种改,在网上也能搜到很多的。
主要是对video的数据处理多了使用一个swscale的库里面的函数,其他的没怎么变化,有个strcpy的函数变成了av_strlcpy,而且参数顺序也变化了。
话说这些变化怎么搞出来的我是不知道,编译不过自然要找到问题。但是如何找到替代的函数就很难了,我是直接google别人的。
不过当时也没有记录下大家的网址,这里就没法给出了。
前六章的代码都打了一遍,第六章的同步音频的实现还有些问题,第七章是图像缩放的,第八章讲的就是swscale的缩放库。因此就没有继续敲代码了。
主要分析了一下各个代码的主要流程啊,实现方法啊之类的。
总结到一点东西。
程序结构上主要还是以SDL的API为主,包括程序外壳也就是GUI的部分,线程的处理,事件,回调函数,定时器等等功能全部都是用的SDL的API来实现的。
而ffmpeg的库门则是完成了打开文件,读取文件,处理文件,也就是编解码数据等工作。
掺杂了两个库的API因此思维老是在两个库里面跳来跳去的,有点麻烦。
想搞清楚了,那就把两个库的API都看一遍,会花费很多时间,但是十分有效果的。
SDL的API并不是很多,分类的也比较清楚,直接找源码里面的doc的html看看就可以了,不是挺难的,里面的原理没有.c文件不好分析,不过功能上还是可以接受的。
ffmpeg的API就一大堆了,不过常用到的倒是没有几个。关键还是它的数据结构比较麻烦,几个超大的结构体包含来包含去的。
当API和数据结构熟悉了之后再来看代码,思维就比较能够跟得上节奏了。
感觉比较好的方法是实现一个播放器,能用来播电影听歌之类的就好。具体的实现过程还是很麻烦的,暂时我还没有动手。
想想的话主要是SDL先把界面做出来,就是一个框架,功能性的东西先用fprintf来打印,然后再把ffmpeg的API填进去。
这里面主要还是一个架构的问题,程序的结构设计的好的话,就比较轻松,设计的不好的话呢,估计调试都很费劲。
暂时总结到这里。~~