文章目录
- 1、MAC开发环境
- 1.1、安装brew
- 1.2、 Homebrew使⽤
- 1.3、下载FFmpeg 4.2版本
- 1.4、安装第三方库
- 1.5、 安装SDL2
- 1.6、配置编译ffmpeg
- 2、ubuntu18.04开发环境搭建
- 2.1、安装Qt5.12
- 2.2、开始编译ffmpeg
1、MAC开发环境
1.1、安装brew
根据提示,输⼊密码就可以⼀步⼀步装成功。 如果之前没有安装xcode,则会提示安装xcode,安装完xcode后,我们需要再次安装brew
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
1.2、 Homebrew使⽤
安装:brew install 软件名,
例:brew install git 搜索:brew search 软件名,
例:brew search git 卸载:brew uninstall 软件名,
例:brew uninstall git 更新所有:brew update 注意:因为brew update会通过git命令来更新,
所以必须先安装git 更新具体软件:brew upgrade 软件名 ,
例:brew upgrade git
1.3、下载FFmpeg 4.2版本
git clone git://source.ffmpeg.org/ffmpeg.git
码云
git clone https://gitee.com/mirrors/ffmpeg.git
cd ffmpeg
# 查看版本
git branch -a
# 选择4.2版本
git checkout remotes/origin/release/4.2
1.4、安装第三方库
brew install --build-from-source automake
brew install fdk-aac
brew install lame
brew install libass
brew install libtool
brew install libvorbis
brew install libvpx
brew install libvo-aacenc
brew install opencore-amr
brew install openjpeg
brew install opus
brew install speex
brew install texi2html
brew install x264
brew install --build-from-source x265
brew install xvid
brew install yasm
brew install freetype
brew install pkg-config
brew install schroedinger
brew install shtool
brew install --build-from-source theora
brew install --build-from-source wget
1、安装过程中,如果出现缺少xcode-select --install
xcode-select --install // 安装命令
xcode-select --version // 查看版本
// 恢复默认设置(需要sudo权限)
sudo xcode-select --reset
2、再次尝试下载,如果出现
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
再次重新下载
1.5、 安装SDL2
brew install --build-from-source sdl2
1.6、配置编译ffmpeg
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --disable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-static --enable-shared --enable-openssl
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --disable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --extra-cflags=-I/usr/local/Homebrew/Cellar/opencore-amr/0.1.6/include --extra-ldflags=-L/usr/local/Homebrew/Cellar/opencore-amr/0.1.6/lib --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libspeex --enable-libtheora --extra-cflags=-I/usr/local/Homebrew/Cellar/theora/1.1.1/include --extra-ldflags=-L/usr/local/Homebrew/Cellar/theora/1.1.1/lib --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-static --enable-shared --enable-openssl
出现错误:
ERROR: libmp3lame >= 3.98.3 not found
# 然后在执行编译指令
brew install lame
1、编译:
make -j4
sudo make install
2、配置环境变量
export PATH="$PATH:/usr/local/ffmpeg/bin"
source ~/.base_profile
2、ubuntu18.04开发环境搭建
2.1、安装Qt5.12
qt5.12网址下载
https://download.qt.io/archive/qt/5.12/5.12.10/
1、进入安装包路径
cd (刚才下载存放的目录下)
2、安装包赋权限
sudo chmod +x qt-opensource-linux-x64-5.12.10.run
3、开始安装。
sudo ./qt-opensource-linux-x64-5.12.10.run
4、启动qt
cd /opt/Qt5.12.10/Tools/QtCreator/bin
./qtcreator
5、如果出现报错
Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/opt/Qt5.12.10/Tools/QtCreator/bin/platforms" ...
loaded library "/opt/Qt5.12.10/Tools/QtCreator/lib/Qt/plugins/platforms/libqxcb.so"
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
Aborted (core dumped)
解决方法
# 修改配置文件
vim ~/.bashrc
# 在最末尾添加如下语句,会在执行程序时,列出详细的错误提示:
export QT_DEBUG_PLUGINS=1
# 刷新配置文件
source ~/.bashrc
继续运行,如果仍然有错误继续执行:
1、这个错误信息表明在启动应用程序时,无法加载 Qt 平台插件 “xcb”。可能会有几个原因导致这个问题出现,其中一个可能是缺少一个或多个必需的库文件。你可以采取以下步骤来解决问题:
检查是否已安装 xcb 相关的库文件。在 Ubuntu 系统上,你可以使用以下命令进行安装:
Copy
sudo apt-get install libxcb-xinerama0
确保你的环境变量中包含了正确的 Qt 库路径。你可以使用以下命令来查看 Qt 库路径:
echo $LD_LIBRARY_PATH
在输出中,你应该能够看到包含 Qt 库的路径。如果没有,你可以使用以下命令将它添加到环境变量中:
export LD_LIBRARY_PATH=/path/to/Qt/lib:$LD_LIBRARY_PATH
请确保将上面的 /path/to/Qt/lib 替换为你的 Qt 库路径。
确保你的 DISPLAY 环境变量已经设置。在终端中输入以下命令来检查 DISPLAY 环境变量的值:
echo $DISPLAY
如果没有输出,或者输出为空,则表示 DISPLAY 环境变量没有设置。你可以使用以下命令将其设置为默认值:
export DISPLAY=:0
如果你使用的是远程桌面连接,则需要将 DISPLAY 变量设置为远程桌面服务器的 IP 地址和端口号。
2.2、开始编译ffmpeg
1、创建目录
在home目录下创建
ffmpeg_sources:用于下载源文件
ffmpeg_build: 存储编译后的库文件
bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)
cd ~
mkdir ffmpeg_sources ffmpeg_build bin
2、安装依赖
更新
sudo apt-get update
安装需要的组件
sudo apt-get -y install
autoconf
automake
build-essential
cmake
git-core
libass-dev
libfreetype6-dev
libsdl2-dev
libtool
libva-dev
libvdpau-dev
libvorbis-dev
libxcb1-dev
libxcb-shm0-dev
libxcb-xfixes0-dev
pkg-config
texinfo
wget
zlib1g-dev
补充安装:
sudo apt-get install libasound2-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglew-dev
sudo apt-get install libglm-dev
3、编译与安装
# NASM
# 部分库使用到汇编程序。
# 使用源码进行安装
cd ~/ffmpeg_sources && \
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \
tar xjvf nasm-2.14.02.tar.bz2 && \
cd nasm-2.14.02 && \
./autogen.sh && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
# Yasm
# 部分库使用到该汇编库
# 使用源码进行安装:
cd ~/ffmpeg_sources && \
wget -O yasm-1.3.0.tar.gz https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz && \
tar xzvf yasm-1.3.0.tar.gz && \
cd yasm-1.3.0 && \
./configure CFLAGS="-fPIC" CPPFLAGS="-fPIC" --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
# libx264
# H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide
# 要求编译ffmpeg时配置:--enable-gpl --enable-libx264.
# 使用源码进行编译:
cd ~/ffmpeg_sources && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://github.com/mirror/x264.git && \
cd x264 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
PATH="$HOME/bin:$PATH" make && \
make install
# libx265
# H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。
# 要求编译ffmpeg时配置:--enable-gpl --enable-libx265.
# 使用源码进行编译:
sudo apt-get install mercurial libnuma-dev && \
cd ~/ffmpeg_sources && \
if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi && \
cd x265/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make && \
make install
# libvpx
# VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide 。
# 要求编译ffmpeg时配置: --enable-libvpx.
# 使用源码进行编译:
cd ~/ffmpeg_sources && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && \
cd libvpx && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && \
PATH="$HOME/bin:$PATH" make && \
make install
# libfdk-aac
# AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。
# 要求编译ffmpeg时配置:--enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上--enable-nonfree).
# 使用源码进行编译:
cd ~/ffmpeg_sources && \
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
cd fdk-aac && \
autoreconf -fiv && \
./configure CFLAGS="-fPIC" CPPFLAGS="-fPIC" --prefix="$HOME/ffmpeg_build" && \
make && \
make install
# libmp3lame
# MP3音频编码器.
# 要求编译ffmpeg时配置:--enable-libmp3lame.
# 使用源码进行编译:
cd ~/ffmpeg_sources && \
git clone --depth 1 https://gitee.com/hqiu/lame.git && \
cd lame && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-nasm --with-pic && \
PATH="$HOME/bin:$PATH" make && \
make install
# libopus
# Opus音频编解码器.
# 要求编译ffmpeg时配置:--enable-libopus.
# 使用源码进行编译:
cd ~/ffmpeg_sources && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$HOME/ffmpeg_build" -with-pic&& \
make && \
make install
4、编译FFmpeg
cd ~/ffmpeg_sources && \
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 && \
tar xjvf ffmpeg-4.2.1.tar.bz2 && \
cd ffmpeg-4.2.1 && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" CFLAGS="-O3 -fPIC" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-pic \
--enable-shared \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r
如果出现ERROR: libmp3lame >= 3.98.3 not found错误
sudo apt-get install libmp3lame-dev
5、测试使用
./ffmpeg -version
1、编辑和修改/etc/ld.so.conf
sudo vim /etc/ld.so.conf
/root/ffmpeg_build/lib
- 使环境变量生效然后:
sudo ldconfig
3、如果命令行没有提示
将bin目录添加到环境变量中
vi /etc/environment
# 添加一行
PATH="$PATH:/root/bin"
# 刷新
source /etc/environment
ffmpeg -version
6、支持FFmpeg 代码 Debug
刚才的工程可以运行,但不能debug。解决此问题,首先认定一点,生成的可执行程序中,ffmpeg 不包含调试信息,调试信息在 ffmpeg_g 中,debug 要选择 ffmpeg_g。
另外,./config选项也是确定包含调试信息的核心,需要在config中添加:
-–enable-debug=3:开启debug调试
-–disable-asm:禁用 asm 优化
–disable-optimizations:禁用优化,以便调试时按函数顺序执行。
–-disable-stripping:禁用剥离可执行程序和共享库,即调试时可以进入到某个函数进行单独调试。
采用以下命令重新config:
先clean
make clean
./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-pic \
--enable-shared \
--enable-nonfree \
--enable-debug=3 \
--disable-optimizations \
--disable-asm \
--disable-stripping && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r