2021.11.23 建议查看教程:为 jellyfin 开启 VPP 和 openCL 色调映射
2021.11.17 编译了docker镜像: xanderye/linuxserver-jellyfin:10.7.7
之前使用了linuxserver/jellyfin:version-10.7.7-1
镜像但发现无法播放部分4kHDR视频,目前官方ffmpeg最高4.3.2,评论说ffmpeg 4.4.1解决了此问题,于是编译试试。
由于jellyfin官方ffmpeg编译了很多东西,我在nas上用只有核显,为了节省时间,我删除了 opencl amf cuda cuda-llvm cuvid nvenc nvdec ffnvcodec 这几个插件。
总共花了我3小时,各种缺依赖装依赖,能apt安装绝对不手动编译🌚
环境
本次编译直接在 linuxserver/jellyfin:version-10.7.7-1
容器内进行。
进入容器,执行 sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list
将源切成阿里源。
执行 apt update
更新源
安装工具 apt install -y vim git gcc make cmake yasm autoconf pkg-config libtool
编译dav1d
安装环境:apt install -y python3-pip ninja-build nasm && pip3 install --user meson
cd /usr/local
下载源码: curl -O https://code.videolan.org/videolan/dav1d/-/archive/master/dav1d-master.tar.gz && tar -zxf dav1d-master.tar.gz
创建文件夹:cd dav1d-master && mkdir build && cd build
编译:/root/.local/bin/meson setup -Denable_tools=false -Denable_tests=false --default-library=static .. --prefix /usr/local/ffmpeg/dav1d --libdir=/usr/local/ffmpeg/dav1d/lib && \
ninja && ninja install
配置dav1d环境变量: echo "export PKG_CONFIG_PATH=/usr/local/ffmpeg/dav1d/lib/pkgconfig/:\$PKG_CONFIG_PATH" >> /etc/profile && source /etc/profile
编译x264
cd /usr/local
下载源码: curl -O https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2 && tar -jxf x264-master.tar.bz2 && cd x264-master
配置: ./configure --enable-static --enable-share --disable-asm
编译: make && make install
编译z.lib
cd /usr/local
下载源码: git clone https://gitee.com/rzkn/zimg.git
配置环境: cd zimg && ./autogen.sh && ./configure
编译: make && make install
编译ffmpeg
cd /usr/local
下载源码: curl -O http://ffmpeg.org/releases/ffmpeg-4.4.1.tar.gz && tar -zxf ffmpeg-4.4.1.tar.gz
安装依赖: cd ffmpeg-4.4.1 && apt install -y libgmp3-dev libgnutls28-dev libass-dev libbluray-dev libdrm-dev libmfx-dev libmp3lame-dev libopus-dev libtheora-dev libvorbis-dev libvpx-dev libwebp-dev libx265-dev libzvbi-dev libva-dev libvdpau-dev
配置:
./configure --prefix=/usr/local/ffmpeg \ --target-os=linux \ --disable-doc \ --disable-ffplay \ --disable-shared \ --disable-libxcb \ --disable-sdl2 \ --disable-xlib \ --enable-gpl \ --enable-version3 \ --enable-static \ --enable-libfontconfig \ --enable-fontconfig \ --enable-gmp \ --enable-gnutls \ --enable-libass \ --enable-libbluray \ --enable-libdrm \ --enable-libfreetype \ --enable-libfribidi \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libdav1d \ --enable-libwebp \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-libzvbi \ --enable-libzimg \ --arch=amd64 \ --enable-vaapi \ --enable-libmfx \ --enable-vdpau
如果和我一致则环境没问题可以开始编译了
编译: make && make install
大概需要20-30分钟
编译完成后ffmpeg在 /usr/local/ffmpeg/bin
备份 /usr/lib/jellyfin-ffmpeg
,覆盖ffmpeg和ffprobe:
cp -r /usr/local/ffmpeg/bin/* /usr/lib/jellyfin-ffmpeg
验证
执行命令:/usr/lib/jellyfin-ffmpeg/ffmpeg -version
效果
但是Jellyfin的色调映射还是不能用,HDR视频色彩失真。还是用emby吧。
经评论区大佬提醒,修改结论:我编译的ffmpeg4.4.1确实不能色彩映射,应该是某个组件没编译好。按github大佬编译的ffmpeg4.4.1-1.deb包安装上,在VAAPI下4KHDR能VPP色彩映射。
发表回复