<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>How-To Guides on go-rtmp</title><link>https://alxayo.github.io/rtmp-go/docs/guides/</link><description>Recent content in How-To Guides on go-rtmp</description><generator>Hugo</generator><language>en</language><atom:link href="https://alxayo.github.io/rtmp-go/docs/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>OBS Studio Setup</title><link>https://alxayo.github.io/rtmp-go/docs/guides/obs-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alxayo.github.io/rtmp-go/docs/guides/obs-setup/</guid><description>&lt;h1 id="obs-studio-setup"&gt;OBS Studio Setup&lt;a class="anchor" href="#obs-studio-setup"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This guide walks through configuring &lt;a href="https://obsproject.com/"&gt;OBS Studio&lt;/a&gt; to stream to your go-rtmp server.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="anchor" href="#prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;go-rtmp server running (see &lt;a href="https://alxayo.github.io/rtmp-go/docs/quick-start/"&gt;Quick Start&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OBS Studio installed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-by-step-configuration"&gt;Step-by-Step Configuration&lt;a class="anchor" href="#step-by-step-configuration"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-stream-settings"&gt;1. Stream Settings&lt;a class="anchor" href="#1-stream-settings"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Open OBS → &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Stream&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Setting&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Service&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Custom&amp;hellip;&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Server&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;rtmp://localhost:1935/live&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Stream Key&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;mystream&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;: Replace &lt;code&gt;localhost&lt;/code&gt; with your server&amp;rsquo;s IP address if streaming from a different machine.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 id="2-output-settings"&gt;2. Output Settings&lt;a class="anchor" href="#2-output-settings"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Open OBS → &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Output&lt;/strong&gt; → &lt;strong&gt;Streaming&lt;/strong&gt; tab:&lt;/p&gt;</description></item><item><title>FFmpeg Commands</title><link>https://alxayo.github.io/rtmp-go/docs/guides/ffmpeg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alxayo.github.io/rtmp-go/docs/guides/ffmpeg/</guid><description>&lt;h1 id="ffmpeg-commands"&gt;FFmpeg Commands&lt;a class="anchor" href="#ffmpeg-commands"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Common FFmpeg commands for publishing, subscribing, recording, and converting with go-rtmp.&lt;/p&gt;
&lt;h2 id="publishing"&gt;Publishing&lt;a class="anchor" href="#publishing"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="from-a-file"&gt;From a File&lt;a class="anchor" href="#from-a-file"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Re-stream a video file at its original frame rate:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ffmpeg -re -i video.mp4 -c copy -f flv rtmp://localhost:1935/live/test&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-re&lt;/code&gt; reads the file at its native frame rate (real-time). Without this flag, FFmpeg sends frames as fast as possible.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c copy&lt;/code&gt; copies the codec without re-encoding (fast, no quality loss).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="test-pattern-no-file-needed"&gt;Test Pattern (No File Needed)&lt;a class="anchor" href="#test-pattern-no-file-needed"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Generate a synthetic video + audio stream for testing:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://alxayo.github.io/rtmp-go/docs/guides/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alxayo.github.io/rtmp-go/docs/guides/troubleshooting/</guid><description>&lt;h1 id="troubleshooting"&gt;Troubleshooting&lt;a class="anchor" href="#troubleshooting"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="quick-reference"&gt;Quick Reference&lt;a class="anchor" href="#quick-reference"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Symptom&lt;/th&gt;
 &lt;th&gt;Cause&lt;/th&gt;
 &lt;th&gt;Fix&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;connection refused&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Server not running&lt;/td&gt;
 &lt;td&gt;Start the server first&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Black screen in ffplay&lt;/td&gt;
 &lt;td&gt;Missing sequence headers&lt;/td&gt;
 &lt;td&gt;Restart publisher; wait 2–3s before starting subscriber&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;stream not found&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Wrong stream key&lt;/td&gt;
 &lt;td&gt;Ensure publisher and subscriber use the same &lt;code&gt;app/streamName&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;High CPU&lt;/td&gt;
 &lt;td&gt;Debug logging&lt;/td&gt;
 &lt;td&gt;Use &lt;code&gt;-log-level info&lt;/code&gt; instead of &lt;code&gt;debug&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Recording file empty&lt;/td&gt;
 &lt;td&gt;Publisher disconnected before keyframe&lt;/td&gt;
 &lt;td&gt;Stream for at least a few seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Connection dropped after ~90s&lt;/td&gt;
 &lt;td&gt;TCP read deadline&lt;/td&gt;
 &lt;td&gt;Normal for idle connections — ensure publisher is actively streaming&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;H.264 &amp;ldquo;mmco: unref short&amp;rdquo; warning&lt;/td&gt;
 &lt;td&gt;Joined mid-GOP&lt;/td&gt;
 &lt;td&gt;Normal and expected — decoder recovers in &amp;lt;1s&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Auth failure&lt;/td&gt;
 &lt;td&gt;Token mismatch&lt;/td&gt;
 &lt;td&gt;Check stream key and token match exactly&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hook not firing&lt;/td&gt;
 &lt;td&gt;Wrong event name&lt;/td&gt;
 &lt;td&gt;Verify event type spelling (&lt;code&gt;connection_accept&lt;/code&gt;, &lt;code&gt;publish_start&lt;/code&gt;, etc.)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="connection-issues"&gt;Connection Issues&lt;a class="anchor" href="#connection-issues"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="connection-refused"&gt;&amp;ldquo;Connection Refused&amp;rdquo;&lt;a class="anchor" href="#connection-refused"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The server is not running or not listening on the expected address.&lt;/p&gt;</description></item><item><title>E2E Testing Scripts</title><link>https://alxayo.github.io/rtmp-go/docs/guides/e2e-testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://alxayo.github.io/rtmp-go/docs/guides/e2e-testing/</guid><description>&lt;h1 id="end-to-end-testing-scripts"&gt;End-to-End Testing Scripts&lt;a class="anchor" href="#end-to-end-testing-scripts"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;go-rtmp includes a comprehensive suite of cross-platform E2E testing scripts in the &lt;code&gt;scripts/&lt;/code&gt; directory. These scripts validate the full streaming pipeline — from publishing through relay to playback — covering plain RTMP, RTMPS (TLS), HLS via hooks, and authentication.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="anchor" href="#prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Check that all required tools are available:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux/macOS:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./scripts/check-deps.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Windows (PowerShell):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.\scripts\check-deps.ps1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This verifies: &lt;code&gt;ffmpeg&lt;/code&gt;, &lt;code&gt;ffplay&lt;/code&gt;, &lt;code&gt;ffprobe&lt;/code&gt; in PATH, and that the &lt;code&gt;rtmp-server&lt;/code&gt; binary exists. Each tool&amp;rsquo;s version is reported.&lt;/p&gt;</description></item></channel></rss>