Linux users: Missed your favorite show? There may still be a way to view it, without annoyances

One of the nice things about free-to-air satellite is that if you try to record the eastern time zone feed of a show and the recording is no good for some reason, you can often find a later time zone feed to watch or record. However, if a channel suddenly “goes dark” with no warning, or if you don’t realize your recording is bad until after any refeeds have already aired, what can you do then?

Many networks put their shows online, on their web sites, so obviously that would be the first place to check. The problem with that is that many of those sites are a pain in the posterior to use. In some cases you have to have a cable company or commercial satellite provider login in order to watch a show, and in any case the stream will most likely be interrupted by annoyances (commercials, and promos for other shows). And, it may require that you have Adobe Flash installed on your system, and fewer systems come with Flash these days because Flash is a dying technology (none too soon, in my opinion). Over a year ago, Adobe itself started telling people to stop using Flash, but apparently many online video sources haven’t heard the message yet. You can still install Flash, but why would you want to? And I don’t know about you, but I find watching a show in a Web browser a less than spectacular experience.

But if you have access to a Linux-based system, there may be a way to avoid many of the annoyances. I will refer you to this article, which tells you how to install a program that will let you download videos from YouTube “and few more similar sites”, but don’t let the word “few” fool you. I am not going to expound on how understated that statement is. What I will say is this, install the program on your favorite Linux-based system (using the instructions in that article, preferably using the curl or wget methods, since you can then use the program’s -U option for updates), and then run it with the --help option and actually read the output. Many of the options won’t make much sense to you at first, but you may see a few that are rather enlightening. If you find a section that makes you think “Wait a minute, it can do that?”, well yes, it probably can.

So here is the procedure to get a missed show. Open up the web page for the network of the show you missed, and if they have a specific link for “full episodes” or something similar, follow that. When you find the thumbnail or link to the episode you missed, right-click on it and copy the link location.

Now run the program, giving that link as the final option on the line. More than likely it will give you one of several responses. If you are lucky, after a small delay it will start downloading the show. When it is finished, you can move the downloaded file to your Videos directory and watch it using whatever software you normally use to watch TV shows (such as Kodi, Plex, or VLC). This is just like watching it in your web browser, except you now also have the option to watch it on your TV. Actually, some would consider it a better experience (often better audio and video quality, and fewer “annoyances”).

If you are not lucky, it will either complain that something about the link isn’t valid, or that it needs you to install additional software, or it will tell you that the video can’t be accessed without a supported provider login. In the latter case, if you do not have a provider login you are out of luck. If you have a provider login (maybe you are visiting your rich uncle that still subscribes to cable, and he’ll let you use his login and password while you’re visiting), again, use the --help option and read everything (particularly the “Authentication Options” section, and the section below it).

If something about the link isn’t valid, it may be that you didn’t copy the correct link from the page, or in rare cases you may need to view the page’s source code to try to find the correct link, which admittedly can be a challenge if you don’t know how to do that. Also, it could be that the site you are trying to access is unsupported. There is support for quite a few sites built in, but not for every single video site out there. The source code for the program is freely available, and it’s written in Python, so if you are a Python programmer maybe you could modify the software to support a particular site of interest.

If it complains that you don’t have ffmpeg or avconf installed, I suggest you install ffmpeg, since it works better with this program. Probably the easiest way to install ffmpeg is to use the FFmpeg Static Build that is appropriate for your operating system and CPU type. Copy the program files (ffmpeg, ffmpeg-10bit, ffprobe, ffserver, and qt-faststart) from the archive into a subdirectory that’s in your system path (/usr/local/sbin is a good choice on most systems), and make them executable. Then try running ffmpeg --help from the Linux command prompt, and if you get the message “Illegal instruction” then you probably installed the wrong version for your system (particularly if it’s running on a Raspberry Pi – on some models you apparently need to use the armel build, and on others the armhf build). If you downloaded the wrong one, just delete the ffmpeg files from wherever you copied them, and start over with the other build.

If, when running the main program it appears as if it is going to work, but then fails with an error message similar to “Failed to resolve hostname” and indicates that the error came from ffmpeg, you probably need to install nscd (the readme.txt file in the FFmpeg static build archive notes that “A limitation of statically linking glibc is the loss of DNS resolution. Installing nscd through your package manager will fix this…”). To do that under Debian, Raspbian, Ubuntu, or similar distributions just do

sudo apt-get install nscd

If you are a Linux command line hater, and are running Ubuntu 16.04 or newer, this article explains how you can install a front-end GUI for the program.

When running the program, if you use one of the subtitle downloading options such as --all-subs, the subtitles will be downloaded in a separate file. In Kodi, if the subtitles file has a .srt extension and the exact same name as the video file except for the extension, Kodi will find and use it. Unfortunately, the subtitles obtained by this program are often in a different format that Kodi doesn’t understand (most I have seen have a .tt extension). You can convert most other subtitle formats to .srt files using a python script named pycaption. Download it and install it using the included script. The usage is:

pycaption original_subtitles_file.ext --srt >

An alternative PHP script that will download video from a few sites not supported by the program mentioned above is described on this page. However, that script is a bit more difficult to use, especially the first time.

Failing all of that, many show pages will provide links to places where you can buy an individual episode, often for a fairly low price. But if you are like me, it really burns you to pay for an episode that you would have been able to watch for free if the PVR software had worked correctly, or if a stupid local broadcaster hadn’t decided to pre-empt the network show you really wanted to see in favor of some crappy locally-produced content. So, I do tend to like to have alternatives, just in case something happens that causes my PVR software to not record a show. Also, if you subscribe to Netflix, Hulu, or a similar service, don’t forget to check them, since they may have the show you missed.

Now, someone is probably going to ask whether the software mentioned in the linked article is legal. Well, here is the thing, I am not a lawyer, and the laws vary throughout countries in North America. What might be unquestionably legal in one jurisdiction might be illegal in another. This is content that is made available on web sites, and if you just watch the show and delete the file afterwards then you are essentially doing more or less the same thing a browser does, just in a more manual manner, but that may or may not matter as far as the law is concerned. Or to put it another way, this software does exactly what a PVR does, except for some web-based content rather than over-the-air TV. But to repeat – I am not a lawyer, so if this is something that concerns you, you should ask your lawyer. Just be aware that the use of this software may or may not be legal where you live, and I assume no responsibility whatsoever if you choose to use it without bothering to verify whether it’s legal to use where you live. That said, it is NOT peer-to-peer software, so the likelihood that you will get in any trouble for using it is probably rather small.

One other thing you need to be aware of is that many videos are huge – some may be multiple gigabytes, which if you have a usage cap on your ISP connection could be bad news for you (although, keep in mind that you are probably downloading fewer “annoyances” than if you watched it in your web browser, so there’s that). Be aware of the size of the files you are watching! Don’t go hog wild and pull in everything you can think of (this also applies to video you watch in your web browser, by the way – quite a bit of it is more data-intensive than you think, particularly if it’s HD content). It’s always better to record a show direct from a satellite or over-the-air channel when possible, because those shows will not impact your ISP usage cap. Software like this should be used only as a last resort, when other options aren’t available.

And, one drawback of this type of software is that, as far as I am aware, there is no way to schedule shows in advance and have new episodes downloaded automatically when they appear. I am sure that the programmers in the crowd could probably write some kind of script for a specific channel that would find the link for the most recent show on a page and download it, if it’s not been previously downloaded, but that’s not something that’s built into this software.

What, exactly, is IPTV?

As far as I can determine, there are three very different things that are sometimes referred to as IPTV:

1. SAT>IP, as explained in my previous article.

2. Video that streams over the Internet, often in a container with the .m3u8 extension. Sometimes these are live channels, in which case Tvheadend can treat them as if they were a live channel received from an antenna or satellite dish. Note than some such streams are illegal, even if they come from a pay service. Maybe I should say, “especially if the come from a pay service”, since the pay services often don’t bother with licensing or paying for the content they are streaming. If you pay one of those guys, don’t be surprised if one day they simply disappear. There is a thread about how IPTV streams can be added in Tvheadend here, which I only found because it linked to one of my earlier articles, and a Tvheadend wiki page entitled Automatic IPTV Network. Note that content you view on a web page using the Flash player, or some similar proprietary player, is not IPTV – a true IPTV stream can usually be played directly in the VLC media player without any conversion.

3. And then there is what I’d call video sent as a data stream over a satellite transponder. Now, it is true that all digital TV is technically sent as data, but this type of data requires additional processing and sometimes isn’t sent in real time. For example a show or movie may be sent over a slow bitrate stream, and therefore take longer than the actual running length of the program to arrive. This data is sent over C-band or Ku-band satellite transponders, but typically it’s syndicated or one-off programming that will not air until hours, days, or weeks after it’s sent. No standalone “set top box” satellite receiver will receive or decode this type of signals. Instead, you must use a satellite tuner installed in or connected to a computer, and then there is specific software that can be used to receive and decode these signals. It’s a rather arcane process, but if you really want to know about it, use your favorite search engine to find posts and forums that mention the program IPCleaner, and then have a look around. If you ever fully grasp it, you’re doing better than I.

When most people talk about IPTV, they are probably talking about the second type. But when true satellite enthusiasts talk about IPTV, they may well be taking about the first or third type. North Americans are probably more likely to be talking about the third type, while satellite viewers in other parts of the world would be more likely to confuse IPTV with SAT>IP.

So, if you have ever been confused about what people are talking about when they refer to IPTV, hopefully this helps your understanding.

What is a SAT>IP server, and can you use one in North America?

To begin, I suggest you watch this YouTube video. As someone familiar with free-to-air satellite in North America, you may not quite understand it all at first, in particular why there are four cables coming from a single satellite dish. The reason is that this was originally developed for the European market. I’ll try to walk you through the differences but to get the general overview, watch the video first:

In order to understand the need for the four cables from the dish and the four inputs on a SAT>IP server we need to talk for a moment about the differences in LNB’s as used in Europe vs. those used in North America. If you are technically-minded you may want to refer to the Wikipedia page on the Low-noise block downconverter , which I’m using as a source here.  I’m mostly quoting directly from the Wikipedia page for the following tables, with a few minor edits to make things a bit clearer (mostly converting GHz to MHz for consistency).  To start with, these are the specifications for a North American C-band LNB:

  • Local oscillator: 5,150 MHz
  • Frequency: 3,400–4,200 MHz
  • Noise figure: ranges from 25 to 100 kelvins (uses kelvin ratings as opposed to dB rating).
  • Polarization: Linear
Block Local oscillator
freq. range
Polarization Frequency band
13 V Vertical 3,400–4,200 MHz 5,150 MHz 950–1,750 MHz
18 V Horizontal 3,400–4,200 MHz 5,150 MHz 950–1,750 MHz

Note that nowadays most North American satellites use 3,700-4,200 MHz for C-band. A C-band LNB that receives the entire 3,400-4,200 MHz range is usually marketed as a “wideband” model in North America, and is generally only used to receive certain international satellites that are closer to the horizon in the eastern sky. To find the exact intermediate frequency for any given C-band frequency, subtract the C-band frequency from the local oscillator frequency of 5,150 MHz. This does mean that the higher the C-band frequency is, the lower the intermediate frequency will be. Next, these are the these are the specifications for a North American standard linear Ku-band LNB:

  • Local oscillator: 10,750 MHz
  • Frequency: 11,700–12,200 MHz
  • Noise figure: 1 dB typical
  • Polarization: Linear
Block Local oscillator
freq. range
Polarization Frequency band
13 V Vertical 11,700–12,200 MHz 10,750 MHz 950–1,450 MHz
18 V Horizontal 11,700–12,200 MHz 10,750 MHz 950–1,450 MHz

What I want to point out here is that the intermediate frequency range is roughly the same for C-Band and Ku-band, the only difference being that the Ku band has a narrower frequency range. So when we in North America set up a receiver or a tuner for DVB-S or DVB-S2 signals, the only control sent to the LNB is for the voltage, in order to make it switch polarity. The LNB then sends the entire local oscillator bandwidth back to the receiver or tuner, and it is up to the receiver or tuner to pick out the correct frequency, in much the same way that a traditional TV receiver picks out one TV channel out of all those coming in over the antenna or cable.

One other difference between C-Band and Ku-Band is the way you exact intermediate frequency for any given Ku-band frequency. For Ku, you start with the Ku-band frequency and subtract the local oscillator frequency of 10,750 MHz, which is the reverse of the way it’s done for C-band. Don’t ask why, that’s just the way it is!

This brings us to the Universal LNB, or as it’s sometimes referred to in Europe, the “Astra” LNB. As Wikipedia notes:

A Universal LNB has a switchable local oscillator frequency of 9.75/10.60 GHz to provide two modes of operation: low band reception (10.70–11.70 GHz) and high band reception (11.70–12.75 GHz). The local oscillator frequency is switched in response to a 22 kHz signal superimposed on the supply voltage from the connected receiver. Along with the supply voltage level used to switch between polarizations, this enables a Universal LNB to receive both polarizations (Vertical and Horizontal) and the full range of frequencies in the satellite Ku band under the control of the receiver, in four sub-bands.

They do this because Astra uses a wider range of frequencies for Ku, starting at 10,700 MHz as in North America, but ending at 12,750 MHz. If you want the details behind this see the Wikipedia article, but the specs for the Universal LNB used in Europe are as follows:

  • Noise figure: 0.2 dB typical
  • Polarization: Linear
Supply Block Local oscillator
freq. range
Voltage Tone Polarization Frequency band
13 V 0 kHz Vertical 10,700–11,700 MHz, low 9,750 MHz 950–1,950 MHz
18 V 0 kHz Horizontal 10,700–11,700 MHz, low 9,750 MHz 950–1,950 MHz
13 V 22 kHz Vertical 11,700–12,750 MHz, high 10,600 MHz 1,100–2,150 MHz
18 V 22 kHz Horizontal 11,700–12,750 MHz, high 10,600 MHz 1,100–2,150 MHz

Some North American satellite enthusiasts have been using 22 kHz tone switches in their setups for years, probably without knowing the original purpose for them. When we use them here, it’s typically to switch between two LNB’s, such as a C-band and a Ku-band LNB. But in Europe, they were used to switch between the upper and lower half of their expanded Ku band.

It’s not that uncommon to find Universal LNB’s with four coaxial outputs.  Although in most cases the outputs can be individually switched by sending the correct voltage and by the presence of absence of the 22 kHz tone, in many cases they were used in systems where each output would be dedicated to one of the four possible states.  That would make the entire European Ku band on a single Ku satellite available to a satellite distribution system.

A universal LNB can be used in North America if you have a compatible receiver or tuner, but remember that our Ku band only goes up to 12,200 so you won’t find any Ku-band signals above that.

This explains why most SAT>IP servers have four coaxial inputs, typically labelled V/L, V/H, H/L, and H/H. The letter before the slash is the polarity (Vertical or Horizontal) and the letter after the slash is the band (L=10,700–11,700 MHz, H=11,700–12,750 MHz). These would typically be connected to a quad output LNB that is pointed at a single satellite.

So, this fits in with the European idea of free-to-air – typically you get all your content from a single Ku-band satellite. Generally speaking, the major reason SAT>IP was developed was so that people didn’t need to run two or four coaxial cables to every receiver in their home.  Instead, the SAT>IP server would stream the desired channels to the various computers and devices on the local network.  If you’re familiar with a HDHomeRun device, it’s similar to that, but for satellite frequencies.

So hopefully now the video at the start of the article makes more sense, if you are one of those who’s never understood the European way of doing things.

The question you may be asking is, could we use a SAT>IP server in North America with our version of Free-To-Air? And my answer to that would be maybe, but in limited circumstances. I don’t know of anyone that’s importing SAT>IP equipment into North America, probably because at the present it would have limited usefulness here. As far as I can tell, SAT>IP servers have no way of dealing with a moveable dish – they expect the dish to be permanently pointed to a single satellite. And beyond that, I don’t know if any of them can be configured for use with a C-Band or linear Ku-band LNB. You can get dual or quad output Universal Ku-band LNB’s in North America, and by doing the math you could perhaps use a dual-output C-band LNB by configuring the server to use an equivalent Ku-band frequency (one that would be converted to the same local oscillator frequency) but you’d still be limited to pointing the dish at a single satellite.

There’s probably no reason you could not have more than one SAT>IP server on the local network, in order to receive signals from multiple satellites (assuming you have more than one satellite dish), but I have no personal experience with such devices so I cannot say that with certainty at this point in time.  And another thing I don’t know is whether you can configure a SAT>IP server with four inputs to use multiple sources from different satellites.  Here in North America it would make a lot more sense to use two of the inputs with a dual output linear Ku-band LNB, and the other two inputs with a dual output C-band LNB or a different dual output linear Ku-band LNB.  There’s no reason either of these scenarios would not be technically possible, but if the software or firmware in the SAT>IP server doesn’t know about C-band or the North American Ku band, it would be a lot more difficult to configure.

There probably are situations a SAT>IP might be useful. If you are primarily interested in a channel or channels from a single satellite, and particularly if in order to receive that satellite you need to position the dish at some distance from your house, it might be worth using SAT>IP to backhaul the signals to your home instead of running a long run of RG-6 or RG-11 cable. You’d need to use server that’s in a waterproof, weather-resistant enclosure, and you might also want to use fiber optic cable for the run, although you’d still need some way to get power to your equipment enclosure. The same is true if you attempt to use some type of WiFi link; you still need power for the equipment at both ends.

I had originally discussed something like this in my article Minisatip: A possible way to extend the distance between a satellite dish and your TVHeadEnd (or other backend) server but at the time I wrote that, I really had no conception of what SAT>IP actually was (not that I consider myself any kind of expert on it now). The difference between what I was taking about in that article and in this one is that in the earlier article the emphasis was on software running on some kind of dedicated computer, whereas here I’m talking about a hardware device specifically built to be a SAT>IP server.

SAT>IP Tuners in TVHeadEnd

SAT>IP Tuners in TVHeadEnd

So where would you get such a hardware device? There is a list of them (and other types of SAT>IP products) at the site. The same site has links to software and hardware that can be used to view the streams. But keep in mind that if you are running a PVR backend, such as a recent version of TVHeadEnd, it may already have the capability to receive and record SAT>IP streams, and to pass on the live streams to your frontend systems. In fact, I believe the newest versions of TVHeadEnd can detect a SAT>IP server on the network and use it as a tuner, in much the same way that it would find and use a HDHomeRun device.  As an aside, TVHeadEnd can also act as a SAT>IP server.

One thing I find especially interesting are the new (and possibly as yet unreleased) SAT>IP LNB units, such as this one from the Danish company TRIAX:

Triax SAT>IP LNBUnder the boot in the above photo there is a standard Ethernet jack:

Underside of Triax SAT>IP LNB with boot removed

I’m not sure if this LNB is available for purchase yet, because I can’t find it offered for sale on any site anywhere in the world, but from the product specifications I’ve read, it appears that this is a combination LNB and SAT>IP server with eight (8) tuners!  So, just by connecting this to the Internet (most likely through some type of power insertion device – the specifications state it is “Powered via 802.3@rev 2012 PoE type 1, class 2” but do not mention whether a power supply is included), you have eight Ku band tuners available from a single satellite, with no need for an additional SAT>IP server.  Now, if only they would build a C-band LNB with similar capabilities!  We could skip the tuner cards (with their buggy driver issues) and we’d never need to worry about RG-6 cable loss, although since underground Cat 5e or Cat 6 is limited to about 100 meters (328 feet) in length (and actually less than that as a practical matter, since packet loss can get rather significant as you approach 100 meters), you probably would want to run fiber optic cable for any extended length.

SAT>IP is an interesting technology and although it’s not yet gained wide acceptance among free-to-air users in North America, the day may come when it is more useful here, particularly for those with fixed dishes permanently parked on one location in the satellite arc. I will caution you that if you decide to order any equipment from overseas in order to experiment with the technology, it will probably not come with a North American-style power supply that plugs into a 120 VAC outlet. Unless you feel like installing a 240 volt outlet for the server, I’d check to make sure it uses a “wall wart” type power supply that can be replaced with one of similar output ratings, but that will plug into a standard USA/Canada power outlet.

Link: HDTV Overscan: What It Is and Why You Should (Probably) Turn It Off

If most of the video you watch comes from your satellite dish(es) and/or from so-called “set-top boxes” of some kind (why they are still referred to as “set-top boxes”, when there is no practical way you could set them on top of a modern flat-screen TV, I have no idea), and especially if most of what you watch is high definition content, you should definitely read and use the advice contained in this article:

HDTV Overscan: What It Is and Why You Should (Probably) Turn It Off (How-To Geek)

And when you are shopping for a new HDTV set, make sure it has a way to disable overscan before you buy it. I would not give you 50 cents for a brand new HDTV if it does not have a way to disable overscan. Well, maybe I would give 50 cents, but only to give it as a gift to someone I don’t care about very much. Why a very few manufacturers still don’t include a way to disable it is beyond me.

Linux users with Intel HD Graphics 5000, here’s how to view smooth streaming video in a web browser

Some satellite backend systems and advanced receivers offer a web interface, where you can connect using a web browser to perform various administrative tasks, but in some cases there is also an option to view live streams or recorded content. If you click on that, often it will attempt to launch an external player (typically VLC) but in a few cases it may attempt to send the video right to the browser. If that happens and you are running Linux (as some of us do on our media center computers), and your system has an Intel HD Graphics 5000 GPU, you may find that the video is rather jerky or pixelated. The same thing may happen if you attempt to play videos directly from online sites, such as YouTube. The reason is that the Linux versions of web browsers, such as usual default Firefox browser, typically don’t utilize the hardware acceleration of the GPU.

However, it appears that recent stable versions of the Google Chrome browser (version 40.0.2214.91 or later) do support hardware acceleration on Linux-based systems “out of the box”, with no settings to change. This is great news for those of us with systems that have the newer Intel graphics. The hardware acceleration in Chrome may also support other GPU’s, but I cannot be certain of that.  It’s worth a try if you are experiencing this issue, though.

To install Google Chrome in Linux, use your current browser and go to the download page and make sure it is offering a Linux version (if not, click on the link “Download Chrome for another platform”). Select your version of Linux from the list and click the install button. If you are using Ubuntu, it should download a file with a .deb extension and offer to open it in Ubuntu Software center. Allow it to do so and let the install proceed. You may have to type in your user password, and don’t worry if the progress bar appears to freeze up for a minute or so, eventually it should finish.

When it is finished it may say that Chrome needs to be run by typing a command line in a terminal window but at least in Ubuntu, that is not true – you can use the Ubuntu Launcher, just as you would with any other program. Just start typing “Chrome” or “Google” (without the quotes) in the search window and it should appear, like this:

Chrome in Ubuntu

Once you have launched Chrome you can right-click on its icon in the Launcher menu bar and select “Lock to Launcher” from the dropdown, then move the icon to whatever position you like (such as just above or below Firefox) so it will always be instantly available.

If you are running an older version of Chrome and for some reason are adamantly opposed to upgrading (why???) then the information in this thread on the Ubuntu forum may be of some assistance.

Possible problem solver: Bit-Path AV™ HDMI® over Ethernet Extender Kit

I just wanted to point this out to those of you who still use traditional set-top satellite receivers with HDMI outputs.  Typically the issue is that the cable(s) from your satellite dish(es) come into one location in your home, and that’s where you put your satellite receiver and your TV.  But what if you want to send the HDMI signal from the receiver to another room in your home, or maybe even to another building on your property?  Or, what if you want to send the same signal to more than one screen?  As long as you have a local network connection available wherever you want to watch satellite TV, this product may be your solution.  To some it might seem a little pricey, but then have you ever priced an extra long HDMI cable (which often does not work all that reliably anyway)?

Bit-Path AV™ HDMI® over Ethernet Extender Kit

From the Monoprice description:

Monoprice Bit-Path AV™ is revolutionary new technology for transmitting HDMI® video over long distances. It features a proprietary IP-based network topology, which allows it to operate as a standalone system, transmitting the HDMI signal to distances up to 120 meters over a single Ethernet cable*. You can also plug it into your existing Ethernet local area network and use the existing network infrastructure to transmit the signal over any distance, without interfering with your LAN traffic. It supports the 1080p FHD resolution, 3D video, and multichannel, compressed and uncompressed audio. Best of all, it is a true Plug-n-Play solution, allowing installers and end-users alike to quickly and easily create an HDMI distribution system for home and business applications alike.

Basically this device can be used as a HDMI extender, and/or as a HDMI splitter:

By using an Ethernet switch** and multiple receivers, in either a standalone or existing network installation, you can split the HDMI signal to multiple destinations. Unlike other HDMI splitters, the system scales with your needs, from a simple 1×2 split using two receivers to an extensive, complex and unlimited split using multiple receivers. You can even use multiple receivers in conjunction with conventional splitters to further multiply the number of displays you can use.

Unfortunately there do not appear to be any reviews of this kit yet, but it comes from Monoprice, which has acquired somewhat of a reputation for selling items that would cost much more from other sources at very reasonable prices. It even appears to have IR Repeater support, so in theory you could use your remote control to control the receiver from another room:

Bit-Path AV™ HDMI® over Ethernet Extender Kit sending unit (connects to HDMI source)

Bit-Path AV™ HDMI® over Ethernet Extender Kit receiving unit (connects to TV or Display)

I have no personal experience with these units, but had they been around three or four years ago when I was still using a standalone satellite receiver (rather than PVR backend software and DVB-S2 tuner cards) to receive and record satellite TV, I could have put them to very good use. If you still prefer a traditional satellite receiver, but hate that it is tethered to one spot (and you have a local ethernet network at your location) you might want to give this a try – if you do, please leave a comment and let us know how it’s working for you.

Now in my wildest speculation, I have to wonder – would it be possible to set up a pair of these connected through a VPN (Virtual Private Network)? While you probably would not want to do this if your ISP imposes bandwidth caps, it’s an interesting thought experiment, since it means you could send a HDMI signal to a screen quite some distance away. And yes, I realize that there’s probably some similarity to a Slingbox in that regard, but I’ve never had a need for one of those, either, so I’m not at all sure how similar such devices might be.

How to play video recorded from high-bitrate 4:2:2 sources on low-power systems

In a previous post, I told you about Fixing the audio on recorded programs from a certain network (which shall remain nameless). The technique for doing that involved the use of the ffmpeg software, and I suggest you read that article because it gives some information near the end of the article on how to obtain a correct version of ffmpeg. The technique I am about to discuss also uses ffmpeg.

If you are running a PVR/backend system such as TVHeadEnd, you may have tried recording programs from certain high-bitrate 4:2:2 feeds, and then found that they simply would not play back on your home theater PC device, particularly if you are using something low-powered like a single-board computer. You might get sound only, with a black picture (and maybe a few flashes of green or some other color), or the video just might play really slowly for a few seconds and then start breaking up. The solution to this is to use ffmpeg to convert the recorded program after you have finished recording it. This means you can’t watch the program live, but you can view it later.

When I first ran across this problem, I found a nice GUI-based program that could do the conversion, but it also took a ridiculous amount of time (about 8 hours to convert an hour of video). But also, it not only converted the video, but also the audio, which destroyed any hope of hearing surround sound. I then figured out that it was actually using ffmpeng to do that conversion, and that by running ffmpeg with only the necessary options I could cut the processing time down to around one-quarter of the time taken by the GUI-based program (or around twice the original running time of the program), plus I could set it to pass the audio and any subtitle streams unchanged. The line I used looks like this:

ffmpeg -loglevel quiet -y -i “original_recording.ts” -c copy -c:v libx264 -b:v 16711680 -pix_fmt yuv420p “converted_program.ts”

(The above is a single line, even if it does not display as such here.)

The -b:v 16711680 option sets the bitrate for the conversion and is the same as the one used by the GUI-based program. In my case it seems to produce a file that’s somewhere around half the size of the original. The video quality is still excellent. By the way, the -y option tells it to overwrite any existing file with the name you specify for the converted program file; if you want it to prompt you when there’s a file name conflict then leave that option out. The above line assumes you are converting a transport stream (.ts) file, if not, then change the extensions accordingly.

If the resulting file is still a little too “fat” for your equipment, then you can try reducing the -b:v value, with a corresponding loss of quality. The GUI-based program could use -b:v 7325135 and still considered that “high” quality, while -b:v 4229320 was considered somewhere between “high” and “standard” quality. Of course, you could go even lower, particularly if you will be playing the recording back on a much smaller screen. And, I do not think those numbers are in any way magic, and there is no reason you couldn’t stick with even decimal or hexadecimal numbers for your trials, so for example you could use 16777216, 8388608, 4194304, or 2097152 (corresponding to 0x1000000, 0x800000, 0x400000, and 0x200000 in hexadecimal) as your -b:v trial values. You just need to find that sweet spot where the video is of the best possible quality that will play without problems on your equipment.

There are many other options you can use with ffmpeg, including ones that will reduce the screen size in case you are watching on an older computer or tablet, or something else that does not have a 1080p screen, but I just wanted to show a simple conversion using the fewest number of options.

I will note that ffmpeg has a tendency to gobble up as much available CPU time as it can get while converting video. If you fear that it will steal needed CPU cycles from other programs (such as your backend software), you can use nice to keep it in check. For example, if you use:

nice -n 20 ffmpeg […options…]

It will cause ffmpeg to run at the lowest possible priority and give up CPU cycles to any other program that needs them. Nice can take values from -20 to + 20, with the higher the number indication how “nice” the program will be to other programs. Negative values will raise the priority of the program higher than normal, while positive values will give it lower priority than most other programs.

Similarly, you can use ionice to keep ffmpeg from hogging access to your storage devices. If you use:

ionice -c 3 ffmpeg […options…]

That will cause ffmpeg to give preference to any other program that needs access to your storage devices. You might want to use this if ffmpeg will run at the same time your backend software is recording programs to your hard drive. And yes, you can use both ionice and nice together:

ionice -c 3 nice -n 20 ffmpeg […options…]

Note that if you are running this from a shell script then you may need to specify the full paths to all the programs used, like this:

/usr/bin/ionice -c 3 /usr/bin/nice -n 20 /usr/local/bin/ffmpeg […options…]

The paths shown above are valid for most Debian/Ubuntu based systems. To find out where these programs are located on your system, you can use the which command. For example:

$ which ffmpeg