Transcode the output of an AWS IVS basic channel

0

Hello,

I want to implement my own transcoding (such as to output a different rendition ladder, add encryption, add additional playback token authentication such as per IP in my own CDN, and so on). Can I use an AWS IVS basic channel to simply transmux?

For example: someone starts streaming to a basic channel AWS IVS rtmps endpoint. That fires an event. That event triggers a Lambda, which in turn starts an EC2, MediaLive (or some other compute to do the transcoding, on-demand). That transcodes the HLS .m3u8 generated by AWS IVS, so giving me complete control over its output ABR HLS delivered to viewers.

2 Answers
0

Hello,

You can completely control the definition of your transcoded output(s) (bitrate, resolution, codec, GOP, etc) if you ingest your content directly into AWS Elemental MediaLive (https://docs.aws.amazon.com/medialive/latest/ug/hls-create-procedure.html), using one of the AWS origins (S3, AWS Elemental MediaPackage or AWS Elemental MediaStore) to then serve that content through Amazon Cloudfront.

With that workflow you wouldn't need to have another transcoding step with Amazon IVS since AWS Elemental MediaLive also accepts RTMP inputs (as well as other formats like UDP/RTP, HLS or even a file).

In this AWS Solution you have a good example on how that might look : https://aws.amazon.com/solutions/implementations/live-streaming-on-aws/

Thanks

AWS
Pedro_F
answered a year ago
  • Hello,

    Thanks. You are right in that MediaLive supports RTMP ingest directly. However it doesn't fit my needs. For example, when I used it last, it only supported RTMP, not RTMPS. It only supported ingest protection by IP (which I won't know in advance), not by stream key. And it needed to be started on-demand, not idle 24/7 in case someone wants to stream. That's why it alone would not be sufficient. Hence the idea of using AWS IVS as an always-on endpoint (like Twitch, YouTube etc). And it is protected using a secret key. And has RTMPS out of the box. So for input, it's perfect. I just want to control the output. Which would need my own compute.

0

Hi Greg, You can use the following solution to do the TLS termination at the NLB: https://aws.amazon.com/blogs/media/rtmps-streaming-with-aws/ This solution will leverage the NLB to terminate the incoming RTMPS input and forward the RTMP stream to the MediaLive channel If you want to substitute MediaLive for VT1 EC2 instances running ffmpeg you can also do that.

AWS
Nuno_Q
answered a year ago
  • Hi, Ah, that's an interesting approach. That would certainly solve the RTMPS issue. However ... as i understand it, even though the load balancer would be up 24/7, if there is no MediaLive channel (or EC2 instance) running, an RTMPS connection could not be established. So at least one MediaLive/EC2 would need to be running, in case. And so incur a $2 an hour (ish) charge. Potentially costing $48 a day, for nothing. Compared to the roughly $0.20 an hour cost of AWS IVS (basic channel). And that AWS IVS charge would only be incurred when someone actually was streaming. That was where my idea of starting the compute/transcode on-demand came from, to get the best of both worlds. It was just a question of whether AWS minds an IVS basic channel's output HLS is not going (directly) to viewers.

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions