Open
Add AES67 streaming diagnostics and multicast loopback for debugging missing audio#4
Conversation
Agent-Logs-Url: https://github.com/silly82/go-radio-streamer/sessions/33645bce-50fa-43b0-abcf-493cc5ad5723 Co-authored-by: silly82 <527175+silly82@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Investigate why audio does not reach AES67 receiver
Add AES67 streaming diagnostics and multicast loopback for debugging missing audio
Apr 7, 2026
silly82
marked this pull request as ready for review
April 7, 2026 08:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Debugging why audio doesn't arrive at an AES67 receiver was previously a blind spot — no visibility into packet flow and local testing required a second machine.
Changes
DiagStats— live stream countersNew exported struct tracked atomically from the streaming goroutine, reset on each session start:
packets_sent,bytes_sent— confirm RTP traffic is flowingunderruns— detect FFmpeg buffer starvation (→ silence injection)last_sent_unix— detect stalled senderstream_url,multicast_addr— confirm correct source/destinationGET /api/diagendpointSingle call returns all counters + the exact SDP currently being advertised via SAP:
{ "running": true, "station": "SRF 3", "multicast_addr": "239.0.0.1:5004", "stream_url": "https://stream.srg-ssr.ch/…", "packets_sent": 4250, "bytes_sent": 29155200, "underruns": 0, "last_sent_unix": 1744010255, "sdp": "v=0\r\no=- 0 0 IN IP4 …\r\n…" }Triage guide:
packets_sent == 0while running → FFmpeg decode failurepackets_sentincrementing but receiver silent → network issue (IGMP, TTL, multicast routing)underruns > 0→ source stream is starving the RTP bufferMulticast loopback
SetMulticastLoopback(true)on the sender socket so tools on the same host (ffplay, Wireshark,tcpdump) can receive the stream without a second machine — the necessary first step for local reproduction.Original prompt
Created from VS Code.