yauiclient - emveepee/Testing GitHub Wiki

Yet Another UI Client - yauiclient

There are UI clients for NextPVR on many platforms, yauiclient is an attempt to create a client that can run multi-platform and provide some features that other NextPVR clients don't provide.

Currently it on only working on Windows, but the goal is to have a Linux version.

Most people probably don't need yauiclient and for Windows they might wish to try NLite first.

Major Features

  • all the features of NextPVR, timeshifted Live TV, Recording Scheduling and Playback including comskip
  • subtitles, closed captioning, audio track selection
  • network playback including Internet
  • playback of most media types, including modern formats like AV1, without decoders.
  • Unfortunately Dolby Vision support is WIP but I cannot hook the optimized version up to the GUI so it doesn't display properly. Ask on the forum for a test version if you are interested.
Unique features of yauiclient
  • AC-4 audio for ATSC 3 (via ffmpeg)
  • multiple playback screens
  • use file system path substitution
  • can playback external subtitle files.

Installation

Note UI clients don't need to be updated when the NextPVR version changes.

  1. Download yaInstaller.exe Because of Windows download "protection" from the browser you might need to unblock an executable file. If extracting from a zip file is easier that is also available zip

Older version available from the history.

The sha56 checksum for the exe is 323470640e352c657a71a4dcde512b34a388784fe2176d2328a3ac2436990e3b

  1. Run yaInstaller.exe and choose your installation folder and whether you want to create desktop or taskbar icons. Future updates with yaInstaller will be made to the same folder via a registry setting.

  2. The installer will install the application and several static support binaries which are downloaded from github. The exe itself is compressed and combined with the Internet download there have been a few false positive virus scans. The virus scan information on the installer is here on virustotal I don't ever expect all scanners will pass it.

  3. Yauiclient for Windows depends on Microsoft developed runtime and files. Often these are installed by other programs and they are not included in the installer. On new or minimal Windows installs they may need to be installed manually.

  • Microsoft Visual C Runtime. Typically if the runtime is not installed you will see a message telling you that the VCRUNTIME140 is not installed. It is available here. VC++ runtime

  • Microsoft DirectX 9. If the system media playback fails you may need to install the full DirectX runtime It is not always installed with DX11 or DX12

  1. Configure as required

Configuration

There is a configuration file yauiclient loaded in the user home folder directory %USERPROFILE%

{
    "client": "ea1413abbb7",
    "display": 2,
    "fullscreen": false,
    "host": "172.16.3.105",
    "location": "3845x250",
    "pin": "0000",
    "port": 8866,
    "rendering": "hardware",
    "resolution": "1920x1080",
    "scale": "1055x593",
    "screenshot": "C:\\Temp",
    "sid": "1f3b81a622d24997bb092958e12be229",
    "temp": "C:\\Temp"
}

  • client the client ID used in logging
  • display the full screen display number with multi monitor
  • fullscreen true or false see screen configuration
  • host, pin and port are automatically configured by yauiclient modify if you have multiple servers. If the pin is not 0000 setting the actual value will speed up load time.
  • rendering software or hardware. The default is software but hardware is often better.
  • resolution screen size generated by NextPVR. If you use software mode, 1280x720 could be more efficient.
  • location, scale don't modify. See the section on screen configuration.
  • screenshot folder for screenshots
  • sid used to re-login, don't change.
  • temp folder for temp files used by yauiclient (currently only OSD bitmaps)

Note that two slashes are needed not one in folder names.

Path substitution

Normally UI client uses http for file playback. If yauiclient can access a media file via the filesystem the filesystem wil be used. On localhost this will be automatic. On remote clients if recordings are created with a UNC or have matching drive letters, the file system will also be used. If they client aren't mapped the same, manual mapping is needed by adding a path substitution block to yauiclient.json. Here is an example from Linux to a Windows setup with SMB file sharing.

    "pathsubstitution": {
        "substitute": [
            {
                "from": "/media/recordings/",
                "to": "K:/"
            },
            {
                "from": "/home/martin/recordings/",
                "to": "//172.16.105/recordings/"
            }
        ]
    },

Screen configuration

To toggle full screen playback use the f key. Hitting Alt-s in will save the state. To use full screen on a secondary monitor change the display number in settings.

To resize the program, exit full screen with the f key and then use the mouse to position and size the program on the monitor you want and again you can hit Alt-s to save it.

Usage

Generally all UI clients have the same functionality and work like NextPVR.exe for Windows. For background the old wiki might provide help for new users NextPVR v4 wiki. Ignore the sections on configuration.

The general keys for UI clients are here Keyboard reference and yauiclient will use the same keyboard and remote keys.

In addition there are some functions unique to yauiclient shown here special keys

Multi display usage

Similar to PIP, or maybe what you see in a bar, you can have multiple video players running from one instance of yauiclient. On a 4K monitor you can have 4 1920x1080 windows screenshot

They load in the 4 quadrants clockwise from the top right. Ctrl-n will open a new quadrant and move the first window to to top right quadrant for you. Alt-F4 or Exit from the NextPVR main menu will close the quadrant.

There are a lot of methods of controlling the audio shown in the special key usage page.

Un-install

There is no uninstall, to allow installation in a folder with other files. You can either remove the folder if you created one otherwise the files that get installed are:

cpr.dll
d3dcompiler_47.dll
libcurl.dll
libEGL.dll
libGLESv2.dll
mpv-1.dll
SDL2.dll
SDL2_image.dll
support-1.1.7z
yauiclient.exe

The registry key that would need to be removed is HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\YAUIClient

The desktop icon is at "C:\Users\Public\Desktop\Yet Another UI Client.lnk" The shortcut folder is "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Yet Another UI Client" And the shortcut file is "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Yet Another UI Client\Yet Another UI Client.lnk"

Credits

All UI clients are based on the UI client API that sub developed for NextPVR. Without this API and the great NextPVR backend this client would not be possible.

The base architecture comes from JargonPlayer giving me lots of ideas for things I could do.

The program depends on several open source libraries:

  • libmpv for media playback
  • ffmpeg (included with libmpv) without it most PVR applications wouldn't exist
  • sdl2 for the GUI
  • libcurl and libcpr for http networking
  • nholsmann.cpp for json processing

Thanks also to the testers from the NextPVR forum VCR58, artmetz, qam1600 and arlingtoner.

History

2024-09-11

  • send a WOL packet on startup.
  • don't block sleep unless media is playing.
  • updated libraries, c++17
  • some keystroke changes.
  • updated libraries

2024-01-27 yaInstall2.zip

  • custom mpv setting avaialable
  • auto detinterlace
  • bug fixes

2023-05-01 yaInstall.zip zip