找回密码
 立即注册
首页 资源区 代码 [技术探索者手记] C++自学之路 × linux下构建自己 ...

[技术探索者手记] C++自学之路 × linux下构建自己的个性化的FFmpeg库

茹静曼 前天 00:24
我是一名.NET开发者,最近开始学习C++。目前,我已经掌握了C++的基础语法和入门知识,并对FFmpeg产生了浓厚的兴趣。接下来,我计划自学与FFmpeg相关的技术内容,并记录自己的学习过程。欢迎大家提出宝贵意见,我会虚心接受并采纳大家的建议。谢谢!我是一名.NET开发者,最近开始学习C++。目前,我已经掌握了C++的基础语法和入门知识,并对FFmpeg产生了浓厚的兴趣。接下来,我计划自学与FFmpeg相关的技术内容,并记录自己的学习过程。欢迎大家提出宝贵意见,我会虚心接受并采纳大家的建议。谢谢!


  • linux下构建自己的个性化的FFmpeg库
折腾了2个晚上,发现各种错误,不知如何解决!!!
突然脑子开窍了,发现:无知了,不要在傻傻“百度”了,直接按照官方wiki自行构建即可

ffmpeg build wiki
根据我个人的需求,构建了如下模块,主要记录了一些官网没有和自行构建的配置

Get the Dependencies
  1. sudo apt-get update -qq && sudo apt-get -y install \
  2.   autoconf \
  3.   automake \
  4.   build-essential \
  5.   cmake \
  6.   git-core \
  7.   libass-dev \
  8.   libfreetype6-dev \
  9.   libgnutls28-dev \
  10.   libmp3lame-dev \
  11.   libsdl2-dev \
  12.   libtool \
  13.   libva-dev \
  14.   libvdpau-dev \
  15.   libvorbis-dev \
  16.   libxcb1-dev \
  17.   libxcb-shm0-dev \
  18.   libxcb-xfixes0-dev \
  19.   meson \
  20.   ninja-build \
  21.   pkg-config \
  22.   texinfo \
  23.   wget \
  24.   yasm \
  25.   zlib1g-dev
复制代码
config dir
  1. mkdir -p ~/ffmpeg_sources ~/bin
复制代码
libx264
  1. cd ~/ffmpeg_sources && \
  2. git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
  3. cd x264 && \
  4. PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/ffmpeg_build/bin" --enable-static --enable-pic && \
  5. PATH="$HOME/bin:$PATH" make && \
  6. make install
复制代码
libx265
  1. sudo apt-get install mercurial libnuma-dev && \
  2. cd ~/ffmpeg_sources && \
  3. if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi && \
  4. cd x265/build/linux && \
  5. PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
  6. PATH="$HOME/bin:$PATH" make && \
  7. make install
复制代码
livbpx
  1. cd ~/ffmpeg_sources && \
  2. git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && \
  3. cd libvpx && \
  4. PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && \
  5. PATH="$HOME/bin:$PATH" make && \
  6. make install
复制代码
libfdk-aac
  1. cd ~/ffmpeg_sources && \
  2. git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
  3. cd fdk-aac && \
  4. autoreconf -fiv && \
  5. ./configure CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build"   && \
  6. make && \
  7. make install
复制代码
libmp3lame
  1. cd ~/ffmpeg_sources && \
  2. git clone  --depth 1 https://gitee.com/hqiu/lame.git && \
  3. cd lame && \
  4. PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"  --enable-nasm --with-pic && \
  5. PATH="$HOME/bin:$PATH" make && \
  6. make install
复制代码
libopus
  1. cd ~/ffmpeg_sources && \
  2. git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
  3. cd opus && \
  4. ./autogen.sh && \
  5. ./configure --prefix="$HOME/ffmpeg_build"  -with-pic&& \
  6. make && \
  7. make install
复制代码
SRT
  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo apt-get install tclsh pkg-config cmake libssl-dev build-essential
复制代码
  1.    cd ~/ffmpeg_sources && \
  2.    git -C srt pull 2> /dev/null || git clone --depth 1 https://github.com/Haivision/srt.git
  3.    cd srt
  4.    mkdir build
  5.    cd build
  6.    cmake ..
  7.    make
  8.    sudo make install
复制代码
ffmpeg
  1. cd ~/ffmpeg_sources && \
  2. wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
  3. tar xjvf ffmpeg-snapshot.tar.bz2 && \
  4. cd ffmpeg && \
  5. PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  6.   --prefix="$HOME/ffmpeg_build" \
  7.   --pkg-config-flags="--static" \
  8.   --extra-cflags="-I$HOME/ffmpeg_build/include" \
  9.   --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  10.   --extra-libs="-lpthread -lm" \
  11.   --ld="g++" \
  12.   --bindir="$HOME/bin" \
  13.   --enable-shared \
  14.   --enable-gpl \
  15.   --enable-version3 \
  16.   --enable-nonfree \
  17.   --enable-libvpx \
  18.   --enable-libx264 \
  19.   --enable-libx265 \
  20.   --enable-libsrt \
  21.   --enable-libmp3lame \
  22.   --enable-libopus \
  23.   --enable-libfdk-aac \
  24.   --enable-pic \
  25.   --enable-gnutls && \
  26. PATH="$HOME/bin:$PATH" make && \
  27. make install && \
  28. hash -r
复制代码
报错gnutls not found using pkg-config
  1. sudo apt-get install libunistring-dev -y
复制代码
编译成功后,通过 ffmpeg -version 查看构建信息,如果出现缺少依赖,请根据 ldd ./ffmpeg 查看解决,并创建 ln -s
  1. sudo ln -s /ffmpeg_build/lib/libavdevice.so /usr/lib/x86_64-linux-gnu/libavdevice.so.62
复制代码
demo build failed
  1. echo "/root/project/cpp-journey/thirdparty/ffmpeg/lib" | sudo tee /etc/ld.so.conf.d/ffmpeg.conf
  2. sudo ldconfig
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册