Code Monkey home page Code Monkey logo

apprtc's People

Contributors

alvestrand avatar andresusanopinto avatar chuckhays avatar cvan avatar cwilso avatar dependabot[bot] avatar doep avatar fippo avatar fischman avatar fluorescenthallucinogen avatar guidou avatar imreker avatar jiayliu avatar juberti avatar kaptenjansson avatar kisabaka avatar marwahvikas avatar milkypostman avatar minyuel avatar mirkobonadei avatar orvice avatar piranna avatar sachanacar avatar samdutton avatar stefanholmer avatar tednakamura avatar tkchin avatar wpp avatar yellowdoge avatar zjx20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apprtc's Issues

Join Button help

Hello,
I know this is the wrong place to put this but I'm not sure where to put this.
I was using apprtc.appspot.com/r/### for a project of mine, but now that the Join button has been added it no longer functions for me. I have created my own local google dev server and have it running with the modified parameter, but https is the issue. I was wondering if it was possible to clone the apprtc project in the google cloud platform and run it on my own ???.appspot.com. I know that it is possible, but I have no idea how to go about doing it.

No way to get back to landing page when waiting for other user

webrtc/samples#445

When you enter a room and no one else has joined, or if the remote side hangs up, there is no way to get back to the landing page. (You can hit back in a browser, but not in the Chrome App)

jiayliu commented 5 days ago
There is a shortcut key 'q' to hangup while waiting, but we probably should make it a visible UI element.

Extract common code from unittests into a base class.

mainly the functions makePostRequest and makeGetRequest are the same among all unittests.

I don't want to take this too far though. IMO having each test class define its own setUp and tearDown functions is the right approach even if it repeats code.

WebSocket open error

So this happened. Everything worked well yesterday, now I can't see the room url or connect with people.

screen-apprtc

Promise polyfill in testpolyfills can't chain

Our implementation of Promise in testpolyfills doesn't chain promises. I ran into this error a while back and had to restructure the app code so unit tests would pass. I didn't realize what the cause was until now.

Example code that won't work:

var p = new MyPromise(function(resolve, reject) {
console.log('starting timer');
setTimeout(function() { resolve('a'); }, 2000);
});

p.then(function(v) {
console.log(v);
return 'b';
}).then(function(s) {
console.log(s);
})

Only the last .then will be used because .then always returns the same promise, it should return a new promise or keep a list of deferred promises.

It might be simpler to see if we can use one of the existing promise polyfills.

Add GAE push-to-deploy for AppRTC

webrtc/samples#101

juberti commented on Sep 16, 2014
I would like to be able to automatically push master to AppRTC prod, instead of having to use appcfg.
See https://developers.google.com/cloud/devtools/repo/push-to-deploy.
Vikas Marwahamarwahvikas was assigned by juberti on Sep 16, 2014
Vikas Marwaha
Owner
marwahvikas commented on Sep 16, 2014
Okay will start looking into it.
Justin Ubertijuberti added the apprtc label on Oct 16, 2014
Vikas Marwahamarwahvikas removed their assignment on Oct 28, 2014
Sam Duttonsamdutton was assigned by marwahvikas on Oct 28, 2014
Vikas Marwaha
Owner
marwahvikas commented on Oct 28, 2014
Hi Justin/Sam
So in apprtc i have setup a release pipeline. I have connected the apprtc project in google developer console to the github webrtc project. See here :-
https://console.developers.google.com/project/apprtc/clouddev/pipelines?authuser=0

Now if i understand correctly it should trigger the release pipeline if we push anything to master.
As per the doc(https://cloud.google.com/tools/repo/push-to-deploy) :
If you are pushing to the repository via a repository on GitHub, use the following:
git push 'remote' master
where 'remote' is the remote name for the repository on GitHub.
I have not tested if the release pipeline is actually working. Do you guys want to give it a try?

/Vikas
Sam Dutton
Owner
samdutton commented on Oct 29, 2014
Excellent! This seems like a very sensible way to deploy apprtc.

André Susano Pinto
Owner
andresusanopinto commented on Oct 29, 2014
This seems to use a different mechanism than the app-engine push to deploy. Would it be possible to set up a release pipeline for test-rtc as well?
Vikas Marwaha
Owner
marwahvikas commented on Oct 29, 2014
hi andre, thats right. Do we have test-rtc as a project in google developer's console? https://console.developers.google.com/project?authuser=0

Add autojoin URL parameter

The old version of apprtc (prior the big UI re-design including the join button) joined directly and some depend on this.

Would it be possible to add an URL parameter "?autojoin=true" that mimic's the old behavior?

Add device selection via getSources to Apprtc

webrtc/samples#398

Not sure if this has been requested before but I think it makes sense to add device selection via JS saving the user from reloading the tab in order to change device.

samdutton commented 15 days ago
There was some discussion of this apropos of #311: the decision was to handle this in a separate PR.

Maybe should wait until RtpSender.replaceTrack() is implemented, though could do a short term hack (to handle the change of device at the 'other end' of the call)?

@juberti
Justin Uberti
Owner
juberti commented 14 days ago
The short-term way to do this is to do SDP munging to change the MSID on the local description. But it might just be easiest to wait for replaceTrack; we're trying to get to that this quarter.
Sam Dutton
Owner
samdutton commented 14 days ago
I agree: let's wait.

Christoffer Jansson
Owner
KaptenJansson commented 9 days ago
Also, it would be nice if this could be added to the new landing page as well, maybe as a first step as then you would not need to handle renegotiation etc.

TURN server integration

Dear All,

I am able to deploy and run apprtc on a local server. However i cannot get the video conference working as page displays saying "No Turn servers" . I have tried installing and running rfc5766-turn-server on the local server, but i am not very sure as how to go about integrating TURN server running on the local machine with apprtc. I do notice that there is constants.py file in the SRC folder which needs to be modified to point to the new TURN URL ( running on the localmachine ). I have tried changing the URL but still end up with the "No TURN server" message.

When i run a check on all the running processes on the local server i do notice that the TURN server is running, but when i run the turn-prober.sh in the tools directory, the result is empty( no output). Does the script need any change.

KIndly help.

AppRTC loopback should work with DTLS

Quoth https://github.com/GoogleChrome/webrtc/blob/master/samples/web/content/apprtc/apprtc.py#L395

debug = self.request.get('debug')
if debug == 'loopback':

Set dtls to false as DTLS does not work for loopback.

dtls = 'false'
Indeed, failing to disable DTLS causes errors like:
Error(transport.cc:101): Answerer must use either active or passive value for setup attribute.

Since SDES is eventually going to disappear in favor of DTLS we should make sure loopback calls work with DTLS as well. The answer is probably to set up a second PeerConnection on the same page.
Once the JS version is updated the same should be done for the Android & iOS sample apps.

AppRTC: URL param stereo=true does not result in stereo due to APM still enabled

webrtc/samples#220 (comment)

KaptenJansson commented on Nov 17, 2014
The URL param Stereo=true does not enable stereo all the way (just sets the stereo=1 in the SDP) in chrome unless echoCancellation=false is sent in as an optional gUM constraint.

This is due to the APM does not handle stereo hence it's down-mixed to mono.
The URL params &stereo=true, audio=echoCancellation=false will result in stereo.

If the intention of stereo=true is to enable proper stereo (not just setting the SDP attribute) it should also pass the audio=echoCancellation=false gum constraint.

juberti commented 15 days ago
Is AEC the only thing that doesn't tolerate stereo? Or does all APM processing have to be disabled? @KaptenJansson can you check with Tina?
Christoffer Jansson
Owner
KaptenJansson commented 14 days ago
I believe the APM converts to mono before processing the audio hence it
affects all processing. But I will double check with Tina.

Choose a running Collider instance based on prober result

We now have a second Collider instance running: apprtc-ws-2.webrtc.org

GAE should track which Collider instances are up and return the url a working instance to the client.

E.g. the prober writes to memcache key "colliderStatus" which has a boolean status for each instance. Join request handler picks a running Collider instance for the room on room creation, and save the instance with the room data in memcache, so that clients in the same room get the same Collider.

Record events for AppRTC and other demos

webrtc/samples#265

samdutton commented on Dec 4, 2014
For example, to record numbers for those who, having navigated to apprtc.appspot.com:
• call gUM
• request a connection
• get a connection
• get errors
...

Could also add events for icon/button clicks on AppRTC and other demos.
Justin Ubertijuberti added the apprtc label on Dec 4, 2014
Philipp Hancke

fippo commented on Dec 5, 2014
FWIW, here is the list of events we use for talky with a short description.

videoConnected (calls) in remotestreamadded; type (video/screen)
videoDisconnected in remotestreamremoved I think. Called only about 50% of the time since browser is closed
iceConnected (calls, really connected) candidatePair, whether ipv6 is used, whether a local/remote IPv6 candidate is available, setup time (measured from checking->connected)
iceFailed cause (called with a 30s timeout sometimes), local/remote turn/ipv6 candidate availability
localMedia (GUM success)
localMediaError (GUM failure) name (error code)
shareScreen
mute / unmute with media type (audio/video)
Philipp Hanckefippo referenced this issue on Dec 6, 2014
Open
figure out the local type preference of the active candidate #281
Sam Dutton
Owner
samdutton commented on Dec 8, 2014
Thanks Philipp – that's really useful.

Varun Singh

vr000m commented 25 days ago
In addition to those listed above we have:

iceDisconnected: if the interface disappears. If iceConnected again on the same or a different candidate pair, then we can pair disconnections and connections to calculate connectivity disruptions.

Chrome app doesn't send /bye on close.

webrtc/samples#437

There are 2 issues.

If you close the app window, no bye message is sent, because onbeforeunload is not available in Chrome Apps
Sync xhr is not available in Chrome apps, so even when you hit hangup, the messages don't get sent.
I started working on these but it isn't as simple as changing the xhr to async, because there is a specific ordering we need, and we need to finish the work before the window closes. I'll continue to work on a fix.
Jiayang Liu
Owner
jiayliu commented 6 days ago
Is there a solution for the first issue?

Chuck Hays
Owner
chuckhays commented 6 days ago
The background.js file can detect when the window closes, and can do the cleanup. This is how it can be hooked up:
chuckhays/apprtc@e1a48f5

The next step is to re-arrange things so the needed context is still available. Chrome starts disposing objects that we still need in order to make the ending calls.

New way of building doesn't work on Windows

We need to invoke grunt build on Windows to run the AppRTC test. Unfortunately grunt build ends up calling bash scripts, which fail badly on Windows:

Running "shell:buildVersion" (shell) task
'.' is not recognized as an internal or external command,
operable program or batch file.
Warning: Command failed: '.' is not recognized as an internal or external command,
operable program or batch file.

Please rewrite as python scripts.

The Analytics change breaks AppRTC test in WebRTC waterfall

webrtc/samples#467 (comment)

phoglund commented 6 hours ago
I reverted the analytics change for now.
When bringing up the server on the bots after the analytics change:

INFO 2015-02-04 09:56:16,612 devappserver2.py:557] Skipping SDK update check.
WARNING 2015-02-04 09:56:16,622 simple_search_stub.py:1002] Could not read search indexes from /tmp/appengine.apprtc.chrome-bot/search_indexes
INFO 2015-02-04 09:56:16,623 api_server.py:138] Starting API server at: http://localhost:58086
INFO 2015-02-04 09:56:16,634 dispatcher.py:164] Starting module "default" running at: http://localhost:9999
ERROR 2015-02-04 09:56:17,886 wsgi.py:219]
Traceback (most recent call last):
File "/b/build/slave/Linux_Tester/build/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle
handler = config_handle.add_wsgi_middleware(self.LoadHandler())
File "/b/build/slave/Linux_Tester/build/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler
handler = __import(path[0])
File "/b/build/slave/Linux_Tester/build/src/out/webrtc-samples/samples/web/content/apprtc/apprtc.py", line 26, in
import analytics
File "/b/build/slave/Linux_Tester/build/src/out/webrtc-samples/samples/web/content/apprtc/analytics.py", line 14, in
from oauth2client.client import SignedJwtAssertionCredentials
ImportError: cannot import name SignedJwtAssertionCredentials
INFO 2015-02-04 09:56:17,891 module.py:593] default: "GET /r/some_room?wshpp=localhost:8089&wstls=false&firefox_fake_device=1 HTTP/1.1" 500 -
ERROR 2015-02-04 09:56:17,919 wsgi.py:219]
Traceback (most recent call last):
File "/b/build/slave/Linux_Tester/build/google_appengine/google/appengine/runtime/wsgi.py", line 196, in Handle
handler = config_handle.add_wsgi_middleware(self.LoadHandler())
File "/b/build/slave/Linux_Tester/build/google_appengine/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler
handler = __import(path[0])
File "/b/build/slave/Linux_Tester/build/src/out/webrtc-samples/samples/web/content/apprtc/apprtc.py", line 26, in
import analytics
File "/b/build/slave/Linux_Tester/build/src/out/webrtc-samples/samples/web/content/apprtc/analytics.py", line 14, in
from oauth2client.client import SignedJwtAssertionCredentials
ImportError: cannot import name SignedJwtAssertionCredentials
INFO 2015-02-04 09:56:17,923 module.py:593] default: "GET /favicon.ico HTTP/1.1" 500 -
BrowserTestBase signal handler received SIGTERM. Backtrace:
#0 0x000001645df9 base::debug::StackTrace::StackTrace()

Log from http://chromegw.corp.google.com/i/chromium.webrtc/builders/Linux%20Tester/builds/33276/steps/browser_tests/logs/stdio.
phoglund
Owner
phoglund commented 6 hours ago
Where are the oauth2client imports supposed to come from? I can't see it being added or depended upon in the analytics CLs. Are they a part of appengine? We need to figure out why the bots fail to import those when they bring up the server with dev_appserver.py.

(Also, next time you do a merge like this, try to get it right in the branch before merging to master, so I don't have to revert 5 commits with fixes piled on top of each other).
phoglund
Owner
phoglund commented 2 hours ago
Strangely enough, the test works when I run on my workstation. I tried deleting my google_appengine copy and webrtc-samples; it still succeeds. Now that is weird. My first thought was that this is due to differences against the bot's PYTHONPATH, but it succeeds.

After digging around a bit, I reckon the code is supposed to come from src/out/webrtc-samples/samples/web/content/apprtc/third_party/oauth2client/client.py. Looking at that code:

if HAS_CRYPTO:

PyOpenSSL and PyCrypto are not prerequisites for oauth2client, so if it is

missing then don't create the SignedJwtAssertionCredentials or the

verify_id_token() method.

class SignedJwtAssertionCredentials(AssertionCredentials):

So the problem is that we don't have PyOpenSSL and PyCrypto? It wouldn't surprise me if the bots' system python do not have those things. Donald, what needs to happen to make that work? Can you pull the crypto stuff into third_party as some kind of build step for AppRTC? As a general thing, we can't install stuff into the bots' system python, so the app needs to pull all its dependencies by itself.

ValueError: 'out/app_engine/' unrecognized boolean; known booleans are 'true', 'yes', '1', 'false', 'no', '0'

hi, I have follow the readme to install apprtc in Ubunut14.04 which was new installtion.
Although I read the readme again and again , not found the mistake was I do.

'''

sn0rt@ubuntu-lab:~/workspace/apprtc$ ../google_appengine/dev_appserver.py --skip_sdk_update_check out/app_engine/
Traceback (most recent call last):
File "../google_appengine/dev_appserver.py", line 83, in
_run_file(file, globals())
File "../google_appengine/dev_appserver.py", line 79, in _run_file
execfile(PATHS.script_file(script_name), globals)
File "/home/sn0rt/workspace/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 985, in
main()
File "/home/sn0rt/workspace/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 975, in main
options = PARSER.parse_args()
File "/usr/lib/python2.7/argparse.py", line 1690, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/lib/python2.7/argparse.py", line 1722, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib/python2.7/argparse.py", line 1928, in _parse_known_args
start_index = consume_optional(start_index)
File "/usr/lib/python2.7/argparse.py", line 1868, in consume_optional
take_action(action, args, option_string)
File "/usr/lib/python2.7/argparse.py", line 1796, in take_action
action(self, namespace, argument_values, option_string)
File "/home/sn0rt/workspace/google_appengine/google/appengine/tools/boolean_action.py", line 63, in call
setattr(namespace, self.dest, BooleanParse(values))
File "/home/sn0rt/workspace/google_appengine/google/appengine/tools/boolean_action.py", line 78, in BooleanParse
(values, ', '.join(repr_values)))
ValueError: 'out/app_engine/' unrecognized boolean; known booleans are 'true', 'yes', '1', 'false', 'no', '0'.

'''

Add link to code repo

For example, in the footer:

<a href="http://github.com/webrtc/apprtc">View AppRTC code on GitHub</a>

Python tests fail locally after the webtest change

webrtc/samples#326

Running "shell:runPythonTests" (shell) task
apprtc_test (unittest.loader.ModuleImportFailure) ... ERROR

ERROR: apprtc_test (unittest.loader.ModuleImportFailure)

ImportError: Failed to import test module: apprtc_test
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/loader.py", line 254, in find_tests
module = self.get_module_from_name(name)
File "/usr/lib/python2.7/unittest/loader.py", line 232, in _get_module_from_name
__import(name)
File "/usr/local/google/home/jiayl/code/apprtc-fork/jiayl-webrtc/samples/web/content/apprtc/apprtc_test.py", line 4, in
import webtest
File "webtest-master/webtest/init.py", line 9, in
from webtest.app import TestApp
File "webtest-master/webtest/app.py", line 32, in
from webtest.response import TestResponse
File "webtest-master/webtest/response.py", line 5, in
from webtest import forms
File "webtest-master/webtest/forms.py", line 7, in
from bs4 import BeautifulSoup
ImportError: No module named bs4
phoglundphoglund was assigned by jiayliu on Dec 19, 2014
Jiayang Liu
Owner
jiayliu commented on Dec 22, 2014
I figured out how to fix it locally:
http://stackoverflow.com/questions/25697184/importerror-no-module-named-bs4

@phoglund

Can you modify the script to check/install the prerequisites since other people may run into this problem as well?
phoglund

phoglund commented on Dec 25, 2014
Yeah, I thought it was already doing that as a part of the make script, and
it appeared to work on the Travis boxes, but I'll make sure it always does
it.

AppRTC broken for Firefox

The AppRTC interop test found that we can no longer bring up calls with a Firefox participant. When I run the test, the Firefox participant gets

'toJSON' called on an object that does not implement interface mozRTCSessionDescription.

on the last line of

function stringifyObject(object) {
function deepCopy(src) {
if (typeof src !== "object") {
return src;
}
var dst = Array.isArray(src) ? [] : {};
for (var property in src) {
dst[property] = deepCopy(src[property]);
}
return dst;
}
return JSON.stringify(deepCopy(object));
}

I tried reproing with just connecting two Firefox tabs to apprtc.appspot.com; I couldn't see the error there but the call still didn't get up.

Memcache sometimes inconsistent and lost room record

I got a report of two users in two countries cannot connect to each other, each sitting in a room waiting as the first user.
It's possible because the memcache is not guaranteed to be consistent across data centers.
I've not found any documentation around this.
Needs investigation.

bypassJoinConfirmation as a GET parameter

Would you please support bypassJoinConfirmation as a GET parameter, rather than a server option?

I'd love to be able to send someone a room invitation that requires a single click to join a conference. So desired user journey:

  • Go to a room.
  • Copy apprtc.appspost.com/r/1234 from my location bar into IM client to a friend
  • Add ?bypassJoinConfirmation=True to the URL.
  • The friend gets "http://apprtc.appspost.com/r/1234 from my location bar into IM client to a friend
  • Clicks on the link indicating intent to join the video conference.
  • [Eliminated step: click on the JOIN button.]
  • Talk to me.

Image from phone in portrait appears incorrectly on PC during an AppRTC call

webrtc/samples#293

braveyao commented on Dec 10, 2014
Steps to reproduce:

On a PC(any latest chrome), open an apprtc.appspot.com room.
On the phone(N5 in test, any latest chrome) in portrait position, navigate to the same room.
Observed behavior:

The image from the phone will appear overly large on the PC, cutting off much of the picture, making it difficult to show all of a person's face when holding the device, and it's stretched with obvious aliasing.

On the phone side, same situation, no aliasing observed though.

Expected behavior:

Apprtc should display as much of the image coming from the device as possible.
And as discussed, it should be better to "when the aspect of the incoming video is substantially different than the display, we should not try to stretch - instead we should crop to square and letterbox".
braveyaobraveyao added the apprtc label on Dec 10, 2014
Justin Uberti
Owner
juberti commented on Dec 10, 2014
This means we want to remove the object-fit:cover CSS from remoteVideo when we detect that remoteVideo.width/height is substantially different than remoteVideo.videoWidth/Height.

Proposed metric for "substantially different": width/videoWidth > 16/9 or < 9/16

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.