Giter Club home page Giter Club logo

amazon-chime-sdk-recording-demo's Introduction

Amazon Chime SDK recording demo

This repository contains resources for building a demo application that records media from Amazon Chime SDK meeting sessions. Included is a Docker image and serverless AWS CloudFormation templates that you can deploy to your AWS Account. The Walkthrough will show you how to create a container using the Docker image and upload it to Amazon Elastic Container Registry (ECR), which is referenced by a Amazon Elastic Container Service (ECS) task. AWS CloudFormation templates orchestrate resources (including Amazon APIGateway, Amazon Lambda, and Amazon ECS) that run the recording demo application. When deployed, the startRecording API will enable "a bot" (i.e. a headless meeting attendee) to join an Amazon Chime SDK meeting session via a URL and record the meeting's audio, video and screen share in high definition (1080p at 30fps by default, but configurable) and stream output to a specified Amazon S3 bucket. The stopRecording API will stop the ECS task and complete the upload.

Prerequisites

For this walkthrough, you should have the following prerequisites:

  • An AWS account
  • Log into your AWS account with an IAM role that has the AdministratorAccess policy.

Walkthrough

The sections as enumerated below will walk you through the process of creating and recording a Chime SDK meeting:

  • Setup AWS Cloud9 environment and clone the demo application
  • Create an Amazon Elastic Container Registry (ECR) and register a Docker container image
  • Deploy the Amazon Chime SDK Recording template
  • Start an Amazon Chime SDK meeting with the serverless demo application and join with multiple participants
  • Start the meeting recording
  • Stop the recording and view the recording artifact

Create an AWS Cloud9 environment

Note: Use the same AWS Region to create your Cloud9 environment where you want to deploy the recording application.

  1. Log into the AWS console with your AWS credentials and go to the AWS Cloud9 Console. Note: This link is for us-east-1 region.
  2. If you have previously set up a AWS Cloud9 environment in your account you can use it and skip this step entirely.
  3. Press the Create environment button or go here.
  4. For the Name enter and press the Next step button.
  5. For Environment Settings
    • For Instance Type, select Other instance type and select t3.medium from the dropdown.
    • For Platform, select Ubuntu Server 18.04 LTS
    • Press the Next step button.
  6. Review the Environment name and settings and press the Create environment button. You can optionally use your own Amazon EC2 instance if you have configured.
  7. Wait for the environment to start.

Create a Amazon ECR repository, build and push the docker image to Amazon ECR

  1. In the AWS Cloud9 instance, run the below command to create a repository in Amazon ECR

    aws ecr create-repository --repository-name <repository-name>
    

    You will get a response similar to this

    {
        "repository": {
            "repositoryArn": "arn:aws:ecr:us-east-1:123456789012:repository/chime-sdk-recording-demo",
            "registryId": "123456789012",
            "repositoryName": "chime-sdk-recording-demo",
            "repositoryUri": "123456789012.dkr.ecr.us-east-1.amazonaws.com/chime-sdk-recording-demo",
            "createdAt": 1585247726.0,
            "imageTagMutability": "MUTABLE",
            "imageScanningConfiguration": {
                "scanOnPush": false
            }
        }
    }
    
  2. In the AWS Cloud9 instance, execute the following commands to download the recording demo.

    git clone https://github.com/aws-samples/amazon-chime-sdk-recording-demo.git
    cd amazon-chime-sdk-recording-demo
    
  3. Execute the following command with the value of repositoryUri from step 1 to build and push the docker image to Amazon ECR

    make ECR_REPO_URI=<repositoryUri>
    

    Once the above commands execute successfully you will see an entry for the image in Amazon ECR as follows:

    ECR Repo

    Note: If this command fails due to AWS CLI version 2.0 not available, you can follow the instructions given here: Installing the AWS CLI version 2 on Linux and try again.

Deploy an Amazon Chime SDK Recording AWS CloudFormation Template

  1. Execute the following command to create a AWS CloudFormation stack containing an Amazon ECS cluster, Amazon ECS task definition, Amazon S3 bucket, Amazon Lambda and an Amazon API Gateway deployment along with IAM roles and networking resources required for the Amazon ECS Cluster including an Amazon VPC, subnets, security groups, and an auto-scaling group.

    node ./deploy.js -b <my-bucket> -s <my-stack> -i <my-docker-image-uri> -r <region>
    

    Here is an example:

    node ./deploy.js -b recording-demo-cnf-deploy-bucket -s recording-demo-cnf-stack -i 123456789012.dkr.ecr.us-east-1.amazonaws.com/recording-demo:latest -r us-east-1
    

    The above step deploys an AWS CloudFormation stack that creates resources needed to run the recording service. It may take several minutes to complete. You will get an Amazon API Gateway invoke URL in the output. Deploy output

Start an Amazon Chime SDK meeting with our serverless demo and join with multiple participants

  1. At this point you can use our Amazon Chime SDK demo application by executing the following

    cd ../
    git clone https://github.com/aws/amazon-chime-sdk-js
    cd amazon-chime-sdk-js/demos/serverless
    npm install
    
  2. Deploy the demo using:

    node ./deploy.js -r us-east-1 -b <my-bucket> -s <my-stack-name> -a meeting
    

    The script will create an Amazon S3 bucket and AWS CloudFormation stack with Amazon Lambda and Amazon API Gateway resources required to run this demo. After the script finishes, it will output a URL that can be opened in a browser.

    You will get a URL similar to https://abcdefghij.execute-api.us-east-1.amazonaws.com/Prod/ in the output of this step.

  3. Open the Amazon Chime SDK serverless demo application using the link which was obtained in the previous step in multiple tabs in any web browser supported by the Amazon Chime SDK to simulate several participant joins. Optionally enable video or content sharing modalities for each participant in addition to audio.

    NOTE: This would be the meetingURL that would be used later for passing as a parameter to the StartRecording API. It would look something like this https://abcdefghij.execute-api.us-east-1.amazonaws.com/Prod/?m=<meeting-id>. See the screenshot below to see the URL highlighted in the red box.

    Serverless demo

    Example: If the meeting URL is https://abcdefghij.execute-api.us-east-1.amazonaws.com/Prod/?m=MyMeetingTest, then the encoded URL which needs to be passed to the meeting recorder should look like https%3A%2F%2Fabcdefghij.execute-api.us-east-1.amazonaws.com%2FProd%2F%3Fm%3DMyMeetingTest

Start the meeting recording

There are multiple ways for invoking a REST API in Amazon API Gateway. In this example we will use the Postman app.

  1. Follow the steps highlighted in this document to install the Postman app.

    You need to select “AWS Signature” and add your AccessKey, SecretKey & AWS Region in the Authorization tab.

    postman auth

  2. Start recording by passing start to recordingAction and a url encoded to meetingURL for our demo application as query parameters in the POST request to API Gateway.

    start recording

    At this point the entire web page is captured by FFmpeg at 1280 X 720 fidelity and automatically transcoded and uploaded to Amazon S3. The file created in Amazon S3 will remain hidden until the capture is complete. Our demo application has been modified to suppress prompts for input device permissions and display customized UI for the recording bot.

    recording bot

Stop the recording and view the recording artifact

  1. To stop the recording, we need to pass the ECS task ARN(received in the API response which started the recording) to taskId, and stop to recordingAction.

    stop recording

  2. Once the recording stops, open the AWS Console and navigate to Amazon S3. You will find a recording in the bucket chime-meeting-sdk-<aws-account-id>-<region>-recordings, with a key name YYYY/MM/DD/HH/.mp4.

    recording artifacts

Cleaning up

To avoid incurring future charges, please delete any resources in your account that you are not using such as files in Amazon S3, Amazon ECS and Amazon Lambda instances, AWS Cloud9 environment and Amazon API Gateway entries.

FAQ

  1. If you encounter IOError: [Errno 28] No space left on device. during deployment, you can remove unused docker images/process by:

    docker system prune
    
    or manually remove docker containers
    docker rm ID_or_Name 
    
    and/or manually remove docker images
    docker rmi $(docker images -a -q)
    
  2. How to reduce the start time of the bot joining the meeting?

    Here are some improvements that you can make to reduce the start latency.

    1. There is a ECS_IMAGE_PULL_BEHAVIOR in ecs-agent-config which you can use to cache the docker image. This reduces the time to pull the image from ECR and use it to spin up the ECS Task. But for using this, you might have to get rid of this placement constraint to use distinct instances for placing your tasks. If you use a larger instance to run multiple recording tasks in the same instance, we have noticed the task startup time as quick as 2-3 seconds. Then some additional time is taken for the Firefox to start up and initialize ffmpeg.

    2. This would be a big change but one other improvement that you can do is to use ECS Service to have a bunch of tasks running and listening to a queue/source for incoming requests. So here, instead of calling startRecording -> ECS RunTask API or stopRecording -> ECS StopTask API, you would already have a service with n number of tasks running (which would already have Firefox and ffmpeg and other dependencies installed and running) and it can start recording as soon as a request comes in (in the source).

  3. Does Amazon Chime SDK support capturing the contents of their Amazon Chime SDK meeting like audio, video, and content share streams?

    On Jul 7, 2021, Amazon Chime launched a new feature to captures meeting audio, video, and content share streams in 5 second segments and directly delivers them, along with meeting events and data messages, to developer’s designated S3 bucket. You can read more about this here. There is also a new demo (Ref: amazon-chime-media-capture-pipeline-demo) which demonstrates how to build and configure several services within AWS so that you can capture the media of a meeting to an S3 bucket and then process that output into a complete video file

  4. How to adjust audio delay?

    Lip-sync can be affected by the underlying instance type. You can adjust the audio delay relative to the video by modifying the following line in amazon-chime-sdk-recording-demo/recording/record.js: '-filter_complex', 'adelay=delays=350|350, aresample=async=1:first_pts=0',. Change the adelay=delay=350|350 to lower numbers (both the same) to decrease the audio delay and increase it to increase the audio delay.

License

This project is licensed under the Apache-2.0 License.

Disclaimer: You and your end users understand that recording Amazon Chime SDK meetings with this feature may be subject to laws or regulations regarding the recording of electronic communications, and that it is your and your end users’ responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or to a recorded communication that the session or communication is being recorded and obtain their consent.

Disclaimer: Deploying the Amazon Chime SDK demo applications contained in this repository will cause your AWS Account to be billed for services, including the Amazon Chime SDK, used by the application.

amazon-chime-sdk-recording-demo's People

Contributors

abrenaut avatar achris avatar albrich-me avatar amazon-auto avatar anuranduttaroy avatar avrum avatar cmdavinder avatar dependabot[bot] avatar ltrung avatar michhyun1 avatar simmkyu avatar sinanliuamazon avatar ziyiz-amzn 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

Watchers

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

amazon-chime-sdk-recording-demo's Issues

Cannot record website that is outside of AWS

We have deployed and tested the demo application and we can record just fine.

We already have an existing web site that uses Chime to which we want to add recording. The application isn't deployed on AWS but on a third party server but it calls the Chime SDK.

When we try to record this URL or any external URL (we have tried for example our company's website) we get a video that contains a Firefox window with the following message:

Capture d’écran, le 2021-01-25 à 13 50 31

Is this an issue with our EC2 configuration or is it only possible to record something that is hosted on AWS like in the demo application?

Possibility of running recording on Fargate

Is it possible to run the recording tasks on Fargate?
I tried doing that but couldn't because the docker run requires mounting of volume and Fargate at the moment does not allow that.

Anybody found a way of doing that?

Getting no matching method error when calling the recording endpoint

Thanks for your time, I'm having an issue when hitting the endpoint to trigger the recording bot. I got a 404 along with this error:

{
"message": "No method found matching route recording for http method POST."
}

In Postman, I'm using this endpoint:
https://.execute-api.us-east-1.amazonaws.com/Prod/recording?recordingAction=start&meetingURL=https%3A%2F%2F.execute-api.us-east-1.amazonaws.com%2FProd%2Fv2%3Fm%3Dfoo

meeting endpoint:
https://.execute-api.us-east-1.amazonaws.com/Prod/v2/?m=foo

Stack Formation error

hello

while i am using deploy command from aws cli my stack formation is showing me error and i am not able to get api for video recording

Audio/Video Not recorded

Hello Developer Team,

I had followed the same steps but was not able to record a video or audio.

Here is the sample mp4 file which is recorded the meeting.
2020-05-20T09_32_26.zip

We had shared the screen from the browser and also connected to audio devices but neither video nor audio was recorded.

Also, we want to record a video and audio with two devices.

AWS Chime API supports Video recording for android and ios
We used android and ios
https://github.com/aws/amazon-chime-sdk-android
https://github.com/aws/amazon-chime-sdk-ios

If we want to achieve features like video calling conference and recording a complete conference with video how we can achieve this?

Please help.

Thank you

No POST method recording

Followed the steps mentioned in the readme. API Gateway has no POST method for "recording" and hence cannot start or stop recording from Postman

Question : Can we increase Screen Share video recording quality

Hey Team, Thanks for this awesome resource !

Issue Context: I am using react aws chime ContentShare Component. [The share quality in the meeting is quite good ], but the recording quality in s3 is relatively low.

Attached screenshots :

Live Screenshare quality:
Capture (3)

Recoding Screenshare quality:

image

I have tried

  1. changing bitrate to 5k/6k,
  2. setting min-max range for bitrate [3-6k]
  3. Increased frame rate to 60
  4. '-pix_fmt', 'yuv444p',
  5. Changed preset : '-preset', 'ultrafast',
  6. Changed to lossless compression : '-qp', '0',

PS: Internet Connectivity is good

Can I use the free tier instance to run demo?

In the demo, it requires only these instances and they are not free. Can I add the free instance type "Micro" for this?

  • mt2.large
    • t2.xlarge
    • t2.2xlarge
    • t3.large
    • t3.xlarge
    • t3.2xlarge
    • m4.large
    • m4.xlarge
    • m4.2xlarge
    • m4.4xlarge
    • m5.large
    • m5.xlarge
    • m5.2xlarge
    • m5.4xlarge
    • m5.8xlarge
    • c4.xlarge
    • c4.2xlarge
    • c4.4xlarge
    • c5.large
    • c5.xlarge
    • c5.2xlarge
    • c5.4xlarge

Audio/video out of sync

Recording results in video/audio out of sync. This does not happen when actively connected via the web app.

Ive noticed several times the audio (up to a min) is missing from the beginning of the video.

Any info/direction appreciated.

tag key cannot be updated by your account

node ./deploy.js -b -s -i -r
command failed with the following exception

Deploying recording application

        Deploying with following values
        ===============================
        Stack name                 : aws-cloud9-xxx-xxx-xxxxxx
        Region                     : eu-west-2
        Confirm changeset          : False
        Deployment s3 bucket       : None
        Capabilities               : ["CAPABILITY_IAM"]
        Parameter overrides        : {'ECRDockerImageArn': 'yyyyyyyyyyyyy.dkr.ecr.eu-west-2.amazonaws.com/chimerecording:latest'}

Initiating deployment
=====================

Command sam failed with exit code 1 signal null
Error: Failed to create changeset for the stack: aws-cloud9-xxx-xxx-xxxxxx, An error occurred (ValidationError) when calli

The IAM user has permission attached to the image.
lpS0r
What changes need to make to fix the issue?

DNS Over HTTPS pop in recording

Hi there,

All recorded meetings seem to have "DNS over HTTPs" warning. Is it just me or it is a known issues? See below screenshot

Screen Shot 2020-04-21 at 12 28 24 AM

Handle Names

Hi, thanks for your project.

I have a question. What if I want to handle a custom name. I don't want that date/time name.

Or how can I have a reference to the mp4 object in S3.

If I have hundreds of recordings, how can I reference each one without going to S3 bucket and manually check one by one.

I've already tried modifying the index.js file. Passing a meetingId as environment parameter and then in recording.js use that name to upload the file to S3. But, I can see there is no name changed.

Index.js
`
function startRecording(event, context, callback, meetingUrl, meetingId) {
let ecsRunTaskParams = {
cluster: ecsClusterArn,
launchType: "EC2",
count: 1,
overrides: {
containerOverrides: [
{
environment: [
{
name: "MEETING_URL",
value: meetingUrl
},
{
name: "RECORDING_ARTIFACTS_BUCKET",
value: recordingArtifactsBucket
},
{
name: "FILE_NAME",
value: meetingId
}
],
name: ecsContainerName
}
],
},
placementConstraints: [{
type: "distinctInstance"
}],
taskDefinition: ecsTaskDefinationArn
};

ecs.runTask(ecsRunTaskParams, function(err, data) {
    if (err) {
        console.log(err);   // an error occurred
        response.statusCode = err.statusCode;
        response.body = JSON.stringify(err, null, ' ');
        context.succeed(response);
    }
    else {
        console.log(data);  // successful response
        response.statusCode = 200;
        response.body = JSON.stringify((data.tasks.length && data.tasks[0].taskArn) ? data.tasks[0].taskArn : data, null, ' ');
        context.succeed(response);
    }
});

}
`

record.js

`
const NEW_FILE_NAME = process.env.FILE_NAME;

const fileName = ${year}/${month}/${day}/${hour}/test${NEW_FILE_NAME}.mp4;


new S3Uploader(BUCKET_NAME, fileName).uploadStream(transcodeStreamToOutput.stdout);
`

Recording overview

  • Have looked through all the docs.
  • I have also deployed the stack/ecr etc according to the docs.
  • Deployed the server less demo as well.

From what I understand, the recording code is basically a hack/bot that NEEDS to know the public URL of meeting that is taking place. The Bot then visits the page as an attendee and records the page.

What if the meeting is behind a user name password authentication on a private server? What If I don't want to use server less demo? What If i just want to use the AWS SDK for recording?

Is that even possible right now?

one instance only able to record one meeting

hello
i use chime sdk java script and build an solution, for video recording now i am using your chime video recording sdk and passing my server's meeting url. whenever i start a video recording recording start but when i am recording more meeting than max ec2 instance limit for auto scaling . then its gives error

"tasks": [],
"failures": [
{
"arn": "arn:aws:ecs:ap-southeast-1:131006341016:container-instance/3ac0eaba-341c-4f12-96da-27e38b8dee5d",
"reason": "DistinctInstance placement constraint unsatisfied."
}
]
is one instance able to record only one meeting at a time

how to know the S3 file Object URL

It is possible that when the recording stops, it returns the id of the S3 object URL ?
Or pass it a name parameter, to be used as a name in the S3 object

Kind Regards

@rohit0337 You can find the recording in an S3 bucket named `chime-meeting-sdk-<aws-account-id>-<region>-recordings`. E.g. `chime-meeting-sdk-1234567890-us-east-1-recordings`

@rohit0337 You can find the recording in an S3 bucket named chime-meeting-sdk-<aws-account-id>-<region>-recordings. E.g. chime-meeting-sdk-1234567890-us-east-1-recordings

This is pointed out in the README section Stop the recording and view the recording artifact point number 2

Once the recording stops, open the AWS Console and navigate to Amazon S3. You will find a recording in the bucket chime-meeting-sdk-<aws-account-id>-<region>-recordings, with a key name YYYY/MM/DD/HH/.mp4.

Originally posted by @anuranduttaroy in #30 (comment)

CannotPullContainerError: Error response from daemon: pull access denied for my-docker-image

Hi Team,

I'm getting following error. Whenever i execute the API G/W with start action, i'm getting following error under Task --> Container --> Status Reason & the task status changes to STOPPED.

CannotPullContainerError: Error response from daemon: pull access denied for my-docker-image, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

I've integrated the browser demo Chime SDK in React app & have made required provision for Recorder-Bot as attendee in the meeting. I'm testing the recording feature locally & passing the following URL in POST call with URL encoded.

http://localhost:3000/meeting?m=12345&record=true

Pls let me know if you need any more details.

Thanks.

Custom S3 File name

Hi, I already deploy the cloud formation, everything works fine, however I would like to have control over the video name from the recording.
I saw this old pull request (#42), I know I can edit the lambda function as the PR suggest, but, where can I find the record.js file to edit too? or do I have to deploy the cloud formation again with the record.js file edited? or is there another way to change the name?

firefox crash when audio plays

Hi aws chime recording support.

I'm experiencing an issue when passing a url like a youtube video link, as soon as the audio starts to playing I get firefox crash screen.

wondering if you guys have any insight around that ?

I'm creating a localhost service based on your recording mechanism.

Thanks
-Oliver

Deployment fails at step 3 (make ecr)

During deployment using Cloud9 m5.large:

/tmp/apt-dpkg-install-aZaNrP/194-firefox_84.0.2+build1-0ubuntu0.18.04.1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
The command '/bin/sh -c /usr/bin/apt-get update && /usr/bin/apt-get install -y curl && curl -sL https://deb.nodesource.com/setup_10.x | bash - && /usr/bin/apt-get update && /usr/bin/apt-get upgrade -y && /usr/bin/apt-get install -y nodejs pulseaudio xvfb firefox ffmpeg xdotool unzip' returned a non-zero code: 100
Makefile:17: recipe for target 'build_upload' failed
make: *** [build_upload] Error 100
xxxxxxxxxxxx:~/environment/amazon-chime-sdk-recording-demo (master) $ df -ah
Filesystem Size Used Avail Use% Mounted on
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 3.8G 0 3.8G 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 776M 784K 775M 1% /run
/dev/nvme0n1p1 9.7G 9.4G 235M 98% /


Increasing size of Cloud9 instance volume in EC2 resolves:

Image URI in ECR repository: xxxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/chime-recording:latest
xxxxxxxxxxxxx:~/environment/amazon-chime-sdk-recording-demo (master) $ df -ah
Filesystem Size Used Avail Use% Mounted on
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
udev 3.8G 0 3.8G 0% /dev
devpts 0 0 0 - /dev/pts
tmpfs 776M 768K 775M 1% /run
/dev/nvme0n1p1 20G 11G 9.1G 53% /

failed during deploy step

Command sam failed with exit code 1 signal null
Error: Failed to create/update the stack: rushabh-recording-stack, Waiter StackCreateComplete failed: Waiter encountered a terminal failure state

image

Failed to create/update the stack

Command sam failed with exit code 1 signal null
Error: Failed to create/update the stack: demoxyzstack2, Waiter StackCreateComplete failed: Waiter encountered a terminal failure state

Any advice?

Recording is of a screen with "Missing Authentication Token"

After following all the instructions, the recording was not of the full web page (as described in the instructions). Instead, the movie was of a recording of a web console. I'm attaching a screenshot:

recorded-movie-screenshot

Where do I get the token it's referring to, and where do I put it?

Multi-stream recording

Good afternoon. I need to be able to record multiple Chime streams at the same time. How can all this be done?

In order to use the capacity provider, no launchType should be specified when calling runTask

The capacity provider created by the deploy script isn't actually used when specifying a launchType when calling runTask. To use the created capacity providers, the launchType should be dropped from the parameters as that will cause the default (and in this case only) capacity provider to be used.

I do believe that not providing a launchType means there HAS to be a capacity provider present, so i am not sure that is the way to go for this demo or whether this behaviour should simply be documented.

Instructions in README to deploy the serverless demo app

The instructions in the README failed at this step:

node ./deploy.js -r us-east-1 -b <my-bucket> -s <my-stack-name> -a meeting

Output:

yoda:~/environment/amazon-chime-sdk-js/demos/serverless (master) $ node ./deploy.js -r us-east-1 -b abc-amazon-chime-sdk-js-demo-serverless -s amazon-chime-sdk-js-demo-serverless -a me
eting
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'fs-extra'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/ubuntu/environment/amazon-chime-sdk-js/demos/serverless/deploy.js:2:12)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

The following does work:

npm install
npm run deploy -- -r us-east-1 -b <my-bucket> -s <my-stack-name> -a meeting

Enable CORS

API created from provided template - /recording doesn't allow CORS. Since the use case is to enable recording from user browser, it would be great to enable CORS as a part of API setup.

stack formation Creating multiple instance for video recording but not terminating after stop video recording

hello
i use chime sdk java script and build an solution, for video recording now i am using your chime video recording sdk and passing my server's meeting url. whenever i start a video recording its create a instance due to auto scaling, if at a time there is two meetings going on there is two ec2 instance. but after stopping video recording instance is there autoscaling not terminating it or stopping it.

No Recording created in S3

Hi, I have a big issue I noticed sometimes the video is not storage in S3, what I usually do is: after calling the API with action "start" it returns a regular taskId (arn:aws:......), I storage that info in my database and when the user wants to stop it, he calls the action "stop", everything goes well so far, when the time comes I call the action "stop" and what I expect is to have the video object in S3, but sometimes there is not file and I didn't get any error from calling the API when I am trying to stop it, so why could this happened and how can be solved?

I'm really worried because this recording feature is already in production and I say to the customer it is recording, when sometimes it probably doesn't

What I think is it could be related to concurrent recording meeting and the autoscaling instances for each recording

Corrupted mp4 recording

Sometimes the recorded file is corrupted. We get the below message when tried to play the mp4

Choose something else to play. This item is in a format we don't support.

Is there any specific setting required other than the default code in the repo ?

Thanks,
Ravi V.

Where Should i get Meeting URL?

Hi Team,

Where should I get a meeting URL, to pass when the recording starts.

Below are the parameters we are getting when the meeting created

public class Meeting
{
    public Meeting();
    public MediaPlacement MediaPlacement { get; set; } 
    public string MediaRegion { get; set; }  
    public string MeetingId { get; set; }
}

public class MediaPlacement
{
    public MediaPlacement();

    public string AudioFallbackUrl { get; set; } 
    public string AudioHostUrl { get; set; } 
    public string ScreenDataUrl { get; set; } 
    public string ScreenSharingUrl { get; set; } 
    public string ScreenViewingUrl { get; set; } 
    public string SignalingUrl { get; set; } 
    public string TurnControlUrl { get; set; }
}

can u please tell me the steps.

Thanks

Recording bot never joins meeting

After several attempts, I was able to complete the setup and start a meeting, using Postman to start and stop the recording process as recommended. I have now run the demo a few times and what I've realized is the recording bot is never joining the meeting, although I do receive a 200 response from the API Post with recordingAction=start. I've tried using both versions of the meeting URL generated from the second Node script. I can login in as a participant with either URL, but the recording bot never shows up.

Error creating Image

Hi, I couldn't follow all the Walkthrough with Cloud9 always getting this error:
"Error processing tar file(exit status 1): write /usr/lib/x86_64-linux-gnu/libgtk-3.so.0.2200.30: no space left on device
Makefile:17: recipe for target 'build_upload' failed"

How can this be fixed?

Also, I am using the setup recommended for Cloud9
Capture

Recording bot is not joining

Hi,

Recording bot is not joining. The entire setup was fine.
I see in the ECS logs the below message:
(firefox:62): LIBDBUSMENU-GLIB-WARNING **: 15:02:21.586: Unable to get session bus: Failed to execute child process ?dbus-launch? (No such file or directory)
Could someone help?

Thanks,
Ravi.

Originally posted by @nagydniel in #16 (comment)

Where is modified demo index.html?

Our demo application has been modified to suppress prompts for input device permissions and display customized UI for the recording bot.

Where is the modified client that suppresses the prompts? The meeting app in the sdk demos still seems to have the prompts.

Error RESOURCE:CPU start record

When i start recording, I got an error like below.
I don't know what error this is and how to fix it, can you help me?
@anuranduttaroy @ltrung
{
"tasks": [],
"failures": [
{
"arn": "arn:aws:ecs:us-east-2:468629877310:container-instance/08289ec66add4f558e413fbf78d11ed6",
"reason": "RESOURCE:CPU"
}
]
}

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.