Introduction
Welcome to the DistroTV Studio Getting Started Guide.
DistroTV Studio allows you to build a full-suite linear streaming HLS channel equipped with ad markers and accompanying EPG.
The purpose of this document is to provide a complete, hands-on walkthrough for launching your first FAST channel using the sample content provided.
In this guide, you will learn how to:
-
Correctly configure the necessary AWS services, including an S3 Bucket, IAM permissions, and Security Groups.
-
Launch and initialize the DistroTV Studio and DistroTV Studio Transcoder EC2 instances from AWS Marketplace AMIs.
-
Ingest sample video metadata and set up a basic channel schedule.
-
Launch and verify that your first channel is live and streaming.
By the end of this guide, you will have a functional FAST channel with ad break markers and the foundational knowledge to begin building custom channels with your own media. For advanced configurations and detailed instructions on using your own content, please refer to our comprehensive User Guide.
Prerequisites
Before you begin, you should have:
-
An active AWS account with permissions to create S3 buckets, IAM roles and policies, and EC2 instances.
-
Basic familiarity with navigating the AWS Management Console.
Setting Up the AWS Environment
Creating an S3 Bucket
-
Open AWS console and navigate to S3 service
-
Click “Create a bucket” button
-
Apply the following settings:(if an option is not mentioned, keep it on the default value)
-
Bucket type: “General purpose”
-
Object Ownership: “ACLs enabled”
-
Uncheck “Block all public access”
-
Check “I acknowledge that the current settings might result in this bucket and the objects within becoming public.”
-
-
-
Click “Create Bucket” button
-
Note the name of your bucket as you will be using this in later steps.


Edit Bucket Permissions
Navigate to the S3 bucket you just created
-
Select the “Permissions” tab to configure its access settings.
-
In the “Permissions” tab, scroll down to “Cross-origin resource sharing (CORS)”
-
Select “Edit” in the top right of the CORS box
Paste the following into the text box
-
Click “Save changes” button
-
Consider leaving this AWS S3 tab open in your browser as you will need to reference your bucket name in the following steps
Access Management Setup
Create a New IAM Policy
-
Open AWS console and navigate to IAM service
-
Navigate to “Policies” menu item under the “Access management” on the left menu
-
Click on “Create policy”
-
In the “Policy selector”, select the “JSON” tab
-
Edit statement and paste the following JSON, ensuring you replace the bucket name with the actual name of the S3 bucket you created in Chapter 2
-
Save by clicking the “Next” button
-
Name this “distrotv-studio-policy”, or another name of your choice, then click “Create policy” button
Create a New Role
-
Open AWS console and navigate to IAM service
-
Navigate to “Roles” menu item under the Access management on the left menu
-
Click on “Create role” button
-
For “Trusted entity type”, ensure “AWS service” is selected
-
Under “Use case”, select the “EC2” radio button option
Click on “Next” button
-
Add permissions: In the “Permissions policies” search box, search for the policy you created in Step 1 (e.g., distrotv-studio-policy or the name you chose). Check the box next to this policy to select it.
-
Name, review, and create
-
Under “Role name” box “Name” section, enter ‘distrotv-studio-role’ or another name of your choice
-
Description can also be left default or changed to your liking.
-
-
Click on “Create role” button
Create a Global Conf File
The global conf file is a configuration file which helps point the DistroTV Studio AMI to access the correct public S3 directories for files.
It takes 4 required parameters:
-
s3_meta is the folder where the channel configuration files are being placed.
-
s3_output is the folder where the m3u8s and ts files will be uploaded. they will be uploaded into this folder /strm/ for linear and built channels and in /vid/ for content generated by the DistroTV Studio Transcoder
-
s3_transcode is the folder where the preramp will communicate with the DistroTV Studio Transcoder when new videos are to be encoded
-
channel_list are the names of the configuration files the DistroTV Studio AMI will scan for within your S3 directory. In this guide we assume the names of the channel files will be myfirstchannel_preramp and myfirstchannel.
Create Global Conf File
-
Download the sample global conf file here and be sure to replace the bucket name with your bucket:
https://docs.distro.tv/samples/channel-builder/globals/global_1.conf
-
HINT: After opening the link, right-click the page and ‘Save As’ global_1.conf
-
Edit the file and be sure to replace the bucket name with your bucket
-
Note: the /meta/ and /transcode/ folders will be created in later steps
-
-
Save the file as “global_1.conf” on your local machine. You will be uploading this file in a later step.
Create globals Folder
-
Open AWS console and navigate to S3 service and navigate to the bucket you created in Chapter 1 (root folder)
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “globals”
-
Create a globals folder inside the path defined in the s3_output folder.
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/globals/
-
Upload Your Global Conf File
-
Upload the global conf file you just created to your S3 bucket /globals/ folder.
Creating S3 Bucket Directories
-
In your S3 bucket, ensure that the folders & directories listed in your global conf file exist
-
s3_meta=s3://bucket name/meta/
-
s3_output=s3://bucket name/
-
s3_transcode=s3://bucket name/transcode/
-
If they do not exist, create them and name them according to how you defined the paths in your global conf file by following the steps below
-
Create meta Folder
Navigate to your S3 bucket root folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “meta”
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/meta
-
-
Click on “Create folder” button
Create transcode Folder
Navigate to your S3 bucket root folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “transcode”
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/transcode
-
-
Click on “Create folder” button
Create content Folder
Navigate to your S3 bucket root folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “content”
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/content/
-
-
Click on “Create folder” button
Create channels Folder
-
Navigate to your S3 bucket meta folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “channels”
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/meta/channels/
-
-
Click on “Create folder” button
Create schedule Folder
-
Navigate to your S3 bucket meta folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “schedule”
-
If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/meta/schedule/
-
-
Click on “Create folder” button
After this chapter, your S3 bucket should have the following structure:
Launch a DistroTV Studio Image
-
Navigate to AWS EC2 service
-
Navigate to “AMI Catalog” menu item under the “Images” section on the left menu
-
Navigate to “AWS Marketplace AMIs” and search for “DistroTV Studio”
-
Select the DistroTV Studio image and click on “Subscribe now”
-
After subscribing, you click on “Launch Instance with AMI”
Name – to your liking
-
Instance type
-
c5ad.large, c5ad.xlarge, or c5ad.2xlarge
-
-
Key pair
Choose your preferred key pair
-
Network settings
-
Check the following:
-
Allow CUSTOMTCP traffic from (Anywhere)
-
-
-
Under the “Advanced details” box
-
IAM instance profile
-
Select the role you created earlier (distrotv-studio-role if you followed the naming convention in the Chapter 2)
-
-
-
“User data - optional” (near the bottom of the options)
-
Add the following line being sure to reference your S3 file path or publicly accessible URL that stores the global conf file(s)
-
-
Click on “Launch instance” button
-
After waiting 2-3 minutes, validate the machine is up and running by connecting to the API
-
Open a browser and go to your EC2 instance’s API log, being sure to replace your-instance-public-IPv4 with your newly launched EC2 instance’s Public IPv4 address: http://your-instance-public-IPv4:34123/?version
-
Ingest Content
Create a Metadata File
-
Dowload the sample TSV here: https://docs.distro.tv/samples/channel-builder/content/test_category_metadata.tsv
-
Or if you wish to do your first channel build with your own content, then you can create a sample content metadata file for ingest by following the template found here. save as a TSV file with the name test_category_metadata.tsv. You can find additional details in our User Guide. https://docs.distro.tv/samples/channel-builder/content/DistroTV - Channel Content Sample Metadata Template.xlsx
-
Upload test_category_metadata.tsv to a publicly accessible location, we recommend the S3 bucket you just created for this purpose in the content folder.
-
If you kept the default filepath from the sample global conf file, the file path would be s3://bucket name/content/test_category_metadata.tsv
Create a Preramp Conf File
-
Create a channel_preramp conf file by downloading the sample preramp conf file here being sure to edit and replace HTTPS URL or S3 FILE PATH TO test_category_metadata.tsv with your S3 file path or publicly accessible file URL:
https://docs.distro.tv/samples/channel-builder/meta/channels/myfirstchannel_preramp.conf
-
Save as myfirstchannel_preramp.conf.
-
HINT: Preramp files must have the _preramp.conf suffix in the file name.
-
Upload this file to your /channels/ folder inside the path defined in the s3_meta folder.
-
If you kept the default filepath from the sample global conf file, the file directory path would be s3://bucket name/meta/channels/
-
After uploading, you can wait 2-3 minutes to see if the channel_preramp conf file was picked up by the machine by checking the watchdog API at:http://your-instance-public-IPv4:34123/?cmd=getlog&channel=watchdog&grep=
-
It should say something similar to the following:
Launch a DistroTV Studio Transcoder Image
-
Navigate to AWS EC2 service
-
Navigate to “AMI Catalog” menu item under the “Images” section on the left menu
-
Navigate to “AWS Marketplace AMIs” and search for “DistroTV Studio Transcoder”
-
Select the DistroTV Studio image and click on “Subscribe now”
-
After subscribing, you click on “Launch Instance with AMI”
Name – to your liking
-
Instance type
-
c5ad.large, c5ad.xlarge, or c5ad.2xlarge
-
-
Key pair
Choose your preferred key pair
-
Network settings
-
Check the following:
-
Allow CUSTOMTCP traffic from (Anywhere)
-
-
-
Under the “Advanced details” box
-
IAM instance profile
-
Select the role you created earlier (distrotv-studio-role if you followed the naming convention in the Chapter 2)
-
-
-
“User data - optional” (near the bottom of the options)
-
Add the following line being sure to reference your S3 file path or publicly accessible URL that stores the global conf file(s)
-
-
Click on “Launch instance” button
-
Once the DistroTV Studio Transcoder AMI is launched, after 2-3 minutes, it will pick up the videos found in your /transcode/new/ folder
-
You can view the status of the database by accessing the API at http://IPv4_ADDRESS_OF_YOUR_DISTROTV_STUDIO_MACHINE:34123/?cmd=dblist
-
HINT: IPv4_ADDRESS_OF_YOUR_DISTROTV_STUDIO_MACHINE should be your DistroTV Studio image IP address
Create Channel Schedule
Download a Schedule File
-
IMPORTANT: Please note the current time in UTC https://www.utctime.net/
-
Create your schedule file by downloading one of the samples below according to the current time in UTC
-
If it is currently between hour 0 and 11:59:59 UTC then download test_schedule_before12.tsv
-
If it is currently between hour 12:00:00 and 23:59:59 UTC then download test_schedule_after12.tsv
| UTC Time | Filename | Download Link |
|---|---|---|
| 00:00:00 – 11:59:59 UTC | test_schedule_before12.tsv | https://docs.distro.tv/samples/channel-builder/meta/schedule/myfirstchannel/test_schedule_before12.tsv |
| 12:00:00 – 23:59:59 UTC | test_schedule_after12.tsv | https://docs.distro.tv/samples/channel-builder/meta/schedule/myfirstchannel/test_schedule_after12.tsv |
-
The file you downloaded does not need to be modified
Create myfirstchannel Folder
-
Navigate to your S3 bucket /meta/schedule folder
-
Click on “Create folder” button
-
Under “Folder” box “Folder name” section, name this “myfirstchannel”
-
If you kept the default filepath from the sample global conf file, the file directory path would bes3://bucket name/meta/schedule/myfirstchannel
-
Click on “Create folder” button
Upload Your Schedule
-
Navigate to the myfirstchannel folder you just created unders3://bucket name/meta/schedule/myfirstchannel/
-
The file you downloaded does not need to be modified
-
Upload the schedule TSV file to this folder
Launch Your Channel
-
Create a channel conf file by downloading the sample channel conf file below here:
https://docs.distro.tv/samples/channel-builder/meta/channels/myfirstchannel.conf
-
Save as myfirstchannel.conf
-
This channel conf file controls different channel parameters such as ad marker cadence, stream quality variants, ad filler videos, and more. You can find additional details in our User Guide.
-
Check to ensure the sample videos have finished transcoding before proceeding with the next step
-
You can view the status of the database by accessing the API at http://your-instance-public-IPv4:34123/?cmd=dblist
-
HINT: your-instance-public-IPv4 should be your DistroTV Studio image IP address
-
Wait for the “status” of both the videos to be “complete” before proceeding with the next step
-
Inside the /meta/channels/ folder, upload the channel conf file you created myfirstchannel.conf
-
After uploading, you can wait a few minutes to see if the channel was picked up by the machine by checking the watchdog API at:http://your-instance-public-IPv4:34123/?cmd=getlog&channel=watchdog&grep=
-
The initial channel EPG building from the provided schedule will begin progressing. You can see this occur within the channel API at:http://your-instance-public-IPv4:34123/?cmd=getlog&channel=myfirstchannel&grep=
-
If the schedule was properly picked up, it will say the below (or something similar)
-
The master playlist building complete message marks the successful generation of the schedule and the EPG has been built.
-
Once the EPG has been built, you can check the EPG in the s3_meta folder. If you kept the default filepath from the sample global conf file, the file directory path would be
s3://bucket name/meta/epg/myfirstchannel/datetimestamp/
-
You can also check to see if files have begun to populate in your s3_output folder. If you kept the default filepath from the sample global conf file, the file directory path would be s3://bucket name/strm/channels/myfirstchannel/
-
When the built schedule is active, you will be able to view your channel at https://bucket name.s3.region.amazonaws.com/strm/channels/myfirstchannel/master.m3u8
-
Replace bucket name with your bucket name
-
Replace region with your S3 bucket region
-
-
Congratulations on launching your first channel!
After all chapters, your S3 bucket should have the following structure:

