This fixesjellyfin/jellyfin#1446. I am not an expert in this section of
code, but I cannot think of a need to do path substitution during
subtitle encoding.
1) Reworked FFmpeg and FFprobe path discovery (CLI switch, Custom xml, system $PATH, UI update trigger). Removed FFMpeg folder from Emby.Server.Implementations. All path discovery now in MediaEncoder.
2) Always display FFmpeg path to user in Transcode page.
3) Allow user to remove a Custome FFmpeg path and return to using system $PATH (or --ffmpeg if available).
4) Remove unused code associated with 'prebuilt' FFmpeg.
5) Much improved logging during path discovery.
Addressed review comments from JustAMan. Removed code to determine experimental version. Store major and minor as two ints. Allow control of a min and max recommended version.
Three routes to determine FFmpeg version:
1) Grab the 'ffmpeg version x.y' from from the -version output. This should work for all pre-built binaries.
2) Compare the library versions against known contents of FFmpeg versions. This is fallback aimed at custom builds.
3) Compare libavcodec version to determine if newer than latest known release. This suggests user is running within latest/HEAD/master build.
This makes resolving dependencies from the container much easier as
you cannot resolve with primitives parameters in a way that is any
more readable.
The aim of this commit is to change as little as possible with the end
result, loggers that were newed up for the parent object were given the same
name. Objects that used the base or app loggers, were given a new logger with
an appropriate name.
Also removed some unused dependencies.