简介由于之前常用的安装FFmpeg的PPA变成了收费的，以后只能自己从源码编译FFmpeg和MPV，这里记录一下操作流程。安装FFmpeg根据这里的官方的教程可以比较简单地完成FFmpeg的编译，但通常没必要装到用户的home目录，所以要更改一些选项。注意MPV最新版可能需求FFmpeg-6.0以上，所以源码直接下最新的就好。安装依赖先装上一些apt能装的依赖。统计并不全，如果编译过程提示找不到xxx，那就先试试sudo apt-get install libxxx-dev。有的包可能会出现apt显示已安装，但编译器还是会说找不到.so文件，可能是因为之前卸载包时候没有卸干净，这时候就要sudo apt-get install libxxx-dev --reinstall来重装一下这些包。下面这些包从Ubuntu 20.04开始就有提供。sudo apt-get update sudo apt-get install \ autoconf \ automake \ build-essential \ cmake \ git \ libfreetype-dev \ libgnutls28-dev \ libmp3lame-dev \ libsdl2-dev \ libtool \ libva-dev \ libvdpau-dev \ libvorbis-dev \ libxcb1-dev \ libxcb-shm0-dev \ libxcb-xfixes0-dev \ libunistring-dev \ libaom-dev \ libx264-dev \ libx265-dev \ libnuma-dev \ libvpx-dev \ libfdk-aac-dev \ libopus-dev \ libjpeg-dev \ pkg-config \ texinfo \ wget \ yasm \ nasm \ zlib1g-dev其中，libx264用于H.264编码，libx265和libnuma用于H.265编码，libvpx用于VP9编码，libfdk-aac用于AAC音频编码，libopus用于Opus音频编码。用于编译的meson和ninja在Ubuntu 24.04可以直接用apt安装。sudo apt-get install ninja-build meson老版本的Ubuntu可能apt仓库里没有新版的meson和ninja，可以用pip可以安装最新的版本，注意要sudo（新的系统自带Python甚至不允许你直接用pip安装软件，其实是个很合理的设计）。sudo apt-get install python3-pip sudo pip3 install meson ninja用于AV1格式编解码的libsvtav1, libdav1d和用于字幕的libass在Ubuntu 24.04的官方仓库都有比较新的版本了，可以直接安装。sudo apt-get install libsvtav1-dev libdav1d-dev libass-devUbuntu22.04官方的apt提供了libsvtav1-dev，libdav1d-dev，libass-dev，版本都比较老。其中libsvtav1-dev装的是0.9.0版本，ffmpeg不认，必须手动编译。另外两个似乎能用，可以考虑不折腾。更老的Ubuntu应该是都要手动编译了。[collapse status="false" title="源码编译libsvtav1, libdav1d, libass"]源码编译libsvtav1直接从master编译应该也无所谓，但checkout到release分支感觉安心一点。FFmpeg只用到了Encoder，所以设置BUILD_DEC为OFF。git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git cd SVT-AV1 git checkout v1.7.0 mkdir build && cd build cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. make sudo make install源码编译libdav1ddav1d是个比libaom速度快得多的AV1解码器，可能有的apt-get的repo提供libdav1d-dev，但我这的没有，所以也要从源码编译。同样的，切到最新的release分支。git clone https://code.videolan.org/videolan/dav1d.git cd dav1d git checkout 1.2.0 mkdir build && cd build meson setup --default-library=static .. ninja sudo ninja install源码编译libassUbuntu20.04的apt-get是有libass-dev的，但版本太老了，所以还是自己来编译吧。从这里下载最新release的源码（source code zip），解压得到libass-x.x.x，比如0.17.1。先要装一些依赖。如果libfontconfig-dev安装了还是提示缺失，需要sudo apt-get upgrade libfontconfig-dev --reinstallsudo apt-get update sudo apt-get install \ libfreetype6-dev \ libfontconfig-dev \ libfribidi-dev \ libharfbuzz-dev然后配置并安装libass。cd libass-0.17.1 ./autogen.sh ./configure make sudo make install[/collapse]源码编译libvmaflibvmaf用于计算网飞的VMAF指标，所有的Ubuntu版本都需要手动编译。从这里下载最新的release源码并解压，会得到一个vmaf-x.x.x的文件夹，比如vmaf-3.0.0。cd vmaf-3.0.0/libvmaf meson build --buildtype release ninja -vC build ninja -vC build test sudo ninja -vC build install源码编译FFmpeg一套操作下来终于可以开始编译FFmpeg了。从这里下载FFmpeg的源码，解压得到文件夹ffmpeg-x.x.x。cd ffmpeg-x.x.x ./configure \ --extra-libs="-lpthread -lm" \ --ld="g++" \ --enable-gpl \ --enable-gnutls \ --enable-libaom \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libsvtav1 \ --enable-libdav1d \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-pic \ --enable-nonfree make sudo make install这样就把FFmpeg，FFplay，FFprobe装到了/usr/local/bin。可以ffmpeg试试能不能用。安装MPVMPV是个跨平台的视频播放器，可以按官方的安装教程，一键把所有该装的全装了，但我们已经自己装了FFmpeg和libass，没有重装一次的必要，所以我们自己只编译安装MPV。安装完后参考vcb的教程去配置播放器。安装依赖参考了mpv-build/debian/control，不清楚哪些是已经装好的，总之就都装一下吧。sudo apt-get update sudo apt-get install \ ladspa-sdk \ libasound2-dev \ libarchive-dev \ libbluray-dev \ libbs2b-dev \ libcaca-dev \ libcdio-paranoia-dev \ libdrm-dev \ libdvdnav-dev \ libegl1-mesa-dev \ libepoxy-dev \ libgl1-mesa-dev \ libgbm-dev \ libgme-dev \ libgsm1-dev \ libjack-jackd2-dev \ libbrotli-dev \ liblcms2-dev \ liblircclient-dev \ liblua5.2-dev \ libmodplug-dev \ libopenal-dev \ libopencore-amrnb-dev \ libopencore-amrwb-dev \ libpulse-dev \ librtmp-dev \ librubberband-dev \ libssh-dev \ libsoxr-dev \ libspeex-dev \ libtool \ libuchardet-dev \ libvdpau-dev \ libvorbis-dev \ libvo-amrwbenc-dev \ libunwind-dev \ libvulkan-dev \ libwayland-dev \ libx264-dev \ libx11-dev \ libxext-dev \ libxinerama-dev \ libxkbcommon-dev \ libxpresent-dev \ libxrandr-dev \ libxss-dev \ libxv-dev \ libxvidcore-dev \ libxxhash-dev \ x11proto-core-dev源码编译libplacebo在Ubuntu 24.04，libplacebo也可以从官方仓库安装MPV可以使用的最低版本了。sudo apt-get install libplacebo-dev[collapse status="false" title="老的源码编译步骤"]按官方介绍，libplacebo是MPV的基础库。按官方README来编译安装，meson build那一步能看到可选特性中d3d11, glslang, libdovi, shaderc, vk-proc-addr这几项是NO，用apt安装glslang-dev会导致更多的怪问题，libdovi是杜比音效相关的库，一般用不到，shaderc可以去这里的Downloads部分下载，然后把对应的文件夹放进/usr/local/，这套东西解压了有2.8G……git clone --recursive https://code.videolan.org/videolan/libplacebo cd libplacebo mkdir build && cd build meson .. ninja sudo ninja install[/collapse]源码编译MPV终于到了最后一步，就很简单了。git clone https://github.com/mpv-player/mpv.git cd mpv meson setup build meson compile -C build sudo meson install -C build最后输入mpv或者直接找个视频双击看看能不能打开，如果命令行mpv提示类似mpv: error while loading shared libraries: libplacebo.so.277，需要用sudo ldconfig刷新一下shared libraries。官方一键安装教程这里也记录下一键安装教程，参见官方的安装教程。git clone https://github.com/mpv-player/mpv-build.git cd mpv-build ./rebuild -j4 sudo ./install非常的简单，提示有什么依赖缺失就装什么，或者去mpv-build/debian/control把所有要装的都装了。像libdav1d这种要自己编译的参考上面的FFmpeg安装。后续小问题后来安装obs-studio的时候提示找不到ffmpeg_aac编码器，检查具体log后发现是找不到libsndio.so.7.0，执行sudo apt-get install libsndio7.0 libsndio-dev --reinstall后解决，可能又是删除那个坑比ffmpeg的收费PPA时没删干净造成的吧。