<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Mar 23, 2020, at 00:45, Jeremy Fish <<a href="mailto:mezoe7@yahoo.com" class="">mezoe7@yahoo.com</a>> wrote:<div class=""><br class=""><div><blockquote type="cite" class=""><div class=""><span style="font-family: Calibri, sans-serif; font-size: 15px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I am attempting to live stream an audio file while attaching metadata to the ID3 frames, which is done programmatically as the track is playing live & being streamed. The metadata is a set of parameters (let’s say an array of ~20 integers) that indicate when certain lights are triggered in sync with the audio track. Those need to be recorded in the Frame of the audio so that it can be sent to a client program to stream + re-run the light pattern, with the lights & music in sync.</span></div></blockquote></div><br class=""></div><div class="">Depending on your specific requirements, you may want to check out the GlassNet family of streaming tools, which have the capability to do this sort of thing already —i.e. embed arbitrary ID3 frames in an audio stream and recover them in a synchronized fashion at the receiver. It’s Linux, and utilizes HLS (and yes, it uses TagLib). Both are specifically designed to be embedded as components within a larger system.</div><div class=""><br class=""></div><div class="">GlassCoder [encoder]:<span class="Apple-tab-span" style="white-space:pre"> </span><a href="https://github.com/ElvishArtisan/GlassCoder" class="">https://github.com/ElvishArtisan/GlassCoder</a></div><div class="">GlassPlayer [receiver]:<span class="Apple-tab-span" style="white-space:pre"> </span><a href="https://github.com/RadioFreeAsia/GlassPlayer" class="">https://github.com/RadioFreeAsia/GlassPlayer</a></div><div class=""><br class=""></div><div class="">Cheers!</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">|---------------------------------------------------------------------|</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">| Frederick F. Gleason, Jr. | Chief Developer |</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">| | Paravel Systems |</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">|---------------------------------------------------------------------|</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">| A room without books is like a body without a soul. |</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">| |</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">| -- Cicero |</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">|---------------------------------------------------------------------|</span></div></div></body></html>