- Todd Sharp, Principal Developer Advocate, Amazon IVS
- Song King, Sr Software Dev Manager, Amazon IVS
- Max Stoller, Principal Product Manager, Amazon IVS
| import { IvsClient, StopStreamCommand } from "@aws-sdk/client-ivs"; | |
| import { IvschatClient, SendEventCommand } from "@aws-sdk/client-ivschat"; | |
| import { RekognitionClient, DetectLabelsCommand, DetectModerationLabelsCommand } from "@aws-sdk/client-rekognition"; | |
| const chatArn = process.env.DEMO_CHAT_ARN; | |
| const channelArn = process.env.DEMO_CHANNEL_ARN; | |
| const responseObject = { | |
| statusCode: 200, | |
| headers: { |
| import * as cdk from 'aws-cdk-lib'; | |
| import { LambdaRestApi } from 'aws-cdk-lib/aws-apigateway'; | |
| import { Rule } from 'aws-cdk-lib/aws-events'; | |
| import { LambdaFunction } from 'aws-cdk-lib/aws-events-targets'; | |
| import { Effect, PolicyStatement, ServicePrincipal } from 'aws-cdk-lib/aws-iam'; | |
| import { Architecture, Code, Function, LayerVersion, Runtime } from 'aws-cdk-lib/aws-lambda'; | |
| import { ApiEventSource } from 'aws-cdk-lib/aws-lambda-event-sources'; | |
| import { Construct } from 'constructs'; | |
| export class IvsRekognitionCdkStack extends cdk.Stack { |
| <div class="row"> | |
| <div class="col-lg-2 offset-lg-2"> | |
| <div class="h-100 border rounded shadow p-3"> | |
| <img id="webcam-view-btn" src="/images/camera_icon.png" class="ratio ratio-16x9 border border-5 border-secondary rounded img-responsive shadow mb-2" role="button" /> | |
| <video id="vod-0" src="/video/vod-0.mp4" class="border border-5 border-secondary ratio ratio-16x9 rounded shadow" controls></video> | |
| <video id="vod-1" src="/video/vod-1.mp4" class="border border-5 border-secondary ratio ratio-16x9 rounded shadow" controls></video> | |
| </div> | |
| </div> | |
| <div class="col-lg-6"> | |
| <div class="card shadow"> |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <title>IVS Playback</title> | |
| <script src="https://player.live-video.net/1.14.0/amazon-ivs-player.min.js"></script> | |
| <script> | |
| document.addEventListener('DOMContentLoaded', () => { | |
| // set stream url | |
| const streamUrl = '[Playback URL]'; |
| ffmpeg \ | |
| -rtsp_transport \ | |
| tcp \ | |
| -i rtsp://user:[email protected]:554 \ | |
| -preset ultrafast \ | |
| -vcodec libx264 \ | |
| -ar 44100 \ | |
| -f flv \ | |
| $DEMO_STREAM_INGEST_ENDPOINT/$DEMO_STREAM_KEY |
| $ ffmpeg \ | |
| -re \ | |
| -stream_loop -1 \ | |
| -i /path/to/video.mp4 \ | |
| -stream_loop -1 \ | |
| -i /path/to/audio.mp3 \ | |
| -map 0:v:0 \ | |
| -map 1:a:0 \ | |
| -c:v libx264 \ | |
| -b:v 6000K \ |
| $ ffmpeg \ | |
| -re \ | |
| -i /path/to/video.mp4 \ | |
| -c:v libx264 \ | |
| -b:v 6000K \ | |
| -maxrate 6000K \ | |
| -pix_fmt yuv420p \ | |
| -s 1920x1080 \ | |
| -profile:v main \ | |
| -preset veryfast \ |