And you could fiddle with the resolution without audio:true? At least I couldn't reproduce.
This may be of interest: http://stackoverflow.com/questions/28282385/webrtc-firefox-constraints/28911694#28911694 *Andreas Pehrson *--- Software Engineer (+47) 959 60 374 | [email protected] | www.telenordigital.com On Thu, Jun 18, 2015 at 3:46 PM, Daasoundz DJ <[email protected]> wrote: > Le jeudi 18 juin 2015 04:36:42 UTC+2, Andreas Pehrson a écrit : > > I'm guessing this happens because in the default case > > generateMediaConstraints() returns {video:true,audio:true} but when > you're > > fiddling with resolution and frame rate you're omitting the audio > property. > > > > *Andreas Pehrson *--- Software Engineer > > > > (+47) 959 60 374 | [email protected] | > > www.telenordigital.com > > > > On Tue, Jun 16, 2015 at 3:00 PM, <[email protected]> wrote: > > > > > Hi, > > > > > > I'm an intern of a well-known telecommunication french operator. > > > The subject of my intership is evaluating the WebRTC technology's > > > performances through google Chrome and Mozilla Firefox. > > > First I studied how work this technology with Firefox Hello, to > understand > > > what is WebRTC, how it works, how media-stream are exchanged etc. > > > > > > Then I started to work with the website https://apprtc.appspot.com/ On > > > chrome and Firefox, to compare the behavior of every brower through the > > > same webRTC app. Till now everything was good except the fact that I > didn't > > > master content injection (video resolution), the A/V bitrate and A/V > > > encoders. 'caus as you know it, the video bitrate is blocked around > > > 2Mb/sec. And we would like to see if it's possible to unleash the video > > > bitrate to have a better quality and by using another less greedy > encoder > > > (VP8 ? H.264?) > > > > > > A formation was given to my colleagues to develop their own WebRTC app > > > using javascript language. It allows us to manage all parameters of a > > > WebRTC communication (media constraints etc.). So now I can inject > 1080p > > > content into the communication, unleash the bitrate, manage the > displayed > > > resolution. Just to specify, I used Chrome first. > > > Anytime I modify the content of the SDP packet to manage de max > bitrate : > > > > > > localSDP.sdp = localSDP.sdp.replace( /a=mid:video\r\n/g , > > > 'a=mid:video\r\nb=AS:4000\r\n'); > > > > > > So I could therefore make my own tests without any problems on Chrome. > But > > > I have to compare my results with another A/V encoder for subjectives > tests. > > > On Mozilla Firefox, the H.264 encoder works, even if it's not selected > by > > > default into a WebRTC communication (using Firefox Hello or apprtc). > So I > > > modify the content of the SDP packet to force the choice of the A/V > encoder > > > (replacing VP8 with H.264): > > > > > > localSDP.sdp = localSDP.sdp.replace( / 120 126 /g,' 126 '); > > > > > > I can do the same thing to replace the opus encoder with the G.722 > encoder. > > > If forcing A/V encoders works without problems, the media-stream parts > are > > > giving me headaches. In fact, if I inject 1080p content (with Firefox > > > obviously) during a WebRTC app, the resolution in return has been > > > downscaled to 640x480. And it doesn't depends on the resolution > injected, > > > even if the source resolution is smaller than 640x480, what I see in > output > > > is 640x480. But if I modify the displayed resolution, it's good in > output > > > but I lose the audio stream. As a matter of fact, till i try to modify > the > > > resolution, when the communication begin, the browser doesn't ask me to > > > share the microphone. > > > > > > To explain a bit more how work the app I use, i give you some > sourcecode > > > (not all because i didn't develop it, so I can't share all the code) : > > > > > > var mediaConstraints = {video:true,audio:true}; > > > [...] > > > mediaConstraints = generateMediaConstraints(); > > > [...] > > > function generateMediaConstraints(){ > > > if (replaceResolution == true && replaceFPS == true && > > > replaceRatio == true){ > > > return { > > > video: { > > > mandatory: { > > > maxWidth: userMaxWidht.value, > > > maxHeight: userMaxHeight.value, > > > minWidth: userMinWidht.value, > > > minHeight: userMinHeight.value, > > > > > > maxAspectRatio: userRatio.value, > > > > > > minAspectRatio: userRatio.value, > > > > > > minFrameRate: userFPS.value, > > > > > > maxFrameRate: userFPS.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == true && replaceFPS == true && > > > replaceRatio == false){ > > > return { > > > video: { > > > mandatory: { > > > maxWidth: userMaxWidht.value, > > > maxHeight: userMaxHeight.value, > > > minWidth: userMinWidht.value, > > > minHeight: userMinHeight.value, > > > > > > minFrameRate: userFPS.value, > > > > > > maxFrameRate: userFPS.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == true && replaceFPS == false && > > > replaceRatio == true){ > > > return { > > > video: { > > > mandatory: { > > > maxWidth: userMaxWidht.value, > > > maxHeight: userMaxHeight.value, > > > minWidth: userMinWidht.value, > > > minHeight: userMinHeight.value, > > > > > > maxAspectRatio: userRatio.value, > > > > > > minAspectRatio: userRatio.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == true && replaceFPS == false && > > > replaceRatio == false){ > > > return { > > > video: { > > > mandatory: { > > > maxWidth: userMaxWidht.value, > > > maxHeight: userMaxHeight.value, > > > minWidth: userMinWidht.value, > > > minHeight: userMinHeight.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == false && replaceFPS == true && > > > replaceRatio == true){ > > > return { > > > video: { > > > mandatory: { > > > > > > maxAspectRatio: userRatio.value, > > > > > > minAspectRatio: userRatio.value, > > > > > > minFrameRate: userFPS.value, > > > > > > maxFrameRate: userFPS.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == false && replaceFPS == true && > > > replaceRatio == false){ > > > return { > > > video: { > > > mandatory: { > > > > > > minFrameRate: userFPS.value, > > > > > > maxFrameRate: userFPS.value > > > } > > > } > > > }; > > > } > > > else if(replaceResolution == false && replaceFPS == false && > > > replaceRatio == true){ > > > return { > > > video: { > > > mandatory: { > > > > > > maxAspectRatio: userRatio.value, > > > > > > minAspectRatio: userRatio.value > > > } > > > } > > > }; > > > } > > > else{ > > > return {video:true,audio:true} > > > } > > > } > > > > > > I tried to put the audio variable into one of the subconditions' > function, > > > ie : > > > else if(replaceResolution == true && replaceFPS == false && > replaceRatio > > > == false){...} > > > > > > It works because the audio stream work, but I can't manage the > resolution > > > anymore. I don't underderstand why and how. > > > Colleagues who développed this app left the compagny. I'm a really ban > > > developper (well, I'm not a dev). I'm blocked on this f****** since one > > > week. I don't see what to do. > > > Could you please help me to fix that ? maybe give me the solution I > dunno. > > > > > > Thanks in advance. > > > _______________________________________________ > > > dev-media mailing list > > > [email protected] > > > https://lists.mozilla.org/listinfo/dev-media > > > > > I erased the default returns value "{video:true,audio:true}" and put the > audio property in any sub-conditions of the function. Now it works. But > like I said, when the audio work, I can't fiddling with resolution. That's > what I don't understand. > _______________________________________________ > dev-media mailing list > [email protected] > https://lists.mozilla.org/listinfo/dev-media > _______________________________________________ dev-media mailing list [email protected] https://lists.mozilla.org/listinfo/dev-media

