Introduction
What is the Channel Zapper?
The channel zapper is a web-based application available on all H-Series devices that allow for decoding of IP video streams and changing channels (Zapping) between them using the Remote control or API (for example).
It supports various video codecs and streaming formats, such as:
Video Codecs:
- AV1
- HEVC/H.265
- AVC/H.264 (MPEG-4, Part 10)
- MPEG-2
- VP9
Streaming Formats:
- HLS, LL-HLS
- DASH, LL-DASH
- RTSP
- RTMP
- SRT
- UDP
Prerequisites
This guide assumes that the user knows how to provision the H-series devices, which is covered in the H200 Quick Start Guide. You should have sufficient knowledge of how to use application parameters (INIs) to control the behavior of the H-series devices.
In this article:
- How the Channel Zapper Works
- Getting Started with the channel Zapper
- Additional Zapper Application Features
- Advanced: Channel lineup file format and examples
Summary
How the Channel Zapper Works
The built-in web browser on the H-series box can be used to launch the channel zapper web application. When the channel zapper application is launched, it will read a channel lineup file and begin to decode the stream(s) defined in the channel lineup file for consumption on the screen.
The channel zapper application requires the user to build a “channel lineup”. There are a few methods of building a channel lineup that will be covered later in this document. No matter how it is constructed, the channel lineup file will contain the following information:
- The channel ID
- The channel name (user assigned)
- The URL for the IP stream
- The stream type (ie. Multicast, HLS, DASH, SRT, RTMP etc)
- The default stream to tune on startup
If multiple channels are defined, the channels in the lineup can be switched by using the provided remote control or using the EELM Zapper APIs.
Getting Started With the Channel Zapper
The general steps to using the zapper are:
- Create a channel lineup.
- Hosting a Channel Lineup File
- Enable the channel zapper application on the device
These steps are explained in this section.
Create a Channel Lineup
The first step in using the channel zapper is to create a channel lineup. There are a few methods of creating a channel lineup.
Method 1 – Use Amino’s Offline Web Application to create a channel lineup file
This method is best for small lineup files that will only be used on a single box. If this method is used, the channel lineup is hosted on the device itself and there is no need to host the channel lineup on a web server.
To use this method, point your PC’s web browser to the USB Image Creator and follow the link to “Create Channel Lineup”. The wizard will walk you through creating a channel lineup that can be downloaded and then hosted on your web server for all of your H200’s to retrieve. The application parameter “webapp.lineup_url” can be used to define the URL for the device to retrieve the channel lineup. See the following section "Hosting a Channel Lineup File" for additional details.
Method 2 – Create a Channel Lineup Directly on the H-Series Device
This method allows you to create a channel lineup directly on the device. You can use the TV screen and remote control (or USB Keyboard) to build the channel lineup or, you can use your PC to access the channel editor on the device.
Application parameter (INI) requisites
To enhance security, the zapper editor is disabled by default. You will have to enable the following application parameters via DHCP VCI or Orchestrate.
eelm.enable (Must be set to "Alllow both HTTP and HTTPS connection without Client authentication")
eelm.zapper_editor.enable (Allow requests from both local and non-local)
Note: setting these parameters will reduce the security of the device. Anyone with the URL on the local network can modify the channel lineup. It is recommended that this INI should be set for testing purposes or initial configuration only.
Optionally, you can create a shortcut using a color key on your remote to open the channel editor like so:
key.link.red = http://localhost:8090/lineupEditor/index.html
This image shows how it should look in Orchestrate:
Once the configuration is set, reboot the target device. Once rebooted you can now access the channel lineup editor from your PC web browser, or by using your RCU/USB Keyboard and editing on the TV screen.
Accessing the Zapper Lineup Editor Remotely using a Web Browser
Open the Web Browser and type the following link where you will need to replace the <H200 IP> with your H200 IP Address:
https://<H200 IP>:10444/lineupEditor/index.html
If everything was set up correctly the following screen should open:
Accessing the Channel Lineup Editor on the TV Screen
If you have set
key.link.red = http://localhost:8090/lineupEditor/index.html
as shown above, you can simply press the Red button on the RCU to access the on-screen channel lineup editor. Once on screen use the RCU to select "Add Channel". You will then see the channel add screen as below.
Accessing the Channel Lineup Editor from a USB keyboard
A USB keyboard can be used with the media player by simply connecting it to either USB port on the back of the chassis. Note that only the basic universal 104/105 keys will likely work as there is no official support for proprietary media keys.
In this example, the channel editor and map of the F1 button on the USB keyboard will be considered
key.link.fn1 = http://localhost:8090/lineupEditor/index.html
Note: The device needs to be rebooted after the configuration change.
Method 3 – Create a channel lineup file manually using a text editor
This is best for advanced users who may need some advanced features and are comfortable formatting JSON files.
See the Advanced section at the end of this document for more details and examples.
Hosting a Channel Lineup File
The next step is to decide if the channel lineup file will be hosted somewhere. For situations where only a single device will use a particular channel lineup file, the file may be applied directly to the target device. If many boxes in the network will use the same channel lineup, or there is a preference to have all channel lineup files in a single location, it may be best to host the channel lineup file on a web server. The application parameter webapp.lineup_url can be used to indicate the URL of the hosted channel lineup file.
Launching the Channel Zapper
Once your channel lineup file is in place, you are ready to begin watching the video.
You simply need to launch the channel zapper application.
Because not all users will utilize the channel zapper, the zapper application is hidden by default but can easily be launched either via a button on the remote control or automatically launched on boot.
To map an RCU button to the zapper, you can use the application parameter key.link.XXX where XXX is the name of the button you want to use. (Please Note: The Green button by default brings up the audio track selection, it is not recommended to remap that button). Set the parameter value to the URL of the zapper https://appassets.androidplatform.net/assets/zapper/zapper.html. The URL is a local URL that will automatically be recognized by the device and the zapper will be launched.
Alternatively, the application parameter webapp.hompegage can be used to auto-launch the web zapper upon boot. Again, set the parameter value to the URL of the zapper application shown above.
As an alternative, you can use the following URL as a shortcut to select a specific channel number:
key.link.red = https://appassets.androidplatform.net/assets/zapper/zapper.html?channum=16
Additional Zapper application features
Additional Application Parameters for the Channel Zapper
The following application parameters may be used to further control the behavior of the channel zapper.
webapp.loop_on_end – setting to “TRUE” will force reloading the URL when the end of file has been reached.
webapp.retry_on_error – setting to “TRUE” will force the zapper to continuously retry to tune the channel when an error is encountered.
webapp.save_last_channel – Setting to “TRUE” will store the last channel and will boot up to the channel last tuned.
Remote Control Of The Device Over A Network
It is possible to control the H200 Zapper application via REST API. For details please refer to the Zapper API section in H200 Enable Enterprise Local Management (EELM) Server.
Following table lists all the keycodes that can be sent to control the H200 Zapper application.
Key | Key Description | Keycode | Key | Key Description | Keycode |
Menu | Brings up channel list | 31 | 0 | Zero | 27 |
CH+ | Channel Up | 2 | 1 | One | 53 |
CH- | Channel Down | 9 | 2 | Two | 46 |
CC | Closed Captions | 69 | 3 | Three | 39 |
Media | Audio Selection | 8 | 4 | Four | 19 |
Ok | Select | 3 | 5 | Five | 26 |
Up | Up | 37 | 6 | Six | 12 |
Down | Down | 24 | 7 | Seven | 54 |
Left | Left | 51 | 8 | Eight | 47 |
Right | Right | 10 | 9 | Nine | 40 |
Audio Language Selection
Toggling Through Available Audio Languages in Video Player Application
Pressing the “Green” button on the remote control brings up the list of available Secondary audio languages available in the video stream. Successive pressing will toggle through or you can use “Up”/”Down” and “Ok” to select.
Closed Captions or Subtitles Selection
Toggling Through Subtitle/Caption Languages in Video Player Application
Pressing the “Titles” button on the remote control, brings up the list of available Closed-Captions/Subtitles available in the current stream. Successive pressing will toggle through or you can use “Up”/”Down” and “Ok” to select.
Watermark / On Screen Display of Device Info
For some Digital Signage customers there may be a need to display a watermark, unique to each media player, overlaid on the video. This is enabled using Amino Orchestrate parameters which allow you to enable a watermark and select the data and color of the data that will be displayed.
- browser.osd_info.argb requires an RGB color code and this will determine the color of the on-screen text.
- browser.osd.info.enable is the main setting to turn on the watermark feature and has a drop-down of on/off value
- browser.osd.info.mask determines which information will be displayed, the 1 or 0 in the 4 digits will determine if that data is displayed. The information for each digit equates to :
- Serial Number
- Mac Address
- ChipID
- IP address
In the example below 1101 will show SN, Mac and IP.
Watermark Display
Starting Channel
You can program which channel should be the first channel to load when a device is turned on. This channel is known as the Starting Channel. This can be done by setting a “starting” property to value “true” in the channel lineup configuration file as shown below:
Example of starting channel
{ "type": "udp", "name": "12", "desc": "UDP stream", "starting": true, "addr": "233.22.133.12", "port": "8110" }
If more than one starting channel is specified, the 1st appearance will be selected.
Advanced: Channel lineup file format and examples
The Channel lineup is specified as a JSON format file which contains the configuration details for each channel.
The player supports several different media sources and examples of the required JSON to configure each are shown in the table below.
Media Type | Example Source | Minimal Config Example |
Native-Dash Media
|
Clear Dash Stream http://<host>:<port>/[<file_path|playlist_path>] |
http://www.domain.com/manifest.mpd { |
Encrypted Dash Stream http://<host>:<port>/[<file_path|playlist_path>] Remark: "encrypting_request_header" is optional even for encrypted sources. |
http://www.domain.com/encrypted/manifest.mpd { |
|
Encrypted Dash Stream with persistent license http://<host>:<port>/[<file_path|playlist_path>] |
http://www.domain.com/encrypted/manifest.mpd { |
|
RTSP Source | rtsp://<server>/<asset> |
rtsp://www.domain.com:554/stream.ts { |
RTMP Source |
rtmp://<server>/<path> |
rtmp://www.domain.com/stream/path { |
---|---|---|
Secure Reliable Transport (SRT)
|
srt://<address>:<port>[?streamid=<streamid>&password=<password>] Remark: streamid and password is optional. |
srt://1.2.3.4:8888?streamid=3&password=777 { |
Unicast MPEG2 TS | udp://<address>:<port> |
udp://10.0.0.2:8110 { |
IGMP Multicast MPEG2 TS |
udp://<address>:<port>?prog_id={number}&disable_av_sync={boolean}&disable_audio={boolean} Where address is between range 224.0.0.1 → 239.255.255.254
Remark: Supports MPEG2, MPEG4, H.264 and H.265, both SPTS and MPTS source. prog_id is used for MTPS source. |
udp://239.1.1.1:8110?prog_id=2&disable_av_sync=true&disable_audio=true { |
IGMP3 Multicast MPEG2 TS
|
igmpv3://<address>:<port>?mcast=asm Where the address is between range 224.0.0.1 → 239.255.255.254 |
igmpv3://192.168.1.1:8110?mcast=asm { |
igmpv3://<address>:<port>?mcast=ssm_include&src_addr=<addr1>&src_addr=<addr2> |
igmpv3://192.168.1.1:8110?mcast=ssm_include&src_addr=192.168.1.30&src_addr=192.168.1.32 { |
|
igmpv3://<address>:<port>?mcast=ssm_exclude&src_addr=<addr1>&src_addr=<addr2> |
igmpv3://192.168.1.1:8110?mcast=ssm_exclude&src_addr=192.168.1.30&src_addr=192.168.1.32 { |
|
HTTP media file / HLS playlist |
http://<host>:<port>/[<file_path|playlist_path>] |
http://www.domain.com/file.mp4 { |
https://www.domain.com/index.m3u8 { |
Example channel lineup file
{
"DTV": [
{
"name": "IGMPv2 multicast",
"desc": "233.22.133.1:8110",
"url": "udp://233.22.133.1:8110",
},
{
"name": "2",
"desc": "RTSP",
"url": "rtsp://10.0.32.36:554/Queen5Min.ts"
},
{
"name": "3",
"desc": "SRT",
"url": "srt://video-server.entone.com:11935?streamid=output/live/test"
},
{
"name": "4",
"desc": "Clear DASH",
"url": "http://10.0.34.24/dash/zattoo/sd/manifest.mpd"
},
{
"name": "5",
"desc": "HTTPS HLS",
"url": "https://hls-test.entone.com/hlsvod_20110923/HD_C/Live_Test_Babe_HD.m3u8"
},
{
"name": "6",
"desc": "HTTP HLS",
"url": "http://192.168.1.97/hlsvod_20110923/HD_C/Live_TestIMAXHubble.m3u8"
}
]
}
References
None