Unable to start live streaming in agora with vp8 codec - agora.io

I want to create a live stream with multiple broadcasters/hosts and publish it to RTMP CDN with agora.
I am using agora-rtc-sdk-ng library.
As per documentation I have tried to start live streaming but it is giving the below error while calling
AgoraRTCClient.startLiveStreaming
Error :
{
"name": "AgoraRTCException",
"code": "LIVE_STREAMING_INVALID_RAW_STREAM",
"message": "AgoraRTCError LIVE_STREAMING_INVALID_RAW_STREAM: raw streaming is only support h264"
}
Can anybody help me how to solve this error?

While calling createClient to create a local client object. Pay attention to the settings of the mode and codec parameters when creating the client: just pass the codec to "h264" here is the sample.
rtc.client = AgoraRTC.createClient({ mode: "rtc", codec: "h264" });
For detailed explanation please visit the agora documentation link here
https://agoraio-community.github.io/AgoraWebSDK-NG/docs/en/basic_call#2join-a-channel

Related

The protocol is not available, Signalwire Relay Client Subscription

I am trying to subscribe to Signalwire phone numbers using Relay SDK with following code:
this.client1 = new Relay({
project: 'myprojectid',
token: jwtToken,
})
this.client1.subscribe({
protocol: "WSS",
channels: ["channel1", "channel2"]
}).then(r => {
console.log(r);
})
It throws an error:
"code": -32004,
"message": "Ignored 'blade.subscription' request because the protocol is not available"
I tried searching documentation, but could not find about how I can subscribe to channels using Relay SDK. I have also tried other protocols such as "TLS", "TCP" or "http, https" etc but did not succeed.
Please share any documentation for subscribing to channels or phone numbers.
It's not possible from this post to tell if you're using the SignalWire SDKs exclusively, if you're working from third party tools, or if you're doing your own setup. Depending on that and on what you're specifically looking to do with these, this might be a question of setup or it might not be possible.
With all that in mind, if you could reach out to SignalWire support (from your SignalWire space, select 'Help and Support' at the top right and then Submit a New Support Request) we can take a look at your setup and work through this with you.

Trying to get Vimeo API to recognize the upload file

I am using Expo managed Workflow with react-native and trying desperately to not have to eject. The only sticking point in the entire app is allowing users of the app to upload video into a usable format. I am hoping to use Vimeo as the video hosting service.
I am authenticated and verified and interacting with the Vimeo API.
On my express server when I run this code:
let Vimeo = require('vimeo').Vimeo;
let client = new Vimeo({vimeo creds});
client.request({
method: 'GET',
path: '/tutorial'
}, function (error, body, status_code, headers) {
if (error) {
console.log(error);
}
console.log(body);
})
I see this message:
message: 'Success! You just interacted with the Vimeo API. Your dev environment is configured correctly, and the client ID, client secret, and access token that you provided are all working fine.',
next_steps_link: 'https://developer.vimeo.com/api/guides/videos/upload',
token_is_authenticated: true
I successfully uploaded a video from my express server using this code and placing the file on the same directory as the server code.
client.upload(
"{filename}",
{
'name': ' Test Video 1',
'description': 'The description goes here.'
},
function (uri) {
console.log('Your video URI is: ' + uri);
},
function (bytes_uploaded, bytes_total) {
var percentage = (bytes_uploaded / bytes_total * 100).toFixed(2)
console.log(bytes_uploaded, bytes_total, percentage + '%')
},
function (error) {
console.log('Failed because: ' + error)
}
)
Then, I added the same functionality to my web app locally for testing but not on an express server, trying to do it within a react native app running in a browser (for starters). I still get the message that says I am successfully interacting with Vimeo API and that I am authenticated.
However, When I try to add the file in the react native app with the exact same code, except this is how I am accessing the video file from react native: filename = require({pathToFile});
and the failed response says:
"Failed because: Unable to locate file to upload."
I do not know if the message is incorrect and if Vimeo API is having issues understanding the file or if it could be that because I am no longer running on a server.
So I keep trying to make sense of how to do this but wonder if I am missing something at this stage of testing.
Because...
I am able to upload the video to Firebase Storage by using expo-image-picker.
When I try to give the Vimeo API the file from what I have retrieved from the filesystem, it still says it is unable to locate file to upload.
In this case the string I am trying to upload looks like this: data:video/quicktime;base64,AAAAHGZ0eXBtcDQyAAAAAW…5AQLMKwEjd8ABNvCVAUgYoQFR1yYBVZYxAVX9NwFXEy8BYh0m
Any suggestions of a way to get Vimeo api to recognize this file?
I really want to use Vimeo for this project I can't find anything on stack overflow related to this except this one question which noone has attempted to answer:
Failed because: Unable to locate file to upload but path is correct (Vimeo API)

Agora Cloud Recording [ Web Page Recording ] : Error 404 (no Route matched with those values)

I trying to use new mode recording from Agora Here.
But It doesn't work for me. I always got Error 404 with message ('no Route matched with those values')
Here is my url path
'/v1/apps/{appid}/cloud_recording/resourceid/{my-resource-id}/mode/web/start'
I already check on Cloud Recording RESTful API to find pattern for request body but It doesn't said anything about Web Page Recording. (Maybe because It's just beta for now)
Here is my start request body that I copy from tutorial but It doesn't matched with RESTful API
const extensionServiceConfig = {
errorHandlePolicy: "error_abort",
extensionServices: [{
serviceName: "web_recorder_service",
errorHandlePolicy: "error_abort",
serviceParam: {
url: "myurl",
audioProfile: 0,
videoWidth: 1280,
videoHeight: 720,
maxRecordingHour: 2
}
}]
};
The "404 No Routes" error is caused by Cloud Recording not being enabled on your project. To enable cloud recording on your project, you’ll need to click into the Products & Usage section of the Agora.io Dashboard and select the project name from the drop-down in the upper left-hand corner, click the Duration link below Cloud Recording.
Here is a step by step guide I wrote: https://medium.com/agora-io/agora-cloud-recording-quickstart-guide-with-postman-demo-c4a6b824e708
Also Agora offers a Postman Collection that provides a sample body for making a request and if viewed through the Postman app it will generate the JavaScript snippet for you.

Is there any way to detect if the live stream is started successfully in JITSI meet external API?

I am using the jitsi meet external API to make video conference.
I use the following API command to start live streaming:
api.executeCommand('startRecording', { mode: 'stream', youtubeStreamKey: streamName })
But is always returns undefined, is there any way to identify if the streaming is started successfully or not.

PushWoosh Error : status code : 210 status_message: Invalid device token for Android

I am trying to register device token on pushwoosh services using API but it's returning me following response (Form Pushwoosh service) :
{ status_code: 210,
status_message: 'Invalid token: apa91bhosngjexchs528yuy-y4woqtkoo5b3ydddkh29etjm6eg9thg5urchcqaae32lavevq5vdco6mbyozyld4mqajg_t8-aaqnxiz6fr1gwnml7maurolpibo7-hj3at5l3i7zvzw',
response: null }
I am using Same API for iOS and it's working fine for iOS.
But the problem is with Android device. Also device token is correct (Started from "AP91...") and App is registered onGCM as well.
Thanks for help.
I got the solution and it's silly mistake I have done.
Just Uploading Answer if someone new learner get stuck, so it will helpful.
While making API call to pushwoosh registration we are sending following request in API.
"request":{
"application":"84170-XXXXX",
"push_token":deviceInfo.deviceToken,
"language":"en",
"hwid": deviceInfo.HardwareID,
"timezone": 3600,
"device_type":deviceType
}
Mistake was I missed hwid which is unique (We are using device Mac address now).
Also for Android "device_type" =3 and for ios "device_type"=1 But I earlier I was sending 1 for both (And thats the issue).
Now I am sending it according to device type. (As per given in pushwoosh docs).
and it's working fine now.
Thanks.