<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
</head>
<body><div>Any chance you could share pertinent details of the freeswitch config you use when broadcasting ClueCon to youtube?  I'd love to compare differences with the mod_conference config I posted below to see if there's something obvious we're missing.  Also, apart from conference.conf.xml, are there other confs that would be involved with determining details of the audio encoding for record-to-rtmp?<br></div>
<div><br></div>
<div>Recording to a local mp4 file works flawlessly (just as broadcasting rtmp to UStream does).  Bandwidth shouldn't be an issue, this is indeed running on MIT's fairly beefy networking pipes.<br></div>
<div><br></div>
<div>It has been some time; we're still struggling to find an adequate multiparty video broadcast solution. We've ditched nginx-rtmp-module (it's been abandoned by its author) and are now attempting to use youtube's broadcast infrastructure instead.<br></div>
<div><br></div>
<div>Because our multiparty video system has been so buggy, most of our users just use a single-point broadcast for real-time parts. But we'd really like to get multiparty working more smoothly.<br></div>
<div><br></div>
<div>The project: <a href="https://unhangout.media.mit.edu">https://unhangout.media.mit.edu</a><br></div>
<div><br></div>
<div>best,<br></div>
<div>Charlie<br></div>
<div><br></div>
<div><br></div>
<div>On Wed, May 2, 2018, at 12:55 PM, Anthony Minessale wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div>mod_rtmp is not related to recording over rtmp its a legacy endpoint for flash audio embedded in a browser.<br></div>
<div><br></div>
<div>We broadcast ClueCon weekly on our youtube page every week and we have no audio issues but we do make sure we have at least 4-5mb stream for 1080p quality.<br></div>
<div><a href="https://www.youtube.com/watch?v=gJqkld_C0dk">https://www.youtube.com/watch?<wbr>v=gJqkld_C0dk</a><br></div>
<div><br></div>
<div>Maybe try recording to an mp4 and compare.<br></div>
<div><br></div>
<div>BTW, I haven't heard from you in 2 years!   Are you still doing the MIT thing? Ping me offline maybe.<br></div>
<div><br></div>
<div><br></div>
</div>
<div><div><br></div>
<div><div>On Tue, May 1, 2018 at 9:10 PM, Charlie DeTar <span dir="ltr"><<a href="mailto:cfd-fs@fohn.org">cfd-fs@fohn.org</a>></span> wrote:<br></div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;"><div>Hi,<br></div>
<div><br></div>
<div>I'm trying to broadcast multiparty audio and video through youtube, using this stack:<br></div>
<div><br></div>
<div>  Browser (Chrome) -> Custom webapp using Verto -> mod_conference -> record to rtmp -> youtube live<br></div>
<div><br></div>
<div>However, I'm getting poor audio quality on youtube in the live broadcast. Here's an example (this video is screen-capped from the live player, because youtube seems to clean up the recorded file after the fact.  I've tested with multiple computers/browsers that this is how it sounds to everyone during the live broadcast.):<br></div>
<div><a href="https://youtu.be/bO8t78YXxjc">https://youtu.be/bO8t78YXxjc</a><br></div>
<div><br></div>
<div>That is using the "Low Latency" setting in youtube.  The conference.conf.xml "interval" parameter seems to also have an effect; I have it set to 10 here as that seemed to get fewer pops than the default 20.<br></div>
<div><br></div>
<div>Using youtube's "Ultra-low latency" setting, things are even worse:<br></div>
<div><a href="https://youtu.be/ShuitSWYy5A">https://youtu.be/ShuitSWYy5A</a><br></div>
<div><br></div>
<div>The "Normal latency" setting is better, but still has more frequent popping than I'd like:<br></div>
<div><a href="https://youtu.be/cyZQTWDctEs">https://youtu.be/cyZQTWDctEs</a><br></div>
<div><br></div>
<div>The same configuration when pointed at UStream endpoint instead of YouTube produces fine audio quality (the following example is screencapped from a live ustream player then uploaded to youtube):<br></div>
<div><a href="https://www.youtube.com/watch?v=Ng9boh_5_ik">https://www.youtube.com/watch?<wbr>v=Ng9boh_5_ik</a><br></div>
<div><br></div>
<div>I've been trying to tweak all of the audio parameters I can find to discern some magic combination that makes youtube happy -- but I haven't been able to find something that gets rid of the popping.  The fact that UStream likes the audio just fine tells me that there's some incompatibility between freeswitch's stream and youtube, and not just brokenness on the webrtc or mux setup.  I've tried 48kHZ, 44.1kHz, and lower; stereo and mono; various interval settings; and a lot of other parameters that appear to be unrelated (does rtmp.conf.xml get involved in recording a conference at all, or is that just for incoming rtmp calls?).<br></div>
<div><br></div>
<div><br></div>
<div>Any ideas on what I might need to change to make freeswitch-to-youtube live audio smooth?<br></div>
<div><br></div>
<div><br></div>
<div>The following is my conference.conf.xml in its entirety.  Happy to share other configs if helpful.<br></div>
<div><br></div>
<div><!-- <a href="http://wiki.freeswitch.org/wiki/Mod_conference">http://wiki.freeswitch.org/<wbr>wiki/Mod_conference</a> --><br></div>
<div><!-- None of these paths are real if you want any of these options you need to really set them up --><br></div>
<div><configuration name="conference.conf" description="Audio Conference"><br></div>
<div>  <!-- Advertise certain presence on startup . --><br></div>
<div>  <advertise><br></div>
<div>    <room name="3001@$${domain}" status="FreeSWITCH"/><br></div>
<div>  </advertise><br></div>
<div><br></div>
<div>  <!-- These are the default keys that map when you do not specify a caller control group --><br></div>
<div>  <!-- Note: none and default are reserved names for group names.  Disabled if dist-dtmf member flag is set. --><br></div>
<div>  <caller-controls>    <br></div>
<div>    <group name="default"><br></div>
<div>      <control action="deaf mute" digits="**"/><br></div>
<div>  <control action="mute" digits="0"/><br></div>
<div>  <control action="vmute" digits="*0"/><br></div>
<div>  <control action="vmute snap" digits="*1"/><br></div>
<div>  <control action="vmute snapoff" digits="*2"/><br></div>
<div>  <control action="energy up" digits="9"/><br></div>
<div>  <control action="energy equ" digits="8"/><br></div>
<div>   <control action="energy dn" digits="7"/><br></div>
<div>  <control action="vol talk up" digits="3"/><br></div>
<div>  <control action="vol talk zero" digits="2"/><br></div>
<div>  <control action="vol talk dn" digits="1"/><br></div>
<div>  <control action="vol listen up" digits="6"/><br></div>
<div>  <control action="vol listen zero" digits="5"/><br></div>
<div>  <control action="vol listen dn" digits="4"/><br></div>
<div>  <control action="hangup" digits="#"/><br></div>
<div>  </group><br></div>
<div>  </caller-controls><br></div>
<div><br></div>
<div>  <!-- Profiles are collections of settings you can reference by name. --><br></div>
<div>  <profiles><br></div>
<div>    <profile name="plenary-conference-<wbr>profile"><br></div>
<div>      <param name="domain" value="$${domain}"/><br></div>
<div>      <param name="rate" value="44100"/><br></div>
<div>      <param name="channels" value="2"/><br></div>
<div>      <param name="interval" value="10"/><br></div>
<div>      <param name="interval" value="10"/><br></div>
<div>      <param name="energy-level" value="0"/><br></div>
<div><br></div>
<div>      <!-- <param name="tts-engine" value="flite"/> --><br></div>
<div>      <!-- <param name="tts-voice" value="kal16"/> --><br></div>
<div>      <param name="muted-sound" value="conference/conf-muted.<wbr>wav"/><br></div>
<div>      <param name="unmuted-sound" value="conference/conf-<wbr>unmuted.wav"/><br></div>
<div>      <!--<br></div>
<div>        Concatenate some silence on the front of conf-alone so it doesn't get<br></div>
<div>        cut off as it usually does. Syntax:<br></div>
<div>        <a href="http://lists.freeswitch.org/pipermail/freeswitch-users/2013-February/093019.html">http://lists.freeswitch.org/<wbr>pipermail/freeswitch-users/<wbr>2013-February/093019.html</a><br></div>
<div>      --><br></div>
<div><br></div>
<div>      <!--<br></div>
<div>        Disable these sounds<br></div>
<div>      <param name="alone-sound" value="file_string://silence_<wbr>stream://5000!conference/conf-<wbr>alone.wav"/><br></div>
<div>      <param name="enter-sound" value="tone_stream://%(200,0,<wbr>500,600,700)"/><br></div>
<div>      <param name="exit-sound" value="tone_stream://%(500,0,<wbr>300,200,100,50,25)"/><br></div>
<div>      <param name="kicked-sound" value="conference/conf-kicked.<wbr>wav"/><br></div>
<div>      <param name="locked-sound" value="conference/conf-locked.<wbr>wav"/><br></div>
<div>      <param name="is-locked-sound" value="conference/conf-is-<wbr>locked.wav"/><br></div>
<div>      <param name="is-unlocked-sound" value="conference/conf-is-<wbr>unlocked.wav"/><br></div>
<div>      <param name="pin-sound" value="conference/conf-pin.<wbr>wav"/><br></div>
<div>      <param name="bad-pin-sound" value="conference/conf-bad-<wbr>pin.wav"/><br></div>
<div>      --><br></div>
<div>      <param name="moh-sound" value="silence"/><br></div>
<div>      <param name="comfort-noise" value="0"/><br></div>
<div><br></div>
<div>      <param name="caller-id-name" value="$${outbound_caller_<wbr>name}"/><br></div>
<div>      <param name="caller-id-number" value="$${outbound_caller_id}"<wbr>/><br></div>
<div>      <param name="conference-flags" value="livearray-sync|<wbr>minimize-video-encoding|<wbr>livearray-json-status"/><br></div>
<div><br></div>
<div>      <!-- video params --><br></div>
<div>      <param name="video-mode" value="mux"/><br></div>
<div>      <param name="video-layout-name" value="overlaps-with-floor"/><br></div>
<div>      <param name="video-auto-floor-msec" value='10' /><br></div>
<div>      <!--<param name="video-canvas-size" value="1920x1080"/>--><br></div>
<div>      <param name="video-canvas-size" value="1280x720"/><br></div>
<div>      <param name="video-canvas-bgcolor" value="#333333"/><br></div>
<div>      <param name="video-layout-bgcolor" value="#000000"/><br></div>
<div>      <param name="video-codec-bandwidth" value="5mb"/><br></div>
<div>      <param name="video-fps" value="30" /><br></div>
<div><br></div>
<div>      <param name='auto-record' value='rtmp://<a href="http://a.rtmp.youtube.com/live2/">a.rtmp.youtube.<wbr>com/live2/</a><... youtube secret streaming key ...>'/><br></div>
<div>      <param name='min-required-recording-<wbr>participants' value='1'/><br></div>
<div>    </profile><br></div>
<div>  </profiles><br></div>
<div></configuration><br></div>
<div><br></div>
<div>______________________________<wbr>______________________________<wbr>_____________<br></div>
<div>Professional FreeSWITCH Consulting Services:<br></div>
<div><a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br></div>
<div><a href="http://www.freeswitchsolutions.com">http://www.<wbr>freeswitchsolutions.com</a><br></div>
<div><br></div>
<div>Official FreeSWITCH Sites<br></div>
<div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br></div>
<div><a href="http://confluence.freeswitch.org">http://confluence.freeswitch.<wbr>org</a><br></div>
<div><a href="http://www.cluecon.com">http://www.cluecon.com</a><br></div>
<div><br></div>
<div>FreeSWITCH-users mailing list<br></div>
<div><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.<wbr>freeswitch.org</a><br></div>
<div><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/<wbr>mailman/listinfo/freeswitch-<wbr>users</a><br></div>
<div>UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users">http://lists.<wbr>freeswitch.org/mailman/<wbr>options/freeswitch-users</a><br></div>
<div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br></div>
</blockquote></div>
<div><br></div>
<div><br></div>
<div><br></div>
<div>-- <br></div>
<div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Anthony Minessale II<br></div>
<div dir="ltr">Founder, FreeSWITCH.<br></div>
<div dir="ltr"><div><a href="http://freeswitch.com">http://freeswitch.com</a><br></div>
<div><br></div>
<div><br></div>
<div><span class="size" style="font-size:12.8px"><a href="https://youtu.be/l_hOxzCt6X4">https://youtu.be/l_hOxzCt6X4</a></span><br></div>
<div><a href="https://www.youtube.com/watch?v=oAxXgyx5jUw">https://www.youtube.com/watch?v=oAxXgyx5jUw</a><br></div>
<div><a href="https://www.youtube.com/watch?v=9XXgW34t40s" style="color:rgb(17, 85, 204);font-size:12.8px;">https://www.youtube.com/watch?v=9XXgW34t40s</a><br></div>
<div><a href="https://www.youtube.com/watch?v=NLaDpGQuZDA">https://www.youtube.com/watch?v=NLaDpGQuZDA</a><br></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div><u>_________________________________________________________________________</u><br></div>
<div>Professional FreeSWITCH Consulting Services:<br></div>
<div><a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br></div>
<div><a href="http://www.freeswitchsolutions.com">http://www.freeswitchsolutions.com</a><br></div>
<div> <br></div>
<div>Official FreeSWITCH Sites<br></div>
<div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br></div>
<div><a href="http://confluence.freeswitch.org">http://confluence.freeswitch.org</a><br></div>
<div><a href="http://www.cluecon.com">http://www.cluecon.com</a><br></div>
<div> <br></div>
<div>FreeSWITCH-users mailing list<br></div>
<div><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br></div>
<div><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br></div>
<div>UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users<br></div>
<div><a href="http://www.freeswitch.org">http://www.freeswitch.org</a><br></div>
</blockquote><div><br></div>
</body>
</html>