Re: Radio Loudness
Roman Gorshunov <[email protected]> Thu, 25 Aug 2022 15:47:19 +0100
| Newsgroups | gmane.comp.audio.icecast.devel |
|---|---|
| Message-ID | <CAOaZSRg5nFW2D7NU4jLkSWVaj5Z+N3CW7jL_f+4RJ+=ZOWG5Gw@mail.gmail.com> |
--===============3626312055297105751== Content-Type: multipart/alternative; boundary="0000000000008539e205e711e0da" --0000000000008539e205e711e0da Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Dear Patrick, > We saw that the following commands are coming from the Backend IceCast Proxy to the Android STB Icecast does not explicitly send any commands to its clients (players). It simply pushes audio streams and a little bit of metadata (title, artist, bitrate, etc.) over HTTP. HTTP protocol and Icecast do allow embedding arbitrary HTTP protocol headers [0] and send them to the client, and it would be up to the client to interpret them. However, these headers are rather static, and can not be changed dynamically on the fly. If your media sources require different but static adjustment of loudness (e.g. "Radio 1" always needs "+10" adjustment, and "radio 2" always nesds "-5" adjustment), then you can set it in your custom HTTP headers per mount point, and process those settings in your client (ExoPlayer in STB?) to change volume. With a bit of software development you could make it possible to adjust HTTP headers dynamically [1]. To do so you would need to continuously monitor loudness of source media streams and send metadata update commands to the Icecast server. Another possible solution would be to add a software between your original media sources (radio stations) and Icecast, which will normalize loudness and then push modified audio to Icecast as a media source. Some possible media source clients are listed [2] on Icecast web site. [0] - https://icecast.org/docs/icecast-2.4.1/config-file.html#mountsettings , look for <http-headers> description [1] - in a way similar to stream Metadata updates https://icecast.org/docs/icecast-2.4.1/admin-interface.html [2] - https://icecast.org/apps/ Best regards, Roman Gorshunov On Thu, 25 Aug 2022 at 12:48, <[email protected]> wrote: > Dear Roman > > Thank you for your answer. > > We as Swisscom Switzerland are in a difficult situation. We have around > 1'000 Live / Replay TV Channels and 500 Radio Channels on our Platform. > For Live TV we could manage the Loudness in the Transcoder/Encoding > Settings. We were able to measure and align all Loudness differences and > adjust to -23dB. > Zapping from one TV Channel to another makes no audible difference anymor= e. > > The Problem is the change from Live TV to Radio on our Android Set-Top-Bo= x. > We are looking for a solution to align the Radio Loudness over the 500 > Radio Channels. > > So you don't see any possibility to send an ExoPlayer message (like a > Metadata) to the Player? > > We saw that the following commands are coming from the Backend IceCast > Proxy to the Android STB: > > > > tvlib.ExoRadioPlayer: onPlaybackStateChanged(state=3DIdle) > > tvlib.ExoRadioPlayer: onIsLoadingChanged(isLoading=3Dfalse) > > tvlib.ExoRadioPlayer: onPlaybackStateChanged(state=3DBuffering) > > Why not adding a ExoPlayer Volume Parameter within the Radio Channel star= t > For example =E2=80=A6 > exoPlayer.sendMessage(audioRenderer, > MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0.9f); > > > A static setting on the ExoPlayer in the client is not an option, because > the Player is also used by other applications. > Changing Volume in Set-top-box will affect all applications. > > Sincerely, > Patrick > > > > *Von:* Roman Gorshunov <[email protected]> > *Gesendet:* Mittwoch, 24. August 2022 19:18 > *An:* Schneider Patrick, B2C-TSP-ITE <[email protected]> > *Cc:* [email protected] > *Betreff:* Re: [Icecast-dev] Radio Loudness > > > > Hello Patrick, > > > > It=E2=80=99s not really a media streaming server=E2=80=99s (Icecast) job = to alter the > volume. Volume is set either by the media source or in player. > > In addition to that, media streaming server does not allow clients > (players) to control media source (e.g. change volume or skip tracks). > > > > I might misunderstood your question though. > > > > Best regards, > > Roman Gorshunov > > > > On 24 Aug 2022, at 11:11, [email protected] wrote: > > =EF=BB=BF > > Dear All > > We are looking for a solution to send a volume parameter to our ExoPlayer > during the icecast streaming initialization phase. > Something like this =E2=80=A6 > > Volume example: > exoPlayer.sendMessage(audioRenderer, > MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0.9f); > > > Is there a way to set the icecast egress streaming with an ExoPlayer > default Volume? > > Sincerely, > Patrick > > > > > _______________________________________________ > Icecast-dev mailing list > [email protected] > http://lists.xiph.org/mailman/listinfo/icecast-dev > > --0000000000008539e205e711e0da Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Dear Patrick,<div><br></div><div>> We saw that the foll= owing commands are coming from the Backend IceCast Proxy to the Android STB= </div>Icecast does not explicitly send any commands to its=C2=A0clients (pl= ayers). It simply pushes audio streams and a little bit of metadata (title,= artist, bitrate, etc.) over HTTP.<div><br></div><div>HTTP protocol and Ice= cast do allow embedding arbitrary HTTP protocol headers [0] and send them t= o the client, and it would be up to the client to interpret them. However, = these headers are rather static,=C2=A0and can not be changed dynamically on= the fly. If your media sources require different but static adjustment of = loudness (e.g. "Radio 1" always needs "+10" adjustment,= and "radio 2" always nesds "-5" adjustment), then you = can set it in your custom HTTP headers per mount point, and process those s= ettings in your client (ExoPlayer in STB?) to change volume. With a bit of = software development you could make it possible to adjust HTTP headers dyna= mically [1]. To do so you would need to continuously monitor=C2=A0loudness = of source media streams and send metadata update commands to the Icecast se= rver.</div><div><br></div><div>Another possible solution would be to add a = software between your original media sources (radio stations) and Icecast, = which will normalize loudness and then push modified audio to Icecast as a = media source. Some possible media source clients are listed [2] on Icecast = web site.</div><div><br></div><div>[0] -=C2=A0<a href=3D"https://icecast.or= g/docs/icecast-2.4.1/config-file.html#mountsettings">https://icecast.org/do= cs/icecast-2.4.1/config-file.html#mountsettings</a> , look for <http-hea= ders> description</div><div>[1] - in a way similar to stream Metadata up= dates <a href=3D"https://icecast.org/docs/icecast-2.4.1/admin-interface.htm= l">https://icecast.org/docs/icecast-2.4.1/admin-interface.html</a></div><di= v>[2] -=C2=A0<a href=3D"https://icecast.org/apps/">https://icecast.org/apps= /</a></div><div><br></div><div>Best regards,</div><div>Roman Gorshunov</div= ></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr"= >On Thu, 25 Aug 2022 at 12:48, <<a href=3D"mailto:Patrick.Schneider1@swi= sscom.com">[email protected]</a>> wrote:<br></div><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-wid= th:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-l= eft:1ex"><div class=3D"msg554009646005795158"> <div lang=3D"DE-CH" style=3D"word-wrap:break-word"> <div class=3D"gmail-m_554009646005795158WordSection1"> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)">Dear Roman<b= r> <br> Thank you for your answer.<br> <br> We as Swisscom Switzerland are in a difficult situation. We have around 1&#= 39;000 Live / Replay TV Channels and 500 Radio Channels on our Platform.<br= > For Live TV we could manage the Loudness in the Transcoder/Encoding Setting= s. We were able to measure and align all Loudness differences and adjust to= -23dB.<br> Zapping from one TV Channel to another makes no audible difference anymore.= <br> <br> The Problem is the change from Live TV to Radio on our Android Set-Top-Box.= <br> We are looking for a solution to align the Radio Loudness over the 500 Radi= o Channels.<br> <br> So you don't see any possibility to send an ExoPlayer message (like a M= etadata) to the Player?<br> <br> We saw that the following commands are coming from the Backend IceCast Prox= y to the Android STB:<u></u><u></u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)"><u></u>=C2= =A0<u></u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)">tvlib.ExoRad= ioPlayer: onPlaybackStateChanged(state=3DIdle)<u></u><u></u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)">tvlib.ExoRad= ioPlayer: onIsLoadingChanged(isLoading=3Dfalse)<u></u><u></u></span></p> <p class=3D"MsoNormal" style=3D"margin-bottom:12pt"><span lang=3D"EN-US" st= yle=3D"font-size:10pt;font-family:"Trebuchet MS",sans-serif;color= :rgb(68,84,106);background-color:yellow">tvlib.ExoRadioPlayer: onPlaybackSt= ateChanged(state=3DBuffering)</span><span lang=3D"EN-US" style=3D"font-size= :10pt;font-family:"Trebuchet MS",sans-serif"><u></u><u></u></span= ></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)">Why not addi= ng a ExoPlayer Volume Parameter within the Radio Channel start<br> For example =E2=80=A6<br> </span><span lang=3D"EN-US" style=3D"font-size:10pt;font-family:"Couri= er New"">exoPlayer.sendMessage(audioRenderer, MediaCodecAudioTrackRend= erer.MSG_SET_VOLUME, <span style=3D"color:black;background-color:yellow">0</span><span style=3D"= background-color:yellow">.<span style=3D"color:black">9</span>f</span>);</s= pan><span lang=3D"EN-US" style=3D"font-size:10pt;font-family:"Trebuche= t MS",sans-serif;color:rgb(68,84,106)"><br> <br> <u></u><u></u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)"><br> A static setting on the ExoPlayer in the client is not an option, because t= he Player is also used by other applications.<br> Changing Volume in Set-top-box will affect all applications. <br> <br> Sincerely,<br> Patrick<br> <br> <u></u><u></u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10pt;font-fa= mily:"Trebuchet MS",sans-serif;color:rgb(68,84,106)"><u></u><u></= u></span></p> <p class=3D"MsoNormal"><span lang=3D"EN-US"><u></u>=C2=A0<u></u></span></p> <div> <div style=3D"border-style:solid none none;border-top-width:1pt;border-top-= color:rgb(225,225,225);padding:3pt 0cm 0cm"> <p class=3D"MsoNormal"><b><span lang=3D"DE">Von:</span></b><span lang=3D"DE= "> Roman Gorshunov <<a href=3D"mailto:[email protected]" target=3D"_blan= k">[email protected]</a>> <br> <b>Gesendet:</b> Mittwoch, 24. August 2022 19:18<br> <b>An:</b> Schneider Patrick, B2C-TSP-ITE <<a href=3D"mailto:Patrick.Sch= [email protected]" target=3D"_blank">[email protected]</a>= ><br> <b>Cc:</b> <a href=3D"mailto:[email protected]" target=3D"_blank">icecas= [email protected]</a><br> <b>Betreff:</b> Re: [Icecast-dev] Radio Loudness<u></u><u></u></span></p> </div> </div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> <div> <p class=3D"MsoNormal">Hello Patrick,<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">It=E2=80=99s not really a media streaming server=E2= =80=99s (Icecast) job to alter the volume. Volume is set either by the medi= a source or in player.<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">In addition to that, media streaming server does not= allow clients (players) to control media source (e.g. change volume or ski= p tracks).<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">I might misunderstood your question though.<u></u><u= ></u></p> </div> <div> <p class=3D"MsoNormal"><u></u>=C2=A0<u></u></p> </div> <div> <p class=3D"MsoNormal">Best regards,<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal">Roman Gorshunov<u></u><u></u></p> </div> <div> <p class=3D"MsoNormal"><br> <br> <u></u><u></u></p> <blockquote style=3D"margin-top:5pt;margin-bottom:5pt"> <p class=3D"MsoNormal" style=3D"margin-bottom:12pt">On 24 Aug 2022, at 11:1= 1, <a href=3D"mailto:[email protected]" target=3D"_blank"> [email protected]</a> wrote:<u></u><u></u></p> </blockquote> </div> <blockquote style=3D"margin-top:5pt;margin-bottom:5pt"> <div> <p class=3D"MsoNormal">=EF=BB=BF <u></u><u></u></p> <p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"color:black">Dear All<= br> <br> We are looking for a solution to send a volume parameter to our ExoPlayer d= uring the icecast streaming initialization phase.<br> Something like this =E2=80=A6<br> </span><span lang=3D"EN-US" style=3D"font-size:10pt;font-family:"Trebu= chet MS",sans-serif"><br> </span><span lang=3D"EN-US" style=3D"font-size:10pt;font-family:"Couri= er New"">Volume example:<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exoPlayer.sendMessage(audioRende= rer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, <span style=3D"color:black;background-color:yellow">0</span><span style=3D"= background-color:yellow">.<span style=3D"color:black">9</span>f</span>);</s= pan><u></u><u></u></p> <p class=3D"MsoNormal" style=3D"margin-bottom:12pt"><span lang=3D"EN-US" st= yle=3D"font-size:10pt;font-family:"Trebuchet MS",sans-serif;color= :black"><br> Is there a way to set the icecast egress streaming with an ExoPlayer defaul= t Volume?<br> <br> Sincerely,<br> Patrick<br> <br> <br> </span><u></u><u></u></p> <p class=3D"MsoNormal" style=3D"margin-bottom:12pt"><span lang=3D"EN-US" st= yle=3D"font-size:10pt;font-family:"Trebuchet MS",sans-serif;color= :rgb(68,84,106)">=C2=A0</span><u></u><u></u></p> <p class=3D"MsoNormal">_______________________________________________<br> Icecast-dev mailing list<br> <a href=3D"mailto:[email protected]" target=3D"_blank">Icecast-dev@xiph.= org</a><br> <a href=3D"http://lists.xiph.org/mailman/listinfo/icecast-dev" target=3D"_b= lank">http://lists.xiph.org/mailman/listinfo/icecast-dev</a><u></u><u></u><= /p> </div> </blockquote> </div> </div> </div></blockquote></div> --0000000000008539e205e711e0da-- --===============3626312055297105751== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Icecast-dev mailing list [email protected] http://lists.xiph.org/mailman/listinfo/icecast-dev --===============3626312055297105751==--