No files found for Agora Cloud Recording - agora.io

I am using Agora SDK to invoke the Cloud Recording functionality. Why couldn't I find any recorded files in the cloud storage (AWE)?

If you cannot find any recorded files in the cloud storage after a cloud recording session, check if any of the following situations occurred:
No user is sending a stream in the channel, and the recording times out.
The token has expired, or token authentication has failed.
When calling the acquire method to get the recording resource, you set the uid parameter that matches that of a user ID already in the channel. For example, suppose three users are in the channel with user IDs as 123, 234, and 345. If you set uid as 123 when calling the acquire method, the recording fails.
The settings of transcodingConfig in the start method do not follow the recommended settings, which causes the recording to fail. See How do I set the video profile of the recorded video? before setting transcodingConfig.
Your cloud storage settings are incorrect. Check the following:
bucket: The name of your cloud storage bucket, which was created in your cloud storage account.
accessKey: The access key of your cloud storage account.
secretKey: The secret key of your cloud storage account.
If you have enabled Agora Message Notification Service, you will receive the cloud_recording_error callback when the service detects that your cloud storage settings are incorrect.

Related

Google Drive API: The user does not have sufficient permissions for this file using API Key

I'm trying to integrate Google Drive using the SDK with my app written in VB.Net using API Key and I'm following this tutorial https://developers.google.com/api-client-library/dotnet/get_started#simple
What happens is that when calling the ExecuteAsync method, I receive back an Exception saying that the user does not have sufficient permissions for this file.
Basically, I only have the API key (with restriction to access only Google Drive API) and I don't want to ask the user for permissions, because I'd like to use a specific account (so everyone would be sending files to that account).
I couldn't find a way to "link" this API Key to a specific account also.
I ended up using a service account for the Google Drive API.
The idea here was quite simple, where I created this account and downloaded a generated JSON file that is used by the SDK to Authenticate and call the API.
With this service account, I didn't use the API Key and I could leverage Permissions
and set permissions to each user on each created folder.

Cloud Storage customer access best practices

Let's say I have a use case where users can buy mp3 files inside an app. The objects are stored in GCP Cloud Storage . What is the best practice to deliver those objects only to the users that purchased the files?
After researching the topic I came up with three solutions:
Client calls a REST (e.g. one running inside App Engine) service. This service downloads the files from Cloud Storage and then sends them back to the client.
Instead of sending the files via the REST call, I could send the download URL (from Cloud Storage) to the client. This would be more cost efficient, however this sounds like a security concern to me as anyone who simply monitors his network could capture the URL.
Creating a (time-limited) signed url to allow the user the download
Obviously a permission check would have to happen first, e.g. a database that contains if user X purchased mp3 Y.
This problem could also be applied to Azure Blob Storage or AWS S3...
In your use case, you have a constant:
You need a backend to authenticate the user (for example Authentication performed with Cloud Identity Platform and hosted on App Engine or Cloud Run
You need to check the list of MP3 that it has bought (stored in Firestore for example)
And then, you need to allow him to download the file. On this last point I recommend you to generated a signedURL. Download URL exists only in Firebase area (maybe your project is a firebase projet?) but it's the same thing than signerURL. Finally I don't recommend you the #1 proposal. It will work, but in case of long download (because network is poor), the connexion will be interrupted after 60 seconds. And this will keep your AppEngine up for nothing (and you will pay for this...).

Migrate videos from Vimeo to S3

I have a large quantity of videos on my Vimeo account that I would like to migrate to my AWS S3 account.
Rather than go through the time consuming process of downloading from Vimeo to my local machine then uploading from my local machine to S3, is there a way where I can do a direct transfer from Vimeo to S3?
If possible, I would want to create a script to iterate through each video via Vimeo API and set up the path to where it would go into S3 then initiate a direct transfer. Any ideas or suggestions would be much appreciated!
If you have a PRO account or higher, you can use the API to get download links for videos on your account, including download links for the original source file. Those download file links should be able to be used for importing into S3. Note that the links provided via the Vimeo API are expiring HTTP 302 redirects to the video file resource, so make sure you take note of the expiration time also provided in the response.
Download links are returned with the rest of a video's metadata, so I suggest using the fields parameter to only return the metadata needed.
http://developer.vimeo.com/api/common-formats#json-filter
https://developer.vimeo.com/api/reference/videos#GET/users/{user_id}/videos

Should i backup GCM registration ID with google cloud?

Is it advised to backup GCM id using android cloud back up ? i am storing the GCM id in a sharedpreferences so i dont have to keep registering.
if i backup this GCM sharedpref and user changes devices do i need to update it to a new registration id ? Is the registration ID device specific ? What happens when user changes devices and backs up ?
I tried and read this from the docs:
You must exclude any device specific identifiers, either issued by a server or generated on the device. This includes the Google Cloud Messaging (GCM) registration token which, when restored to another device, can render your app on that device unable to receive GCM messages.
From the docs i found my answer that the reason this should not be done is that it can intrefer in the apps intialization of gcm and it will not try to get the GCM id if its already restored from a new device that restored a old registration id.
Handle Google Cloud Messaging
For apps that use Google Cloud Messaging (GCM) for push notifications,
backing up the registration token that Google Cloud Messaging
registration returned can cause unexpected behavior in notifications
for the restored app. This is because when a user installs your app on
a new device, the app must query the GCM API for a new registration
token. If the old registration is present, because the system had
backed it up and restored it, the app doesn't seek the new token. To
prevent this issue from arising, exclude the registration token from
the set of backed-up files.

Google keep blocking our app login

I'm developing a contest platform using Youtube.
So each contestant will upload a video thru our website. The video will be uploaded to our specific channel.
But, I kept receive warn email, google block login attempt from our contestant. The email says something that an unsecure app tryin to login.
And our tester (contestant) always failed to upload their video.
Please help.
There are a few ways you can approach this:
You can share a Youtube Channel. To do this, you need to have all the users as a manager of the G+ page the channel is connected to.
You can give all the users your account credentials for them to upload to your channel
your channel.
You can have the users upload the video to your servers and then you upload each video on the Channel's account yourself.
You can have them upload it to their own Youtube Channel and they can just pass you the URL to the video.
Personally, I think the last option is best.
For your login issue, if you are having users use the account credentials to login and upload themselves, you may be getting that warning because too many users from too many different locations are trying to access the same one account.