Support Articles

Add Custom Channels with M3U Playlists

With Channels DVR Server, you can add your own custom channels from any kind of streaming source.

Create custom channels from your IP Cameras, online webcams, or any other streaming sources that provide MPEG-TS or HLS streams. Import channels from your SAT>IP equipment, TVHeadend, or other software that publish M3U playlists and provide streams.

Utilizing M3U playlists, you can feed Channels your own special streaming channels. You can do this with a URL to an M3U list, or by pasting the raw playlist text directly into Channels DVR Server.

Protip: Join our Community to learn, share, and discuss custom channels.

Full Customization for Channels

We’ve added support for custom tags that let your channels look even better inside the app. By using these tags, you can give your custom channel the right title and guide art to really shine inside Channels.

custom channel metadata

Limitations

M3U playlists are limited to 500 channels. We do not support illegal IPTV sources. Custom Channels are for streams you have legal access to.

EPG data is updated every 24 hours by Channels DVR Server along with the rest of your guide data.

Supported Streaming Formats

Channels supports these video formats and streaming protocols.

  • MPEG-TS: http, https, rtsp, and satip
  • HLS: http and https

M3U Format

Channels accepts the normal M3U format, but there are a few extra tags you can use to ensure things look great in the app.

Supported Metadata Tags

Standard Tags

This is the list of standard tags that are supported.

  • channel-id: REQUIRED unique ID for the channel
  • channel-number: display number for the channel
  • tvg-logo: channel logo url (4x3 aspect ratio)
  • tvg-name: channel callsign

Note: Be sure not to use a channel number that exists in another source’s lineup. Channels will merge them together and use the prioritized channel.

Channels Extensions

We’ve created these new tags that allow you to provide more information to create a better experience in Channels. These are all optional.

Guide Data

Use this tag to set the station identifier and it will automatically get guide data.

  • tvc-guide-stationid: Gracenote station id
Guide Data Fallback Tags

If your custom channel has no guide data, you can use these tags to create default guide data to look better in Channels.

  • tvc-guide-title: guide item title
  • tvc-guide-description: guide item description
  • tvc-guide-art: guide item art url (4x3 aspect ratio)
Codec Information Tags

These tags help speed up transcoding.

  • tvc-stream-vcodec: stream video codec (h264, mpeg2)
  • tvc-stream-acodec: stream audio codec (ac3, aac)

Example M3U Playlist

#EXTM3U

#EXTINF:-1 channel-id="JPCAM" channel-number="750" tvg-logo="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/beach-logo.png" tvg-name="JPCAM" tvc-guide-title="Jennette's Pier" tvc-guide-description="Live beach cam at Jennette's Pier" tvc-guide-art="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/beach-guide.png",JPCAM
https://5a5f765a4fcc2.streamlock.net:1936/live/nh4.stream/playlist.m3u8

#EXTINF:-1 channel-id="PCAM" channel-number="751" tvg-logo="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/platypus-logo.png" tvg-name="PCAM" tvc-guide-title="Platypus Cam" tvc-guide-description="Live platypus cam from the San Diego Zoo." tvc-guide-art="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/platypus-guide.png",PCAM
https://zssd-platypus.hls.camzonecdn.com/CamzoneStreams/zssd-platypus/Playlist.m3u8

#EXTINF:-1 channel-id="TCAM" channel-number="752" tvg-logo="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/traffic-logo.png" tvg-name="TCAM" tvc-guide-title="Live shot of traffic on the Bay Bridge." tvc-guide-description="Live shot of Times Square in New York City." tvc-guide-art="https://github.com/fancybits/custom-channels-examples/raw/main/webcams/traffic-guide.png",TCAM
https://kntvlive-f.akamaihd.net/i/kntvb1_1@15530/master.m3u8

Protip: View more examples on our custom channels examples GitHub repo.

Adding Your M3U Playlist

Add your M3U playlist like you would any other Source.

choose source channels dvr server

You need to give the playlist a unique name and specify the stream format. HLS or MPEG-TS. You have two options for adding the M3U playlist content.

Add via Text

You can add an M3U playlist by directly copying its text into the field. You can edit the content at any time.

Add via URL

You can add an M3U playlist by its URL. Enter the URL and Channels will import it. This lets you import an M3U playlist from another source or something hosted elsewhere.

SAT>IP

Many SAT>IP devices expose an M3U url using the satip:X_SATIPM3U tag in their XML device description. These URLs vary, but generally look like one of the following:

  • http://<SATIP>/desc.xml
  • http://<SATIP>:8000/description.xml
  • http://<SATIP>/channellist.m3u

If your device does not export M3U, you can generate your own M3U using HTTP or RTSP urls. For example, the ASTRA satellite M3Us can be found on satip.info:

  • https://www.satip.info/Playlists/ASTRA_19_2E_logos.m3u
  • https://www.satip.info/Playlists/ASTRA_28_2E.m3u
VBox TV Gateway

The VBox TV Gateway offers an M3U at the following URL:

  • http://<VBox IP>:55555/vboxSimpleIptv.m3u8

For details, see their documentation.

TVHeadend

TVHeadend offers an M3U at the following URL:

  • http://<TVH IP>:9981/playlist/channels.m3u
NextPVR

NextPVR offers an M3U at the following URL:

  • http://<NPVR IP>:8866/service?method=channel.m3u
FRITZ!Box

The AVM FRITZ!Box offers an M3U at the following URLs:

  • http://fritz.box/dvb/m3u/tvhd.m3u
  • http://fritz.box/dvb/m3u/tvsd.m3u

Protips

Here’s some tips and tricks for making guide data for your custom channels work better with Channels.

Movies

Channels needs to know that a guide item is a movie or not. This isn’t just important for guide presentation. Channels won’t categorize your recording as a movie unless it knows that it is a movie.

In your XMLTV, make sure your movie airing has a category set to Movie

<category lang="en">Movie</category>

Guide Filters

The On Now and Guide sections in Channels allow you to filter your channels based on the currently playing content. This is based on specific genre names. Apply the correct genre names to your guide items to support filtering in Channels.

<category lang="en">Children</category>

The following maps what genre names you should use for each filter category.

  • Kids: Children
  • News: News
  • Sports: Sports
  • Drama: Drama

Guide Item Art

Channels uses placard style art (4:3 aspect) for TV shows and poster style art (2:3 aspect) for movies. Channels expects these sizes and your guide item art may look wrong unless you provide images with the correct aspect.

TV Show

tv show art

Movie

movie art

Group TV Shows

Channels requires a unique identifier in order to group your guide items together as a single TV show. This is most important when it comes to recording these airings. Without a unique ID to identify recordings of airings, Channels can not group them together as a single TV show in your library.

Add a series-id tag to your guide airing to uniquely identify the show.

<series-id system="your-source">5beca802adcd16cf34ee6af4</series-id>

Uniquely Identify Airings

Channels requires guide airings to have unique identifiers in order to be recorded. Without an identifier, each airing looks the same according to Channels. Without being able to uniquely identify individual airings of a show, Channels will think each airing is the same and will only record it once.

Channels needs a combination of a unique series identifier and a unique episode identifier.

<series-id system="your-source">5beca802adcd16cf34ee6af4</series-id>
<episode-num system="your-source">4ea4682101915b834a6afec5</episode-num>

Additionally, you can use this format, S02E10, for episode-num to set the season and episode number of a guide airing. This will both serve as a unique identifier and also seed Season and Episode number data to Channels.

<episode-num system="onscreen">S02E10</episode-num>