Advice: Setting up a streaming service that allows users to create rtmp push enpoint from a device

421 views Asked by At

At present I am streaming to an EC2-instance either video, audio, or both. I want to do this in the most cost efficient and scalable way possible. The way the service works is that any device is able to publish to the nginx ec2 instance. So from lets say a phone, I can publish to x.x.x.x:6000/live/stream1. From the same device, I can publish to x.x.x.x:6000/live/stream2. Neither of these rtmp push endpoints are predefined server side. They are created dynamically from the device. Is there an AWS service that will provide this type of functionality dynamically? This should not require user login to any AWS service for my needs. I have checked out AWS Live Streaming with Elemental Media Store, as well as Kinises. Media store seems to require RTMP push endpoints to be setup through AWS first before a device can publish a stream. Kinesis seems to require user account creation, which I'm assuming will also create an endpoint tied to the user that a user can rtmp publish too.

I do not need Kinesis' user account creation, as I am using a different service to manage users. I'm just looking for the ability to create rtmp push endpoints from the device, and publish that endpoint upon creation.

Any help is appreciated.

Thanks.

Thanks.

1

There are 1 answers

3
Matthew Bournival On

When you say that creating the RTMP endpoint from the device should not require user login to any AWS service for your needs, do you mean the end user's needs or your needs as the creator of the platform?

None of the AWS Elemental Media Services can be configured without first having an AWS account, of course, which does require authentication. Most all API calls made to AEMS endpoints require AWS v4 Authentication so there isn't a way to avoid this as the administrator, but you could create the platform to handle these steps for the end user without them requiring any additional authentication mechanism.

MediaLive also requires you to predefine the RTMP input's Application and Instance name before attaching it to a Channel so that may also be a drawback for your use case. Currently, this is the only media-based service offered by AWS that accepts RTMP input but with some effort you could build an application that automates the creation of the end user's specified Application and Instance names such that it 'appears' as if the destination will accept dynamic input.

MediaStore is an origination endpoint and primarily used for storage of encoded content to be consumed by a downstream CDN for playback. It only accepts RESTful API calls so you cannot push RTMP directly do it unfortunately.

Should you have more specific questions about the information provided above please let me know!