说明:
开发环境和安装软件版本如下:
linux: Ubuntu16.04
FFMPEG: ffmpeg-4.1.3
SDL: SDL2-2.0.9
lame: lame-3.100
x264: x264-snapshot-20190610-2245
QT: qt-opensource-linux-x64-5.9.0.run
QT:
优良的跨平台特性:支持 Windows,Linux,iOS、Android、WP等等系统。
面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。
Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。
丰富的 API;支持 2D/3D 图形渲染,支持 OpenGL;大量的开发文档;XML 支持。
FFMPEG:
FFMPEG是一个集成了各种编解码器的库,可以说是一个全能型的工具,从视频采集、视频编码到视频传输(包括RTP、RTCP、RTMP、RTSP等等协议)都可以直接使用FFMPEG来完成,更重要的一点FFMPEG是跨平台的,Windows、Linux、Aandroid、IOS这些主流系统通吃。因此FFMPEG是音视频开发比较常用的工具。
SDL:
1.网上资料多,学习起来方便
2.跨平台,Windows、Linux、Android、IOS系统上都可以使用。
3.库体积相对比较小
SDL有一个缺点就是不能够采集音频,但是像安卓、IOS这样的系统,在采集音频的时候还是推荐直接用他们的API采集,因此我们完全可以容忍SDL不能采集音频这个缺点,并且FFMPEG是支持采集音频的,必要的时候我们也可以直接使用FFMPEG采集。
SDL本身是一个多媒体库,其最强大的地方不是在音频上,而是在图形图形上
环境安装搭建:
QT的安装网上有很多,这里不介绍。
FFMPEG 和SDL2 安装可以参考博客:《linux FFMPEG 完整安装》
环境测试:
Qtcreator中新建一个C++工程,添加FFMPEG和SDL2的头文件和库文件,测试程序直接使用的是叶海辉的《testFFmpeg+SDL(Windows下FFMPEG解码AAC文件并使用SDL播放)》,他的这个程序适用的是Windows的库,我将他替换成了我自己编译的linux库。
工程下载目录:testFFmpegSDL2.tar.gz