{"id":82569,"date":"2026-03-16T18:02:00","date_gmt":"2026-03-16T22:02:00","guid":{"rendered":"https:\/\/www.inmotionhosting.com\/blog\/?p=82569"},"modified":"2026-03-16T16:10:32","modified_gmt":"2026-03-16T20:10:32","slug":"live-streaming-server-requirements-dedicated","status":"publish","type":"post","link":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/","title":{"rendered":"Live Streaming Server Requirements on Dedicated Hardware"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-1024x538.png\" alt=\"Live Streaming Server Requirements on Dedicated Hardware hero\" class=\"wp-image-82570\" srcset=\"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-1024x538.png 1024w, https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-300x158.png 300w, https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-768x403.png 768w, https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Running live streams through Twitch or YouTube is fine until you need control they don&#8217;t give you \u2014 custom latency, multiple simultaneous streams, audience-specific routing, or a setup where the platform takes no cut of monetization. Self-hosted streaming on a dedicated server solves all of these, but the hardware and configuration requirements are specific. Getting&hellip; <\/p><\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>What Live Streaming Actually Demands from a Server<\/strong><\/h2>\n\n\n\n<p>A live streaming server performs three distinct operations, each with different resource profiles:<\/p>\n\n\n\n<p><strong>Ingest:<\/strong> Receives the encoded stream from your broadcasting software (OBS, Restream, vMix) via RTMP (Real-Time Messaging Protocol). CPU-light \u2014 the server is just accepting a network connection and writing to disk or memory.<\/p>\n\n\n\n<p><strong>Transcoding:<\/strong> Re-encodes the incoming stream to multiple quality levels (1080p, 720p, 480p, 360p) so viewers with different bandwidth can watch without buffering. CPU-intensive. This is where most servers encounter their limits.<\/p>\n\n\n\n<p><strong>Delivery:<\/strong> Sends the HLS (HTTP Live Streaming) or DASH segments to viewers via a CDN or directly. Bandwidth-intensive. For 100 concurrent viewers at 4Mbps each, that&#8217;s 400Mbps of sustained outbound bandwidth.<\/p>\n\n\n\n<p>Your server needs to handle all three simultaneously, potentially for multiple concurrent streams.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hardware Requirements by Use Case<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Single Stream, Up to 500 Concurrent Viewers<\/strong><\/h3>\n\n\n\n<p><strong>Minimum viable configuration:<\/strong> InMotion Essential ($99.99\/month, 64GB DDR4, 2&#215;1.92TB NVMe)<\/p>\n\n\n\n<p>At 1080p30 with x264 medium preset transcoding to 3 quality levels, expect 4-6 CPU cores fully utilized during active streaming. The Essential server&#8217;s processor handles this comfortably. At 500 concurrent viewers receiving 4Mbps streams, outbound bandwidth hits 2Gbps \u2014 within the burstable 10Gbps envelope.<\/p>\n\n\n\n<p>RAM is not the constraint at this scale \u2014 8-16GB is sufficient for the streaming stack. 64GB provides headroom for the OS and any other services running alongside the stream.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Multiple Streams or 500-5,000 Concurrent Viewers<\/strong><\/h3>\n\n\n\n<p><strong>Recommended:<\/strong> InMotion Elite or Extreme ($199.99-349.99\/month)<\/p>\n\n\n\n<p>Multi-stream operations or high viewer counts need either more CPU cores for concurrent transcoding or enough RAM to buffer stream segments aggressively. At 2,000 concurrent viewers receiving 4Mbps HLS delivery, you&#8217;re at 8Gbps sustained \u2014 approaching the burstable limit and a strong argument for guaranteed unmetered 10Gbps bandwidth.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/www.inmotionhosting.com\/dedicated-servers\/amd-servers\">AMD EPYC 4545P&#8217;s 16 cores with 32 threads<\/a> is well-suited to concurrent transcoding workloads. Software transcoding using libx264 or libvpx scales linearly with core count \u2014 two concurrent 1080p streams consume roughly double the CPU of one.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Delivery at Scale (5,000+ Concurrent Viewers)<\/strong><\/h3>\n\n\n\n<p>At this scale, the dedicated server handles ingest and transcoding; a CDN handles delivery. The math is straightforward: 5,000 viewers at 4Mbps is 20Gbps of delivery bandwidth, which exceeds any single server&#8217;s realistic output. A properly configured CDN pulls the HLS stream from your server once and distributes it to viewers \u2014 your server sees a small number of CDN PoP connections rather than 5,000 individual viewer connections.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Setting Up Nginx-RTMP on Linux<\/strong><\/h2>\n\n\n\n<p><a href=\"https:\/\/github.com\/arut\/nginx-rtmp-module\">Nginx with the RTMP module<\/a> is the standard open source streaming server. On AlmaLinux or Ubuntu:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Ubuntu\n\napt-get install nginx libnginx-mod-rtmp -y\n\n# AlmaLinux\/Rocky\n\ndnf install nginx -y\n\n# Compile RTMP module or use community packages\n\nBasic Nginx configuration for ingest and HLS delivery:\n\n# \/etc\/nginx\/nginx.conf\n\nrtmp {\n\n\u00a0\u00a0\u00a0\u00a0server {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0listen 1935;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0chunk_size 4096;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application live {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record off;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0# HLS delivery\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls on;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_path \/var\/www\/html\/hls;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_fragment 3s;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_playlist_length 60s;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0# Transcode to multiple qualities\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exec_push ffmpeg -i rtmp:\/\/localhost\/$app\/$name\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:v libx264 -b:v 3000k -s 1920x1080 -r 30\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:a aac -b:a 128k\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-f flv rtmp:\/\/localhost\/hls\/$name_1080p\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:v libx264 -b:v 1500k -s 1280x720 -r 30\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:a aac -b:a 128k\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-f flv rtmp:\/\/localhost\/hls\/$name_720p\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:v libx264 -b:v 600k -s 854x480 -r 30\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-c:a aac -b:a 96k\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-f flv rtmp:\/\/localhost\/hls\/$name_480p;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application hls {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls on;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_path \/var\/www\/html\/hls;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_fragment 3s;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_nested on;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}\n\nhttp {\n\n\u00a0\u00a0\u00a0\u00a0server {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0listen 80;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0location \/hls {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0types {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application\/vnd.apple.mpegurl m3u8;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0video\/mp2t ts;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0root \/var\/www\/html;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_header Cache-Control no-cache;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_header Access-Control-Allow-Origin *;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\n\u00a0\u00a0\u00a0\u00a0}\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\"># Ubuntu<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">apt<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">get install nginx libnginx<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">mod<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">rtmp <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">y<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># AlmaLinux<\/span><span style=\"color: #F97583\">\/<\/span><span style=\"color: #E1E4E8\">Rocky<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">dnf install nginx <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">y<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># Compile <\/span><span style=\"color: #79B8FF\">RTMP<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #F97583\">module<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">or<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">use<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">community<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">packages<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">Basic<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">Nginx<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">configuration<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">for<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">ingest<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">and<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">HLS<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #B392F0\">delivery<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># \/<\/span><span style=\"color: #B392F0\">etc<\/span><span style=\"color: #E1E4E8\">\/<\/span><span style=\"color: #B392F0\">nginx<\/span><span style=\"color: #E1E4E8\">\/<\/span><span style=\"color: #B392F0\">nginx<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #B392F0\">conf<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0server {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0listen <\/span><span style=\"color: #79B8FF\">1935<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0chunk_size <\/span><span style=\"color: #79B8FF\">4096<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application live {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0record off;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0# <\/span><span style=\"color: #79B8FF\">HLS<\/span><span style=\"color: #E1E4E8\"> delivery<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_path <\/span><span style=\"color: #F97583\">\/var<\/span><span style=\"color: #E1E4E8\">\/www\/html\/hls;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_fragment 3s;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_playlist_length 60s;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0# Transcode to multiple qualities<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exec_push ffmpeg <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">i <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/$app\/$name<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:v libx264 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:v 3000k <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">s 1920x1080 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">r <\/span><span style=\"color: #79B8FF\">30<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:a aac <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:a 128k<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">f flv <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/hls\/$name_1080p<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:v libx264 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:v 1500k <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">s 1280x720 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">r <\/span><span style=\"color: #79B8FF\">30<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:a aac <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:a 128k<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">f flv <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/hls\/$name_720p<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:v libx264 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:v 600k <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">s 854x480 <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">r <\/span><span style=\"color: #79B8FF\">30<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:a aac <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:a 96k<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">f flv <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/hls\/$name_480p;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application hls {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0live on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_path <\/span><span style=\"color: #F97583\">\/var<\/span><span style=\"color: #E1E4E8\">\/www\/html\/hls;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_fragment 3s;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0hls_nested on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">http {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0server {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0listen <\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0location <\/span><span style=\"color: #F97583\">\/<\/span><span style=\"color: #E1E4E8\">hls {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0types {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0application<\/span><span style=\"color: #F97583\">\/<\/span><span style=\"color: #E1E4E8\">vnd.apple.mpegurl m3u8;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0video<\/span><span style=\"color: #F97583\">\/<\/span><span style=\"color: #E1E4E8\">mp2t ts;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0root <\/span><span style=\"color: #F97583\">\/var<\/span><span style=\"color: #E1E4E8\">\/www\/html;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_header Cache<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">Control no<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">cache;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_header Access<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">Control<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">Allow<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">Origin <\/span><span style=\"color: #F97583\">*<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>This configuration accepts an RTMP stream from OBS on port 1935, transcodes to three quality levels via FFmpeg, and serves HLS segments via HTTP on port 80.<\/p>\n\n\n\n<p><strong>OBS Stream Settings:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Server: rtmp:\/\/your-server-ip\/live<\/li>\n\n\n\n<li>Stream Key: any string (becomes the stream name)<\/li>\n\n\n\n<li>Encoder: x264 or NVENC (if GPU available)<\/li>\n\n\n\n<li>Bitrate: 6,000 Kbps for 1080p60 source<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Stream to Twitch and YouTube Simultaneously via Dedicated Server<\/strong><\/h2>\n\n\n\n<p>A dedicated RTMP server can restream to multiple platforms simultaneously, eliminating the need for a paid restreaming service.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>application live {\n\n\u00a0\u00a0\u00a0\u00a0live on;\n\n\u00a0\u00a0\u00a0\u00a0# Push to Twitch\n\n\u00a0\u00a0\u00a0\u00a0push rtmp:\/\/live.twitch.tv\/app\/YOUR_TWITCH_STREAM_KEY;\n\n\u00a0\u00a0\u00a0\u00a0# Push to YouTube\n\n\u00a0\u00a0\u00a0\u00a0push rtmp:\/\/a.rtmp.youtube.com\/live2\/YOUR_YOUTUBE_STREAM_KEY;\n\n\u00a0\u00a0\u00a0\u00a0# Keep local HLS copy\n\n\u00a0\u00a0\u00a0\u00a0hls on;\n\n\u00a0\u00a0\u00a0\u00a0hls_path \/var\/www\/html\/hls;\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">application live {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0live on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0# Push to Twitch<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0push <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/live.twitch.tv\/app\/YOUR_TWITCH_STREAM_KEY;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0# Push to YouTube<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0push <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/a.rtmp.youtube.com\/live2\/YOUR_YOUTUBE_STREAM_KEY;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0# Keep local <\/span><span style=\"color: #79B8FF\">HLS<\/span><span style=\"color: #E1E4E8\"> copy<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0hls on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0hls_path <\/span><span style=\"color: #F97583\">\/var<\/span><span style=\"color: #E1E4E8\">\/www\/html\/hls;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Your broadcaster sends one stream to your dedicated server; the server fans it out to Twitch, YouTube, and your own HLS endpoint simultaneously. This requires outbound bandwidth equal to the sum of all destination bitrates \u2014 typically 6,000-18,000 Kbps depending on platform requirements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FFmpeg Transcoding Optimization<\/strong><\/h2>\n\n\n\n<p>FFmpeg&#8217;s default settings prioritize quality over CPU efficiency. For live streaming where real-time performance is required, tune the preset and tune flags:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>ffmpeg -i rtmp:\/\/localhost\/$app\/$name \\\n\n\u00a0\u00a0\u00a0\u00a0-c:v libx264 \\\n\n\u00a0\u00a0\u00a0\u00a0-preset veryfast \\ \u00a0 \u00a0 \u00a0 # Critical for real-time: veryfast or ultrafast\n\n\u00a0\u00a0\u00a0\u00a0-tune zerolatency \\\u00a0 \u00a0 \u00a0 # Reduces encoding delay\n\n\u00a0\u00a0\u00a0\u00a0-b:v 3000k \\\n\n\u00a0\u00a0\u00a0\u00a0-maxrate 3000k \\\n\n\u00a0\u00a0\u00a0\u00a0-bufsize 6000k \\\n\n\u00a0\u00a0\u00a0\u00a0-g 60 \\\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # Keyframe interval (2x framerate for 30fps)\n\n\u00a0\u00a0\u00a0\u00a0-sc_threshold 0 \\\u00a0 \u00a0 \u00a0 \u00a0 # Disable scene change detection (adds latency)\n\n\u00a0\u00a0\u00a0\u00a0-c:a aac \\\n\n\u00a0\u00a0\u00a0\u00a0-b:a 128k \\\n\n\u00a0\u00a0\u00a0\u00a0-f flv rtmp:\/\/localhost\/hls\/$name_1080p<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">ffmpeg <\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">i <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/$app\/$name \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:v libx264 \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">preset veryfast \\ \u00a0 \u00a0 \u00a0 # Critical for real<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">time<\/span><span style=\"color: #E1E4E8\">: veryfast or ultrafast<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">tune zerolatency \\\u00a0 \u00a0 \u00a0 # Reduces encoding delay<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:v 3000k \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">maxrate 3000k \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">bufsize 6000k \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">g <\/span><span style=\"color: #79B8FF\">60<\/span><span style=\"color: #E1E4E8\"> \\\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # Keyframe <\/span><span style=\"color: #B392F0\">interval<\/span><span style=\"color: #E1E4E8\"> (2x framerate for 30fps)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">sc_threshold <\/span><span style=\"color: #79B8FF\">0<\/span><span style=\"color: #E1E4E8\"> \\\u00a0 \u00a0 \u00a0 \u00a0 # Disable scene change <\/span><span style=\"color: #B392F0\">detection<\/span><span style=\"color: #E1E4E8\"> (adds latency)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">c<\/span><span style=\"color: #E1E4E8\">:a aac \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #B392F0\">b<\/span><span style=\"color: #E1E4E8\">:a 128k \\<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #E1E4E8\">f flv <\/span><span style=\"color: #B392F0\">rtmp<\/span><span style=\"color: #E1E4E8\">:<\/span><span style=\"color: #6A737D\">\/\/localhost\/hls\/$name_1080p<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>The -preset veryfast setting reduces encoding quality slightly compared to slow or medium, but reduces CPU usage by 60-70% \u2014 essential for real-time transcoding on a CPU that&#8217;s handling multiple streams or other workloads simultaneously.<\/p>\n\n\n\n<p><a href=\"https:\/\/trac.ffmpeg.org\/wiki\/Encode\/H.264\">FFmpeg&#8217;s encoding guide<\/a> covers the tradeoffs between preset values in detail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Firewall Configuration for Streaming<\/strong><\/h2>\n\n\n\n<p>Open the ports your streaming stack requires:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Allow RTMP ingest from broadcasters\n\nnft add rule inet filter input tcp dport 1935 accept\n\n# Allow HTTP delivery of HLS segments\n\nnft add rule inet filter input tcp dport 80 accept\n\nnft add rule inet filter input tcp dport 443 accept\n\n# Restrict RTMP ingest to known broadcaster IPs if possible\n\n# Replace with actual broadcaster IP\n\nnft add rule inet filter input ip saddr 203.0.113.0\/24 tcp dport 1935 accept\n\nnft add rule inet filter input tcp dport 1935 drop<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\"># Allow <\/span><span style=\"color: #79B8FF\">RTMP<\/span><span style=\"color: #E1E4E8\"> ingest from broadcasters<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">nft add rule inet filter input tcp dport <\/span><span style=\"color: #79B8FF\">1935<\/span><span style=\"color: #E1E4E8\"> accept<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># Allow <\/span><span style=\"color: #79B8FF\">HTTP<\/span><span style=\"color: #E1E4E8\"> delivery <\/span><span style=\"color: #F97583\">of<\/span><span style=\"color: #E1E4E8\"> <\/span><span style=\"color: #79B8FF\">HLS<\/span><span style=\"color: #E1E4E8\"> segments<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">nft add rule inet filter input tcp dport <\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\"> accept<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">nft add rule inet filter input tcp dport <\/span><span style=\"color: #79B8FF\">443<\/span><span style=\"color: #E1E4E8\"> accept<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># Restrict <\/span><span style=\"color: #79B8FF\">RTMP<\/span><span style=\"color: #E1E4E8\"> ingest to known broadcaster IPs <\/span><span style=\"color: #F97583\">if<\/span><span style=\"color: #E1E4E8\"> possible<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\"># Replace <\/span><span style=\"color: #F97583\">with<\/span><span style=\"color: #E1E4E8\"> actual broadcaster <\/span><span style=\"color: #79B8FF\">IP<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">nft add rule inet filter input ip saddr <\/span><span style=\"color: #79B8FF\">203.0<\/span><span style=\"color: #E1E4E8\">.<\/span><span style=\"color: #79B8FF\">113.0<\/span><span style=\"color: #F97583\">\/<\/span><span style=\"color: #79B8FF\">24<\/span><span style=\"color: #E1E4E8\"> tcp dport <\/span><span style=\"color: #79B8FF\">1935<\/span><span style=\"color: #E1E4E8\"> accept<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">nft add rule inet filter input tcp dport <\/span><span style=\"color: #79B8FF\">1935<\/span><span style=\"color: #E1E4E8\"> drop<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Leaving RTMP open to the internet allows anyone to stream to your server. IP-restricting the ingest port prevents unauthorized use of your server&#8217;s bandwidth.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Storage for Stream Recording<\/strong><\/h2>\n\n\n\n<p>Recorded streams at 1080p consume approximately 1GB per 10 minutes of recording at 12-15 Mbps. For regular streaming operations, plan storage accordingly:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>2 hours of recording per day: ~12GB\/day, ~360GB\/month<\/li>\n\n\n\n<li>InMotion&#8217;s Essential server includes 2&#215;1.92TB NVMe \u2014 sufficient for approximately 3,000 hours of recordings before requiring archival<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>Configure Nginx-RTMP to record to a specific path:\n\napplication live {\n\n\u00a0\u00a0\u00a0\u00a0live on;\n\n\u00a0\u00a0\u00a0\u00a0record all;\n\n\u00a0\u00a0\u00a0\u00a0record_path \/var\/recordings;\n\n\u00a0\u00a0\u00a0\u00a0record_suffix -%d%m%Y-%H%M%S.flv;\n\n\u00a0\u00a0\u00a0\u00a0record_max_size 1000M;\u00a0 # Split at 1GB to keep files manageable\n\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #E1E4E8\">Configure Nginx<\/span><span style=\"color: #F97583\">-<\/span><span style=\"color: #79B8FF\">RTMP<\/span><span style=\"color: #E1E4E8\"> to record to a specific <\/span><span style=\"color: #B392F0\">path<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">application live {<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0live on;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0record all;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0record_path <\/span><span style=\"color: #F97583\">\/var<\/span><span style=\"color: #E1E4E8\">\/recordings;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0record_suffix <\/span><span style=\"color: #F97583\">-%<\/span><span style=\"color: #E1E4E8\">d<\/span><span style=\"color: #F97583\">%<\/span><span style=\"color: #E1E4E8\">m<\/span><span style=\"color: #F97583\">%<\/span><span style=\"color: #79B8FF\">Y<\/span><span style=\"color: #F97583\">-%<\/span><span style=\"color: #79B8FF\">H<\/span><span style=\"color: #F97583\">%<\/span><span style=\"color: #79B8FF\">M<\/span><span style=\"color: #F97583\">%<\/span><span style=\"color: #79B8FF\">S<\/span><span style=\"color: #E1E4E8\">.flv;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">\u00a0\u00a0\u00a0\u00a0record_max_size 1000<\/span><span style=\"color: #79B8FF\">M<\/span><span style=\"color: #E1E4E8\">;\u00a0 # Split at 1<\/span><span style=\"color: #79B8FF\">GB<\/span><span style=\"color: #E1E4E8\"> to keep files manageable<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>InMotion&#8217;s Premier Care backup storage (500GB) provides an off-server copy of important recordings. For longer-term archival, configure rclone to sync the recordings directory to S3-compatible object storage on a scheduled basis.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Related reading<\/strong>: <strong><a href=\"https:\/\/www.inmotionhosting.com\/blog\/network-latency-optimization-dedicated-servers\/\" type=\"post\" id=\"82491\">Network Latency Optimization for Dedicated Servers<\/a><\/strong> | <strong>CDN Origin Server Optimization<\/strong><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Running live streams through Twitch or YouTube is fine until you need control they don&#8217;t give you \u2014 custom latency, multiple simultaneous streams, audience-specific routing, or a setup where the platform takes no cut of monetization. Self-hosted streaming on a <a href=\"https:\/\/www.inmotionhosting.com\/dedicated-servers\">dedicated server<\/a> solves all of these, but the hardware and configuration requirements are specific. Getting them wrong means pixelated video, dropped frames, and viewers who don&#8217;t come back.<\/p>\n","protected":false},"author":116,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[355],"tags":[],"class_list":["post-82569","post","type-post","status-publish","format-standard","hentry","category-dedicated-server-hosting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Live Streaming Server Requirements on Dedicated Hardware | InMotion Hosting<\/title>\n<meta name=\"description\" content=\"Configure dedicated servers for live streaming with RTMP, Nginx-RTMP, and HLS. Hardware requirements for Twitch, YouTube Live, and self-hosted streaming.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Live Streaming Server Requirements on Dedicated Hardware | InMotion Hosting\" \/>\n<meta property=\"og:description\" content=\"Configure dedicated servers for live streaming with RTMP, Nginx-RTMP, and HLS. Hardware requirements for Twitch, YouTube Live, and self-hosted streaming.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/\" \/>\n<meta property=\"og:site_name\" content=\"InMotion Hosting Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inmotionhosting\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-16T22:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sam Page\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@inmotionhosting\" \/>\n<meta name=\"twitter:site\" content=\"@inmotionhosting\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sam Page\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Live Streaming Server Requirements on Dedicated Hardware | InMotion Hosting","description":"Configure dedicated servers for live streaming with RTMP, Nginx-RTMP, and HLS. Hardware requirements for Twitch, YouTube Live, and self-hosted streaming.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/","og_locale":"en_US","og_type":"article","og_title":"Live Streaming Server Requirements on Dedicated Hardware | InMotion Hosting","og_description":"Configure dedicated servers for live streaming with RTMP, Nginx-RTMP, and HLS. Hardware requirements for Twitch, YouTube Live, and self-hosted streaming.","og_url":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/","og_site_name":"InMotion Hosting Blog","article_publisher":"https:\/\/www.facebook.com\/inmotionhosting","article_published_time":"2026-03-16T22:02:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware.png","type":"image\/png"}],"author":"Sam Page","twitter_card":"summary_large_image","twitter_creator":"@inmotionhosting","twitter_site":"@inmotionhosting","twitter_misc":{"Written by":"Sam Page","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#article","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/"},"author":{"name":"Sam Page","@id":"https:\/\/www.inmotionhosting.com\/blog\/#\/schema\/person\/b459c4b748083c4f8431d5312e795796"},"headline":"Live Streaming Server Requirements on Dedicated Hardware","datePublished":"2026-03-16T22:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/"},"wordCount":743,"commentCount":0,"publisher":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-1024x538.png","articleSection":["Dedicated Server Articles"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/","url":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/","name":"Live Streaming Server Requirements on Dedicated Hardware | InMotion Hosting","isPartOf":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#primaryimage"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware-1024x538.png","datePublished":"2026-03-16T22:02:00+00:00","description":"Configure dedicated servers for live streaming with RTMP, Nginx-RTMP, and HLS. Hardware requirements for Twitch, YouTube Live, and self-hosted streaming.","breadcrumb":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#primaryimage","url":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware.png","contentUrl":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2026\/03\/Live-Streaming-Server-Requirements-on-Dedicated-Hardware.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.inmotionhosting.com\/blog\/live-streaming-server-requirements-dedicated\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inmotionhosting.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Dedicated Server Articles","item":"https:\/\/www.inmotionhosting.com\/blog\/dedicated-server-hosting\/"},{"@type":"ListItem","position":3,"name":"Live Streaming Server Requirements on Dedicated Hardware"}]},{"@type":"WebSite","@id":"https:\/\/www.inmotionhosting.com\/blog\/#website","url":"https:\/\/www.inmotionhosting.com\/blog\/","name":"InMotion Hosting Blog","description":"Web Hosting Strategy, Trends and Security","publisher":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inmotionhosting.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.inmotionhosting.com\/blog\/#organization","name":"InMotion Hosting","url":"https:\/\/www.inmotionhosting.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.inmotionhosting.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2019\/11\/imh-logo-all-colors-big.jpg","contentUrl":"https:\/\/www.inmotionhosting.com\/blog\/wp-content\/uploads\/2019\/11\/imh-logo-all-colors-big.jpg","width":1630,"height":430,"caption":"InMotion Hosting"},"image":{"@id":"https:\/\/www.inmotionhosting.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inmotionhosting","https:\/\/x.com\/inmotionhosting"]},{"@type":"Person","@id":"https:\/\/www.inmotionhosting.com\/blog\/#\/schema\/person\/b459c4b748083c4f8431d5312e795796","name":"Sam Page","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/35c230f33cd7aacf52f0f53bc02230a2ee7840b5b221af549d491ab98f65a363?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/35c230f33cd7aacf52f0f53bc02230a2ee7840b5b221af549d491ab98f65a363?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/35c230f33cd7aacf52f0f53bc02230a2ee7840b5b221af549d491ab98f65a363?s=96&r=g","caption":"Sam Page"},"url":"https:\/\/www.inmotionhosting.com\/blog\/author\/samp\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"primary_category":{"id":355,"name":"Dedicated Server Articles","slug":"dedicated-server-hosting","link":"https:\/\/www.inmotionhosting.com\/blog\/dedicated-server-hosting\/"},"_links":{"self":[{"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/posts\/82569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/users\/116"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/comments?post=82569"}],"version-history":[{"count":1,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/posts\/82569\/revisions"}],"predecessor-version":[{"id":82571,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/posts\/82569\/revisions\/82571"}],"wp:attachment":[{"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/media?parent=82569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/categories?post=82569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inmotionhosting.com\/blog\/wp-json\/wp\/v2\/tags?post=82569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}