aws / amazon-chime-sdk-js Goto Github PK
View Code? Open in Web Editor NEWA JavaScript client library for integrating multi-party communications powered by the Amazon Chime service.
License: Apache License 2.0
A JavaScript client library for integrating multi-party communications powered by the Amazon Chime service.
License: Apache License 2.0
Describe the bug
We run into the following circular dependency warnings when running ng serve with the Angular CLI.:
WARNING in Circular dependency detected:
../chime-sdk/chime-src/dist/src/maybe/Maybe.js -> ../chime-sdk/chime-src/dist/src/maybe/None.js -> ../chime-sdk/chime-src/dist/src/maybe/Maybe.js
WARNING in Circular dependency detected:
../chime-sdk/chime-src/dist/src/maybe/None.js -> ../chime-sdk/chime-src/dist/src/maybe/Maybe.js -> ../chime-sdk/chime-src/dist/src/maybe/None.js
WARNING in Circular dependency detected:
../chime-sdk/chime-src/dist/src/maybe/Some.js -> ../chime-sdk/chime-src/dist/src/maybe/Maybe.js -> ../chime-sdk/chime-src/dist/src/maybe/Some.js
Platform
Node: v10.15.3
Project: TypeScript, but specifically within Angular
Bundler: Angular CLI internally uses webpack IIRC
There have been several issues filed such as #198 on the lack of sufficient documentation for basic scenarios on the JS SDK such as video join, basic audio controls and notifications. This is tracking improvement and discoverability in that front. Also point to code snippets in a demo to support the learning
Improve the GettingStarted or ReadMe documentation
README.md, Amazon Chime SDK Developer Guide, GettingStarted
Describe the bug
This seems to be caused by Firefox's limitation for getUserMedia API, for example, on my MacOS, getUserMedia request can only return a video of resolution 1280x720 or 640x480 on Firefox.
What resolution do you choose for the video preview ?
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Join users on different machines to the local server.
Add a "limitations of the local app" section to README to explain that meetings created by different local servers are different meetings even if they use the same meeting name.
README.md
My assumption: This library is likely to be used by a team investing 1-4 person-months on an implementation. Ideally 2-3 person-weeks interacting with this specific sdk, and should be able to grasp the concepts and outline of the sdk in 1-2 days to begin an implementation.
I don't see there being proper documentation that is meant for a customer to complete this task in a reasonable amount of time.
I'm 15 hours into trying to use this library to have a 3 way video call. The documentation does not describe the concepts and flows I need. There is very little high level overview of the various components, and reading the source code takes too much dot connecting between too many files. I still don't know the basics of what I am supposed to do, I'm just connecting random things together to see if they work. There are hundreds of methods and properties to sort through and guess if they are needed for my use case.
I have tried reading the source code. I have read all the demos. I've tried deconstructing the demos, i've followed the guides, i've looked at all the documentation methods, I've tried drawing a map of the components by hand. The only decent documentation are some tests.
Describe the bug
It has been reported that the video tile update for an attendee can occur before the realtime controller reports that the attendee is present. We should look into why this can happen and see if there is an opportunity to strictly sequence these either within the SDK or on the server.
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
From #198
Logs
logs_android_tablet_test.txt
Describe the bug
Describe the bug and the timestamp at which it happened relative to the timestamp in the log file.
I am testing by running the android demo on two android devices: Samsung Tab A and Pixel 3.
Both devices can join the same meeting and see the other device's video feed.
Neither device outputs any audio despite being on full volume, unmuted, and mics on.
I'm wondering how to get audio working and if it's been working at all since the demo was created.
Platform
Using the latest Chrome browser, running demo meetingV2, and clicking the "Share" button, I do get a popup where I can select e.g. the entire screen to share, however, after clicking the "Share" button of the popup, nothing appears to be shared.
The javascript console shows the following error:
systemDefaultContentShareController.js:24 Uncaught (in promise) DOMException: Permission denied by system
Is there a way to test whether the user can share content to begin with, before showing the popup? Or, could a callback be added (perhaps in the ContentShareObserver) that is called whenever it turns out sharing is not permitted by the system?
I would like to provide my users the ability to record their meeting and store in S3 for later viewing.
Perhaps provide a roadmap, or a way to request enhancements?
All of it. :)
DefaultVideoStreamIndex "lazily" computes media stream mappings. It is also responsible for computing the streams that client wants to subscribe.
It's better that the subscription calculation algorithm is componentized to allow dynamic configuration of subscription algorithm.
VideoStreamIndex should also keep stream allocation information for consistency with server.
Describe the bug
Add unit tests for the following classes:
ScreenShareViewFacade - (
)
ScreenShareFacade - ( )
DefaultDeviceController
Screenshots
Platform
Describe the bug
Some tests use DOM mock behavior that create timeouts. These timeouts sometimes expire after the test finishes and can lead to unpredictable tests since the DOMMock may cleanup before then.
The first thing to do would be to fix existing failures when running npm run test:slow.
We may want to strictly sequence changes to the global DOM object so that it is not possible for tests to step on each other as easily.
Platform
Reproduces in the demo app. On macOS Chrome:
I would like to Add the javascript to my app dynamically instead of through npm so as to reduce my app's footprint. I'm looking for a link similar to this: https://sdk.amazonaws.com/js/aws-sdk-2.648.0.min.js
Provide a link for downloading the sdk minified js directly
all of it
Describe the bug
After backgrounding Safari, the microphone audio stops sending to other participants on the call. To background Safari, the window either needs to be minimized to the dock or the user needs to switch to another desktop on macOS. Simply bringing another window to the foreground is not sufficient to trigger this issue.
Platform
Where necessary business logic should also be lightly commented when its purpose is not clear.
From #198
For example: User wants to start pause and end media recording.
For example: Include a section where example of Media recording is already explained how to use.
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occured. For multi-participant calls, attach a log file for each participant if possible.
Meeting and attendee IDs:
List the meeting and attendee IDs that the attached logs apply to.
Timeline
Outline the main actions the user performed and when:
Describe the bug
This is more of a feature request.
Currently, we can only get the muted state of a remove participant by passing in a callback function into realtimeSubscribeToVolumeIndicator.
It'd be good if the remote muted/unmuted stated was handled separately, considering the audio streams are all being consolidated into 1 audio stream, there are use cases where the consuming app would not have a need to subscribe to individual volume events.
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Describe the bug
When in Safari, the browser tab will crash and reload the page when remote video tiles are added or toggled.
There are two different crash signatures for Safari that can be seen in the system logs:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.WebCore 0x0000000102fab33c WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated(WebCore::MediaStreamTrackPrivate&, WebCore::MediaSample&) + 28
1 com.apple.WebCore 0x000000010457036c WebCore::MediaStreamTrackPrivate::forEachObserver(WTF::Function<void (WebCore::MediaStreamTrackPrivate::Observer&)> const&) const + 652
2 com.apple.WebCore 0x0000000104570b43 WebCore::MediaStreamTrackPrivate::videoSampleAvailable(WebCore::MediaSample&) + 259
3 com.apple.WebCore 0x0000000104574d4c WebCore::RealtimeMediaSource::forEachObserver(WTF::Function<void (WebCore::RealtimeMediaSource::Observer&)> const&) const + 652
4 com.apple.WebCore 0x0000000104575068 WebCore::RealtimeMediaSource::videoSampleAvailable(WebCore::MediaSample&) + 280
5 com.apple.WebCore 0x000000010336a7a9 WTF::Detail::CallableWrapper<WebCore::RealtimeIncomingVideoSourceCocoa::OnFrame(webrtc::VideoFrame const&)::$_7, void>::call() + 265
6 com.apple.JavaScriptCore 0x00000004208f65f9 WTF::dispatchFunctionsFromMainThread() + 361
7 com.apple.Foundation 0x00007fff4e41b302 __NSThreadPerformPerform + 328
8 com.apple.CoreFoundation 0x00007fff4c13fde3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
9 com.apple.CoreFoundation 0x00007fff4c13fd89 __CFRunLoopDoSource0 + 108
10 com.apple.CoreFoundation 0x00007fff4c12374b __CFRunLoopDoSources0 + 195
11 com.apple.CoreFoundation 0x00007fff4c122d15 __CFRunLoopRun + 1189
12 com.apple.CoreFoundation 0x00007fff4c12261e CFRunLoopRunSpecific + 455
13 com.apple.Foundation 0x00007fff4e38732f -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 280
14 com.apple.Foundation 0x00007fff4e387204 -[NSRunLoop(NSRunLoop) run] + 76
15 libxpc.dylib 0x00007fff782b6077 _xpc_objc_main + 552
16 libxpc.dylib 0x00007fff782b5b79 xpc_main + 433
17 com.apple.WebKit 0x0000000101ea0e53 WebKit::XPCServiceMain(int, char const**) + 547
18 libdyld.dylib 0x00007fff7807d3d5 start + 1
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.WebCore 0x000000010b85873b WTF::Detail::CallableWrapper<WebCore::MediaStreamTrackPrivate::sourceMutedChanged()::$_18, void, WebCore::MediaStreamTrackPrivate::Observer&>::call(WebCore::MediaStreamTrackPrivate::Observer&) + 11
1 com.apple.WebCore 0x000000010b85536c WebCore::MediaStreamTrackPrivate::forEachObserver(WTF::Function<void (WebCore::MediaStreamTrackPrivate::Observer&)> const&) const + 652
2 com.apple.WebCore 0x000000010b8559c9 WebCore::MediaStreamTrackPrivate::sourceMutedChanged() + 57
3 com.apple.WebCore 0x000000010b859d4c WebCore::RealtimeMediaSource::forEachObserver(WTF::Function<void (WebCore::RealtimeMediaSource::Observer&)> const&) const + 652
4 com.apple.WebCore 0x000000010b859a4b WebCore::RealtimeMediaSource::notifyMutedChange(bool) + 155
5 com.apple.WebCore 0x000000010b8564c0 WebCore::RealtimeIncomingVideoSource::setSourceTrack(rtc::scoped_refptr<webrtc::VideoTrackInterface>&&) + 112
6 com.apple.WebCore 0x000000010a235c08 WTF::Detail::CallableWrapper<WebCore::LibWebRTCMediaEndpoint::OnTrack(rtc::scoped_refptr<webrtc::RtpTransceiverInterface>)::$_13, void>::call() + 600
7 com.apple.JavaScriptCore 0x000000010d7585f9 WTF::dispatchFunctionsFromMainThread() + 361
8 com.apple.Foundation 0x00007fff4fe3a302 __NSThreadPerformPerform + 328
9 com.apple.CoreFoundation 0x00007fff4db5ede3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
10 com.apple.CoreFoundation 0x00007fff4db5ed89 __CFRunLoopDoSource0 + 108
11 com.apple.CoreFoundation 0x00007fff4db4274b __CFRunLoopDoSources0 + 195
12 com.apple.CoreFoundation 0x00007fff4db41d15 __CFRunLoopRun + 1189
13 com.apple.CoreFoundation 0x00007fff4db4161e CFRunLoopRunSpecific + 455
14 com.apple.Foundation 0x00007fff4fda632f -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 280
15 com.apple.Foundation 0x00007fff4fda6204 -[NSRunLoop(NSRunLoop) run] + 76
16 libxpc.dylib 0x00007fff79cd5077 _xpc_objc_main + 552
17 libxpc.dylib 0x00007fff79cd4b79 xpc_main + 433
18 com.apple.WebKit 0x0000000109183e53 WebKit::XPCServiceMain(int, char const**) + 547
19 libdyld.dylib 0x00007fff79a9c3d5 start + 1
Platform
I'm trying to add and remove observers.
On the audio video facade the methods are addObserver/removeObserver
. On the screen share facades they are registerObserver/unregisterObserver
. These should be consistent.
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occured. For multi-participant calls, attach a log file for each participant if possible.
Meeting and attendee IDs:
List the meeting and attendee IDs that the attached logs apply to.
Conference id : cd9c6f8a-d1d2-4832-8cc6-24cb4ab948ae
Timeline
Outline the main actions the user performed and when:
Describe the bug
Describe the bug and the timestamp at which it happened relative to the timestamp in the log file.
[Warning] 2020-01-10T03:09:36.800Z [WARN] SDK - reconnection recommended due to: no packets received: true, missed pongs: false, bad audio delay: false
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Sometimes on Chrome and Chromium there is no attendee presence event generated when joining without an audio device.
Hi,
I don't know if this is the right place to ask this question. But, I would like to know how we can integrate services like AWS Transcribe, Rekogntion with chime sdk. Specifically, I'd like to know how to send the audio/video to these services to get responses. Any pointers would be very much appreciated.
Thanks
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occurred. For multi-participant calls, attach a log file for each participant if possible.
Logs: reconnect-loop.txt
Describe the bug
Unplugging explicitly selected audio device causes reconnect loop due to stats showing no receive packets for the audio track.
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Hi,
I am integrating chime SDK in a Laravel project. Is there any demo available in javascript version instead of typescript(https://github.com/aws/amazon-chime-sdk-js/tree/master/demos/browser)?
Thanks
Send/receive bandwidth metrics for Safari not plumbed through observer callback
INFO-level logs:
DeviceChangeObserverNotCalledBug.log
The above logs show an absence of logs for listAudioInputDevices which should have been called when I plugged in my headset.
Meeting and attendee IDs:
"MeetingId": "6171c575-8311-4cdf-a8dc-079b6cc250c1"
"AttendeeId": "7f46ac0f-8d7a-4894-9844-ba9b9fe79246"
Timeline
Outline the main actions the user performed and when:
Describe the bug
The device change observer is not being called when device Id is the same.
Platform
On a fresh Amazon Linux EC2 instance:
[ec2-user@ip-10-0-101-221 ~]$ git clone https://github.com/aws/amazon-chime-sdk-js.git
Cloning into 'amazon-chime-sdk-js'...
remote: Enumerating objects: 262, done.
remote: Counting objects: 100% (262/262), done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 1685 (delta 69), reused 200 (delta 51), pack-reused 1423
Receiving objects: 100% (1685/1685), 838.40 KiB | 1.88 MiB/s, done.
Resolving deltas: 100% (708/708), done.
[ec2-user@ip-10-0-101-221 ~]$ cd amazon-chime-sdk-js/
[ec2-user@ip-10-0-101-221 amazon-chime-sdk-js]$ node -v
v13.3.0
[ec2-user@ip-10-0-101-221 amazon-chime-sdk-js]$ npm -v
6.13.1
[ec2-user@ip-10-0-101-221 amazon-chime-sdk-js]$ npm install amazon-chime-sdk-js --save
npm ERR! code ENOSELF
npm ERR! Refusing to install package with name "amazon-chime-sdk-js" under a package
npm ERR! also called "amazon-chime-sdk-js". Did you name your project the same
npm ERR! as the dependency you're installing?
npm ERR!
npm ERR! For more information, see:
npm ERR! <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
npm ERR! A complete log of this run can be found in:
npm ERR! /home/ec2-user/.npm/_logs/2019-12-05T05_44_16_302Z-debug.log
The master branch contains a demo example named demos/browser/app/meetingV2. In there the class DefaultModality is used. This class does not exist in v1.1.0 of the SDK. When trying to install the latest version of the SDK via yarn upgrade the following is output:
∴ yarn upgrade chime
yarn upgrade v1.22.0
Couldn't find any versions for "amazon-chime-sdk-js" that matches "^1.1.22"
? Please choose a version of "amazon-chime-sdk-js" from this list: (Use arrow keys)
❯ 1.1.0
1.0.0
When will the latest version from master be available to install via yarn?
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occured. For multi-participant calls, attach a log file for each participant if possible.
Meeting and attendee IDs:
List the meeting and attendee IDs that the attached logs apply to.
Timeline
Outline the main actions the user performed and when:
2020-02-20T18:23:20.536Z [ERROR] SDK - realtime error: TypeError: Cannot read property 'style' of null: TypeError: Cannot read property 'style' of null
2020-02-20T18:23:20.537Z [ERROR] SDK - connection failed with status code: RealtimeApiFailed
Describe the bug
Describe the bug and the timestamp at which it happened relative to the timestamp in the log file.
A demo app's bug causes Chime SDK to stop the session because SDK does not catch an error in its real-time callback.
Steps to reproduce
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occured. For multi-participant calls, attach a log file for each participant if possible.
Logs:
456e2208-1d52-4345-90b4-20c641d3543e-2019-11-21T20_18_18.674Z.log
Meeting and attendee IDs:
Meeting ID: 3203d66c-9c40-40bf-be55-727f638cf9b9
Attendee ID: 2479508e-70b0-4296-bd47-9b76e5d21ab7
Timeline
Describe the bug
This was a one-off issue described by the user as:
If party A is sharing screen, then party B wants to share screen and clicks start sharing (and A hasn't stopped sharing, so in effect swapping over) then it hangs
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Currently the minimal demo application is incomplete so its not clear what the purpose is. Perhaps we can use it to demonstrate as a simple Vanilla JS demo app. This would require to be clear.
The existing documentation doesn't make the intention of this demo clear.
README.md, Amazon Chime SDK Developer Guide, etc.
From #198
From #198
From #198
From DefaultVideoTile.disconnectVideoStreamFromVideoElement():
// Need to yield the message loop before clearing `srcObject` to
// prevent Safari from crashing.
new AsyncScheduler().start(() => {
videoElement.srcObject = null;
});
DefaultVideoTile.disconnectVideoStreamFromVideoElement()
is setting videoElement.srcObject
to null
after a slight delay. However, disconnectVideoStreamFromVideoElement()
and all callers, such as VideoTileController.unbindVideoElement()
-are not async functions.
See this example:
// Assume that a <video> element "element" is bound to oldTileId.
// Unbind "element" asynchronously.
VideoTileController.unbindVideoElement(oldTileId);
// Bind "element" synchronously.
VideoTileController.bindVideoElement(newTileId, element);
// After binding "element," "element.srcObject" is set to null.
Set videoElement.srcObject
to null
synchronously. We need to investigate why this can cause Safari to crash.
Make all callers to async
. This requires significant changes that should be related to 2.0.0
.
From #198
From #198
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occured. For multi-participant calls, attach a log file for each participant if possible.
screenshare-toggeled-bug.log
Meeting and attendee IDs:
List the meeting and attendee IDs that the attached logs apply to.
MeetingId: ab05ded2-b910-4a8d-8404-2fac42330a99
AttendeeId: e19373bd-8d97-46c4-9204-40a46ae55bfe
Timeline
Outline the main actions the user performed and when:
Describe the bug
Describe the bug and the timestamp at which it happened relative to the timestamp in the log file.
As seen above, DefaultScreenViewingDeltaRenderer is closed when screenshare stops. This closes screen viewing.
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Important: Please attach INFO-level logs with timestamps to the report from before the session started up until the point at which the unexpected behavior occurred. For multi-participant calls, attach a log file for each participant if possible.
Describe the bug
A realtime error was encountered due to the active speaker detector throwing an error. This occurred for all participants and caused their meeting sessions to tear down.
Log: realtime-error.log
When multiple monitors are plugged in - sometimes screen sharing doesnt begin unless the presenter actively interacts with the screen.
Platform
OS: win10
Browser: chrome
Browser Version: 79
Amazon Chime SDK GitHub Commit: 6afdca0
This is not specific to Chime SDK and could be reproed with an independent WebRtc app. https://janus.conf.meetecho.com/screensharingtest.html
Call out in the API or so that this is a limitation of the browser and not a chime SDK bug
README.md, Amazon Chime SDK Developer Guide, etc.
From #198
Describe the bug
Issue was reproduced on browser sample application be following these steps.
User A and B are joined to a meeting session
User A starts screen share view
User B starts screen sharing and share an application
User A can see the screen share
Now User B closes the application
User A can still see the screen share
Screenshots
If applicable, add screenshots to help explain the problem.
Platform
Amazon Chime SDK Integration with Ionic Framework
Platform
Bug Description
We are trying to integrate the Amazon Chime SDK with Ionic framework(using Angular) in Android device. We were able to join a meeting from browser and ionic integrated android device, And able to share audio/video from browser application to android device.We are getting video/audio preview in device shared by browser application.
But, the issue is we are unable to access the device's inbuilt audio/video hardware components permission and hence we are not getting the preview in desktop.
We even tried to access the device's audio/video components by writing the following lines in AndroidManifest.xml and have given app-level permissions in device to access Camera and Microphone.
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
When we try to toggle camera/microphone we are getting an error in console and same is attached below.
We would like to know that, is Amazon Chime SDK supports to integrate with Mobile applications?
If yes please let us know how we can solve the below issue.
Defined in SignalingProtocol.proto L114, BitrateFrame contains the information of average bitrate of video streams available, we should use this information during re-subscription.
Allow for subscribing to beginning and end of attendee and volume updates.
INFO log
[INFO] Express::MeetingSaga::startScreenShare: Screen share is not supported for browser or version | web.aa1a246dfe507dcb85f3.js:1:1163475
Discribe the bug
Hi, the documentation (amazon-chime-user-guide/doc_source/screen-share.md) states that the web application supports screen share on Firefox for Linux OS without the need of plugins. However it seems that it is not supported for Firefox ver 74.0 (64bit) for Ubuntu, screen share is unable to start.
If there are no plans to support it, should the documentation change?
Platform
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.