SVP:Linux

From SmoothVideo Project
Jump to navigation Jump to search

Svp4linux-mpv.png

Compatible video players

Prerequisites

Despite of the Linux distro in use you'll need to pre-install:

  1. Qt 5.9.0 or later
  2. Vapoursynth R31 or later
  3. MediaInfo
  4. lsof command line tool (install it via your package manager)
  5. Required for SVPtube: Python 3.8
  6. Properly installed video drivers including OpenCL ICD
  7. (recommended) mpv 0.29 or later built with Vapoursynth support
  8. (optional) Recommended UI for mpv: SMPLayer
  9. (optional) VLC 3.0 or later (NOT a Snap version!)

Ubuntu packages

Common packages

# mediainfo

sudo apt-get install mediainfo

Ubuntu >= 16.04 specific

# Ubuntu 16.04+ and others (e.g. ElementaryOS) - Qt5Concurrent, Qt5Svg, Qt5Qml packages are probably not installed by default

sudo apt-get install libqt5concurrent5 libqt5svg5 libqt5qml5

SVPtube needs Python 3.8

# Python 3.8 - needed for SVPtube
# Ubuntu 18.04 have it in the "updates" repo
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update 
sudo apt-get install libpython3.8

mpv and Vapoursynth: build them on your own!

djcj's PPA is missing since 18-Apr-2019, see building instructions below!

# SMPlayer:

sudo add-apt-repository ppa:rvm/smplayer 
sudo apt-get update 
sudo apt-get install smplayer smplayer-themes smplayer-skins
# VLC

sudo apt-get install vlc

Arch packages

# common packages
pacman -S qt5-base qt5-declarative qt5-svg libmediainfo lsof vapoursynth
# mpv with Vapoursynth support
# AUR packages to install: rsound spirv-cross mpv-full
# svpcode
pacman -S mkvtoolnix-cli
# if you want svpcast to be able to discover AppleTVs
pacman -S avahi
systemctl enable avahi-daemon.service

Building 3rd-party apps from sources

The following was tested on Ubuntu 22.04, 20.04 and 19.04 right after the clean installation.

Vapoursynth

# common build tools
sudo apt-get install g++ make autoconf automake libtool pkg-config nasm git

# zimg library
git clone --branch release-3.0.4 https://github.com/sekrit-twc/zimg.git
cd zimg   
./autogen.sh
./configure
make -j4
sudo make install

cd ..

# Cython for Python3. !!! Vapoursynth requires Cython >= 0.28 !!!
sudo apt-get install cython3
# OR
pip3 install Cython

# build Vapoursynth
git clone --branch R59 https://github.com/vapoursynth/vapoursynth.git
cd vapoursynth
./autogen.sh
./configure
make -j4
sudo make install
cd ..

sudo ldconfig

# make Python find the Vapoursynth module
# replace "python3.10" with the actual version you have
sudo ln -s /usr/local/lib/python3.10/site-packages/vapoursynth.so /usr/lib/python3.10/lib-dynload/vapoursynth.so

# ensure everything is fine so far - run vspipe
vspipe

mpv with Vapoursynth support

# install dependencies: add more if you want additional ffmpeg/mpv codecs and features
sudo apt-get install libssl-dev libfribidi-dev libharfbuzz-dev libluajit-5.1-dev libx264-dev xorg-dev libxpresent-dev libegl1-mesa-dev libfreetype-dev libfontconfig-dev libffmpeg-nvenc-dev libva-dev libdrm-dev libplacebo-dev
# you need at least one of these to enable audio output
sudo apt-get install libasound2-dev libpulse-dev

# Ubuntu 20.04 or later
sudo apt-get install python-is-python3
# Ubuntu <= 19.04
sudo apt-get install python-minimal

git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
./use-ffmpeg-release

# minimal install, feel free to add more options to ffmpeg_options and mpv_options
# see https://www.svp-team.com/forum/viewtopic.php?pid=80787#p80787
echo --enable-libx264 >> ffmpeg_options
echo --enable-nvdec >> ffmpeg_options
echo --enable-vaapi >> ffmpeg_options
echo --enable-vapoursynth >> mpv_options
echo --enable-libmpv-shared >> mpv_options
./rebuild -j4
sudo ./install
cd ..

mpv configuration

Svp4linux-open.png

Just add --input-ipc-server=/tmp/mpvsocket to mpv args (or config file) and SVP should find it. Alternatively you can "open" video file via SVPManager - it'll execute mpv with the correct argument.

As Vapoursynth processing requires a "copy-back" video decoder, you have to also include

--hwdec=auto-copy

VLC configuration

As of now SVP assumes that VLC installed into /usr/bin, /usr/lib etc.

SVP's plugin for VLC replaces the "deinterlace" filter. To be able to quickly switch them from SVP's main menu you may need to change VLC's plugins folder access rights:

sudo chmod 777 /usr/lib/vlc/plugins/video_filter 
# OR (e.g. Ubuntu 17.04)
sudo chmod 777 /usr/lib/x86_64-linux-gnu/vlc/plugins/video_filter 

Then "install" or "uninstall" SVP's plugin via SVP main menu -> Utilities -> SVP in VLC.

If it doesn't work then manually put the plugins path (e.g. "/usr/lib/vlc/plugins") into main.setup.vlc.plugins property in SVP's All settings.

You must turn on deinterlace in VLC via Video -> Deinterlace -> On to start using SVP's plugin.. Alternatively you can turn it on permanently: Tools -> Preferences -> Video -> Deinterlacing = On

Note 1: Hardware decoding is not be compatible with the Vapoursynth filter!

Issues

Installation

Installer may hang while attempting to request admin privileges during installation.


Error message Execution failed (Unexpected exit code: 8) ... means you haven't install either Qt 5 libs or MediaInfo before, especially "libqt5concurrent5 libqt5svg5" on Ubuntu.


DO NOT install mpv via package manager - it won't work! Build it on your own instead.


If SVP Manager doesn't run after installation you may want to check if all the dependencies are met with a simple command:

ldd SVPManager

Here's an example of missing libQt5Concurrent.so library, which may not be installed by default:

user@host:~/SVP4$ ldd SVPManager 
    linux-vdso.so.1 =>  (0x00007ffc099dc000)
    libmediainfo.so.0 => /usr/lib/x86_64-linux-gnu/libmediainfo.so.0 (0x00007fed10ca1000)
    libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fed1031f000)
    libQt5Concurrent.so.5 => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fed0f413000)


Another possible error:

./SVPManager: symbol lookup error: ./SVPManager: undefined symbol: _ZN7QString13toUtf8_helperERKS_

means "installed Qt version is too old". Check that actual libQt5*.so in use are from Qt 5.5.0 or later. If Qt 5.5 is installed into /opt, you can try something like this:

LD_LIBRARY_PATH=/opt/qt55/lib ./SVPManager

Common issues

One major issue is incompatibility between the way system tray icon/menu implemented in Qt and some display managers. For example in Xubuntu 15.10/Xfce tray icon is completely unusable. Because of this SVP runs w/o tray icon by default, BUT it's possible to switch Windows behavior with -tray command line arg.


For GPU acceleration support use proprietary video drivers with (probably) some additional modules - search for "OpenCL ICD". For example in case of NV cards "nvidia-modprobe" package is needed for OpenCL to work. Check the installation with utils/clinfo.


AMD cards may need additional driver component for the SVP's GPU acceleration (see more details there):

Image support is supplied by a closed-source component of the ROCr runtime (libhsa-ext-image64.so) that is part of the hsa-ext-rocr-dev package.


"Auto" settings expect hardware video decoding which may be unavailable for mpv with Vapoursynth video filter enabled. So you may need to lower SVP settings manually.


Unlike the Windows version, SVP 4 Linux doesn't measure actual screen refresh rate, but uses OS provided value instead. For 59.xxx Hz screens this value is often rounded to "59.0", so you'll get sub-optimal FRC rate like 25/11 instead of 5/2. To avoid this use fixed "Movie x2.5" target rate.


The number of computation threads are set for the Windows' Avisynth and may not be optimal for Vapoursynth. In case of any unexpected video stuttering try to adjust this value at the first place.


Fix for the following error:

/usr/bin/mpv: symbol lookup error: /usr/bin/mpv: undefined symbol: ass_set_check_readorder

is

apt-get install libass5


Error message - Unable to find mpv's pid:

SVP 4.1 and later uses lsof utility to find which mpv instance is on the other end of the local socket, so ensure that lsof is installed. In Gentoo-based distros you may also need to update lsof to ver.4.89 or later.