Skip to content

Latest commit

 

History

History
204 lines (155 loc) · 10.4 KB

README.md

File metadata and controls

204 lines (155 loc) · 10.4 KB

Me TV – it's TV for me computer

Me TV is a DVB – digital video broadcast – viewer based on GTK+3 and GStreamer.

GitLab Master GitLab build status    GitLab v3.0.x GitLab build status

Travis-CI Master: Travis-CI    Travis-CI v3.0.x: Travis-CI

Licence: Licence      Download precompiled executables from Bintray: Download

NB This is a rewrite of Me TV for GTK and GStreamer using the Rust programming language and the gtk-rs and gstreamer-rs bindings.

The home page for previous versions of Me TV is Me TV Home Page on Launchpad.

Dependencies

To run Me TV, it is assumed you have the following installed:

  • GTK 3.18.0 or later.
  • GStreamer 1.12.0 or later for Me TV 3.0.x, or GStreamer 1.16.0 or later for Me TV 3.1.x or later.
  • The needed GStreamer plugins – currently the DVB plugins are in the 'bad' package; they started there for historical reasons, and although they are not now bad, they are good, they has never migrated to the 'good' package. Some of the other bits and pieces that might get used during use of Me TV are in the 'ugly' package, so best to install that; the things in there aren't actually ugly, some are indeed very nice – long story.

For compiling Me TV from source code you need the development packages installed as well as the library packages.

OS Execution Packages Development Packages Notes
Debian libgtk-3-0 libgtk-3-dev Ubuntu is based on regular snapshots of Debian Sid and
(, Ubuntu, libgstreamer1.0-0 libgstreamer1.0-dev Mint based on regular snapshots of Ubuntu,
and Mint) gstreamer1.0-plugins-base libgstreamer-plugins-base1.0-dev so ensuring packages are in Debian Sid_
gstreamer1.0-plugins-good libgstreamer-plugins-bad1.0-dev Debian Sid causes them to appear in
gstreamer1.0-plugins-bad Ubuntu and Mint at the next snapshot.
gstreamer1.0-plugins-ugly
gstreamer1.0-libav
gstreamer1.0-gtk3
gstreamer1.0-gl
Fedora gtk3 gtk3-devel
gstreamer1 gstreamer1-devel
gstreamer1-plugins-good gstreamer1-plugins-base-devel
gstreamer1-plugins-good-extras gstreamer1-plugins-bad-free-devel
gstreamer1-plugins-ugly
gstreamer1-plugins-bad-free
gstreamer1-plugins-bad-free-extras
gstreamer1-plugins-base-tools
OpenSUSE gtk3 gtk3-devel-64bit
gstreamer1
gstreamer1-plugins-good
gstreamer1-plugins-ugly
gstreamer1-plugins-bad-free
gstreamer1-plugins-base-tools

You will not need the "development packages" to execute the compiled executables once compiled or run pre-compiled executables, only the library dependencies are needed for execution.

Using Pre-compiled Executables

Most users of Me TV will not want to be bothered with trying to build the executables from source code. Pre-compiled executables are therefore available on Bintray; a set of pre-compiled executables for each release. The Me TV project page is here. Go to the release you are interested in and there is section "Files" that has the pre-compiled executables for that release.

Building (and Installing) From Source

If you are going to build the executables from source, you need to either take a clone of this repository, or download a release tarball. You will then need to build the executable. This being a Rust program all build is handled using Cargo – though there is a Meson/Ninja build for those who wish to use that, Rust and Cargo are still needed though, the Meson/Ninja build just manages use of Cargo. Rust and Cargo may be packaged for your operating system, but most people use Rustup to install Rust and Cargo so as to stay up to date with both.

Once you have Rust and Cargo installed, by whatever means, then in the directory of the Me TV project, typing the command:

cargo build

will create a debug build, add the --release option to the command line to get a release build.

Of course there is always the option of typing:

cargo run --bin me-tv

to build and also run the program if the build is successful. Again the --release option is available on this command line – but see below about creating the channels configuration file, which must happen before you can watch television using Me TV.

If you want to make use of the Meson/Ninja build you will need Meson and Ninja installed. Usually this is by installing the relevant packages. You will need to clone the Me TV Git repository or download a release tarball just as above. If you then cd into the directory, and run:

mkdir Build
cd Build
meson --prefx=$HOME/Built ..
ninja

a build of Me TV using Cargo will happen. The prefix option to the meson command is only needed if you are not going to install Me TV to the usual place. Once the build is complete:

ninja install

will install Me TV.

Setting up for watching DVB

Before being able to watch a television channel using Me TV, you must have a channels file for the transmitter you are getting DVB signal from. This channels file is $HOME/.config/gstreamer-1.0/dvb-channels.conf. It is assumed this file is in DVBv5 format, DVBv3 format files will cause an error.

A way of creating this file from a running Me TV is available using the menu on the application window, currently it requires the executable dvbv5-scan be installed. On Debian Sid this is in package dvb-tools, whereas on Fedora Rawhide it is in the package v4l-utils – for some reason Debian splits out the DVB tools from the V4L utils, whereas Fedora keeps them all together. To create the channels file you will not only need dvbv5-scan installed but also the transmitter data files. These are in the package dtv-scan-tables on both Debian and Fedora. However Debian installs them to /usr/share/dvb/dvb-t/ whereas Fedora installs them to /usr/share/dvbv5/dvb-t/. You will also need to set the correct delivery system for your area. For example, Europe, Australia, and many other placed use DVB-T, North America uses ATSC.

To have the channels file available before executing Me TV you can run dvbv5-scan manually. For example:

dvbv5-scan --output=~/.config/gstreamer-1.0/dvb-channels.conf /usr/share/dvb/dvb-t/uk-CrystalPalace

on a Debian system (Fedora puts the transmitter files in a slightly different place) will do the right thing if you live in the Crystal Palace transmitter region in the UK. I suspect people will want to scan on their local transmitter, in which case you should replace the dvb-t/uk-CrystalPalace with the name appropriate for the location you are when you run Me TV.

The Crystal Palace example is for a delivery system using DVB-T, if your area uses a different delivery system (ATSC, DVB-C, ISDB-T, etc.) the transmitter files are in different directories, for example /usr/share/dvb/atsc/us-ATSC-center-frequencies-8VSB

If you do not have dvb5-scan installed then best advice is to install it, preferably using the Linux distribution package management. If that is not possible then dvbscan or w_scan can be used to create the needed file, but it must be in DVBv5 format, not DVBv3 format.

Using Me TV

When started the initial screen of Me TV shows the frontends available or a message if none are connected. It should show any new ones as they are connected – and remove ones as they are removed. Each frontend button is a toggle button for the associated display for that frontend. Clicking on a frontend button will start a new frame, tune the frontend to the channel that is shown, and start playing the channel. Channels can be changed and there is a full screen capability.

Hopefully the UI is intuitive and gives a good UX. If not please feel free to submit an issue.

Here is a screenshot of Me TV playing BBC NEWS in one window and AlJazeera Eng in another window. The USB device was a Hauppauge! WinTV-dualHD hence there are two separate tuners.

Main Me TV window with one channel window showing BBC NEWS and another channel window showing AlJazeera Eng

Recording

The main Me TV program is a GUI for watching TV. With it come two command line programs:

  • me-tv-record records a named channel for a given period to a named MPEG-4 file. The created files can be watched using Glide or Totem (or any other viewer program that can play MPEG-4 files).
  • me-tv-schedule sets up execution of me-tv-record at a given time in the future, i.e. it schedules recording a given channel for a given duration outputting to a given file, starting at a given time in the future.

It is not yet possible to start a recording from the Me TV GUI, but things are being planned.

NB

Me TV 3 has been developed and tested using only DVB-T and DVB-T2, none of the other delivery systems (DVB-C, DVB-S, DVB-S2, ATSC, ISDB-T) have been tested by the developer. It is believed all the delivery systems should work, but… it isn't possible to test non-DVB-T and non-DVB-T2 broadcast in a DVB-T and DVB-T2 broadcast region. However, there is now at least one person using Me TV 3 in an ATSC area, and it works. Which is good. This still leaves no data on whether Me TV works with DVB-C, DVB-S, DVB-S2, and ISDB-T, reports of success are awaited.

Acknowledgements

This project benefits from support by JetBrains; JetBrains provide a licence for CLion. Although CLion is ostensibly a C and C++ IDE, there is IntelliJ Rust which makes CLion an excellent IDE for Rust code development.

Licence

This code is licenced under GPLv3. Licence