ErsatzTV - Custom channels using your own media

creating your own channels from your own media, like DVD or Blu ray rips.

1 Like

Can this be installed on qnap?

Channels has this built in now as of the latest release yesterday.

Technically true though potentially misleading, but I'm not a huge fan of feature matrices.

I will say that Channels is generally one of the better performing clients for IPTV projects like this.

1 Like

After about 15 years, or so thinking that dizquetv was my only answer and countless installs, recreating channels and testing on different platforms, configuring multiple tweaks, settings & configurations, adding extra memory giving it more cpu, throwing a dedicated graphics card and then source coding a specific dizquetv version to utilize the nvidia graphics chip,...I've finally gave ErsatzTV a try. As of 2 days ago, it has far surpassed dizque. Just allowing for local media was what I was looking for. My music channels look great by default. no more constant buffering, freezing, crashing, plex missing channel data. learn ErsatzTV, it'll save you time and money :money_mouth_face:

I find both disque and ersatz great. Channels virtual channels are ok, but with no advanced control of what plays when i find they miss the mark compared to the other two

What kind of ā€œadvanced controlā€ do you mean? Can you share examples? Youā€™ve got me curiousā€¦

Well for example, i like to go out with my family during the day, record football or whatever sport it may be, then come home and play several games across several virtual channels. Flick between games as if they are live.

Disque is good for this, but the big hassle is everything has to be added to plex first.

Would be awesome to have this functionality in the same software that does the recording

How do you set these up in the other software?

Record in channels, add files to plex. Then create virtual channels in disque, and add recorded games.
You can set what time each files starts playing, so you can set everything up, and then offset the start times

Elliot, Tivimate is your best friend. I just tested with my nvidia shield and add your live streams to it, it'll autosave and be available.

Isnt that just for multiview?

Im talking about essentially creating time shifted channels with recordings

Trying to install this and having problems getting it to start.
Here is my Docker Stack:

version: '3.9'
services:
  ersatztv:
    image: jasongdove/ersatztv:latest
    container_name: ersatztv
    ports:
      - 8409:8409
    environment:
      - TZ=America/New_York
    volumes:

      - /srv/5ab84941-c842-42b9-9bce-80979edd927d/Pool/_AppData/ersatztv/config:/root/.local/share/ersatztv
      - /srv/5ab84941-c842-42b9-9bce-80979edd927d/Pool/Media:/media:ro
    restart: unless-stopped

Here is some of the log.

2024-03-09T20:59:03.051327166Z [15:59:02 INF] ErsatzTV version 0.8.5-beta-docker <> 
2024-03-09T20:59:03.052860813Z [15:59:03 WRN] This is beta software and may be unstable <> 
2024-03-09T20:59:03.053380932Z [15:59:03 WRN] Give feedback at https://github.com/ErsatzTV/ErsatzTV or https://discord.gg/hHaJm3yGy6 <> 
2024-03-09T20:59:03.062498688Z [15:59:03 INF] Database is at /root/.local/share/ersatztv/ersatztv.sqlite3 <> 
2024-03-09T20:59:03.263384620Z [15:59:03 INF] Using Lucene (embedded) search index backend <> 
2024-03-09T20:59:03.374878807Z [15:59:03 INF] Applying database migrations <ErsatzTV.Services.RunOnce.DatabaseMigratorService> 
2024-03-09T20:59:03.375894642Z [15:59:03 INF] Server will listen on port 8409 - try UI at http://localhost:8409 <ErsatzTV.Services.RunOnce.EndpointValidatorService> 
2024-03-09T20:59:03.407475034Z [15:59:03 INF] Scanner service started <ErsatzTV.Services.ScannerService> 
2024-03-09T20:59:03.415698159Z [15:59:03 INF] Worker service started <ErsatzTV.Services.WorkerService> 
2024-03-09T20:59:03.472337178Z [15:59:03 INF] FFmpeg worker service started <ErsatzTV.Services.FFmpegWorkerService> 
2024-03-09T20:59:03.474998665Z [15:59:03 INF] Search index worker service started <ErsatzTV.Services.WorkerService> 
2024-03-09T20:59:07.308833225Z [15:59:07 ERR] Failed executing DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
2024-03-09T20:59:07.308897306Z SELECT COUNT(*) FROM "sqlite_master" WHERE "name" = '__EFMigrationsHistory' AND "type" = 'table'; <Microsoft.EntityFrameworkCore.Database.Command> 
2024-03-09T20:59:07.340968668Z [15:59:07 ERR] BackgroundService failed <Microsoft.Extensions.Hosting.Internal.Host> 
2024-03-09T20:59:07.341006478Z Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 10: 'disk I/O error'.
2024-03-09T20:59:07.341014192Z    at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
2024-03-09T20:59:07.341020935Z    at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements()+MoveNext()
2024-03-09T20:59:07.341027239Z    at Microsoft.Data.Sqlite.SqliteCommand.GetStatements()+MoveNext()
2024-03-09T20:59:07.341034121Z    at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
2024-03-09T20:59:07.341040378Z    at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
2024-03-09T20:59:07.341046879Z    at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader()
2024-03-09T20:59:07.341053166Z    at Microsoft.Data.Sqlite.SqliteCommand.ExecuteScalar()
2024-03-09T20:59:07.341059342Z    at System.Data.Common.DbCommand.ExecuteScalarAsync(CancellationToken cancellationToken)
2024-03-09T20:59:07.341065544Z --- End of stack trace from previous location ---

When I go to the webpage it says "Database is initializing"
and also get attempting to reconnect to server with attempt counter then after 8 attempts it says reconnect attempt failed.

I have tried both
jasongdove/ersatztv:latest
jasongdove/ersatztv:latest-vaapi

Any advice/help would be appreciated

This usually means the container was killed during a database migration. If this is a new install, just clear the config folder, start it up again and let it complete. It shouldn't take very long.

I have tried that a few times and keep getting Failed executing DbCommand

I don't know if it matters but I don't have plex or jellyfin on server. I do have nfo files in the folders for the TvShows/Movies

I am running this on an AMD A8-7600 Radeon R7
Running Docker/Portainer
Don't have Plex/Jellyfin installed.

Edit:
I also tried using the information at https://github.com/ErsatzTV/ErsatzTV/issues/327

I would also try mounting the config from a different location / disk / fs type. The error could also indicate problems with the disk (out of space, unable to lock, etc).

@jasondove

Figured some of it out. I had forgot that I have had some dockers that won't run if you put the config storage on the data drive instead of system drive. If I remember right OMV doesn't like to let files execute from data drives for security reasons.

It spins up now and i can access the webpage. For now I am giving up on running it as a different user from root because nothing wants to run if I try.

My data in local files is very limited so I am trying to hook it up to a Jellyfin server but it just errors out and won't connect. I have created the api in Jellyfin.....this is the information from Docker Log and error on ersatztv server...

Docker Log Error

2024-03-11T23:55:21.776200186Z    at ErsatzTV.Infrastructure.Jellyfin.JellyfinApiClient.GetServerInformation(String address, String apiKey) in /source/ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs:line 43
2024-03-11T23:55:21.777334452Z [19:55:21 ERR] Error saving Jellyfin secrets: An error occured deserializing the response. <ErsatzTV.Shared.RemoteMediaSourceEditor> 

ErsatzTV error

An error occured deserializing the response.

I was using

  - /usr/local/ersatztv:/config

for my volume which is where I put all the others....but I also tried

  - /root/.local/ersatztv:/config

Both give me the same error