Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
mdhelp: more work, toc almost completed (but buggy markdown renderer)
- Loading branch information
Showing
11 changed files
with
477 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| ##Before you begin | ||
|
|
||
| There are some basic concepts that will make life much easier if you | ||
| understand them from the outset. | ||
|
|
||
| ###Hardware/Software Fundamentals | ||
|
|
||
| * A **tuner** is the hardware (chipset) needed to interpret a digital | ||
| television signal and extract from it the programme stream. The tuner hardware | ||
| is also responsible for communicating with your satellite dish via the LNB | ||
| in the case of DVB-S. | ||
|
|
||
| TODO: Network tuners like SAT>IP, HDHomeRun. | ||
|
|
||
| * A **driver** is the piece of software that your operating system uses to | ||
| talk to the tuner. This can be built into the OS (e.g. 'supported since kernel X') | ||
| or might be a separate piece of software that you need install, and maybe | ||
| even compile, separately. | ||
|
|
||
| * **Firmware** is a small piece of binary microcode that your system driver | ||
| sends to the tuner upon initialisation. This is the cause of more problems | ||
| than you'd imagine... if you find yourself in trouble, this is the first | ||
| thing to check along with kernel support for your hardware. | ||
|
|
||
| ###Application/Tvheadend Fundamentals | ||
|
|
||
| The Tvheadend software then sets up a series of configuration elements, and | ||
| the way in which these interact determines how a TV signal ends up in front | ||
| of you. They all use what's known as a *many-to-many* relationship, in that | ||
| one configuration element can be related to multiple elements of the next | ||
| type, and vice versa: one tuner has multiple networks, one network can | ||
| exist on multiple tuners. | ||
|
|
||
| * The **network** is the software definition of your carrier network. Broadly, | ||
| it lays out what sort of network it is (such as DVB-T or DVB-S2), how it | ||
| gets scanned, where the DVB-S satellite is in orbit, and similar. Networks | ||
| are used by tuners so the hardware knows where to look for a signal. | ||
|
|
||
| * Networks then have **muxes**. These are the carrier frequencies that exist on | ||
| the old analogue channels that are used to transmit multiple digital signals | ||
| rather than a single analogue one. These signals are multiplexed together, | ||
| hence the name _mux_. | ||
|
|
||
| * Muxes then carry **services**. These are the individual streams of data. | ||
| They can be TV or radio programmes, they can provide data services such as | ||
| digital teletext, or they can be used as part of the control code for | ||
| catch-up IPTV services. | ||
|
|
||
| * And finally, services are mapped to **channels**. These are what you | ||
| and your client software think in terms of: _"I'd like to watch BBC One | ||
| now, please"_. | ||
|
|
||
| ###Why The Complexity? | ||
|
|
||
| Simply, because 'BBC One' might exist in many different places... it | ||
| might have regional variations on multiple frequencies (so different services | ||
| on different muxes); it might exist on more than one source (perhaps on two | ||
| different satellites); and it might thus be accessible through more than one | ||
| piece of hardware (two satellite tuners, or one satellite and one terrestrial | ||
| tuner). | ||
|
|
||
| When you select the channel you want to watch or record, Tvheadend can | ||
| then map a path through all those variables to ask a particular tuner to | ||
| go and get the signal for you. | ||
|
|
||
| The following diagram explains the relationship between these components: | ||
|
|
||
|  |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| ##Features of Tvheadend | ||
|
|
||
| ####SDTV and HDTV support | ||
| * H.265 (HEVC), H.264 (MPEG-4 AVC) and MPEG2 video supported. | ||
| * AC-3, AAC and MP2 audio supported. | ||
| * DVB subtitles supported. | ||
| * Teletext subtitles supported. | ||
|
|
||
| ####Input Sources | ||
| * Satellite signals via DVB-S and DVB-S2 | ||
| * Terrestrial/Over-the-Air signals via DVB-T, DVB-T2 and ATSC | ||
| * Cable signals via DVB-C | ||
| * LAN/IPTV signals such as IPTV, SAT>IP, HDHomeRun | ||
| * A general-purpose MPEG-TS `pipe://` for analogue and non-broadcast sources | ||
| * Support for multiple adapters of any mix, with each adapter able to | ||
| receive simultaneously all programmes on the current mux. | ||
| * Powerful many-to-many channel:service:tuner mapping that allows you to select | ||
| channels irrespective of the underlying carrier (for channels that broadcast | ||
| on multiple sources). | ||
|
|
||
| ####Output Targets | ||
| * Local or remote disk, via the built-in digital video recorder. | ||
| * HTSP (Home TV Streaming Protocol). | ||
| * HTTP streaming. | ||
| * SAT>IP server (including on-the-fly descrambling). | ||
|
|
||
| ####Transcoding Support | ||
| * Subject to your system's capabilities, support for on-the-fly transcoding | ||
| for both live and recorded streams | ||
| * text | ||
| * text | ||
|
|
||
| ##NOTE: TODO: TEXT REQUIRED | ||
|
|
||
| ####Digital Video Recorder | ||
| * Built in video recorder stores recorded programs as Transport Stream (.ts) or Matroska (.mkv) files. | ||
| * Multiple simultaneous recordings are supported. | ||
| * All original streams (multiple audio tracks, etc) are recorded. | ||
| * Streams can be selected and filtered positively or negatively as required. | ||
| * Create rule sets manually or based on EPG queries. | ||
| * Multiple DVR profiles that support different target directories, post-processing options, filtering options, etc. | ||
|
|
||
| ####Electronic Program Guide | ||
| * Rich EPG support, with data from DVB/OTA, XMLTV (scheduled and socket). | ||
| * Searchable and filterable from the web user interface. | ||
| * Results can be scheduled for recording with a single click. | ||
|
|
||
| ####Rich Browser-Driven Interface | ||
| * The entire application is loaded into the browser. | ||
| * Based on extJS, all pages are dynamic and self-refreshing. | ||
| * All sorting/filtering is then done in C by the main application for speed. | ||
|
|
||
| ####Easy to Configure and Administer | ||
| * All setup and configuration is done from the built in web user interface. | ||
| * All settings are stored in human-readable text files. | ||
| * Initial setup can be done by choosing one of the pre-defined [linuxtv](http://git.linuxtv.org/cgit.cgi/dtv-scan-tables.git) networks | ||
| or manually configured. | ||
| * Idle scanning for automatic detection of muxes and services. | ||
| * Support for broadcaster (primarily DVB-S) bouquets for easy channel mapping. | ||
|
|
||
| ####Multi-User Support | ||
| * Access to system features (streaming, administration, configurations) can | ||
| be configured based on username/password and/or IP address. | ||
|
|
||
| ####Software-Based CSA Descrambling | ||
| * Requires a card server (newcamd and capmt protocol is supported). | ||
|
|
||
| ####Fully-Integrated with Mainstream Media Players | ||
| * Movian and Kodi are the main targets/ | ||
| * All channel data, channel groups/tages, EPG and TV streaming is carried over a single TCP connection. | ||
|
|
||
| ####Mobile/Remote Client Support | ||
| * As well as the web interface, which is accessible through VPN if required, | ||
| third-party clients are available for both | ||
| [Android](https://play.google.com/store/apps/details?id=org.tvheadend.tvhclient&hl=en_GB) | ||
| and [iOS](https://itunes.apple.com/gb/app/tvhclient/id638900112?mt=8) (other | ||
| clients may also be available). | ||
|
|
||
| ####Internationalisation | ||
| * All text is encoded in UTF-8 to provide full international support. | ||
| * All major character encodings in DVB are supported (e.g. for localised EPG character sets). | ||
| * [Web interface internationalization](https://tvheadend.org/projects/tvheadend/wiki/Internationalization) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| ##Install Your Tuners | ||
|
|
||
| This section will give you some basic ideas on how to get your tuner working | ||
| with your operating system. However, it's clearly way beyond the scope of | ||
| this guide to tell you everything: consult specialist forums, search around, | ||
| and at least do some research to work out what's likely to work or not | ||
| before you hand over any money. | ||
|
|
||
| There is a discussion about supported hardware on [the Tvheadend | ||
| forums](https://tvheadend.org/boards/5/topics/5102). | ||
|
|
||
| ###1. Install the Tuner Hardware | ||
|
|
||
| This is obviously a core requirement that's outside of the scope of this guide. | ||
|
|
||
| You basically have the choice of: | ||
|
|
||
| * External USB tuners that plug in | ||
| * Internal (e.g. PCI) tuners that go inside the computer chassis | ||
| * External SAT>IP tuners that send MPEG-TS streams over a LAN connection | ||
| * External HDHomeRun tuners that send MPEG-TS streams over a LAN connection | ||
|
|
||
| Follow the appropriate installation instructions and, if relevant, the | ||
| setup instruction (e.g. for SAT>IP, which are effectively small, standalone | ||
| computers). | ||
|
|
||
| ####A Note on USB Tuners | ||
|
|
||
| USB tuners are cheap, work well and are frequently well-matched to physically-smaller | ||
| builds (e.g. HTPCs) which simply don't have the internal slots. However, please | ||
| remember that many need external power, or need a powered hub to work properly. | ||
|
|
||
| In addition, even USB3 doesn't have the greatest practical bandwidth per bus. That | ||
| means you're probably asking for problems if you have four DVB-S2 dongles on the same USB | ||
| connection to the motherboard. | ||
|
|
||
| This is particularly true of systems such as the Raspberry Pi which share USB | ||
| bandwidth with the Ethernet port. Don't be surprised if this kind of platform struggles | ||
| and/or reports errors in a multi-tuner configuration, especially on | ||
| high-bandwidth (e.g. HD) streams. | ||
|
|
||
| ###2. Install Firmware and/or Drivers | ||
|
|
||
| Similar to the above, Tvheadend can do nothing if your tuners aren't working | ||
| properly. A good place to check how to set up your tuners is the | ||
| [LinuxTV wiki device library](http://www.linuxtv.org/wiki/index.php/Hardware_Device_Information) - | ||
| this will not only tell you what's supported under Linux, but also | ||
| how to get it all working. | ||
|
|
||
| As a broad guide, though, you need two main components: a driver, and firmware. | ||
|
|
||
| The **driver** is the piece of software that, as far as the operating system is concerned, | ||
| controls the tuner hardware. | ||
|
|
||
| Driver software typically comes either built-in to the operating system | ||
| (a clue here is documentation that says *"supported since kernel 3.16"*, for example) | ||
| or as an external program that needs to be compiled in (e.g. how you'd build TBS' | ||
| or Digital Devices drivers, or perhaps where the driver is supported in a later version | ||
| of LinuxTV V4L-DVB than has made it to your kernel - the giveaway here is | ||
| *"compile and install the latest media_build"*). | ||
|
|
||
| Many tuners then also require **firmware** - normally, a binary file that's been | ||
| extracted from the proprietary drivers used by Windows. | ||
|
|
||
| Many Linux distros include a package for the most common devices (e.g. | ||
| *linux-firmwares* under Ubuntu or *firmware-linux-nonfree* under Debian). | ||
| If this isn't sufficient, a good source of firmware files is the | ||
| [OpenElec firmware library](https://github.com/OpenELEC/dvb-firmware) | ||
| on their git repository. | ||
|
|
||
| Typically, download the binary file and install it into `/lib/firmware`, owned | ||
| by `root:root`, permissions `rw-r--r--` (0644) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| ##Install Tvheadend | ||
|
|
||
| This section tells you how to get hold of the software in the first place, | ||
| and how to get it onto your system. | ||
|
|
||
| ###1. Install the Software | ||
|
|
||
| Follow the instructions that are specific to your Linux distribution | ||
| (Ubuntu/Debian/Mint, Arch, Fedora...). This will typically be PPA-and-dkpg | ||
| for Debian, but most other distros will need you to build your own version from source. | ||
|
|
||
| * [Debian/Ubuntu installation instructions](https://tvheadend.org/projects/tvheadend/wiki/AptRepository) | ||
|
|
||
| * [Instructions on how to build from source](https://tvheadend.org/projects/tvheadend/wiki/Building) | ||
|
|
||
| Do not assume that your distro's package manager will give you the latest | ||
| version of Tvheadend - indeed, give you any version at all. Always check. | ||
|
|
||
| Where a pre-built package exists, this will usually get you the last official | ||
| stable version. However, more advanced users may be interested in running | ||
| a development version - either a nightly build or a self-compiled version. | ||
|
|
||
| ##NOTE: TODO: STABLE VS UNSTABLE VS TESTING VS BUILDING FROM MASTER... | ||
|
|
||
| ##NOTE: TODO: NEED A VIEW ON DREAMCAT'S VERSIONS PLUS A LINK ON HOW-TO-COMPILE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| ##Overview of Tvheadend | ||
|
|
||
| ###Welcome to Tvheadend! | ||
|
|
||
| Tvheadend is a lightweight, easily-configured, general-purpose TV/video | ||
| streaming server and recorder (PVR/DVR) for GNU/Linux, FreeBSD and Android. | ||
|
|
||
|  | ||
|
|
||
| It supports input from: | ||
|
|
||
| * Cable TV, delivered via a cable to your house (DVB-C) | ||
| * Satellite, so any signal coming in via a dish (DVB-S and DVB-S2) | ||
| * Terrestrial, so over-the-air broadcasts received through a | ||
| traditional television aerial (DVB-T and DVB-T2 in much of the world, ATSC | ||
| in north and central America) | ||
| * Internet and LAN feeds, such as IPTV, SAT>IP, HDHomeRun and a general-purpose | ||
| MPEG-TS `pipe://` | ||
|
|
||
| As well as being able to record the input, Tvheadend also offers it up to | ||
| client applications via HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP | ||
| streaming. | ||
|
|
||
| While supported in previous versions, analogue video (V4L) is no longer | ||
| supported directly. If you still need this, or need to input signals | ||
| from video cameras or other non-broadcast sources, use `pipe://`. | ||
|
|
||
| The code is hosted at [github](https://github.com/tvheadend/tvheadend). | ||
| Please use github's features if you want to provide patches. Contributions and improvements are always welcome. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| ##Basic Requirements | ||
|
|
||
| ###Physical Architecture | ||
|
|
||
| It's perfectly possible to install and run Tvheadend as a single-seat installation, | ||
| with the software running on the same system as any client software (e.g. Kodi), | ||
| with all files stored locally. | ||
|
|
||
| Alternatively, you can run Tvheadend on a server, perhaps on an always-on | ||
| system that houses your media, perhaps on a dedicated low-power system - it's your choice. | ||
|
|
||
| Where you have aerial/coax connections might influence your choice - unless | ||
| you use SAT>IP or have some other way to transport your TV signal over a LAN, | ||
| your Tvheadend installation has to live where you can actually connect your | ||
| tuners. | ||
|
|
||
| ###System Requirements | ||
|
|
||
| Wherever you install it, Tvheadend primarily runs on **Linux** - pre-built | ||
| binaries are available for most Debian-based distributions (Debian itself, Ubuntu, | ||
| Mint...) and RPMs for Fedora, or you can build it yourself. It runs on both | ||
| 32- and 64-bit x86 and ARM processors, and so also can be built for Android | ||
| (which uses the Linux kernel). | ||
|
|
||
| You will only need **c. 30MB disk space** for the application and associated | ||
| files, and maybe anything up to **1GB** for your configuration - depending on | ||
| how many tuners of what type you have, how many channels you receive, your | ||
| choice of programme guide, and so on. You'll clearly need much more for | ||
| your recordings, though: as a guide, an hour of SD MPEG-2 video will take | ||
| about 1GB, while high bitrate HD H.264 will easily consume 5GB+ per hour. | ||
|
|
||
| Tvheadend is intended to be lightweight, so it will run on a NAS or similar | ||
| **low-powered CPU**. Note that the exception here is transcoding: if you want | ||
| to convert high-definition video in real time then you will need a powerful, | ||
| multi-core system. It will happily run in less than **1GB of RAM**, and many | ||
| people run it successfully on original Raspberry Pis with perhaps only 256MB | ||
| of usable free memory. This does depend on what else you're using the computer | ||
| for, though, as a GUI will drain your system as will any serious file serving. | ||
|
|
||
| And, of course, you'll need one or more **TV tuners** if you want to receive | ||
| regular broadcast television - otherwise, you're limited to IP sources. | ||
|
|
||
| An **Internet connection** is recommended but not essential. You need to | ||
| have an accurate clock for EPG timers to work, for example, but this can be | ||
| synchronised from the broadcast signal if you're not in a position to use | ||
| `ntp` or similar. | ||
|
|
||
| ###How Lightweight? | ||
|
|
||
| How about light enough to run on a travel router? Take a look at this | ||
| [example](https://tvheadend.org/boards/4/topics/16579) from one of our users... |
Oops, something went wrong.