GithubHelp home page GithubHelp logo

Comments (4)

vova3379 avatar vova3379 commented on May 28, 2024

ok fixed issue by installing custom ffmpeg

https://github.com/jellyfin/jellyfin-ffmpeg/blob/jellyfin/INSTALL.md

and change config to this

grep ffmpeg /etc/sysconfig/jellyfin (uncoment line below)
JELLYFIN_FFMPEG_OPT="—ffmpeg=/usr/local/bin/ffmpeg"

and restart service

maybe the manual must be clear for Centos that you can not use ffmpeg from the package and you need to install custom ffmpeg

from jellyfin-qnap.

WhiteyDude avatar WhiteyDude commented on May 28, 2024

Echoing the same problem, this fix worked - thanks @vova3379 .

I suspect this is due to the recent security patching to disallow custom ffmpeg via the web UI. However I had my OS package based ffmpeg (/usr/bin/ffmpeg) specified in both encoding.xml and in /etc/sysconfig/jellyfin - neither worked.

Building this custom ffmpeg, ensuring the OPT is specified in /etc/sysconfig/jellyfin and restarting does appear to work. I also had to ensure the matching path was set in encoding.xml.

I am also running CentOS Linux release 7.9.2009 (Core) with the jellyfin-10.8.13 packages.

Hoping anyone in a situation like this comes across this when searching after their Jellyfin update breaks playback due to FFmpeg path not set.

Full steps:

git clone https://github.com/jellyfin/jellyfin-ffmpeg.git
cd jellyfin-ffmpeg
./configure #Note you may wish to add some other flags here, the default is not great
make && make install
sed -i -e "/JELLYFIN_FFMPEG_OPT/s/^#//" /etc/sysconfig/jellyfin
sed -i -e "s/\/usr\/bin\/ffmpeg/\/usr\/local\/bin\/ffmpeg/g" /etc/sysconfig/jellyfin
sed -i -e "s/\/usr\/bin\/ffmpeg/\/usr\/local\/bin\/ffmpeg/g" /etc/jellyfin/encoding.xml
systemctl restart jellyfin

You might also want to add a -j X to your make, as libavcodec takes a long time to compile when running single threaded.

from jellyfin-qnap.

WhiteyDude avatar WhiteyDude commented on May 28, 2024

Ok, here's some extra commands for people kagiing this issue in the future. Here's the full configure line I ran to be as close as possible to system ffmpeg, as I had all sorts of problem with a standard ./configure (mostly around x264):

Here's what I had to do to get this configure running:

First, ffnvcodec (optional if you're not hardware accelerating):

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
vim Makefile # Update /usr/local to /usr and lib to lib64
make -C . install # Output should show ffnvcodec.pc being copied to /usr/lib64/pkgconfig
pkg-config --modversion ffnvcodec # Confirm it's there

Install dependancies:

yum install -y gnutls-devel ladspa-devel libass-devel libbluray-devel libdrm-devel gsm-devel libmodplug-devel lame-devel openjpeg2-devel opus-devel pulseaudio-libs-devel librsvg2-devel soxr-devel speex-devel libtheora-devel libvorbis-devel libv4l-devel vid.stab-devel vo-amrwbenc-devel x264-devel x265-devel xvidcore-devel zvbi-devel openal-soft-devel libgcrypt-devel libcdio-devel libcdio-paranoia-devel

Run the configure
cd ../jellyfin-ffmpeg
./configure --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --extra-ldflags='-Wl,-z,relro ' --extra-cflags=' ' --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-fontconfig --enable-gcrypt --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libcdio --enable-libdrm --enable-indev=jack --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libmp3lame --enable-nvenc --enable-openal --enable-opengl --enable-libopenjpeg --enable-libopus --disable-encoder=libopus --enable-libpulse --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzvbi --enable-avfilter --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect --enable-swresample

Note I stripped out --enable-libmfx, --enable-libopencore-amrnb, --enable-libopencore-amrwb from the OS original, as I had issues with functional packages I could grab from yum, and didn't need these. I also removed vpx support, as I got the error of "no supported decoders found", despite installing the baresip vp8/vp9 packages - luckily I don't actually need vp8/vp9 support.

Note also I'm using epel and rpmfusion on top of base.

Then you should be good to make -j 6 && make install (for my 4 core machine, YMMV on -j)

As best as I can tell, jellyfin-ffmpeg doesn't have any pre-built binary, and given how CentOS is fading and the trend is to docker now (as mentioned in their blog post earlier linked), I doubt it will be any time soon.

Another note, I had some ld errors (/usr/bin/ld: libavutil/csp.o: relocation R_X86_64_32S against .rodata' can not be used when making a shared object; recompile with -fPIC) when making - a make distclean` works wonders if you've already built in the directory!

from jellyfin-qnap.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.