{"id":194,"date":"2025-10-26T22:18:58","date_gmt":"2025-10-26T22:18:58","guid":{"rendered":"https:\/\/rtmp-server.com\/blog\/?p=194"},"modified":"2025-10-27T17:43:18","modified_gmt":"2025-10-27T17:43:18","slug":"how-to-connect-your-rtmp-server-live-stream-to-roku","status":"publish","type":"post","link":"https:\/\/rtmp-server.com\/blog\/2025\/10\/26\/how-to-connect-your-rtmp-server-live-stream-to-roku\/","title":{"rendered":"How to connect your RTMP Server live stream to Roku"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p data-start=\"404\" data-end=\"605\">If you\u2019ve ever wanted to make your own Roku channel \u2014 showing your live broadcasts or 24\/7 TV station stream \u2014 it\u2019s easier than you think.<br data-start=\"542\" data-end=\"545\" \/>You can do it directly using your <strong data-start=\"579\" data-end=\"594\">RTMP Server<\/strong> account.<\/p>\n<p data-start=\"607\" data-end=\"812\">In this article, we\u2019ll explain step-by-step how to use your existing Wowza-powered stream to create a fully functional Roku app that you can test on your device or even publish to the Roku Channel Store.<\/p>\n<hr data-start=\"814\" data-end=\"817\" \/>\n<h2 data-start=\"819\" data-end=\"879\">Step 1 \u2013 Locate your HLS link in the RTMP Control Panel<\/h2>\n<p data-start=\"881\" data-end=\"1053\">Every streaming account on <strong data-start=\"908\" data-end=\"927\">RTMP-Server.com<\/strong> includes multiple playback options, such as RTMP, HLS, and HTML5 players.<br data-start=\"1001\" data-end=\"1004\" \/>For Roku, you\u2019ll need the <strong data-start=\"1030\" data-end=\"1045\">HLS (.m3u8)<\/strong> link.<\/p>\n<p data-start=\"1055\" data-end=\"1079\">Here\u2019s how to find it:<\/p>\n<ol data-start=\"1080\" data-end=\"1291\">\n<li data-start=\"1080\" data-end=\"1129\">\n<p data-start=\"1083\" data-end=\"1129\">Log in to your <strong data-start=\"1098\" data-end=\"1126\">Wowza RTMP Control Panel<\/strong>.<\/p>\n<\/li>\n<li data-start=\"1130\" data-end=\"1179\">\n<p data-start=\"1133\" data-end=\"1179\">On the left menu, click <strong data-start=\"1157\" data-end=\"1176\">Widgets &amp; Links<\/strong>.<\/p>\n<\/li>\n<li data-start=\"1180\" data-end=\"1291\">\n<p data-start=\"1183\" data-end=\"1291\">You\u2019ll see several playback options \u2014 copy the one labeled <strong data-start=\"1242\" data-end=\"1271\">HLS (HTTP Live Streaming)<\/strong> or <strong data-start=\"1275\" data-end=\"1288\">M3U8 Link<\/strong>.<\/p>\n<\/li>\n<\/ol>\n<p data-start=\"1293\" data-end=\"1326\">It should look similar to this:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span><span class=\"hljs-symbol\">https:<\/span>\/<span class=\"hljs-regexp\">\/5caf24a595d94.streamlock.net:1937\/ajewxuqkam<\/span><span class=\"hljs-regexp\">\/ajewxuqktm\/playlist<\/span>.m3u8<br \/>\n<\/span><\/code><\/div>\n<\/div>\n<p data-start=\"1414\" data-end=\"1511\">That\u2019s your live stream link, and it\u2019s fully compatible with Roku, Smart TVs, and mobile devices.<\/p>\n<hr data-start=\"1513\" data-end=\"1516\" \/>\n<h2 data-start=\"1518\" data-end=\"1571\">Step 2 \u2013 Prepare your Roku developer environment<\/h2>\n<p data-start=\"1573\" data-end=\"1635\">You\u2019ll need a Roku device and a free Roku Developer account.<\/p>\n<ul data-start=\"1637\" data-end=\"2071\">\n<li data-start=\"1637\" data-end=\"1730\">\n<p data-start=\"1639\" data-end=\"1730\">Sign in or create one here:<br data-start=\"1666\" data-end=\"1669\" \/>\ud83d\udc49 <a data-start=\"1674\" data-end=\"1730\" class=\"decorated-link\" rel=\"noopener\" target=\"_new\" href=\"https:\/\/my.roku.com\/signin\">https:\/\/my.roku.com\/signin<span aria-hidden=\"true\" class=\"ms-0.5 inline-block align-middle leading-none\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" data-rtl-flip=\"\" class=\"block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]\"><path d=\"M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z\"><\/path><\/svg><\/span><\/a><\/p>\n<\/li>\n<li data-start=\"1732\" data-end=\"1852\">\n<p data-start=\"1734\" data-end=\"1852\">Join the <strong data-start=\"1743\" data-end=\"1769\">Roku Developer Program<\/strong>:<br data-start=\"1770\" data-end=\"1773\" \/>\ud83d\udc49 <a data-start=\"1778\" data-end=\"1852\" class=\"decorated-link\" rel=\"noopener\" target=\"_new\" href=\"https:\/\/developer.roku.com\/overview\">https:\/\/developer.roku.com\/overview<span aria-hidden=\"true\" class=\"ms-0.5 inline-block align-middle leading-none\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" data-rtl-flip=\"\" class=\"block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]\"><path d=\"M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z\"><\/path><\/svg><\/span><\/a><\/p>\n<\/li>\n<li data-start=\"1854\" data-end=\"2071\">\n<p data-start=\"1856\" data-end=\"2071\">Enable <strong data-start=\"1863\" data-end=\"1881\">Developer Mode<\/strong> on your Roku:<br data-start=\"1895\" data-end=\"1898\" \/>\ud83d\udc49 <a data-start=\"1903\" data-end=\"2071\" class=\"decorated-link\" rel=\"noopener\" target=\"_new\" href=\"https:\/\/developer.roku.com\/docs\/developer-program\/getting-started\/roku-dev-prog.md\">https:\/\/developer.roku.com\/docs\/developer-program\/getting-started\/roku-dev-prog.md<span aria-hidden=\"true\" class=\"ms-0.5 inline-block align-middle leading-none\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" data-rtl-flip=\"\" class=\"block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]\"><path d=\"M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z\"><\/path><\/svg><\/span><\/a><\/p>\n<\/li>\n<\/ul>\n<p data-start=\"2073\" data-end=\"2280\">Once developer mode is enabled, your TV will display a <strong data-start=\"2128\" data-end=\"2153\">developer web address<\/strong> (for example, <code data-start=\"2168\" data-end=\"2189\">http:\/\/192.168.1.20<\/code>) and a <strong data-start=\"2197\" data-end=\"2209\">password<\/strong>.<br data-start=\"2210\" data-end=\"2213\" \/>Keep those safe \u2014 you\u2019ll need them to upload and test your channel.<\/p>\n<hr data-start=\"2282\" data-end=\"2285\" \/>\n<h2 data-start=\"2287\" data-end=\"2335\">Step 3 \u2013 Download the Roku channel template<\/h2>\n<p data-start=\"2337\" data-end=\"2436\">You\u2019ll need the sample Roku channel files. This is the base you\u2019ll edit to include your own stream.<\/p>\n<p data-start=\"2438\" data-end=\"2654\">You can download a ready-made Roku example app here:<br data-start=\"2490\" data-end=\"2493\" \/>\ud83d\udc49 <a data-start=\"2496\" data-end=\"2654\" rel=\"noopener\" target=\"_new\" class=\"decorated-link\" href=\"https:\/\/github.com\/mediacontrolpanel\/roku-example\/archive\/refs\/heads\/main.zip\">https:\/\/github.com\/mediacontrolpanel\/roku-example\/archive\/refs\/heads\/main.zip<span aria-hidden=\"true\" class=\"ms-0.5 inline-block align-middle leading-none\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" data-rtl-flip=\"\" class=\"block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]\"><path d=\"M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z\"><\/path><\/svg><\/span><\/a><\/p>\n<p data-start=\"2656\" data-end=\"2748\">After downloading, unzip the file to a folder on your computer (for example, <code data-start=\"2733\" data-end=\"2746\">C:\\RokuApp\\<\/code>).<\/p>\n<p data-start=\"2750\" data-end=\"2804\">This folder contains the essential Roku channel files:<\/p>\n<ul data-start=\"2805\" data-end=\"3003\">\n<li data-start=\"2805\" data-end=\"2849\">\n<p data-start=\"2807\" data-end=\"2849\"><strong data-start=\"2807\" data-end=\"2819\">manifest<\/strong> \u2013 channel info and metadata<\/p>\n<\/li>\n<li data-start=\"2850\" data-end=\"2908\">\n<p data-start=\"2852\" data-end=\"2908\"><strong data-start=\"2852\" data-end=\"2863\">source\/<\/strong> \u2013 BrightScript files that control playback<\/p>\n<\/li>\n<li data-start=\"2909\" data-end=\"2955\">\n<p data-start=\"2911\" data-end=\"2955\"><strong data-start=\"2911\" data-end=\"2926\">components\/<\/strong> \u2013 layout and video objects<\/p>\n<\/li>\n<li data-start=\"2956\" data-end=\"3003\">\n<p data-start=\"2958\" data-end=\"3003\"><strong data-start=\"2958\" data-end=\"2969\">images\/<\/strong> \u2013 your icons and splash screens<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"3005\" data-end=\"3008\" \/>\n<h2 data-start=\"3010\" data-end=\"3069\">Step 4 \u2013 Replace the example stream with your HLS link<\/h2>\n<ol data-start=\"3071\" data-end=\"3721\">\n<li data-start=\"3071\" data-end=\"3160\">\n<p data-start=\"3074\" data-end=\"3160\">Inside the <code data-start=\"3085\" data-end=\"3094\">\/source<\/code> folder, open <strong data-start=\"3108\" data-end=\"3125\">MainScene.brs<\/strong> in a text editor (like Notepad).<\/p>\n<\/li>\n<li data-start=\"3161\" data-end=\"3314\">\n<p data-start=\"3164\" data-end=\"3193\">Look for this example line:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-brightscript\"><span>videoContent.url = \"https:\/\/cdn.mycloudstream.io\/hls\/live\/broadcast\/viducc7f\/index.m3u8\"<br \/>\n<\/span><\/code><\/div>\n<\/div>\n<\/li>\n<li data-start=\"3316\" data-end=\"3509\">\n<p data-start=\"3319\" data-end=\"3380\">Replace it with your own HLS link from <strong data-start=\"3358\" data-end=\"3377\">Widgets &amp; Links<\/strong>:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-brightscript\"><span>videoContent.url = \"https:\/\/5caf24a595d94.streamlock.net:1937\/ajewxuqktm\/ajewxuqkta\/playlist.m3u8\"<br \/>\n<\/span><\/code><\/div>\n<\/div>\n<\/li>\n<li data-start=\"3511\" data-end=\"3624\">\n<p data-start=\"3514\" data-end=\"3561\">Make sure this line is present and unchanged:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-brightscript\"><span>videoContent.streamFormat = \"hls\"<br \/>\n<\/span><\/code><\/div>\n<\/div>\n<\/li>\n<li data-start=\"3626\" data-end=\"3721\">\n<p data-start=\"3629\" data-end=\"3721\">You can also open <strong data-start=\"3647\" data-end=\"3659\">main.brs<\/strong> (in the same folder) and replace any similar demo link there.<\/p>\n<\/li>\n<\/ol>\n<hr data-start=\"3723\" data-end=\"3726\" \/>\n<h2 data-start=\"3728\" data-end=\"3776\">Step 5 \u2013 Customize your channel information<\/h2>\n<p data-start=\"3778\" data-end=\"3906\">Open the file named <strong data-start=\"3798\" data-end=\"3810\">manifest<\/strong> in the root of your Roku app folder.<br data-start=\"3847\" data-end=\"3850\" \/>Edit it to show your own channel name and description.<\/p>\n<p data-start=\"3908\" data-end=\"3916\">Example:<\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span><span class=\"hljs-attr\">title<\/span>=RTMP Server Live Channel<br \/>\n<span class=\"hljs-attr\">description<\/span>=Live streaming powered by RTMP-Server.com<br \/>\n<span class=\"hljs-attr\">provider_name<\/span>=RTMP Server<br \/>\n<span class=\"hljs-attr\">major_version<\/span>=<span class=\"hljs-number\">1<\/span><br \/>\n<span class=\"hljs-attr\">minor_version<\/span>=<span class=\"hljs-number\">0<\/span><br \/>\n<span class=\"hljs-attr\">build_version<\/span>=<span class=\"hljs-number\">00001<\/span><br \/>\n<\/span><\/code><\/div>\n<\/div>\n<p data-start=\"4089\" data-end=\"4188\">Then, update the <strong data-start=\"4106\" data-end=\"4116\">images<\/strong> folder with your own logo and splash screens in Roku\u2019s supported sizes:<\/p>\n<div class=\"_tableContainer_1rjym_1\">\n<div class=\"group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table data-start=\"4190\" data-end=\"4447\" class=\"w-fit min-w-(--thread-content-width)\">\n<thead data-start=\"4190\" data-end=\"4225\">\n<tr data-start=\"4190\" data-end=\"4225\">\n<th data-start=\"4190\" data-end=\"4211\" data-col-size=\"sm\">File Name<\/th>\n<th data-start=\"4211\" data-end=\"4225\" data-col-size=\"sm\">Resolution<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"4263\" data-end=\"4447\">\n<tr data-start=\"4263\" data-end=\"4299\">\n<td data-start=\"4263\" data-end=\"4284\" data-col-size=\"sm\">icon_focus_hd.png<\/td>\n<td data-start=\"4284\" data-end=\"4299\" data-col-size=\"sm\">290&#215;218<\/td>\n<\/tr>\n<tr data-start=\"4300\" data-end=\"4336\">\n<td data-start=\"4300\" data-end=\"4321\" data-col-size=\"sm\">icon_focus_sd.png<\/td>\n<td data-start=\"4321\" data-end=\"4336\" data-col-size=\"sm\">246&#215;140<\/td>\n<\/tr>\n<tr data-start=\"4337\" data-end=\"4373\">\n<td data-start=\"4337\" data-end=\"4358\" data-col-size=\"sm\">splash_fhd.jpg<\/td>\n<td data-start=\"4358\" data-end=\"4373\" data-col-size=\"sm\">1920&#215;1080<\/td>\n<\/tr>\n<tr data-start=\"4374\" data-end=\"4410\">\n<td data-start=\"4374\" data-end=\"4395\" data-col-size=\"sm\">splash_hd.jpg<\/td>\n<td data-start=\"4395\" data-end=\"4410\" data-col-size=\"sm\">1280&#215;720<\/td>\n<\/tr>\n<tr data-start=\"4411\" data-end=\"4447\">\n<td data-start=\"4411\" data-end=\"4432\" data-col-size=\"sm\">splash_sd.jpg<\/td>\n<td data-start=\"4432\" data-end=\"4447\" data-col-size=\"sm\">720&#215;480<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"4449\" data-end=\"4452\" \/>\n<h2 data-start=\"4454\" data-end=\"4504\">Step 6 \u2013 Compress and upload your app to Roku<\/h2>\n<p data-start=\"4506\" data-end=\"4557\">Once all files are ready, compress them for upload:<\/p>\n<p data-start=\"4559\" data-end=\"4587\"><strong data-start=\"4559\" data-end=\"4587\">Windows command example:<\/strong><\/p>\n<div class=\"contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary\">\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span><span class=\"hljs-built_in\">cd<\/span> C:\\RokuApp\\<br \/>\nzip -r my-roku-channel.zip manifest <span class=\"hljs-built_in\">source<\/span> components images<br \/>\n<\/span><\/code><\/div>\n<\/div>\n<p data-start=\"4673\" data-end=\"4678\">Then:<\/p>\n<ol data-start=\"4680\" data-end=\"4983\">\n<li data-start=\"4680\" data-end=\"4785\">\n<p data-start=\"4683\" data-end=\"4785\">Open your browser and go to the Roku <strong data-start=\"4720\" data-end=\"4745\">developer web address<\/strong> (for example, <code data-start=\"4760\" data-end=\"4781\">http:\/\/192.168.1.20<\/code>).<\/p>\n<\/li>\n<li data-start=\"4786\" data-end=\"4842\">\n<p data-start=\"4789\" data-end=\"4842\">Log in with username <strong data-start=\"4810\" data-end=\"4821\">rokudev<\/strong> and your password.<\/p>\n<\/li>\n<li data-start=\"4843\" data-end=\"4910\">\n<p data-start=\"4846\" data-end=\"4910\">Click <strong data-start=\"4852\" data-end=\"4862\">Upload<\/strong>, select your zip file, and click <strong data-start=\"4896\" data-end=\"4907\">Install<\/strong>.<\/p>\n<\/li>\n<li data-start=\"4911\" data-end=\"4983\">\n<p data-start=\"4914\" data-end=\"4983\">Your Roku will automatically start your channel and play your stream.<\/p>\n<\/li>\n<\/ol>\n<p data-start=\"4985\" data-end=\"5078\">If it works, congratulations \u2014 your channel is running directly from your RTMP Server stream!<\/p>\n<hr data-start=\"5080\" data-end=\"5083\" \/>\n<h2 data-start=\"5085\" data-end=\"5131\">Step 7 \u2013 Package and publish your channel<\/h2>\n<p data-start=\"5133\" data-end=\"5177\">Once you\u2019re satisfied with the test version:<\/p>\n<ol data-start=\"5179\" data-end=\"5630\">\n<li data-start=\"5179\" data-end=\"5239\">\n<p data-start=\"5182\" data-end=\"5239\">From the Roku developer page, create a <strong data-start=\"5221\" data-end=\"5236\">signing key<\/strong>.<\/p>\n<\/li>\n<li data-start=\"5240\" data-end=\"5297\">\n<p data-start=\"5243\" data-end=\"5297\">Use the <strong data-start=\"5251\" data-end=\"5263\">Packager<\/strong> tool to generate a <code data-start=\"5283\" data-end=\"5289\">.pkg<\/code> file.<\/p>\n<\/li>\n<li data-start=\"5298\" data-end=\"5372\">\n<p data-start=\"5301\" data-end=\"5372\">Log in to the <a data-start=\"5315\" data-end=\"5369\" rel=\"noopener\" target=\"_new\" class=\"decorated-link\" href=\"https:\/\/my.roku.com\/signin\">Roku Developer Dashboard<span aria-hidden=\"true\" class=\"ms-0.5 inline-block align-middle leading-none\"><svg width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" data-rtl-flip=\"\" class=\"block h-[0.75em] w-[0.75em] stroke-current stroke-[0.75]\"><path d=\"M14.3349 13.3301V6.60645L5.47065 15.4707C5.21095 15.7304 4.78895 15.7304 4.52925 15.4707C4.26955 15.211 4.26955 14.789 4.52925 14.5293L13.3935 5.66504H6.66011C6.29284 5.66504 5.99507 5.36727 5.99507 5C5.99507 4.63273 6.29284 4.33496 6.66011 4.33496H14.9999L15.1337 4.34863C15.4369 4.41057 15.665 4.67857 15.665 5V13.3301C15.6649 13.6973 15.3672 13.9951 14.9999 13.9951C14.6327 13.9951 14.335 13.6973 14.3349 13.3301Z\"><\/path><\/svg><\/span><\/a>.<\/p>\n<\/li>\n<li data-start=\"5373\" data-end=\"5443\">\n<p data-start=\"5376\" data-end=\"5443\">Go to <strong data-start=\"5382\" data-end=\"5441\">Developer Dashboard \u2192 Public Channels \u2192 Create Channel.<\/strong><\/p>\n<\/li>\n<li data-start=\"5444\" data-end=\"5539\">\n<p data-start=\"5447\" data-end=\"5539\">Fill in your channel details, upload your <code data-start=\"5489\" data-end=\"5495\">.pkg<\/code> file, and run Roku\u2019s <strong data-start=\"5517\" data-end=\"5536\">Static Analysis<\/strong>.<\/p>\n<\/li>\n<li data-start=\"5540\" data-end=\"5630\">\n<p data-start=\"5543\" data-end=\"5630\">When it passes, click <strong data-start=\"5565\" data-end=\"5585\">Schedule Publish<\/strong> to release your channel to the Roku Store.<\/p>\n<\/li>\n<\/ol>\n<hr data-start=\"5632\" data-end=\"5635\" \/>\n<h2 data-start=\"5637\" data-end=\"5684\">Step 8 \u2013 Test your stream on other players<\/h2>\n<p data-start=\"5686\" data-end=\"5736\">Your HLS link is universal \u2014 it will also play on:<\/p>\n<ul data-start=\"5737\" data-end=\"5817\">\n<li data-start=\"5737\" data-end=\"5765\">\n<p data-start=\"5739\" data-end=\"5765\">VLC (Desktop or Android)<\/p>\n<\/li>\n<li data-start=\"5766\" data-end=\"5779\">\n<p data-start=\"5768\" data-end=\"5779\">InstantTV<\/p>\n<\/li>\n<li data-start=\"5780\" data-end=\"5793\">\n<p data-start=\"5782\" data-end=\"5793\">Smart TVs<\/p>\n<\/li>\n<li data-start=\"5794\" data-end=\"5817\">\n<p data-start=\"5796\" data-end=\"5817\">Safari (macOS, iOS)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"5819\" data-end=\"5911\">Simply paste your HLS link into any compatible player\u2019s \u201cAdd Stream\u201d or \u201cCustom URL\u201d option.<\/p>\n<hr data-start=\"5913\" data-end=\"5916\" \/>\n<h2 data-start=\"5918\" data-end=\"5954\">Try it with a free demo account<\/h2>\n<p data-start=\"5956\" data-end=\"6216\">You can try all of this yourself using our <strong data-start=\"5999\" data-end=\"6027\">RTMP Server demo account<\/strong> \u2014 completely free:<br data-start=\"6046\" data-end=\"6049\" \/>\ud83d\udc49 <a href=\"https:\/\/rtmp-server.com\/customers\/store\/rtmp-server\/free-trial\">https:\/\/rtmp-server.com\/customers\/store\/rtmp-server\/free-trial<\/a><\/p>\n<p data-start=\"6218\" data-end=\"6378\">You\u2019ll receive access to the Wowza RTMP control panel, where you can find your Widgets &amp; Links section and start experimenting with Roku integration right away.<\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; sticky_enabled=&#8221;0&#8243;]<!-- FAQ: Roku + HLS (Divi Code Module) --><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"hm-faq\" aria-labelledby=\"hm-faq-title\"><!-- [et_pb_line_break_holder] -->  <\/p>\n<style><!-- [et_pb_line_break_holder] -->    .hm-faq{max-width:900px;margin:0 auto;padding:16px 0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Arial,sans-serif}<!-- [et_pb_line_break_holder] -->    .hm-faq h2{font-size:1.6rem;margin:0 0 12px 0}<!-- [et_pb_line_break_holder] -->    .hm-accordion{border-radius:12px}<!-- [et_pb_line_break_holder] -->    .hm-item{border:1px solid #e6e6e6;border-radius:12px;margin:10px 0;background:#fff;overflow:hidden}<!-- [et_pb_line_break_holder] -->    .hm-q{display:flex;justify-content:space-between;align-items:center;width:100%;padding:14px 16px;font-size:1rem;font-weight:600;cursor:pointer;background:#fff;border:0}<!-- [et_pb_line_break_holder] -->    .hm-q:focus{outline:2px solid #5a8cff;outline-offset:2px}<!-- [et_pb_line_break_holder] -->    .hm-a{max-height:0;overflow:hidden;transition:max-height .25s ease;padding:0 16px}<!-- [et_pb_line_break_holder] -->    .hm-a p,.hm-a ul{margin:12px 0 16px 0;line-height:1.55}<!-- [et_pb_line_break_holder] -->    .hm-icon{transition:transform .2s ease}<!-- [et_pb_line_break_holder] -->    .hm-item.open .hm-a{max-height:600px;padding-top:0}<!-- [et_pb_line_break_holder] -->    .hm-item.open .hm-icon{transform:rotate(45deg)}<!-- [et_pb_line_break_holder] -->    .hm-cta{margin-top:8px;font-size:.95rem}<!-- [et_pb_line_break_holder] -->    .hm-cta a{color:#0a66c2;text-decoration:none}<!-- [et_pb_line_break_holder] -->    .hm-cta a:hover{text-decoration:underline}<!-- [et_pb_line_break_holder] -->  <\/style>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <\/p>\n<h2 id=\"hm-faq-title\">Frequently asked questions<\/h2>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <\/p>\n<div class=\"hm-accordion\" id=\"hm-faq-list\"><!-- [et_pb_line_break_holder] -->    <!-- Q1 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"hm-item\"><!-- [et_pb_line_break_holder] -->      <button class=\"hm-q\" aria-expanded=\"false\"><!-- [et_pb_line_break_holder] -->        <span>My live video does not play on Roku. What is wrong?<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"hm-icon\" aria-hidden=\"true\">+<\/span><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"hm-a\" aria-hidden=\"true\"><!-- [et_pb_line_break_holder] -->        <pee>This usually means the stream bitrate is too high for the Roku device or the network. For stable playback use a video bitrate between <strong>800 kbps and 1500 kbps<\/strong>. Lower the encoder bitrate in OBS, vMix, or Wirecast and restart the stream. Always use the <strong>HLS (.m3u8)<\/strong> link, not RTMP.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Q2 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"hm-item\"><!-- [et_pb_line_break_holder] -->      <button class=\"hm-q\" aria-expanded=\"false\"><!-- [et_pb_line_break_holder] -->        <span>Where do I find my Roku compatible HLS link?<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"hm-icon\" aria-hidden=\"true\">+<\/span><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"hm-a\" aria-hidden=\"true\"><!-- [et_pb_line_break_holder] -->        <pee>Log in to your Wowza RTMP control panel. In the left menu open <strong>Widgets &amp; Links<\/strong> and copy the item labeled <strong>HLS<\/strong> or <strong>playlist.m3u8<\/strong>. Example:<\/pee><!-- [et_pb_line_break_holder] -->        <pee><code>https:\/\/5caf24a595d94.streamlock.net:1937\/ajewxuqktm\/ajewxuqktm\/playlist.m3u8<\/code><\/pee><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Q3 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"hm-item\"><!-- [et_pb_line_break_holder] -->      <button class=\"hm-q\" aria-expanded=\"false\"><!-- [et_pb_line_break_holder] -->        <span>Do I need adaptive bitrate for Roku?<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"hm-icon\" aria-hidden=\"true\">+<\/span><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"hm-a\" aria-hidden=\"true\"><!-- [et_pb_line_break_holder] -->        <pee>No. Roku plays single bitrate HLS. Adaptive bitrate is optional and helps on slow connections. We can configure ABR renditions on request.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Q4 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"hm-item\"><!-- [et_pb_line_break_holder] -->      <button class=\"hm-q\" aria-expanded=\"false\"><!-- [et_pb_line_break_holder] -->        <span>What encoder settings are recommended for Roku?<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"hm-icon\" aria-hidden=\"true\">+<\/span><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"hm-a\" aria-hidden=\"true\"><!-- [et_pb_line_break_holder] -->        <\/p>\n<ul><!-- [et_pb_line_break_holder] -->          <\/p>\n<li>Video codec: H.264 Baseline or Main profile<\/li>\n<p><!-- [et_pb_line_break_holder] -->          <\/p>\n<li>Audio codec: AAC, 44.1 kHz or 48 kHz<\/li>\n<p><!-- [et_pb_line_break_holder] -->          <\/p>\n<li>Bitrate: 800\u20131500 kbps<\/li>\n<p><!-- [et_pb_line_break_holder] -->          <\/p>\n<li>Frame rate: 25\u201330 fps<\/li>\n<p><!-- [et_pb_line_break_holder] -->          <\/p>\n<li>Keyframe interval: 2 seconds<\/li>\n<p><!-- [et_pb_line_break_holder] -->        <\/ul>\n<p><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <!-- Q5 --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div class=\"hm-item\"><!-- [et_pb_line_break_holder] -->      <button class=\"hm-q\" aria-expanded=\"false\"><!-- [et_pb_line_break_holder] -->        <span>Can I use the same link in InstantTV or VLC?<\/span><!-- [et_pb_line_break_holder] -->        <span class=\"hm-icon\" aria-hidden=\"true\">+<\/span><!-- [et_pb_line_break_holder] -->      <\/button><!-- [et_pb_line_break_holder] -->      <\/p>\n<div class=\"hm-a\" aria-hidden=\"true\"><!-- [et_pb_line_break_holder] -->        <pee>Yes. Paste the same HLS link into InstantTV under <em>Add Stream<\/em> or <em>Custom URL<\/em>. It also works in VLC and most Smart TVs.<\/pee><!-- [et_pb_line_break_holder] -->      <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] -->  <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <pee class=\"hm-cta\">Need help or want us to test your link and bitrate for you? <a href=\"#contact\">Contact support<\/a> or try a <a href=\"https:\/\/hosting-marketers.com\/customers\/index.php\/store\/rtmp-server\/demo-account\" target=\"_blank\" rel=\"noopener\">free demo account<\/a>.<\/pee><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <script><!-- [et_pb_line_break_holder] -->    \/\/ Simple accordion behavior<!-- [et_pb_line_break_holder] -->    document.addEventListener('DOMContentLoaded', function () {<!-- [et_pb_line_break_holder] -->      var items = document.querySelectorAll('.hm-item');<!-- [et_pb_line_break_holder] -->      items.forEach(function (item) {<!-- [et_pb_line_break_holder] -->        var btn = item.querySelector('.hm-q');<!-- [et_pb_line_break_holder] -->        var ans = item.querySelector('.hm-a');<!-- [et_pb_line_break_holder] -->        btn.addEventListener('click', function () {<!-- [et_pb_line_break_holder] -->          var open = item.classList.toggle('open');<!-- [et_pb_line_break_holder] -->          btn.setAttribute('aria-expanded', open ? 'true' : 'false');<!-- [et_pb_line_break_holder] -->          ans.setAttribute('aria-hidden', open ? 'false' : 'true');<!-- [et_pb_line_break_holder] -->        });<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  <\/script><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <!-- FAQPage JSON-LD for SEO --><!-- [et_pb_line_break_holder] -->  <script type=\"application\/ld+json\"><!-- [et_pb_line_break_holder] -->  {<!-- [et_pb_line_break_holder] -->    \"@context\": \"https:\/\/schema.org\",<!-- [et_pb_line_break_holder] -->    \"@type\": \"FAQPage\",<!-- [et_pb_line_break_holder] -->    \"mainEntity\": [<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->        \"name\": \"My live video does not play on Roku. What is wrong?\",<!-- [et_pb_line_break_holder] -->        \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->          \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->          \"text\": \"This usually indicates a bitrate that is too high for the Roku device or network. Use 800 to 1500 kbps, lower the encoder bitrate in OBS, vMix, or Wirecast, restart the stream, and use the HLS (.m3u8) link.\"<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->        \"name\": \"Where do I find my Roku compatible HLS link?\",<!-- [et_pb_line_break_holder] -->        \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->          \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->          \"text\": \"Log in to the Wowza RTMP control panel, open Widgets & Links, and copy the HLS or playlist.m3u8 link. This is the URL Roku uses.\"<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->        \"name\": \"Do I need adaptive bitrate for Roku?\",<!-- [et_pb_line_break_holder] -->        \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->          \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->          \"text\": \"No. Roku supports single bitrate HLS. Adaptive bitrate is optional and can be configured for better experience on slow connections.\"<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->        \"name\": \"What encoder settings are recommended for Roku?\",<!-- [et_pb_line_break_holder] -->        \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->          \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->          \"text\": \"H.264 Baseline or Main profile video, AAC audio at 44.1 or 48 kHz, 800\u20131500 kbps video bitrate, 25\u201330 fps, and a 2 second keyframe interval.\"<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      },<!-- [et_pb_line_break_holder] -->      {<!-- [et_pb_line_break_holder] -->        \"@type\": \"Question\",<!-- [et_pb_line_break_holder] -->        \"name\": \"Can I use the same link in InstantTV or VLC?\",<!-- [et_pb_line_break_holder] -->        \"acceptedAnswer\": {<!-- [et_pb_line_break_holder] -->          \"@type\": \"Answer\",<!-- [et_pb_line_break_holder] -->          \"text\": \"Yes. Paste the same HLS link into InstantTV under Add Stream or Custom URL. It also works in VLC and Smart TVs.\"<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      }<!-- [et_pb_line_break_holder] -->    ]<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  <\/script><!-- [et_pb_line_break_holder] --><\/section>\n<p><!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you\u2019ve ever wanted to make your own Roku channel \u2014 showing your live broadcasts or 24\/7 TV station stream \u2014 it\u2019s easier than you think.You can do it directly using your RTMP Server account. In this article, we\u2019ll explain step-by-step how to use your existing Wowza-powered stream to create a fully functional Roku app [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[38,4,39],"tags":[47,46,27,41,44,40,43,42,45,22],"class_list":["post-194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-roku-channel-setup","category-livestreaming","category-streaming-technology","tag-hashtags","tag-hls-streaming","tag-live-streaming","tag-nginx-rtmp","tag-ott","tag-roku","tag-roku-channel","tag-streaming-setup","tag-video-hosting","tag-wowza"],"_links":{"self":[{"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/posts\/194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/comments?post=194"}],"version-history":[{"count":3,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/posts\/194\/revisions"}],"predecessor-version":[{"id":198,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/posts\/194\/revisions\/198"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/media\/195"}],"wp:attachment":[{"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/media?parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/categories?post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rtmp-server.com\/blog\/wp-json\/wp\/v2\/tags?post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}