网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
编辑 mirrorlist.msys ,在⽂件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
启动MSYS2
使用命令行并进入MSYS2的安装路径,然后执行
# 64位
.\msys2_shell.cmd -mingw64
# 32位
.\msys2_shell.cmd
# 在新启动的MSYS窗口更新软件包
pacman -Sy
安装工具链
# mingw64
pacman -S mingw-w64-x86_64-toolchain
pacman -S make
pacman -S automake
pacman -S autoconf
pacman -S perl
pacman -S libtool
pacman -S mingw-w64-i686-cmake
pacman -S pkg-config
# 如果需要编译出ffplayer的话,还需要安装SDL
pacman -S mingw-w64-x86_64-SDL2
# 重命名/usr/bin/link.exe,避免冲突
cd /usr/bin
mv link.exe link.bak
# yasm
pacman -S yasm
# 如果没有找到cl,link,代表VS
which cl link yasm cpp
设置中文支持,右键打开Option->Text找到local选择zh_CN
;Character set 为UTF-8
pacman -S nasm
cd /home/此处为你的用户名
mkdir ffmpeg
cd ffmpeg
git clone https://gitee.com/mirrors_addons/x264.git
cd x264
./configure --prefix=../build/libx264 --host=x86_64-w64-mingw64 --enable-static --extra-ldflags=-Wl,--output-def=libx264.def
make -j4
make install
cp ./libx264.def ../build/libx264/lib/
cd ../build/libx264/lib/
# 生成64位lib
lib /machine:X64 /def:libx264.def
# 生成32位lib
lib /machine:i386 /def:libx264.def
如果需要生成dll
git clone https://gitee.com/mirrors_addons/x264.git x264-dll
./configure --prefix=../build/libx264-dll --host=x86_64-w64-mingw32 -- enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.def
fdk-aac
git clone --depth 1 https://gitee.com/mirrors/fdk-aac.git
cd fdk-aac
./autogen.sh
./configure --prefix=../build/libfdk-aac --enable- static --enable-shared
make -j4
make install
mp3
git clone --depth 1 https://gitee.com/hqiu/lame.git
./configure --prefix=../build/libmp3lame --disable-shared --disable-frontend --enable-static
make
make install
libvpx
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx
./configure --prefix=../build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make -j4
make install
ffmpeg
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
# 编译
./configure \
--prefix=/home/Hu/ffmpeg/build/ffmepg-4.4 \
--arch=x86_64 \
--enable-shared \
--enable-gpl \
--enable-libfdk-aac \
--enable-nonfree \
--enable-libvpx \
--enable-libx264 \
--enable-libmp3lame \
--extra-cflags="-I/home/Hu/ffmpeg/build/libfdk-aac/include" \
--extra-ldflags="-L/home/Hu/ffmpeg/build/libfdk-aac/lib" \
--extra-cflags="-I/home/Hu/ffmpeg/build/libvpx/include" \
--extra-ldflags="-L/home/Hu/build/ffmpeg/libvpx/lib" \
--extra-cflags="-I/home/Hu/ffmpeg/build/libx264/include" \
--extra-ldflags="-L/home/Hu/ffmpeg/build/libx264/lib" \
--extra-cflags="-I/home/Hu/ffmpeg/build/libmp3lame/include" \
--extra-ldflags="-L/home/Hu/ffmpeg/build/libmp3lame/lib"
make -j4
make install
qt中使用
- 将生成的ffmpeg-4.4拷贝到工程目录下
- 在pro中添加
INCLUDEPATH +=$$PWD/ffmepg-4.4/include
LIBS += $$PWD/ffmepg-4.4/bin/avformat.lib
LIBS += $$PWD/ffmepg-4.4/bin/avcodec.lib
LIBS += $$PWD/ffmepg-4.4/bin/avdevice.lib
LIBS += $$PWD/ffmepg-4.4/bin/avfilter.lib
LIBS += $$PWD/ffmepg-4.4/bin/avutil.lib
LIBS += $$PWD/ffmepg-4.4/bin/swresample.lib
LIBS += $$PWD/ffmepg-4.4/bin/swscale.lib
创建目录
在home目录下创建
ffmpeg_sources:用于下载源文件
ffmpeg_build: 存储编译后的库文件
bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)
cd ~
mkdir ffmpeg_sources ffmpeg_build bin
安装依赖
sudo apt-get update -qq && 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
编译与安装
本指南假定您要安装一些最常见的第三方库。每个小节为您提供安装该库所需的命令。
如果不需要某些功能,则可以跳过相关小节(如果不需要),然后在FFmpeg中删除相应的./configure选项。例如,如果不需要libvpx,请跳过该小节,然后从“ 安装FFmpeg”部分中删除–enable-libvpx。
**提示:**如果要在多核系统中加快编译速度,可以在每个make命令(例如make -j4)中使用-j选项。
建议都使用源码进行安装。
NASM
部分库使用到汇编程序。
如果你系统提供的库nasm版本>=2.13则可以直接使用命令进行安装
sudo apt-get install 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
部分库使用到该汇编库
如果你系统提供的库yasm版本 ≥ 1.2.0则可以直接使用命令进行安装:
sudo apt-get 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 --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
make && \
make install
libx264
H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide
要求编译ffmpeg时配置:–enable-gpl --enable-libx264.
如果你系统提供的 libx264-dev版本 ≥ 118 则可以使用命令直接安装:
sudo apt-get install libx264-dev
否则使用源码进行编译:
cd ~/ffmpeg_sources && \
git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/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.
如果你系统提供的 libx265-dev版本≥ 68 则可以使用命令直接安装:
sudo apt-get install libx265-dev libnuma-dev
否则使用源码进行编译:
sudo apt-get install mercurial libnuma-dev && \
cd ~/ffmpeg_sources && \
if cd x265 2> /dev/null; then hg pull && hg update && cd ..; else hg clone https://bitbucket.org/multicoreware/x265; 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.
如果你系统提供的libvpx-dev version ≥ 1.4.0则可以使用命令直接安装:
sudo apt-get install libvpx-dev
否则使用源码进行编译:
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 && \
PATH="$HOME/bin:$PATH" make && \
make install
libfdk-aac
AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。
要求编译ffmpeg时配置:–enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上–enable-nonfree).
如果你系统提供的 libfdk-aac-dev则可以使用命令直接安装:
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
able-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上–enable-nonfree).
如果你系统提供的 libfdk-aac-dev则可以使用命令直接安装:
[外链图片转存中…(img-9An0InFw-1715793098329)]
[外链图片转存中…(img-wXL8ilTz-1715793098329)]
[外链图片转存中…(img-gXfzQPRc-1715793098330)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新