最新版本ffmpeg源码安装+vscode开发环境搭建!
Posted txp玩Linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最新版本ffmpeg源码安装+vscode开发环境搭建!相关的知识,希望对你有一定的参考价值。
前言:
大家好,今天给大家分享一篇ffmpeg开发环境的搭建,我在很早之前也给搭建过ffmpeg源码的安装,但是并没有给大家去搭建开发环境,而且当时的版本也比较老,很多细节问题没有给大家展示如何解决!
今天就给大家展示详细的ffmpeg最新5.1版本源码安装步骤和vscode开发环境搭建!技术的更新迭代,我们也要跟上技术的发展,所以这次用最新的版本来做开发环境!
如果大家需要进行交叉编译的话,可以参考之前移植rv1126上的教程!
ok,开始正式的分享,这里建议在ubuntu18上安装环境!
一、编译安装需要的开源编码格式:
首先在编译安装这些开源编码格式之前,我们要明白为啥需要他们:
aac
x264
x265
为啥需要呢?如果你对ffmpeg稍微了解的话,ffmpeg本身是一个框架,自身默认并没有支持这三种编码格式,所以需要我们手动添加来支持!
ok,明白了这个之后,我们开始来下载这三个开源编码格式源码包:
1、编译aac:
aac下载链接:
wget https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz

开始编译:
- 1、./configure --prefix=/usr/local/ffmpeg/ --enable-shared
- 2、make -j8 && make install
这里我把编译出来的东西都放在/usr/local/ffmpeg/,而且这里只编译动态库出来;大家按照上面两个步骤操作就行:


最终编译出来的动态库,就放在/usr/local/ffmpeg/lib下面,头文件在/usr/local/include下面:

2、 编译x264:
x264下载链接:
wget http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191024-2245-stable.tar.bz2

开始编译:
1、./configure --prefix=/usr/local/ffmpeg --enable-static --enable-pic
2、 make -j8 && make install
这里把编译出来的东西同样放在路径/usr/local/ffmpeg,而且编译的是静态库:

注意:这里你第一次安装的话,会报错nasm版本过低,这个时候你要重新下载nasm源码安装编译:

这里我给大家nasm的安装步骤;首先是nasm的下载链接:
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2
编译步骤:
1、./configure
2、make -j8 && make install
ok,这个操作就比较简单,你按照这个操作就行;第一次安装x264的话,通过重新安装nasm,是可以解决报错的,然后我们接着来安装x264:

最后生成的头文件和静态库,也是放在/usr/local/ffmpeg路径下:

3、编译x265:
x265下载链接:
wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz

编译步骤:
1、cd x265_3.2/build/linux/
2、 ./make-Makefiles.bash
3、 make -j8 && make install


我们可以看到,x265编译出来的库和头文件分别放在/usr/local/lib和/usr/local/include路径下!
二、最新ffmpeg源码编译安装:
这里我们用gitte上的源码,github上的下载会有点慢:
git clone https://gitee.com/mirrors/ffmpeg/
我们下载下来,并切换分支到5.1版本:
git checkout -b remotes/origin/release/5.1


然后开始编译:
1、./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-libx264 --enable-libx265 --enable-libfdk-aac
2、make -j8 && make install
第一步这里,我们就是手动把aac、x264、x265编码格式给强制打开,这里也提一下其他enable的作用:
--enable-pthreads:启用pthreads(多线程)(默认关闭,可能会有线程安全问题)
--enable-gpl:允许使用GPL(默认关闭)
--enable-shared :构建共享库(默认关闭)
--enable-version3:升级GPL到版本3(默认:关闭)
--enable-nonfree:允许使用非免费的代码, 产生的库和二进制程序将是不可再发行的
--prefix=/usr/local/ffmpeg:把ffmpeg编译出来的东西都放在这个路径下去

我们发现找不到libfdk_aac,那怎么解决呢,问题出在找不到它路径,所以我们配置一下环境变量:
vi ~/.bashrc
添加下面这条语句:

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig"
然后退出,执行一下source ~/.bashrc使其生效。为什么我们这里要这样操作,这里主要通过下面这个里面fdk-aac.pc这个文件去定位fdk-aac:

这个时候再执行刚才的那个配置,就可以解决这个问题,如果后期遇到类似的问题,都可以参考这种方法去解决,核心是要找到你编译出来的.pc后缀对应的文件就行:

接着下面继续编译,这个过程比较久,我只给大家展示make install这部分:

最后我们可以在/usr/local/ffmpeg/lib路径下看到生成的库:

可执行程序和头文件:
这里也配置一下环境变量:
export PATH="$PATH:/usr/local/ffmpeg/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/ffmpeg/lib"

这个时候,我就可以在任何终端路径查看ffmpeg的版本了:

三、利用vscode搭建ffmpeg开发环境搭建:
先去vscode官网下载vscode:
https://code.visualstudio.com/
下载下面这个版本,因为我现在的环境是ubuntu18:

然后直接点击下载好的包,就可以安装vscode了:


最后就可以看到安装好的vscode:

现在我们来建立一个heh.c的工程,同时先安装一下c/c++和gdb插件:


终端编译:
gcc heh.c -lavutil -lavformat
最后:
对嵌入式音频开发感兴趣的朋友,可以加入星球来学习:

最新视频教程更新到:
最后感谢大家的支持哈,加入了星球的朋友,记得加我微信:tu18879499804,我拉大家进解答群!
音视频开发6. 搭建 ffmpeg Linux远程开发环境
音视频开发6. 搭建 ffmpeg Linux远程开发环境
一、准备环境
- CentOS7 服务端
- 安装gcc4.8.2
- 本地windows,安装vscode
目标: 搭建FFmpeg 远程开发环境 ,本地使用VSCode。
二、操作步骤
1. 在CentOS 编译安装 ffmpeg
安装可参考: CentOS编译安装ffmpeg
2. 编译安装ffmpeg后的环境
库文件位置 : /usr/lib
ffmpeg源文件位置: /home/用户名/ffmpeg_sources/ffmpeg-4.2.2
3. 本地在vscode安装 远程开发插件
另外安装 c/c++插件。
4. 点击vscode左下角,进行远程配置。
按提示配置远程服务器信息。
5. 点击左侧Remote Explorer,连接到服务端
6. 在vscode点击文件菜单,打开文件夹,选择远程目录
三、建测试项目
项目路径: /home/xundh/ffmpegrtsp/
1. 项目CmakeLists.txt设置
cmake_minimum_required(VERSION 3.17)
project(ffmpeg_demo)
# 设置ffmpeg依赖库及头文件所在目录,并存进指定变量
set(ffmpeg_libs_DIR /home/xundh/ffmpeg_sources/ffmpeg-4.2.2)
set(ffmpeg_headers_DIR /home/xundh/ffmpeg_sources/ffmpeg-4.2.2)
#对于find_package找不到的外部依赖库,可以用add_library添加
# SHARED表示添加的是动态库
# IMPORTED表示是引入已经存在的动态库
add_library( avcodec SHARED IMPORTED)
add_library( avfilter SHARED IMPORTED )
add_library( swresample SHARED IMPORTED )
add_library( swscale SHARED IMPORTED )
add_library( avformat SHARED IMPORTED )
add_library( avutil SHARED IMPORTED )
#指定所添加依赖库的导入路径
set_target_properties( avcodec PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libavcodec/libavcodec.so )
set_target_properties( avfilter PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libavfilter/libavfilter.so )
set_target_properties( swresample PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libswresample/libswresample.so )
set_target_properties( swscale PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libswscale/libswscale.so )
set_target_properties( avformat PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libavformat/libavformat.so )
set_target_properties( avutil PROPERTIES IMPORTED_LOCATION $ffmpeg_libs_DIR/libavutil/libavutil.so )
# 添加头文件路径到编译器的头文件搜索路径下,多个路径以空格分隔
include_directories( $ffmpeg_headers_DIR )
link_directories($ffmpeg_libs_DIR )
link_directories(/usr/lib)
set(CMAKE_CXX_STANDARD 14)
add_executable(ffmpeg_demo main.cpp)
target_link_libraries($PROJECT_NAME avcodec avformat avutil swresample swscale swscale avfilter )
2. main.cpp
#include <stdio.h>
#ifdef __cplusplus
extern "C"
#endif
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/imgutils.h"
#include "libavutil/pixfmt.h"
#include "libavutil/avutil.h"
#include "libavutil/log.h"
#include "libswscale/swscale.h"
#ifdef __cplusplus
#endif
using namespace std;
int main()
return 0;
3. 编译运行
cd /home/xundh/ffmpegrtsp
mkdir build
cd build
cmake ..
make
./ffmpeg_demo
以上是关于最新版本ffmpeg源码安装+vscode开发环境搭建!的主要内容,如果未能解决你的问题,请参考以下文章