Skip to content

Instantly share code, notes, and snippets.

View recursivecodes's full-sized avatar
💯
Living the dream

Todd Sharp recursivecodes

💯
Living the dream
View GitHub Profile
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]';

Prerequisites

Just to make sure everything works as expected, here are my current Node/AWS CLI versions (in case we need to look up an ARN or something with the CLI)

Node Version

$ node --version
v18.12.1
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 \
-f avfoundation \
-framerate 30 \
-video_size 1920x1080 \
-i "3:" \
-f avfoundation \
-framerate 30 \
-video_size 640x480 \
-i "2:" \
-f avfoundation \
$ 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 \
$ ffmpeg \
-f avfoundation \
-video_size 1920x1080 \
-framerate 30 \
-i "2:2" \
-c:v libx264 \
-b:v 6000K \
-maxrate 6000K \
-pix_fmt yuv420p \
-r 30 \
@recursivecodes
recursivecodes / invoke-response.json
Created March 30, 2022 19:13
invoke-response.json
[
{
"LAST_NAME": "Sharp",
"FIRST_NAME": "Todd",
"ID": "CE51F8AEFBD6C772E0539914000A4500"
},
{
"LAST_NAME": "Sharp",
"FIRST_NAME": "Rhonda",
"ID": "CE51F8AEFBD7C772E0539914000A4500"