From d5283c6df20da970b2f7a2c2d6708599398b9cea Mon Sep 17 00:00:00 2001 From: vector17002 Date: Tue, 24 Mar 2026 17:21:21 +0530 Subject: [PATCH 1/7] added transcoding services and workers --- server/logs/log.txt | 120 +++++++++++++++++++++++ server/package-lock.json | 83 ++++++++++++++-- server/package.json | 20 ++-- server/src/index.ts | 1 + server/src/services/transcode.service.ts | 119 ++++++++++++++++++++++ server/src/workers/transcode.worker.ts | 38 +++++-- server/tsconfig.tsbuildinfo | 2 +- 7 files changed, 358 insertions(+), 25 deletions(-) create mode 100644 server/logs/log.txt create mode 100644 server/src/services/transcode.service.ts diff --git a/server/logs/log.txt b/server/logs/log.txt new file mode 100644 index 0000000..d64e2cf --- /dev/null +++ b/server/logs/log.txt @@ -0,0 +1,120 @@ +[2026-03-24T09:07:03.974Z] [LOG] Server is running on port 8080 +[2026-03-24T09:08:20.935Z] [LOG] Server is running on port 8080 +[2026-03-24T09:27:25.359Z] [ERROR] Error: read ECONNRESET + at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { + errno: -54, + code: 'ECONNRESET', + syscall: 'read' +} +[2026-03-24T09:27:25.360Z] [ERROR] Error: read ECONNRESET + at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { + errno: -54, + code: 'ECONNRESET', + syscall: 'read' +} +[2026-03-24T09:35:30.379Z] [ERROR] Error: read ECONNRESET + at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { + errno: -54, + code: 'ECONNRESET', + syscall: 'read' +} +[2026-03-24T09:35:30.381Z] [ERROR] Error: read ECONNRESET + at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { + errno: -54, + code: 'ECONNRESET', + syscall: 'read' +} +[2026-03-24T09:36:10.164Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 for fileId bjc8kfmnke612us8g3gmn +[2026-03-24T09:36:10.164Z] [LOG] โœ… Transcoding completed for job 2 +[2026-03-24T09:36:10.203Z] [LOG] Job 2 has completed successfully! +[2026-03-24T10:00:37.944Z] [LOG] Server is running on port 8080 +[2026-03-24T10:01:07.829Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 for fileId 0330of3lhf4nw4ykrn0ytr +[2026-03-24T10:01:07.829Z] [LOG] โœ… Transcoding completed for job 3 +[2026-03-24T10:01:07.957Z] [LOG] Job 3 has completed successfully! +[2026-03-24T10:01:46.508Z] [LOG] Server is running on port 8080 +[2026-03-24T10:02:04.022Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 4 for fileId prxrlkm0nkh61wlyva9hpl +[2026-03-24T10:02:04.313Z] [LOG] Job 4 has failed with error: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. +[2026-03-24T10:15:04.614Z] [LOG] Server is running on port 8080 +[2026-03-24T10:15:47.344Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 5 for fileId vehuheacw3aj3rsixbmber +[2026-03-24T10:15:47.655Z] [LOG] +[2026-03-24T10:15:47.658Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/vehuheacw3aj3rsixbmber for job 5 +[2026-03-24T10:15:47.713Z] [LOG] Job 5 has completed successfully! +[2026-03-24T11:23:38.742Z] [LOG] Server is running on port 8080 +[2026-03-24T11:24:47.717Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 6 for fileId 3ox4xjswfj3r4s6286mie +[2026-03-24T11:24:50.891Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie for job 6 +[2026-03-24T11:24:50.891Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 3ox4xjswfj3r4s6286mie... +[2026-03-24T11:24:50.891Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-24T11:25:06.700Z] [LOG] โœ… Finished transcode for 360p +[2026-03-24T11:25:07.166Z] [LOG] โœ… Finished transcode for 480p +[2026-03-24T11:25:08.177Z] [LOG] โœ… Finished transcode for 720p +[2026-03-24T11:25:09.023Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-24T11:25:09.023Z] [LOG] โœ… All transcoding finished for job 6. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_1080p.mp4 +[2026-03-24T11:25:09.062Z] [LOG] Job 6 has completed successfully! +[2026-03-24T11:39:05.030Z] [LOG] Server is running on port 8080 +[2026-03-24T11:40:20.483Z] [LOG] Server is running on port 8080 +[2026-03-24T11:40:36.711Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 7 for fileId 3pb9gh1ido4pu1hsysrep +[2026-03-24T11:40:37.932Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep for job 7 +[2026-03-24T11:40:37.932Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 3pb9gh1ido4pu1hsysrep... +[2026-03-24T11:40:37.932Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-24T11:40:46.811Z] [LOG] โœ… Finished transcode for 360p +[2026-03-24T11:40:46.994Z] [LOG] โœ… Finished transcode for 480p +[2026-03-24T11:40:47.546Z] [LOG] โœ… Finished transcode for 720p +[2026-03-24T11:40:48.532Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-24T11:40:48.532Z] [LOG] โœ… All transcoding finished for job 7. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_1080p.mp4 +[2026-03-24T11:40:48.532Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 3pb9gh1ido4pu1hsysrep... +[2026-03-24T11:40:48.790Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/360p.mp4 +[2026-03-24T11:40:48.818Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/480p.mp4 +[2026-03-24T11:40:48.837Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/720p.mp4 +[2026-03-24T11:40:48.983Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/1080p.mp4 +[2026-03-24T11:40:48.984Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 3pb9gh1ido4pu1hsysrep +[2026-03-24T11:40:48.984Z] [LOG] โœ… All uploads complete for job 7. Keys: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/360p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/480p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/720p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/1080p.mp4 +[2026-03-24T11:40:49.024Z] [LOG] Job 7 has completed successfully! +[2026-03-24T11:48:24.802Z] [LOG] Server is running on port 8080 +[2026-03-24T11:49:20.079Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 8 for fileId nn57mm3xjs369lq4aeuzi +[2026-03-24T11:49:21.115Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi for job 8 +[2026-03-24T11:49:21.115Z] [LOG] โณ Initiating bulk FFmpeg transcodes for nn57mm3xjs369lq4aeuzi... +[2026-03-24T11:49:21.115Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-24T11:49:21.116Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-24T11:49:21.117Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-24T11:49:21.117Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-24T11:49:31.021Z] [LOG] โœ… Finished transcode for 360p +[2026-03-24T11:49:31.276Z] [LOG] โœ… Finished transcode for 480p +[2026-03-24T11:49:31.874Z] [LOG] โœ… Finished transcode for 720p +[2026-03-24T11:49:32.889Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-24T11:49:32.889Z] [LOG] โœ… All transcoding finished for job 8. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_1080p.mp4 +[2026-03-24T11:49:32.889Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for nn57mm3xjs369lq4aeuzi... +[2026-03-24T11:49:33.177Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/360p.mp4 +[2026-03-24T11:49:33.236Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/480p.mp4 +[2026-03-24T11:49:33.253Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/720p.mp4 +[2026-03-24T11:49:33.475Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/1080p.mp4 +[2026-03-24T11:49:33.475Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: nn57mm3xjs369lq4aeuzi +[2026-03-24T11:49:33.475Z] [LOG] โœ… All uploads complete for job 8. Keys: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/360p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/480p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/720p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/1080p.mp4 +[2026-03-24T11:49:33.517Z] [LOG] Job 8 has completed successfully! +[2026-03-24T11:49:33.518Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 9 for fileId s4jwrqaneokp1g6k4lntt9 +[2026-03-24T11:49:33.530Z] [LOG] Successfully cleaned up downloads directory +[2026-03-24T11:49:35.299Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9 for job 9 +[2026-03-24T11:49:35.299Z] [LOG] โณ Initiating bulk FFmpeg transcodes for s4jwrqaneokp1g6k4lntt9... +[2026-03-24T11:49:35.299Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-24T11:49:35.299Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-24T11:49:35.300Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-24T11:49:35.300Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-24T11:49:42.649Z] [LOG] โœ… Finished transcode for 360p +[2026-03-24T11:49:43.121Z] [LOG] โœ… Finished transcode for 480p +[2026-03-24T11:49:43.781Z] [LOG] โœ… Finished transcode for 720p +[2026-03-24T11:49:44.782Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-24T11:49:44.782Z] [LOG] โœ… All transcoding finished for job 9. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_1080p.mp4 +[2026-03-24T11:49:44.782Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for s4jwrqaneokp1g6k4lntt9... +[2026-03-24T11:49:45.068Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/360p.mp4 +[2026-03-24T11:49:45.073Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/480p.mp4 +[2026-03-24T11:49:45.153Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/720p.mp4 +[2026-03-24T11:49:45.191Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/1080p.mp4 +[2026-03-24T11:49:45.191Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: s4jwrqaneokp1g6k4lntt9 +[2026-03-24T11:49:45.191Z] [LOG] โœ… All uploads complete for job 9. Keys: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/360p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/480p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/720p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/1080p.mp4 +[2026-03-24T11:49:45.221Z] [LOG] Job 9 has completed successfully! +[2026-03-24T11:49:45.229Z] [LOG] Successfully cleaned up downloads directory diff --git a/server/package-lock.json b/server/package-lock.json index 64a259c..b09ce33 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -12,14 +12,6 @@ "@aws-sdk/client-s3": "^3.1000.0", "@aws-sdk/lib-storage": "^3.1000.0", "@aws-sdk/s3-request-presigner": "^3.1000.0", - "@types/axios": "^0.9.36", - "@types/bcrypt": "^6.0.0", - "@types/body-parser": "^1.19.6", - "@types/cors": "^2.8.19", - "@types/dotenv": "^6.1.1", - "@types/express": "^5.0.6", - "@types/ioredis": "^4.28.10", - "@types/jsonwebtoken": "^9.0.10", "axios": "^1.13.6", "bcrypt": "^6.0.0", "body-parser": "^2.2.2", @@ -27,10 +19,20 @@ "cors": "^2.8.6", "dotenv": "^17.3.1", "express": "^5.2.1", + "fluent-ffmpeg": "^2.1.3", "ioredis": "^5.10.1", "jsonwebtoken": "^9.0.3" }, "devDependencies": { + "@types/axios": "^0.9.36", + "@types/bcrypt": "^6.0.0", + "@types/body-parser": "^1.19.6", + "@types/cors": "^2.8.19", + "@types/dotenv": "^6.1.1", + "@types/express": "^5.0.6", + "@types/fluent-ffmpeg": "^2.1.28", + "@types/ioredis": "^4.28.10", + "@types/jsonwebtoken": "^9.0.10", "nodemon": "^3.1.14" } }, @@ -1758,12 +1760,14 @@ "version": "0.9.36", "resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.9.36.tgz", "integrity": "sha512-NLOpedx9o+rxo/X5ChbdiX6mS1atE4WHmEEIcR9NLenRVa5HoVjAvjafwU3FPTqnZEstpoqCaW7fagqSoTDNeg==", + "dev": true, "license": "MIT" }, "node_modules/@types/bcrypt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-6.0.0.tgz", "integrity": "sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1773,6 +1777,7 @@ "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, "license": "MIT", "dependencies": { "@types/connect": "*", @@ -1783,6 +1788,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1792,6 +1798,7 @@ "version": "2.8.19", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1801,6 +1808,7 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz", "integrity": "sha512-ftQl3DtBvqHl9L16tpqqzA4YzCSXZfi7g8cQceTz5rOlYtk/IZbFjAv3mLOQlNIgOaylCQWQoBdDQHPgEBJPHg==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1810,6 +1818,7 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", @@ -1821,6 +1830,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -1829,16 +1839,28 @@ "@types/send": "*" } }, + "node_modules/@types/fluent-ffmpeg": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.28.tgz", + "integrity": "sha512-5ovxsDwBcPfJ+eYs1I/ZpcYCnkce7pvH9AHSvrZllAp1ZPpTRDZAFjF3TRFbukxSgIYTTNYePbS0rKUmaxVbXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/http-errors": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, "license": "MIT" }, "node_modules/@types/ioredis": { "version": "4.28.10", "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1848,6 +1870,7 @@ "version": "9.0.10", "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*", @@ -1858,12 +1881,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "25.3.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.1.tgz", "integrity": "sha512-hj9YIJimBCipHVfHKRMnvmHg+wfhKc0o4mTtXh9pKBjC8TLJzz0nzGmLi5UJsYAUgSvXFHgb0V2oY10DUFtImw==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.18.0" @@ -1873,18 +1898,21 @@ "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -1894,6 +1922,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", @@ -1927,6 +1956,11 @@ "node": ">= 8" } }, + "node_modules/async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2539,6 +2573,20 @@ "url": "https://opencollective.com/express" } }, + "node_modules/fluent-ffmpeg": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", + "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "async": "^0.2.9", + "which": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -2903,6 +2951,12 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, "node_modules/jsonwebtoken": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", @@ -3705,6 +3759,7 @@ "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, "license": "MIT" }, "node_modules/unpipe": { @@ -3744,6 +3799,18 @@ "node": ">= 0.8" } }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/server/package.json b/server/package.json index 5f45cd9..cb0f416 100644 --- a/server/package.json +++ b/server/package.json @@ -16,14 +16,6 @@ "@aws-sdk/client-s3": "^3.1000.0", "@aws-sdk/lib-storage": "^3.1000.0", "@aws-sdk/s3-request-presigner": "^3.1000.0", - "@types/axios": "^0.9.36", - "@types/bcrypt": "^6.0.0", - "@types/body-parser": "^1.19.6", - "@types/cors": "^2.8.19", - "@types/dotenv": "^6.1.1", - "@types/express": "^5.0.6", - "@types/ioredis": "^4.28.10", - "@types/jsonwebtoken": "^9.0.10", "axios": "^1.13.6", "bcrypt": "^6.0.0", "body-parser": "^2.2.2", @@ -31,10 +23,20 @@ "cors": "^2.8.6", "dotenv": "^17.3.1", "express": "^5.2.1", + "fluent-ffmpeg": "^2.1.3", "ioredis": "^5.10.1", "jsonwebtoken": "^9.0.3" }, "devDependencies": { + "@types/fluent-ffmpeg": "^2.1.28", + "@types/axios": "^0.9.36", + "@types/bcrypt": "^6.0.0", + "@types/body-parser": "^1.19.6", + "@types/cors": "^2.8.19", + "@types/dotenv": "^6.1.1", + "@types/express": "^5.0.6", + "@types/ioredis": "^4.28.10", + "@types/jsonwebtoken": "^9.0.10", "nodemon": "^3.1.14" } -} +} \ No newline at end of file diff --git a/server/src/index.ts b/server/src/index.ts index 1e0c072..444de4d 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,2 +1,3 @@ import 'dotenv/config.js' +import './utils/logger.js' import './server.js' diff --git a/server/src/services/transcode.service.ts b/server/src/services/transcode.service.ts new file mode 100644 index 0000000..a1c4fda --- /dev/null +++ b/server/src/services/transcode.service.ts @@ -0,0 +1,119 @@ +import { getDownloadUrl } from "../utils/getPresignedUrl.js"; +import axios from "axios"; +import type { Job } from "bullmq"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import ffmpeg from "fluent-ffmpeg"; +import { PutObjectCommand } from "@aws-sdk/client-s3"; +import s3Client from "../config/s3.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +export const getPreSignedUrlForDownload = async (fileId: string, userId: string) => { + const currentEnv = process.env.NODE_ENV === 'development' ? 'dev' : 'prod'; + const videoObjectId = `${currentEnv}/users/${userId}/original/${fileId}`; + + const videoDownloadSignedUrl = await getDownloadUrl(videoObjectId) + + if (!videoDownloadSignedUrl) { + throw new Error("Video download signed url not found"); + } + + return videoDownloadSignedUrl + +} + +export const downloadObjectFromPreSignedUrl = async (videoDownloadSignedUrl: string, fileId: string, job: Job) => { + // Download the video as a buffer + const response = await axios.get(videoDownloadSignedUrl, { responseType: 'arraybuffer' }); + + if (response.status !== 200) + console.log(`Video download failed for job id ${job.id}`) + + const videoBuffer = response.data; + + // Ensure downloads directory exists + const downloadsDir = path.join(__dirname, '..', '..', 'downloads'); + if (!fs.existsSync(downloadsDir)) { + fs.mkdirSync(downloadsDir, { recursive: true }); + } + + // Save the buffer to the local repository + const localFilePath = path.join(downloadsDir, fileId); + fs.writeFileSync(localFilePath, videoBuffer); + console.log(`โœ… Video downloaded successfully to ${localFilePath} for job ${job.id}`); + + return localFilePath; +} + +export const transcodeVideo = async (inputFilePath: string, fileId: string): Promise => { + const resolutions = [ + { name: '1080p', size: '1920x1080' }, + { name: '720p', size: '1280x720' }, + { name: '480p', size: '854x480' }, + { name: '360p', size: '640x360' } + ]; + + const downloadsDir = path.dirname(inputFilePath); + const outputFiles: string[] = []; + + const transcodePromises = resolutions.map((res) => { + return new Promise((resolve, reject) => { + const outputFileName = `${fileId}_${res.name}.mp4`; + const outputFilePath = path.join(downloadsDir, outputFileName); + + console.log(`โณ Starting transcode for ${res.name} (${res.size})...`); + + ffmpeg(inputFilePath) + .output(outputFilePath) + .size(res.size) + .videoCodec('libx264') + .audioCodec('aac') + .on('end', () => { + console.log(`โœ… Finished transcode for ${res.name}`); + outputFiles.push(outputFilePath); + resolve(outputFilePath); + }) + .on('error', (err) => { + console.error(`โŒ Error transcoding to ${res.name}:`, err); + reject(err); + }) + .run(); + }); + }); + + await Promise.all(transcodePromises); + return outputFiles; +}; + +export const uploadTranscodedFiles = async (outputFiles: string[], fileId: string, userId: string): Promise => { + const currentEnv = process.env.NODE_ENV === 'development' ? 'dev' : 'prod'; + const bucket = process.env.S3_BUCKET_NAME; + const uploadedKeys: string[] = []; + + const uploadPromises = outputFiles.map(async (filePath) => { + const fileName = path.basename(filePath); + // Extract resolution from filename (e.g. "fileId_720p.mp4" -> "720p") + const resolution = fileName.replace(`${fileId}_`, '').replace('.mp4', ''); + const s3Key = `${currentEnv}/users/${userId}/original/${fileId}/${resolution}.mp4`; + + const fileBuffer = fs.readFileSync(filePath); + + const command = new PutObjectCommand({ + Bucket: bucket, + Key: s3Key, + Body: fileBuffer, + ContentType: 'video/mp4', + }); + + await s3Client.send(command); + console.log(`โ˜๏ธ Uploaded ${resolution} to S3: ${s3Key}`); + uploadedKeys.push(s3Key); + }); + + await Promise.all(uploadPromises); + console.log(`โœ… All transcoded files uploaded to S3 for fileId: ${fileId}`); + return uploadedKeys; +}; diff --git a/server/src/workers/transcode.worker.ts b/server/src/workers/transcode.worker.ts index bf4c6f9..9ef4d1e 100644 --- a/server/src/workers/transcode.worker.ts +++ b/server/src/workers/transcode.worker.ts @@ -1,24 +1,48 @@ import { Worker, type Job } from "bullmq"; import { redis } from "../config/redis.js"; +import { downloadObjectFromPreSignedUrl, getPreSignedUrlForDownload, transcodeVideo, uploadTranscodedFiles } from "../services/transcode.service.js"; +import path from "path"; +import { fileURLToPath } from "url"; +import { exec } from "child_process"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); export const transcodeWorker = new Worker("transcodeQueue", async (job: Job) => { const { fileId, userId, contentType } = job.data; console.log(`๐Ÿ“ฝ๏ธ Processing job ${job.id} for fileId ${fileId}`); - // Simulate transcoding delay - await new Promise((resolve) => setTimeout(resolve, 3000)); + const videoDownloadSignedUrl = await getPreSignedUrlForDownload(fileId, userId); + + if (!videoDownloadSignedUrl) { + console.log(`โŒ Presigned url failed for job ${job.id}.`); + return; + } - console.log(`โœ… Transcoding completed for job ${job.id}`); + const localFilePath = await downloadObjectFromPreSignedUrl(videoDownloadSignedUrl, fileId, job) - // TODO: - // 1. Download original file from S3 - // 2. Transcode with fluent-ffmpeg to 720p, 360p, 240p - // 3. Upload transcoded versions back to S3 + console.log(`โณ Initiating bulk FFmpeg transcodes for ${fileId}...`); + const outputFiles = await transcodeVideo(localFilePath, fileId); + console.log(`โœ… All transcoding finished for job ${job.id}. Outputs: ${outputFiles.join(', ')}`) + console.log(`โ˜๏ธ Uploading transcoded files to S3 for ${fileId}...`); + const uploadedKeys = await uploadTranscodedFiles(outputFiles, fileId, userId); + console.log(`โœ… All uploads complete for job ${job.id}. Keys: ${uploadedKeys.join(', ')}`); }, { connection: redis as any, }); transcodeWorker.on("completed", (job) => { + exec("rm -rf downloads", (error, stdout, stderr) => { + if (error) { + console.error(`exec error: ${error.message}`); + return; + } + if (stderr) { + console.error(`stderr: ${stderr}`); + return; + } + console.log('Successfully cleaned up downloads directory'); + }) console.log(`Job ${job.id} has completed successfully!`); }); diff --git a/server/tsconfig.tsbuildinfo b/server/tsconfig.tsbuildinfo index 9cd85ac..32de4f3 100644 --- a/server/tsconfig.tsbuildinfo +++ b/server/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.ts","./src/index.ts","./src/server.ts","./src/config/redis.ts","./src/config/s3.ts","./src/controllers/auth.controller.ts","./src/middleware/auth.middleware.ts","./src/routes/auth.routes.ts","./src/routes/s3.routes.ts","./src/services/auth.service.ts","./src/services/s3.service.ts","./src/services/user.store.ts","./src/utils/generateid.ts","./src/utils/getpresignedurl.ts","./src/utils/jwt.ts","./src/utils/logger.ts","./src/workers/transcode.queue.ts","./src/workers/transcode.worker.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.ts","./src/index.ts","./src/server.ts","./src/config/redis.ts","./src/config/s3.ts","./src/controllers/auth.controller.ts","./src/middleware/auth.middleware.ts","./src/routes/auth.routes.ts","./src/routes/s3.routes.ts","./src/services/auth.service.ts","./src/services/s3.service.ts","./src/services/transcode.service.ts","./src/services/user.store.ts","./src/utils/generateid.ts","./src/utils/getpresignedurl.ts","./src/utils/jwt.ts","./src/utils/logger.ts","./src/workers/transcode.queue.ts","./src/workers/transcode.worker.ts"],"version":"5.9.3"} \ No newline at end of file From 817167e9ad5365432cad621ca0ff26ed1c105b31 Mon Sep 17 00:00:00 2001 From: vector17002 Date: Tue, 24 Mar 2026 17:21:45 +0530 Subject: [PATCH 2/7] added transcoding services and workers --- .gitignore | 1 + web/index.html | 80 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index ee93f64..890e4ec 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ dist/ .DS_Store coverage/ *.log +downloads/ \ No newline at end of file diff --git a/web/index.html b/web/index.html index 0bd30d9..da2dca1 100644 --- a/web/index.html +++ b/web/index.html @@ -1,5 +1,6 @@ + @@ -165,7 +166,7 @@ color: var(--text-muted); font-size: 0.8rem; } - + #selected-file-name { display: block; margin-top: 1rem; @@ -206,7 +207,7 @@ color: var(--success-color); border: 1px solid rgba(16, 185, 129, 0.2); } - + .progress-bar { width: 100%; height: 6px; @@ -216,7 +217,7 @@ overflow: hidden; display: none; } - + .progress-fill { height: 100%; background: var(--primary-color); @@ -228,7 +229,7 @@ display: inline-block; width: 1.25rem; height: 1.25rem; - border: 2px solid rgba(255,255,255,0.3); + border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: white; animation: spin 1s ease-in-out infinite; @@ -238,11 +239,11 @@ transform: translate(-50%, -50%); display: none; } - + .btn.loading { color: transparent; } - + .btn.loading .loader { display: block; } @@ -264,12 +265,15 @@ } @keyframes spin { - to { transform: translate(-50%, -50%) rotate(360deg); } + to { + transform: translate(-50%, -50%) rotate(360deg); + } } + @@ -278,7 +282,7 @@

Welcome Back

Sign in to upload files

- +
@@ -304,11 +308,12 @@

Welcome Back

Upload File

Secure direct upload to S3

- +
- + @@ -323,17 +328,21 @@

Upload File

Start Upload
- +
+ +
- + + \ No newline at end of file From 015854437baceec22e182f909a10fd9f1dae90de Mon Sep 17 00:00:00 2001 From: vector17002 Date: Fri, 27 Mar 2026 00:04:28 +0530 Subject: [PATCH 3/7] added hls segmenting with hls queue --- server/logs/log.txt | 290 +++++++++++++++++++++-- server/src/app.ts | 3 +- server/src/services/hls.service.ts | 141 +++++++++++ server/src/services/transcode.service.ts | 7 +- server/src/workers/hls.queue.ts | 6 + server/src/workers/hls.worker.ts | 45 ++++ server/src/workers/transcode.worker.ts | 4 + server/tsconfig.tsbuildinfo | 2 +- 8 files changed, 468 insertions(+), 30 deletions(-) create mode 100644 server/src/services/hls.service.ts create mode 100644 server/src/workers/hls.queue.ts create mode 100644 server/src/workers/hls.worker.ts diff --git a/server/logs/log.txt b/server/logs/log.txt index d64e2cf..876d95b 100644 --- a/server/logs/log.txt +++ b/server/logs/log.txt @@ -1,29 +1,5 @@ [2026-03-24T09:07:03.974Z] [LOG] Server is running on port 8080 [2026-03-24T09:08:20.935Z] [LOG] Server is running on port 8080 -[2026-03-24T09:27:25.359Z] [ERROR] Error: read ECONNRESET - at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { - errno: -54, - code: 'ECONNRESET', - syscall: 'read' -} -[2026-03-24T09:27:25.360Z] [ERROR] Error: read ECONNRESET - at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { - errno: -54, - code: 'ECONNRESET', - syscall: 'read' -} -[2026-03-24T09:35:30.379Z] [ERROR] Error: read ECONNRESET - at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { - errno: -54, - code: 'ECONNRESET', - syscall: 'read' -} -[2026-03-24T09:35:30.381Z] [ERROR] Error: read ECONNRESET - at TLSWrap.onStreamRead (node:internal/stream_base_commons:216:20) { - errno: -54, - code: 'ECONNRESET', - syscall: 'read' -} [2026-03-24T09:36:10.164Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 for fileId bjc8kfmnke612us8g3gmn [2026-03-24T09:36:10.164Z] [LOG] โœ… Transcoding completed for job 2 [2026-03-24T09:36:10.203Z] [LOG] Job 2 has completed successfully! @@ -118,3 +94,269 @@ [2026-03-24T11:49:45.191Z] [LOG] โœ… All uploads complete for job 9. Keys: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/360p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/480p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/720p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/1080p.mp4 [2026-03-24T11:49:45.221Z] [LOG] Job 9 has completed successfully! [2026-03-24T11:49:45.229Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T16:47:27.972Z] [LOG] Server is running on port 8080 +[2026-03-26T16:47:56.392Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 10 for fileId gjlpffjg44s925cfbjzkva +[2026-03-26T16:48:44.260Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva for job 10 +[2026-03-26T16:48:44.261Z] [LOG] โณ Initiating bulk FFmpeg transcodes for gjlpffjg44s925cfbjzkva... +[2026-03-26T16:48:44.262Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-26T16:48:53.754Z] [LOG] โœ… Finished transcode for 360p +[2026-03-26T16:48:53.757Z] [LOG] โœ… Finished transcode for 480p +[2026-03-26T16:48:54.798Z] [LOG] โœ… Finished transcode for 720p +[2026-03-26T16:48:55.916Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-26T16:48:55.916Z] [LOG] โœ… All transcoding finished for job 10. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_1080p.mp4 +[2026-03-26T16:48:55.916Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for gjlpffjg44s925cfbjzkva... +[2026-03-26T16:48:56.923Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/360p.mp4 +[2026-03-26T16:48:57.473Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/480p.mp4 +[2026-03-26T16:48:57.581Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/720p.mp4 +[2026-03-26T16:48:58.565Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/1080p.mp4 +[2026-03-26T16:48:58.565Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: gjlpffjg44s925cfbjzkva +[2026-03-26T16:48:58.565Z] [LOG] โœ… All uploads complete for job 10. Keys: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/360p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/480p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/720p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/1080p.mp4 +[2026-03-26T16:48:58.623Z] [LOG] HLS job added for fileId gjlpffjg44s925cfbjzkva +[2026-03-26T16:48:58.863Z] [LOG] Job 10 has completed successfully! +[2026-03-26T16:48:58.880Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T18:01:09.146Z] [LOG] Server is running on port 8080 +[2026-03-26T18:02:16.151Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 11 for fileId 65sbgktk187hir9k4k3xtq +[2026-03-26T18:02:18.247Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq for transcode job 11 +[2026-03-26T18:02:18.247Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 65sbgktk187hir9k4k3xtq... +[2026-03-26T18:02:18.247Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-26T18:02:29.169Z] [LOG] โœ… Finished transcode for 360p +[2026-03-26T18:02:29.235Z] [LOG] โœ… Finished transcode for 480p +[2026-03-26T18:02:30.306Z] [LOG] โœ… Finished transcode for 720p +[2026-03-26T18:02:31.340Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-26T18:02:31.340Z] [LOG] โœ… All transcoding finished for job 11. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_1080p.mp4 +[2026-03-26T18:02:31.340Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 65sbgktk187hir9k4k3xtq... +[2026-03-26T18:02:31.869Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/360p.mp4 +[2026-03-26T18:02:31.913Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/480p.mp4 +[2026-03-26T18:02:31.981Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/1080p.mp4 +[2026-03-26T18:02:31.985Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/720p.mp4 +[2026-03-26T18:02:31.985Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 65sbgktk187hir9k4k3xtq +[2026-03-26T18:02:31.985Z] [LOG] โœ… All uploads complete for job 11. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/1080p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/720p.mp4 +[2026-03-26T18:02:32.036Z] [LOG] HLS job added for fileId 65sbgktk187hir9k4k3xtq +[2026-03-26T18:02:32.133Z] [LOG] Job 11 has completed successfully! +[2026-03-26T18:02:32.151Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T18:07:20.938Z] [LOG] Server is running on port 8080 +[2026-03-26T18:07:21.345Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId 65sbgktk187hir9k4k3xtq +[2026-03-26T18:07:21.694Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p.mp4 for hls job 2 +[2026-03-26T18:07:21.694Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 480p bitrate... +[2026-03-26T18:07:21.695Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [480p]... +[2026-03-26T18:07:21.719Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p.mp4 for hls job 2 +[2026-03-26T18:07:21.719Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 720p bitrate... +[2026-03-26T18:07:21.720Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [720p]... +[2026-03-26T18:07:21.723Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p.mp4 for hls job 2 +[2026-03-26T18:07:21.723Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 360p bitrate... +[2026-03-26T18:07:21.723Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [360p]... +[2026-03-26T18:07:21.833Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p.mp4 for hls job 2 +[2026-03-26T18:07:21.833Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 1080p bitrate... +[2026-03-26T18:07:21.833Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [1080p]... +[2026-03-26T18:07:21.968Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-26T18:07:21.969Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 +[2026-03-26T18:07:21.969Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 +[2026-03-26T18:07:21.969Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 360p bitrate... +[2026-03-26T18:07:21.973Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 +[2026-03-26T18:07:21.973Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 +[2026-03-26T18:07:21.973Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 480p bitrate... +[2026-03-26T18:07:21.974Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-26T18:07:21.975Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 +[2026-03-26T18:07:21.975Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 +[2026-03-26T18:07:21.975Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 720p bitrate... +[2026-03-26T18:07:21.989Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-26T18:07:21.990Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 +[2026-03-26T18:07:21.990Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 +[2026-03-26T18:07:21.990Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 1080p bitrate... +[2026-03-26T18:07:22.142Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 720p bitrate +[2026-03-26T18:07:22.142Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 +[2026-03-26T18:07:22.144Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 480p bitrate +[2026-03-26T18:07:22.144Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 +[2026-03-26T18:07:22.156Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 1080p bitrate +[2026-03-26T18:07:22.156Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 +[2026-03-26T18:07:22.156Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 360p bitrate +[2026-03-26T18:07:22.157Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 +[2026-03-26T18:07:22.248Z] [LOG] Successfully cleaned up hlsDownloads directory +[2026-03-26T18:10:06.306Z] [LOG] Server is running on port 8080 +[2026-03-26T18:10:55.341Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 12 for fileId g6bn52zu2ralcgsqhpfy1 +[2026-03-26T18:10:56.721Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1 for transcode job 12 +[2026-03-26T18:10:56.721Z] [LOG] โณ Initiating bulk FFmpeg transcodes for g6bn52zu2ralcgsqhpfy1... +[2026-03-26T18:10:56.721Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-26T18:11:06.368Z] [LOG] โœ… Finished transcode for 360p +[2026-03-26T18:11:06.577Z] [LOG] โœ… Finished transcode for 480p +[2026-03-26T18:11:07.162Z] [LOG] โœ… Finished transcode for 720p +[2026-03-26T18:11:08.179Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-26T18:11:08.179Z] [LOG] โœ… All transcoding finished for job 12. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_1080p.mp4 +[2026-03-26T18:11:08.179Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for g6bn52zu2ralcgsqhpfy1... +[2026-03-26T18:11:08.535Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/360p.mp4 +[2026-03-26T18:11:08.575Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/720p.mp4 +[2026-03-26T18:11:08.605Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/480p.mp4 +[2026-03-26T18:11:08.695Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/1080p.mp4 +[2026-03-26T18:11:08.695Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: g6bn52zu2ralcgsqhpfy1 +[2026-03-26T18:11:08.695Z] [LOG] โœ… All uploads complete for job 12. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/1080p.mp4 +[2026-03-26T18:11:08.741Z] [LOG] HLS job added for fileId g6bn52zu2ralcgsqhpfy1 +[2026-03-26T18:11:08.784Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 3 for fileId g6bn52zu2ralcgsqhpfy1 +[2026-03-26T18:11:08.835Z] [LOG] Job 12 has completed successfully! +[2026-03-26T18:11:08.844Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T18:11:09.071Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p.mp4 for hls job 3 +[2026-03-26T18:11:09.071Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 480p bitrate... +[2026-03-26T18:11:09.072Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [480p]... +[2026-03-26T18:11:09.147Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-26T18:11:09.148Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p/480p.m3u8 +[2026-03-26T18:11:09.148Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p/480p.m3u8 +[2026-03-26T18:11:09.207Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p.mp4 for hls job 3 +[2026-03-26T18:11:09.207Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 360p bitrate... +[2026-03-26T18:11:09.207Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [360p]... +[2026-03-26T18:11:09.250Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-26T18:11:09.251Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p/360p.m3u8 +[2026-03-26T18:11:09.251Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p/360p.m3u8 +[2026-03-26T18:11:09.514Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p.mp4 for hls job 3 +[2026-03-26T18:11:09.514Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 720p bitrate... +[2026-03-26T18:11:09.514Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [720p]... +[2026-03-26T18:11:09.560Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-26T18:11:09.561Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p/720p.m3u8 +[2026-03-26T18:11:09.561Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p/720p.m3u8 +[2026-03-26T18:11:09.861Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p.mp4 for hls job 3 +[2026-03-26T18:11:09.861Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 1080p bitrate... +[2026-03-26T18:11:09.861Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [1080p]... +[2026-03-26T18:11:09.908Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-26T18:11:09.908Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p/1080p.m3u8 +[2026-03-26T18:11:09.908Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p/1080p.m3u8 +[2026-03-26T18:26:48.061Z] [LOG] Server is running on port 8080 +[2026-03-26T18:27:08.901Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 13 for fileId 7fj07hrkf3csvxqn1iham +[2026-03-26T18:27:10.743Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham for transcode job 13 +[2026-03-26T18:27:10.743Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 7fj07hrkf3csvxqn1iham... +[2026-03-26T18:27:10.743Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-26T18:27:20.647Z] [LOG] โœ… Finished transcode for 360p +[2026-03-26T18:27:21.057Z] [LOG] โœ… Finished transcode for 480p +[2026-03-26T18:27:21.702Z] [LOG] โœ… Finished transcode for 720p +[2026-03-26T18:27:22.775Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-26T18:27:22.775Z] [LOG] โœ… All transcoding finished for job 13. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_1080p.mp4 +[2026-03-26T18:27:22.775Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 7fj07hrkf3csvxqn1iham... +[2026-03-26T18:27:23.049Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/360p.mp4 +[2026-03-26T18:27:23.050Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/480p.mp4 +[2026-03-26T18:27:23.183Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/720p.mp4 +[2026-03-26T18:27:23.197Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/1080p.mp4 +[2026-03-26T18:27:23.197Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 7fj07hrkf3csvxqn1iham +[2026-03-26T18:27:23.197Z] [LOG] โœ… All uploads complete for job 13. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/1080p.mp4 +[2026-03-26T18:27:23.316Z] [LOG] HLS job added for fileId 7fj07hrkf3csvxqn1iham +[2026-03-26T18:27:23.357Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 4 for fileId 7fj07hrkf3csvxqn1iham +[2026-03-26T18:27:23.395Z] [LOG] Job 13 has completed successfully! +[2026-03-26T18:27:23.401Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T18:27:23.631Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p.mp4 for hls job 4 +[2026-03-26T18:27:23.631Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 480p bitrate... +[2026-03-26T18:27:23.632Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [480p]... +[2026-03-26T18:27:23.669Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p.mp4 for hls job 4 +[2026-03-26T18:27:23.669Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 360p bitrate... +[2026-03-26T18:27:23.670Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [360p]... +[2026-03-26T18:27:23.694Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-26T18:27:23.694Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8 +[2026-03-26T18:27:23.694Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8 +[2026-03-26T18:27:23.695Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 480p bitrate... +[2026-03-26T18:27:23.696Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8' +Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8' +[2026-03-26T18:27:23.712Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-26T18:27:23.712Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8 +[2026-03-26T18:27:23.712Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8 +[2026-03-26T18:27:23.712Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 360p bitrate... +[2026-03-26T18:27:23.712Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8' +Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8' +[2026-03-26T18:27:23.722Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p.mp4 for hls job 4 +[2026-03-26T18:27:23.722Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 1080p bitrate... +[2026-03-26T18:27:23.722Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [1080p]... +[2026-03-26T18:27:23.723Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p.mp4 for hls job 4 +[2026-03-26T18:27:23.723Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 720p bitrate... +[2026-03-26T18:27:23.723Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [720p]... +[2026-03-26T18:27:23.730Z] [LOG] Job 4 has failed with error: Function not implemented. +[2026-03-26T18:27:23.770Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-26T18:27:23.771Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8 +[2026-03-26T18:27:23.771Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8 +[2026-03-26T18:27:23.771Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 720p bitrate... +[2026-03-26T18:27:23.771Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8' +Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8' +[2026-03-26T18:27:23.772Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-26T18:27:23.773Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8 +[2026-03-26T18:27:23.773Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8 +[2026-03-26T18:27:23.773Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 1080p bitrate... +[2026-03-26T18:27:23.773Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8' +Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8' +[2026-03-26T18:30:55.922Z] [LOG] Server is running on port 8080 +[2026-03-26T18:31:40.104Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 14 for fileId 47a76ddw00p27bcieb6lpj +[2026-03-26T18:31:42.695Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj for transcode job 14 +[2026-03-26T18:31:42.695Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 47a76ddw00p27bcieb6lpj... +[2026-03-26T18:31:42.695Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-26T18:31:51.199Z] [LOG] โœ… Finished transcode for 360p +[2026-03-26T18:31:51.382Z] [LOG] โœ… Finished transcode for 480p +[2026-03-26T18:31:52.215Z] [LOG] โœ… Finished transcode for 720p +[2026-03-26T18:31:53.122Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-26T18:31:53.122Z] [LOG] โœ… All transcoding finished for job 14. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_1080p.mp4 +[2026-03-26T18:31:53.122Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 47a76ddw00p27bcieb6lpj... +[2026-03-26T18:31:53.431Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/480p.mp4 +[2026-03-26T18:31:53.432Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/360p.mp4 +[2026-03-26T18:31:53.578Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/720p.mp4 +[2026-03-26T18:31:53.663Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/1080p.mp4 +[2026-03-26T18:31:53.664Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 47a76ddw00p27bcieb6lpj +[2026-03-26T18:31:53.664Z] [LOG] โœ… All uploads complete for job 14. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/1080p.mp4 +[2026-03-26T18:31:53.699Z] [LOG] HLS job added for fileId 47a76ddw00p27bcieb6lpj +[2026-03-26T18:31:53.787Z] [LOG] Job 14 has completed successfully! +[2026-03-26T18:31:53.789Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 5 for fileId 47a76ddw00p27bcieb6lpj +[2026-03-26T18:31:53.810Z] [LOG] Successfully cleaned up downloads directory +[2026-03-26T18:31:54.202Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p.mp4 for hls job 5 +[2026-03-26T18:31:54.202Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 480p bitrate... +[2026-03-26T18:31:54.203Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [480p]... +[2026-03-26T18:31:54.279Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-26T18:31:54.280Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 +[2026-03-26T18:31:54.280Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 +[2026-03-26T18:31:54.280Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 480p bitrate... +[2026-03-26T18:31:54.325Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p.mp4 for hls job 5 +[2026-03-26T18:31:54.325Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 360p bitrate... +[2026-03-26T18:31:54.326Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [360p]... +[2026-03-26T18:31:54.368Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-26T18:31:54.369Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 +[2026-03-26T18:31:54.369Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 +[2026-03-26T18:31:54.369Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 360p bitrate... +[2026-03-26T18:31:54.567Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 +[2026-03-26T18:31:54.597Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_001.ts +[2026-03-26T18:31:54.647Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 +[2026-03-26T18:31:54.656Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_001.ts +[2026-03-26T18:31:54.666Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p.mp4 for hls job 5 +[2026-03-26T18:31:54.666Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 720p bitrate... +[2026-03-26T18:31:54.666Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [720p]... +[2026-03-26T18:31:54.673Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_000.ts +[2026-03-26T18:31:54.673Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [480p] +[2026-03-26T18:31:54.673Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/480p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_000.ts +[2026-03-26T18:31:54.726Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-26T18:31:54.727Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 +[2026-03-26T18:31:54.727Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 +[2026-03-26T18:31:54.727Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 720p bitrate... +[2026-03-26T18:31:54.745Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_000.ts +[2026-03-26T18:31:54.745Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [360p] +[2026-03-26T18:31:54.745Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/360p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_000.ts +[2026-03-26T18:31:54.840Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 +[2026-03-26T18:31:54.882Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_001.ts +[2026-03-26T18:31:55.075Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p.mp4 for hls job 5 +[2026-03-26T18:31:55.075Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 1080p bitrate... +[2026-03-26T18:31:55.075Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [1080p]... +[2026-03-26T18:31:55.086Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_000.ts +[2026-03-26T18:31:55.087Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [720p] +[2026-03-26T18:31:55.087Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/720p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_000.ts +[2026-03-26T18:31:55.131Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-26T18:31:55.132Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 +[2026-03-26T18:31:55.132Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 +[2026-03-26T18:31:55.132Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 1080p bitrate... +[2026-03-26T18:31:55.218Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 +[2026-03-26T18:31:55.341Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_000.ts +[2026-03-26T18:31:55.601Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_001.ts +[2026-03-26T18:31:55.601Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [1080p] +[2026-03-26T18:31:55.601Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_000.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_001.ts +[2026-03-26T18:31:55.641Z] [LOG] Successfully cleaned up hlsDownloads directory diff --git a/server/src/app.ts b/server/src/app.ts index 3713542..c50999d 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -4,8 +4,9 @@ import authRouter from "./routes/auth.routes.js"; import s3Router from "./routes/s3.routes.js"; import { authMiddleware } from "./middleware/auth.middleware.js"; -// Initialize BullMQ worker +// Initialize BullMQ workers import "./workers/transcode.worker.js"; +import "./workers/hls.worker.js"; const app = express(); app.use(cors({ diff --git a/server/src/services/hls.service.ts b/server/src/services/hls.service.ts new file mode 100644 index 0000000..e40544f --- /dev/null +++ b/server/src/services/hls.service.ts @@ -0,0 +1,141 @@ +import { getDownloadUrl } from "../utils/getPresignedUrl.js"; +import { type Job } from "bullmq"; +import axios from "axios"; +import path from "path"; +import fs from "fs"; +import { fileURLToPath } from "url"; +import ffmpeg from "fluent-ffmpeg"; +import s3Client from "../config/s3.js"; +import { PutObjectCommand } from "@aws-sdk/client-s3"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + + +const bitRateFiles = [ + "1080p", + "720p", + "480p", + "360p" +] + +export type VideoDownloadSignedUrlsWithBitrates = { + bitrate: string; + url: string; +} + +export const getPreSignedUrlForDownloadHls = async (fileId: string, userId: string) => { + const currentEnv = process.env.NODE_ENV === 'development' ? 'dev' : 'prod'; + const baseVideoObjectId = `${currentEnv}/users/${userId}/original/${fileId}`; + + const videoDownloadSignedUrls: VideoDownloadSignedUrlsWithBitrates[] = []; + + await Promise.all(bitRateFiles.map(async (bitRateFile) => { + const videoObjectId = `${baseVideoObjectId}/${bitRateFile}.mp4` + const videoDownloadSignedUrl = await getDownloadUrl(videoObjectId) + + if (!videoDownloadSignedUrl) { + throw new Error(`Video download url is not found for file ${baseVideoObjectId} for bitrate ${bitRateFile}`); + } + + videoDownloadSignedUrls.push({ bitrate: bitRateFile, url: videoDownloadSignedUrl }) + })) + + return videoDownloadSignedUrls +} + +export const downloadObjectFromPreSignedUrlWithBitrate = async (videoDownloadSignedUrl: string, fileId: string, job: Job, bitrate: string) => { + // Download the video as a buffer + const response = await axios.get(videoDownloadSignedUrl, { responseType: 'arraybuffer' }); + + if (response.status !== 200) + console.log(`Video download failed for hls job id ${job.id}`) + + const videoBuffer = response.data; + + // Ensure downloads directory exists (hlsDownloads/{fileId}/{bitrate}) + const downloadsDir = path.join(__dirname, '..', '..', 'hlsDownloads', fileId); + if (!fs.existsSync(downloadsDir)) { + fs.mkdirSync(downloadsDir, { recursive: true }); + } + + // Save the buffer to the local repository + const localFilePath = path.join(downloadsDir, `${bitrate}.mp4`); + fs.writeFileSync(localFilePath, videoBuffer); + console.log(`โœ… Video downloaded successfully to ${localFilePath} for hls job ${job.id}`); + + return localFilePath; +} + +export const segmentVideo = async (localFilePath: string, fileId: string, job: Job, bitrate: string): Promise => { + // Output directory: hlsDownloads/{fileId}/{bitrate}/ + const outputDir = path.join(path.dirname(localFilePath), bitrate); + if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); + } + + const playlistPath = path.join(outputDir, `${bitrate}.m3u8`); + const segmentPattern = path.join(outputDir, `segment_%03d.ts`); + + return new Promise((resolve, reject) => { + console.log(`โณ Starting HLS segmentation for ${fileId} [${bitrate}]...`); + + ffmpeg(localFilePath) + .outputOptions([ + '-codec copy', // no re-encoding, just repackage + '-start_number 0', + '-hls_time 6', // 10-second segments + '-hls_list_size 0', // keep all segments in the playlist + '-hls_segment_filename', segmentPattern, + '-f hls', + ]) + .output(playlistPath) + .on('progress', (progress) => { + if (progress.percent) { + console.log(`๐Ÿ“Š HLS [${bitrate}] progress: ${Math.round(progress.percent)}%`); + } + }) + .on('end', () => { + console.log(`โœ… HLS segmentation complete for ${fileId} [${bitrate}] โ†’ ${playlistPath}`); + resolve(playlistPath); + }) + .on('error', (err) => { + console.error(`โŒ HLS segmentation failed for ${fileId} [${bitrate}]:`, err); + reject(err); + }) + .run(); + }); +} + +export const uploadSegmentedVideos = async (playlistPath: string, fileId: string, userId: string, bitrate: string): Promise => { + const currentEnv = process.env.NODE_ENV === 'development' ? 'dev' : 'prod'; + const bucket = process.env.HLS_S3_BUCKET_NAME; + const s3BaseKey = `${currentEnv}/users/${userId}/${fileId}/${bitrate}`; + + // The playlist lives in the segment output directory โ€” read all files from there + const segmentDir = path.dirname(playlistPath); + const files = fs.readdirSync(segmentDir); + const uploadedKeys: string[] = []; + + await Promise.all(files.map(async (fileName) => { + const filePath = path.join(segmentDir, fileName); + const s3Key = `${s3BaseKey}/${fileName}`; + const contentType = fileName.endsWith('.m3u8') + ? 'application/x-mpegURL' + : 'video/MP2T'; // .ts segments + + const command = new PutObjectCommand({ + Bucket: bucket, + Key: s3Key, + Body: fs.createReadStream(filePath), + ContentType: contentType, + }); + + await s3Client.send(command); + console.log(`โ˜๏ธ Uploaded ${fileName} to S3: ${s3Key}`); + uploadedKeys.push(s3Key); + })); + + console.log(`โœ… All HLS files uploaded to S3 for ${fileId} [${bitrate}]`); + return uploadedKeys; +} diff --git a/server/src/services/transcode.service.ts b/server/src/services/transcode.service.ts index a1c4fda..98676b9 100644 --- a/server/src/services/transcode.service.ts +++ b/server/src/services/transcode.service.ts @@ -18,11 +18,10 @@ export const getPreSignedUrlForDownload = async (fileId: string, userId: string) const videoDownloadSignedUrl = await getDownloadUrl(videoObjectId) if (!videoDownloadSignedUrl) { - throw new Error("Video download signed url not found"); + throw new Error("Video download signed url not found for transcode job"); } return videoDownloadSignedUrl - } export const downloadObjectFromPreSignedUrl = async (videoDownloadSignedUrl: string, fileId: string, job: Job) => { @@ -30,7 +29,7 @@ export const downloadObjectFromPreSignedUrl = async (videoDownloadSignedUrl: str const response = await axios.get(videoDownloadSignedUrl, { responseType: 'arraybuffer' }); if (response.status !== 200) - console.log(`Video download failed for job id ${job.id}`) + console.log(`Video download failed for transcode job id ${job.id}`) const videoBuffer = response.data; @@ -43,7 +42,7 @@ export const downloadObjectFromPreSignedUrl = async (videoDownloadSignedUrl: str // Save the buffer to the local repository const localFilePath = path.join(downloadsDir, fileId); fs.writeFileSync(localFilePath, videoBuffer); - console.log(`โœ… Video downloaded successfully to ${localFilePath} for job ${job.id}`); + console.log(`โœ… Video downloaded successfully to ${localFilePath} for transcode job ${job.id}`); return localFilePath; } diff --git a/server/src/workers/hls.queue.ts b/server/src/workers/hls.queue.ts new file mode 100644 index 0000000..0816e64 --- /dev/null +++ b/server/src/workers/hls.queue.ts @@ -0,0 +1,6 @@ +import { Queue } from "bullmq"; +import { redis } from "../config/redis.js"; + +export const hlsQueue = new Queue("hlsQueue", { + connection: redis as any +}); diff --git a/server/src/workers/hls.worker.ts b/server/src/workers/hls.worker.ts new file mode 100644 index 0000000..72361f3 --- /dev/null +++ b/server/src/workers/hls.worker.ts @@ -0,0 +1,45 @@ +import { Worker, type Job } from "bullmq"; +import { redis } from "../config/redis.js"; +import { downloadObjectFromPreSignedUrlWithBitrate, getPreSignedUrlForDownloadHls, segmentVideo, uploadSegmentedVideos } from "../services/hls.service.js"; +import { exec } from "child_process"; + +export const hlsWorker = new Worker("hlsQueue", async (job: Job) => { + const { fileId, userId } = job.data; + console.log(`๐Ÿ“ฝ๏ธ Processing HLS job ${job.id} for fileId ${fileId}`); + + const videoDownloadSignedUrls = await getPreSignedUrlForDownloadHls(fileId, userId); + + await Promise.all(videoDownloadSignedUrls.map(async (url) => { + const localFilePath = await downloadObjectFromPreSignedUrlWithBitrate(url.url, fileId, job, url.bitrate); + + console.log(`โณ Initiating HLS segmenting for ${fileId} for ${url.bitrate} bitrate...`); + const playlistPath = await segmentVideo(localFilePath, fileId, job, url.bitrate); + console.log(`โœ… HLS playlist created at ${playlistPath}`); + + + console.log(`โ˜๏ธ Uploading segmented files to S3 for ${fileId} with ${url.bitrate} bitrate...`); + const uploadedKeys = await uploadSegmentedVideos(playlistPath, fileId, userId, url.bitrate); + console.log(`โœ… All hls uploads complete for job ${job.id}. Keys: ${uploadedKeys}`); + })); + +}, { + connection: redis as any, +}); + +hlsWorker.on("completed", () => { + exec("rm -rf hlsDownloads", (error, stdout, stderr) => { + if (error) { + console.error(`exec error: ${error.message}`); + return; + } + if (stderr) { + console.error(`stderr: ${stderr}`); + return; + } + console.log('Successfully cleaned up hlsDownloads directory'); + }) +}) + +hlsWorker.on("failed", (job, err) => { + console.log(`Job ${job?.id} has failed with error: ${err.message}`); +}) \ No newline at end of file diff --git a/server/src/workers/transcode.worker.ts b/server/src/workers/transcode.worker.ts index 9ef4d1e..d9c0734 100644 --- a/server/src/workers/transcode.worker.ts +++ b/server/src/workers/transcode.worker.ts @@ -4,6 +4,7 @@ import { downloadObjectFromPreSignedUrl, getPreSignedUrlForDownload, transcodeVi import path from "path"; import { fileURLToPath } from "url"; import { exec } from "child_process"; +import { hlsQueue } from "./hls.queue.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -27,6 +28,9 @@ export const transcodeWorker = new Worker("transcodeQueue", async (job: Job) => console.log(`โ˜๏ธ Uploading transcoded files to S3 for ${fileId}...`); const uploadedKeys = await uploadTranscodedFiles(outputFiles, fileId, userId); console.log(`โœ… All uploads complete for job ${job.id}. Keys: ${uploadedKeys.join(', ')}`); + + await hlsQueue.add("hls", { fileId, userId }) + console.log(`HLS job added for fileId ${fileId}`) }, { connection: redis as any, }); diff --git a/server/tsconfig.tsbuildinfo b/server/tsconfig.tsbuildinfo index 32de4f3..2a8babd 100644 --- a/server/tsconfig.tsbuildinfo +++ b/server/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/app.ts","./src/index.ts","./src/server.ts","./src/config/redis.ts","./src/config/s3.ts","./src/controllers/auth.controller.ts","./src/middleware/auth.middleware.ts","./src/routes/auth.routes.ts","./src/routes/s3.routes.ts","./src/services/auth.service.ts","./src/services/s3.service.ts","./src/services/transcode.service.ts","./src/services/user.store.ts","./src/utils/generateid.ts","./src/utils/getpresignedurl.ts","./src/utils/jwt.ts","./src/utils/logger.ts","./src/workers/transcode.queue.ts","./src/workers/transcode.worker.ts"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/app.ts","./src/index.ts","./src/server.ts","./src/config/redis.ts","./src/config/s3.ts","./src/controllers/auth.controller.ts","./src/middleware/auth.middleware.ts","./src/routes/auth.routes.ts","./src/routes/s3.routes.ts","./src/services/auth.service.ts","./src/services/hls.service.ts","./src/services/s3.service.ts","./src/services/transcode.service.ts","./src/services/user.store.ts","./src/utils/generateid.ts","./src/utils/getpresignedurl.ts","./src/utils/jwt.ts","./src/utils/logger.ts","./src/workers/hls.queue.ts","./src/workers/hls.worker.ts","./src/workers/transcode.queue.ts","./src/workers/transcode.worker.ts"],"version":"5.9.3"} \ No newline at end of file From 8b7bf560003e42c8c379dbbb5e16bc35c73d8579 Mon Sep 17 00:00:00 2001 From: vector17002 Date: Fri, 27 Mar 2026 00:04:58 +0530 Subject: [PATCH 4/7] added hls segmenting with hls queue --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 890e4ec..ce07b27 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ dist/ .DS_Store coverage/ *.log -downloads/ \ No newline at end of file +downloads/ +hlsDownloads/ \ No newline at end of file From 17a8ec02a7a44f4f4d278cfb05585ecd07b6ed2b Mon Sep 17 00:00:00 2001 From: vector17002 Date: Sun, 29 Mar 2026 20:36:09 +0530 Subject: [PATCH 5/7] added exponential backoff mechanism --- server/logs/log.txt | 322 +++++++++++++++++++++++++ server/src/workers/hls.queue.ts | 11 +- server/src/workers/transcode.queue.ts | 11 +- server/src/workers/transcode.worker.ts | 66 ++++- 4 files changed, 405 insertions(+), 5 deletions(-) diff --git a/server/logs/log.txt b/server/logs/log.txt index 876d95b..4d67b79 100644 --- a/server/logs/log.txt +++ b/server/logs/log.txt @@ -360,3 +360,325 @@ Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/ [2026-03-26T18:31:55.601Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [1080p] [2026-03-26T18:31:55.601Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_000.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_001.ts [2026-03-26T18:31:55.641Z] [LOG] Successfully cleaned up hlsDownloads directory +[2026-03-29T14:41:48.831Z] [LOG] Server is running on port 8080 +[2026-03-29T14:44:16.549Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 1 for fileId xcolv0ia3bezijeod8nhcj +[2026-03-29T14:44:40.469Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj for transcode job 1 +[2026-03-29T14:44:40.469Z] [LOG] โณ Initiating bulk FFmpeg transcodes for xcolv0ia3bezijeod8nhcj... +[2026-03-29T14:44:40.469Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-29T14:44:40.471Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-29T14:44:40.472Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-29T14:44:40.473Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-29T14:44:52.263Z] [LOG] โœ… Finished transcode for 360p +[2026-03-29T14:44:52.607Z] [LOG] โœ… Finished transcode for 480p +[2026-03-29T14:44:53.191Z] [LOG] โœ… Finished transcode for 720p +[2026-03-29T14:44:54.438Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-29T14:44:54.438Z] [LOG] โœ… All transcoding finished for job 1. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_1080p.mp4 +[2026-03-29T14:44:54.438Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for xcolv0ia3bezijeod8nhcj... +[2026-03-29T14:44:54.936Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/360p.mp4 +[2026-03-29T14:44:55.123Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/720p.mp4 +[2026-03-29T14:44:55.477Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/480p.mp4 +[2026-03-29T14:44:56.301Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/1080p.mp4 +[2026-03-29T14:44:56.301Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: xcolv0ia3bezijeod8nhcj +[2026-03-29T14:44:56.301Z] [LOG] โœ… All uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/360p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/720p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/480p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/1080p.mp4 +[2026-03-29T14:44:56.358Z] [LOG] HLS job added for fileId xcolv0ia3bezijeod8nhcj +[2026-03-29T14:44:56.415Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 1 for fileId xcolv0ia3bezijeod8nhcj +[2026-03-29T14:44:56.448Z] [LOG] Job 1 has completed successfully! +[2026-03-29T14:44:56.457Z] [LOG] Successfully cleaned up downloads directory +[2026-03-29T14:44:56.789Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p.mp4 for hls job 1 +[2026-03-29T14:44:56.789Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 360p bitrate... +[2026-03-29T14:44:56.789Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [360p]... +[2026-03-29T14:44:56.820Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p.mp4 for hls job 1 +[2026-03-29T14:44:56.820Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 480p bitrate... +[2026-03-29T14:44:56.820Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [480p]... +[2026-03-29T14:44:56.839Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p.mp4 for hls job 1 +[2026-03-29T14:44:56.839Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 720p bitrate... +[2026-03-29T14:44:56.839Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [720p]... +[2026-03-29T14:44:56.850Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 +[2026-03-29T14:44:56.850Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 +[2026-03-29T14:44:56.850Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 360p bitrate... +[2026-03-29T14:44:56.877Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-29T14:44:56.878Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 +[2026-03-29T14:44:56.878Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 +[2026-03-29T14:44:56.878Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 480p bitrate... +[2026-03-29T14:44:56.889Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-29T14:44:56.889Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 +[2026-03-29T14:44:56.889Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 +[2026-03-29T14:44:56.889Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 720p bitrate... +[2026-03-29T14:44:57.146Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 +[2026-03-29T14:44:57.150Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 +[2026-03-29T14:44:57.197Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 +[2026-03-29T14:44:57.243Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p.mp4 for hls job 1 +[2026-03-29T14:44:57.243Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 1080p bitrate... +[2026-03-29T14:44:57.243Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [1080p]... +[2026-03-29T14:44:57.252Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_001.ts +[2026-03-29T14:44:57.279Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_001.ts +[2026-03-29T14:44:57.281Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_001.ts +[2026-03-29T14:44:57.292Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-29T14:44:57.292Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 +[2026-03-29T14:44:57.292Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 +[2026-03-29T14:44:57.292Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 1080p bitrate... +[2026-03-29T14:44:57.434Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_000.ts +[2026-03-29T14:44:57.435Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [360p] +[2026-03-29T14:44:57.435Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_000.ts +[2026-03-29T14:44:57.457Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 +[2026-03-29T14:44:57.468Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_000.ts +[2026-03-29T14:44:57.468Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [480p] +[2026-03-29T14:44:57.468Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_000.ts +[2026-03-29T14:44:57.521Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_001.ts +[2026-03-29T14:44:57.794Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_000.ts +[2026-03-29T14:44:57.794Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [1080p] +[2026-03-29T14:44:57.794Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_000.ts +[2026-03-29T14:44:58.035Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_000.ts +[2026-03-29T14:44:58.036Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [720p] +[2026-03-29T14:44:58.036Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_000.ts +[2026-03-29T14:44:58.102Z] [LOG] Successfully cleaned up hlsDownloads directory +[2026-03-29T14:51:08.567Z] [LOG] Server is running on port 8080 +[2026-03-29T14:51:38.246Z] [LOG] +============================================================ +[2026-03-29T14:51:38.246Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci +[2026-03-29T14:51:38.246Z] [LOG] ๐Ÿ”„ Attempt 1 / 5 +[2026-03-29T14:51:38.246Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:38.246Z +[2026-03-29T14:51:38.246Z] [LOG] ============================================================ +[2026-03-29T14:51:38.246Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~5s (exponential backoff). +[2026-03-29T14:51:38.341Z] [LOG] +โŒ Job 2 FAILED on attempt 1/5 +[2026-03-29T14:51:38.342Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~5s (exponential backoff). +[2026-03-29T14:51:38.343Z] [LOG] โณ Next retry in ~5s (exponential backoff: 5s ร— 2^0) +[2026-03-29T14:51:43.482Z] [LOG] +============================================================ +[2026-03-29T14:51:43.482Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci +[2026-03-29T14:51:43.482Z] [LOG] ๐Ÿ”„ Attempt 2 / 5 +[2026-03-29T14:51:43.482Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:43.482Z +[2026-03-29T14:51:43.482Z] [LOG] ============================================================ +[2026-03-29T14:51:43.482Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~10s (exponential backoff). +[2026-03-29T14:51:43.531Z] [LOG] +โŒ Job 2 FAILED on attempt 2/5 +[2026-03-29T14:51:43.531Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~10s (exponential backoff). +[2026-03-29T14:51:43.531Z] [LOG] โณ Next retry in ~10s (exponential backoff: 5s ร— 2^1) +[2026-03-29T14:51:53.592Z] [LOG] +============================================================ +[2026-03-29T14:51:53.593Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci +[2026-03-29T14:51:53.593Z] [LOG] ๐Ÿ”„ Attempt 3 / 5 +[2026-03-29T14:51:53.593Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:53.593Z +[2026-03-29T14:51:53.593Z] [LOG] ============================================================ +[2026-03-29T14:51:53.593Z] [LOG] โœ… ๐Ÿงช Attempt 3 โ€” past simulated failure threshold, proceeding normally! +[2026-03-29T14:52:00.960Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci for transcode job 2 +[2026-03-29T14:52:00.960Z] [LOG] โณ Initiating bulk FFmpeg transcodes for erizscz8cof0w7o9roswsci... +[2026-03-29T14:52:00.960Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-29T14:52:00.962Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-29T14:52:00.962Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-29T14:52:00.963Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-29T14:52:11.077Z] [LOG] โœ… Finished transcode for 360p +[2026-03-29T14:52:11.314Z] [LOG] โœ… Finished transcode for 480p +[2026-03-29T14:52:12.071Z] [LOG] โœ… Finished transcode for 720p +[2026-03-29T14:52:13.097Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-29T14:52:13.097Z] [LOG] โœ… All transcoding finished for job 2. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_1080p.mp4 +[2026-03-29T14:52:13.097Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for erizscz8cof0w7o9roswsci... +[2026-03-29T14:52:13.662Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/480p.mp4 +[2026-03-29T14:52:13.744Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/720p.mp4 +[2026-03-29T14:52:14.101Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/1080p.mp4 +[2026-03-29T14:52:14.130Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/360p.mp4 +[2026-03-29T14:52:14.130Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: erizscz8cof0w7o9roswsci +[2026-03-29T14:52:14.130Z] [LOG] โœ… All uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/480p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/720p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/1080p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/360p.mp4 +[2026-03-29T14:52:14.204Z] [LOG] HLS job added for fileId erizscz8cof0w7o9roswsci +[2026-03-29T14:52:14.303Z] [LOG] Job 2 has completed successfully! +[2026-03-29T14:52:14.319Z] [LOG] Successfully cleaned up downloads directory +[2026-03-29T14:52:14.520Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId erizscz8cof0w7o9roswsci +[2026-03-29T14:52:15.118Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p.mp4 for hls job 2 +[2026-03-29T14:52:15.118Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 1080p bitrate... +[2026-03-29T14:52:15.119Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [1080p]... +[2026-03-29T14:52:15.186Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-29T14:52:15.186Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:15.187Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:15.187Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 1080p bitrate... +[2026-03-29T14:52:15.195Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p.mp4 for hls job 2 +[2026-03-29T14:52:15.195Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 480p bitrate... +[2026-03-29T14:52:15.196Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [480p]... +[2026-03-29T14:52:15.235Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p.mp4 for hls job 2 +[2026-03-29T14:52:15.235Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 360p bitrate... +[2026-03-29T14:52:15.235Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [360p]... +[2026-03-29T14:52:15.236Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-29T14:52:15.237Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:15.237Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:15.237Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 480p bitrate... +[2026-03-29T14:52:15.275Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-29T14:52:15.276Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:15.276Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:15.276Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 360p bitrate... +[2026-03-29T14:52:15.375Z] [WARN] An error was encountered in a non-retryable streaming request. +[2026-03-29T14:52:15.448Z] [WARN] An error was encountered in a non-retryable streaming request. +[2026-03-29T14:52:15.464Z] [LOG] Job 2 has failed with error: read ECONNRESET +[2026-03-29T14:52:15.546Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:15.547Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:15.574Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p.mp4 for hls job 2 +[2026-03-29T14:52:15.574Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 720p bitrate... +[2026-03-29T14:52:15.574Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [720p]... +[2026-03-29T14:52:15.626Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts +[2026-03-29T14:52:15.629Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-29T14:52:15.630Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:15.630Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:15.630Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 720p bitrate... +[2026-03-29T14:52:15.687Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts +[2026-03-29T14:52:15.759Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:15.793Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts +[2026-03-29T14:52:15.794Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [480p] +[2026-03-29T14:52:15.794Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts +[2026-03-29T14:52:15.820Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:16.066Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts +[2026-03-29T14:52:16.179Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts +[2026-03-29T14:52:16.179Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [720p] +[2026-03-29T14:52:16.179Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts +[2026-03-29T14:52:16.451Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts +[2026-03-29T14:52:20.518Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId erizscz8cof0w7o9roswsci +[2026-03-29T14:52:20.908Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p.mp4 for hls job 2 +[2026-03-29T14:52:20.909Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 480p bitrate... +[2026-03-29T14:52:20.909Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [480p]... +[2026-03-29T14:52:20.919Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p.mp4 for hls job 2 +[2026-03-29T14:52:20.919Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 360p bitrate... +[2026-03-29T14:52:20.919Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [360p]... +[2026-03-29T14:52:20.979Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-29T14:52:20.980Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p.mp4 for hls job 2 +[2026-03-29T14:52:20.980Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 720p bitrate... +[2026-03-29T14:52:20.980Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [720p]... +[2026-03-29T14:52:20.981Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:20.981Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:20.981Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 480p bitrate... +[2026-03-29T14:52:20.982Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-29T14:52:20.983Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:20.983Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:20.983Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 360p bitrate... +[2026-03-29T14:52:21.026Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p.mp4 for hls job 2 +[2026-03-29T14:52:21.026Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 1080p bitrate... +[2026-03-29T14:52:21.026Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [1080p]... +[2026-03-29T14:52:21.027Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-29T14:52:21.027Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:21.027Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:21.027Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 720p bitrate... +[2026-03-29T14:52:21.071Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-29T14:52:21.071Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:21.071Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:21.071Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 1080p bitrate... +[2026-03-29T14:52:21.105Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts +[2026-03-29T14:52:21.135Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8 +[2026-03-29T14:52:21.139Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8 +[2026-03-29T14:52:21.164Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_001.ts +[2026-03-29T14:52:21.199Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts +[2026-03-29T14:52:21.199Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [360p] +[2026-03-29T14:52:21.199Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts +[2026-03-29T14:52:21.201Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8 +[2026-03-29T14:52:21.312Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 +[2026-03-29T14:52:21.356Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts +[2026-03-29T14:52:21.562Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts +[2026-03-29T14:52:21.562Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [720p] +[2026-03-29T14:52:21.562Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts +[2026-03-29T14:52:21.633Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts +[2026-03-29T14:52:21.721Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts +[2026-03-29T14:52:21.721Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [480p] +[2026-03-29T14:52:21.721Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts +[2026-03-29T14:52:22.216Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_000.ts +[2026-03-29T14:52:22.216Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [1080p] +[2026-03-29T14:52:22.216Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_000.ts +[2026-03-29T14:52:22.288Z] [LOG] Successfully cleaned up hlsDownloads directory +[2026-03-29T14:57:08.843Z] [LOG] Server is running on port 8080 +[2026-03-29T14:57:36.935Z] [LOG] +============================================================ +[2026-03-29T14:57:36.936Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx +[2026-03-29T14:57:36.936Z] [LOG] ๐Ÿ”„ Attempt 1 / 5 +[2026-03-29T14:57:36.936Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:36.936Z +[2026-03-29T14:57:36.936Z] [LOG] ============================================================ +[2026-03-29T14:57:36.936Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~3.0s (exponential backoff). +[2026-03-29T14:57:37.020Z] [LOG] +โŒ Job 3 FAILED on attempt 1/5 +[2026-03-29T14:57:37.020Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~3.0s (exponential backoff). +[2026-03-29T14:57:37.020Z] [LOG] โณ Next retry in ~3.0s (exponential backoff: 3s ร— 2^0) +[2026-03-29T14:57:40.455Z] [LOG] +============================================================ +[2026-03-29T14:57:40.455Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx +[2026-03-29T14:57:40.456Z] [LOG] ๐Ÿ”„ Attempt 2 / 5 +[2026-03-29T14:57:40.456Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:40.456Z +[2026-03-29T14:57:40.456Z] [LOG] โฑ๏ธ Time since last attempt: 3.5s (expected: ~3.0s) +[2026-03-29T14:57:40.456Z] [LOG] ============================================================ +[2026-03-29T14:57:40.456Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~6.0s (exponential backoff). +[2026-03-29T14:57:40.522Z] [LOG] +โŒ Job 3 FAILED on attempt 2/5 +[2026-03-29T14:57:40.522Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~6.0s (exponential backoff). +[2026-03-29T14:57:40.522Z] [LOG] โณ Next retry in ~6.0s (exponential backoff: 3s ร— 2^1) +[2026-03-29T14:57:46.618Z] [LOG] +============================================================ +[2026-03-29T14:57:46.618Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx +[2026-03-29T14:57:46.618Z] [LOG] ๐Ÿ”„ Attempt 3 / 5 +[2026-03-29T14:57:46.618Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:46.618Z +[2026-03-29T14:57:46.618Z] [LOG] โฑ๏ธ Time since last attempt: 6.2s (expected: ~6.0s) +[2026-03-29T14:57:46.618Z] [LOG] ============================================================ +[2026-03-29T14:57:46.618Z] [LOG] โœ… ๐Ÿงช Attempt 3 โ€” past simulated failure threshold, proceeding normally! +[2026-03-29T14:58:25.107Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx for transcode job 3 +[2026-03-29T14:58:25.107Z] [LOG] โณ Initiating bulk FFmpeg transcodes for i79oyab6j9o6x8kbfedx... +[2026-03-29T14:58:25.107Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... +[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 720p (1280x720)... +[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 480p (854x480)... +[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 360p (640x360)... +[2026-03-29T14:58:36.024Z] [LOG] โœ… Finished transcode for 360p +[2026-03-29T14:58:36.066Z] [LOG] โœ… Finished transcode for 480p +[2026-03-29T14:58:37.067Z] [LOG] โœ… Finished transcode for 720p +[2026-03-29T14:58:38.001Z] [LOG] โœ… Finished transcode for 1080p +[2026-03-29T14:58:38.001Z] [LOG] โœ… All transcoding finished for job 3. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_1080p.mp4 +[2026-03-29T14:58:38.001Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for i79oyab6j9o6x8kbfedx... +[2026-03-29T14:58:38.534Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/360p.mp4 +[2026-03-29T14:58:38.572Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/480p.mp4 +[2026-03-29T14:58:38.960Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/720p.mp4 +[2026-03-29T14:58:39.019Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/1080p.mp4 +[2026-03-29T14:58:39.020Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: i79oyab6j9o6x8kbfedx +[2026-03-29T14:58:39.020Z] [LOG] โœ… All uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/360p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/480p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/720p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/1080p.mp4 +[2026-03-29T14:58:39.063Z] [LOG] HLS job added for fileId i79oyab6j9o6x8kbfedx +[2026-03-29T14:58:39.066Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 3 for fileId i79oyab6j9o6x8kbfedx +[2026-03-29T14:58:39.150Z] [LOG] Job 3 has completed successfully! +[2026-03-29T14:58:39.156Z] [LOG] Successfully cleaned up downloads directory +[2026-03-29T14:58:39.346Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p.mp4 for hls job 3 +[2026-03-29T14:58:39.346Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 360p bitrate... +[2026-03-29T14:58:39.347Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [360p]... +[2026-03-29T14:58:39.413Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p.mp4 for hls job 3 +[2026-03-29T14:58:39.413Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 480p bitrate... +[2026-03-29T14:58:39.413Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [480p]... +[2026-03-29T14:58:39.415Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% +[2026-03-29T14:58:39.416Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 +[2026-03-29T14:58:39.416Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 +[2026-03-29T14:58:39.416Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 360p bitrate... +[2026-03-29T14:58:39.437Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p.mp4 for hls job 3 +[2026-03-29T14:58:39.438Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 720p bitrate... +[2026-03-29T14:58:39.438Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [720p]... +[2026-03-29T14:58:39.457Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% +[2026-03-29T14:58:39.458Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 +[2026-03-29T14:58:39.458Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 +[2026-03-29T14:58:39.458Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 480p bitrate... +[2026-03-29T14:58:39.481Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% +[2026-03-29T14:58:39.482Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 +[2026-03-29T14:58:39.482Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 +[2026-03-29T14:58:39.482Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 720p bitrate... +[2026-03-29T14:58:39.593Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p.mp4 for hls job 3 +[2026-03-29T14:58:39.593Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 1080p bitrate... +[2026-03-29T14:58:39.593Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [1080p]... +[2026-03-29T14:58:39.639Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 +[2026-03-29T14:58:39.641Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% +[2026-03-29T14:58:39.642Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 +[2026-03-29T14:58:39.642Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 +[2026-03-29T14:58:39.642Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 1080p bitrate... +[2026-03-29T14:58:39.651Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 +[2026-03-29T14:58:39.661Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 +[2026-03-29T14:58:39.685Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_001.ts +[2026-03-29T14:58:39.706Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_001.ts +[2026-03-29T14:58:39.806Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 +[2026-03-29T14:58:39.862Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_000.ts +[2026-03-29T14:58:39.862Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [360p] +[2026-03-29T14:58:39.862Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/360p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_000.ts +[2026-03-29T14:58:39.907Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_000.ts +[2026-03-29T14:58:39.911Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_000.ts +[2026-03-29T14:58:39.911Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [480p] +[2026-03-29T14:58:39.911Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/480p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_000.ts +[2026-03-29T14:58:39.974Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_001.ts +[2026-03-29T14:58:39.974Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [720p] +[2026-03-29T14:58:39.974Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/720p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_000.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_001.ts +[2026-03-29T14:58:40.058Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_001.ts +[2026-03-29T14:58:40.307Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_000.ts +[2026-03-29T14:58:40.307Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [1080p] +[2026-03-29T14:58:40.307Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_000.ts +[2026-03-29T14:58:40.390Z] [LOG] Successfully cleaned up hlsDownloads directory diff --git a/server/src/workers/hls.queue.ts b/server/src/workers/hls.queue.ts index 0816e64..ac2c59e 100644 --- a/server/src/workers/hls.queue.ts +++ b/server/src/workers/hls.queue.ts @@ -2,5 +2,14 @@ import { Queue } from "bullmq"; import { redis } from "../config/redis.js"; export const hlsQueue = new Queue("hlsQueue", { - connection: redis as any + connection: redis as any, + defaultJobOptions: { + attempts: 5, + backoff: { + type: 'exponential', + delay: 5000 + }, + removeOnComplete: true, + removeOnFail: false + } }); diff --git a/server/src/workers/transcode.queue.ts b/server/src/workers/transcode.queue.ts index 942982d..3c84cd9 100644 --- a/server/src/workers/transcode.queue.ts +++ b/server/src/workers/transcode.queue.ts @@ -2,5 +2,14 @@ import { Queue } from "bullmq"; import { redis } from "../config/redis.js"; export const transcodeQueue = new Queue("transcodeQueue", { - connection: redis as any + connection: redis as any, + defaultJobOptions: { + attempts: 5, + backoff: { + type: 'exponential', + delay: 3000 + }, + removeOnComplete: true, + removeOnFail: false + } }); diff --git a/server/src/workers/transcode.worker.ts b/server/src/workers/transcode.worker.ts index d9c0734..4e9b457 100644 --- a/server/src/workers/transcode.worker.ts +++ b/server/src/workers/transcode.worker.ts @@ -1,4 +1,4 @@ -import { Worker, type Job } from "bullmq"; +import { tryCatch, Worker, type Job } from "bullmq"; import { redis } from "../config/redis.js"; import { downloadObjectFromPreSignedUrl, getPreSignedUrlForDownload, transcodeVideo, uploadTranscodedFiles } from "../services/transcode.service.js"; import path from "path"; @@ -9,9 +9,49 @@ import { hlsQueue } from "./hls.queue.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +// ๐Ÿงช TEST CONFIG: Simulate failures to observe exponential backoff +// Set to true to make the first N attempts fail on purpose +// const SIMULATE_FAILURE = true; +// const FAIL_UNTIL_ATTEMPT = 3; // Succeed on the 3rd attempt (fails attempts 1 & 2) +const BASE_DELAY = 3000; // Must match the delay in transcode.queue.ts +// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + +// Track timestamps to measure actual delay between attempts +// const jobTimestamps = new Map(); + export const transcodeWorker = new Worker("transcodeQueue", async (job: Job) => { const { fileId, userId, contentType } = job.data; - console.log(`๐Ÿ“ฝ๏ธ Processing job ${job.id} for fileId ${fileId}`); + const currentAttempt = job.attemptsMade + 1; // attemptsMade is 0-indexed before this run + + // const now = Date.now(); + // const jobKey = job.id ?? fileId; + // const lastTimestamp = jobTimestamps.get(jobKey); + // const elapsedMs = lastTimestamp ? now - lastTimestamp : 0; + // jobTimestamps.set(jobKey, now); + + // const expectedDelay = currentAttempt > 1 ? BASE_DELAY * Math.pow(2, currentAttempt - 2) : 0; + + // console.log(`\n${'='.repeat(60)}`); + // console.log(`๐Ÿ“ฝ๏ธ Processing job ${job.id} | fileId: ${fileId}`); + // console.log(`๐Ÿ”„ Attempt ${currentAttempt} / ${job.opts.attempts ?? '?'}`); + // console.log(`โฐ Timestamp: ${new Date().toISOString()}`); + // if (currentAttempt > 1) { + // console.log(`โฑ๏ธ Time since last attempt: ${(elapsedMs / 1000).toFixed(1)}s (expected: ~${(expectedDelay / 1000).toFixed(1)}s)`); + // } + // console.log(`${'='.repeat(60)}`); + + // // ๐Ÿงช Simulate failure for testing exponential backoff + // if (SIMULATE_FAILURE && currentAttempt < FAIL_UNTIL_ATTEMPT) { + // const nextDelay = BASE_DELAY * Math.pow(2, currentAttempt - 1); + // const errorMsg = `๐Ÿงช SIMULATED FAILURE on attempt ${currentAttempt}. Will succeed on attempt ${FAIL_UNTIL_ATTEMPT}. Next retry in ~${(nextDelay / 1000).toFixed(1)}s (exponential backoff).`; + // console.log(`โŒ ${errorMsg}`); + // throw new Error(errorMsg); + // } + + // if (SIMULATE_FAILURE && currentAttempt >= FAIL_UNTIL_ATTEMPT) { + // console.log(`โœ… ๐Ÿงช Attempt ${currentAttempt} โ€” past simulated failure threshold, proceeding normally!`); + // } const videoDownloadSignedUrl = await getPreSignedUrlForDownload(fileId, userId); @@ -33,6 +73,17 @@ export const transcodeWorker = new Worker("transcodeQueue", async (job: Job) => console.log(`HLS job added for fileId ${fileId}`) }, { connection: redis as any, + settings: { + backoffStrategy: (attemptsMade: number, type?: string) => { + if (type === 'exponential') { + const delay = Math.round(Math.pow(2, attemptsMade - 1) * BASE_DELAY); + console.log(`\n๐Ÿ”ง Backoff strategy called: attemptsMade=${attemptsMade}, type=${type}`); + console.log(` ๐Ÿ“ Formula: 2^(${attemptsMade}-1) ร— ${BASE_DELAY}ms = ${delay}ms (${(delay / 1000).toFixed(1)}s)`); + return delay; + } + return BASE_DELAY; + }, + }, }); transcodeWorker.on("completed", (job) => { @@ -51,5 +102,14 @@ transcodeWorker.on("completed", (job) => { }); transcodeWorker.on("failed", (job, err) => { - console.log(`Job ${job?.id} has failed with error: ${err.message}`); + const attempt = job?.attemptsMade ?? 0; + const maxAttempts = job?.opts.attempts ?? 5; + const nextDelay = BASE_DELAY * Math.pow(2, attempt - 1); + console.log(`\nโŒ Job ${job?.id} FAILED on attempt ${attempt}/${maxAttempts}`); + console.log(` Error: ${err.message}`); + if (attempt < maxAttempts) { + console.log(` โณ Next retry in ~${(nextDelay / 1000).toFixed(1)}s (exponential backoff: ${BASE_DELAY / 1000}s ร— 2^${attempt - 1})`); + } else { + console.log(` ๐Ÿšซ No more retries โ€” job has permanently failed.`); + } }); From 13b85e091880ade9fb653a92f82c8ad4228309a3 Mon Sep 17 00:00:00 2001 From: vector17002 Date: Sun, 29 Mar 2026 23:00:25 +0530 Subject: [PATCH 6/7] dockerised redis, api and workers --- docker-compose.yml | 53 +++++++++++++++++++++++++ server/.dockerignore | 12 ++++++ server/Dockerfile | 54 ++++++++++++++++++++++++++ server/package.json | 8 ++-- server/src/app.ts | 4 +- server/src/worker.ts | 8 ++++ server/src/workers/hls.worker.ts | 4 +- server/src/workers/transcode.worker.ts | 4 +- 8 files changed, 137 insertions(+), 10 deletions(-) create mode 100644 docker-compose.yml create mode 100644 server/.dockerignore create mode 100644 server/Dockerfile create mode 100644 server/src/worker.ts diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f897327 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,53 @@ +services: + # โ”€โ”€ Redis โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + redis: + image: redis:7-alpine + ports: + - "6379:6379" + volumes: + - redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 5s + timeout: 3s + retries: 5 + + # โ”€โ”€ API Server โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + api: + build: + context: ./server + dockerfile: Dockerfile + target: api + ports: + - "${PORT:-8080}:${PORT:-8080}" + env_file: + - ./server/.env + environment: + - IOREDIS_URL=redis://redis:6379 + depends_on: + redis: + condition: service_healthy + restart: unless-stopped + + # โ”€โ”€ Workers (transcode + HLS) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + worker: + build: + context: ./server + dockerfile: Dockerfile + target: worker + env_file: + - ./server/.env + environment: + - IOREDIS_URL=redis://redis:6379 + depends_on: + redis: + condition: service_healthy + restart: unless-stopped + # Workers may need more memory for FFmpeg transcoding + deploy: + resources: + limits: + memory: 2G + +volumes: + redis_data: diff --git a/server/.dockerignore b/server/.dockerignore new file mode 100644 index 0000000..95ef023 --- /dev/null +++ b/server/.dockerignore @@ -0,0 +1,12 @@ +node_modules +dist +downloads +hlsDownloads +logs +.env +.env.* +!.env.example +.DS_Store +*.log +.git +.Dockerfile diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 0000000..7d70976 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,54 @@ +# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +# Multi-stage Dockerfile for API server & Workers +# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + +# โ”€โ”€ Stage 1: Install deps & build โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +FROM node:22-alpine AS builder + +WORKDIR /app + +# Install dependencies first (layer cache) +COPY package.json package-lock.json ./ +RUN npm ci + +# Copy source and build TypeScript +COPY tsconfig.json ./ +COPY src/ ./src/ +RUN npm i typescript +RUN npm run build + + +# โ”€โ”€ Stage 2: Production deps only โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +FROM node:22-alpine AS prod-deps + +WORKDIR /app + +COPY package.json package-lock.json ./ +RUN npm ci --omit=dev && npm cache clean --force + + +# โ”€โ”€ Stage 3a: API server (lightweight โ€” no FFmpeg) โ”€โ”€โ”€โ”€โ”€ +FROM node:22-alpine AS api + +WORKDIR /app + +COPY --from=prod-deps /app/node_modules ./node_modules +COPY --from=builder /app/dist ./dist +COPY package.json ./ + +CMD ["node", "dist/index.js"] + + +# โ”€โ”€ Stage 3b: Worker (with FFmpeg for transcoding) โ”€โ”€โ”€โ”€โ”€ +FROM node:22-alpine AS worker + +# Only workers need FFmpeg +RUN apk add --no-cache ffmpeg + +WORKDIR /app + +COPY --from=prod-deps /app/node_modules ./node_modules +COPY --from=builder /app/dist ./dist +COPY package.json ./ + +CMD ["node", "dist/worker.js"] diff --git a/server/package.json b/server/package.json index cb0f416..78f565e 100644 --- a/server/package.json +++ b/server/package.json @@ -4,9 +4,11 @@ "description": "", "main": "index.js", "scripts": { - "start": "nodemon dist/index.js", - "build": "npx tsc -b", - "dev": "npm run build && nodemon dist/index.js" + "start": "node dist/index.js", + "start:worker": "node dist/worker.js", + "build": "tsc -b", + "dev": "npm run build && nodemon dist/index.js", + "dev:worker": "npm run build && nodemon dist/worker.js" }, "keywords": [], "author": "", diff --git a/server/src/app.ts b/server/src/app.ts index c50999d..4f46fa8 100644 --- a/server/src/app.ts +++ b/server/src/app.ts @@ -4,9 +4,7 @@ import authRouter from "./routes/auth.routes.js"; import s3Router from "./routes/s3.routes.js"; import { authMiddleware } from "./middleware/auth.middleware.js"; -// Initialize BullMQ workers -import "./workers/transcode.worker.js"; -import "./workers/hls.worker.js"; +// Workers are started separately via worker.ts (see docker-compose.yml) const app = express(); app.use(cors({ diff --git a/server/src/worker.ts b/server/src/worker.ts new file mode 100644 index 0000000..e2a6d53 --- /dev/null +++ b/server/src/worker.ts @@ -0,0 +1,8 @@ +import 'dotenv/config.js' +import './utils/logger.js' + +// Initialize BullMQ workers +import './workers/transcode.worker.js' +import './workers/hls.worker.js' + +console.log('๐Ÿš€ Workers started and listening for jobs...') diff --git a/server/src/workers/hls.worker.ts b/server/src/workers/hls.worker.ts index 72361f3..284b2f1 100644 --- a/server/src/workers/hls.worker.ts +++ b/server/src/workers/hls.worker.ts @@ -18,8 +18,8 @@ export const hlsWorker = new Worker("hlsQueue", async (job: Job) => { console.log(`โ˜๏ธ Uploading segmented files to S3 for ${fileId} with ${url.bitrate} bitrate...`); - const uploadedKeys = await uploadSegmentedVideos(playlistPath, fileId, userId, url.bitrate); - console.log(`โœ… All hls uploads complete for job ${job.id}. Keys: ${uploadedKeys}`); + await uploadSegmentedVideos(playlistPath, fileId, userId, url.bitrate); + console.log(`โœ… All hls uploads complete for job ${job.id}.`); })); }, { diff --git a/server/src/workers/transcode.worker.ts b/server/src/workers/transcode.worker.ts index 4e9b457..2e2b16a 100644 --- a/server/src/workers/transcode.worker.ts +++ b/server/src/workers/transcode.worker.ts @@ -66,8 +66,8 @@ export const transcodeWorker = new Worker("transcodeQueue", async (job: Job) => const outputFiles = await transcodeVideo(localFilePath, fileId); console.log(`โœ… All transcoding finished for job ${job.id}. Outputs: ${outputFiles.join(', ')}`) console.log(`โ˜๏ธ Uploading transcoded files to S3 for ${fileId}...`); - const uploadedKeys = await uploadTranscodedFiles(outputFiles, fileId, userId); - console.log(`โœ… All uploads complete for job ${job.id}. Keys: ${uploadedKeys.join(', ')}`); + await uploadTranscodedFiles(outputFiles, fileId, userId); + console.log(`โœ… All uploads complete for job ${job.id}.`); await hlsQueue.add("hls", { fileId, userId }) console.log(`HLS job added for fileId ${fileId}`) From a2e144793352a93a4608503dd984a53a93769844 Mon Sep 17 00:00:00 2001 From: vector17002 Date: Sun, 29 Mar 2026 23:08:43 +0530 Subject: [PATCH 7/7] removed logs files from github --- .gitignore | 4 +- server/Dockerfile | 5 - server/logs/log.txt | 684 -------------------------------------------- 3 files changed, 3 insertions(+), 690 deletions(-) delete mode 100644 server/logs/log.txt diff --git a/.gitignore b/.gitignore index ce07b27..01a304e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,6 @@ dist/ coverage/ *.log downloads/ -hlsDownloads/ \ No newline at end of file +hlsDownloads/ +server/logs/ +*.log \ No newline at end of file diff --git a/server/Dockerfile b/server/Dockerfile index 7d70976..6bcfc33 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,7 +1,3 @@ -# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -# Multi-stage Dockerfile for API server & Workers -# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - # โ”€โ”€ Stage 1: Install deps & build โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ FROM node:22-alpine AS builder @@ -38,7 +34,6 @@ COPY package.json ./ CMD ["node", "dist/index.js"] - # โ”€โ”€ Stage 3b: Worker (with FFmpeg for transcoding) โ”€โ”€โ”€โ”€โ”€ FROM node:22-alpine AS worker diff --git a/server/logs/log.txt b/server/logs/log.txt deleted file mode 100644 index 4d67b79..0000000 --- a/server/logs/log.txt +++ /dev/null @@ -1,684 +0,0 @@ -[2026-03-24T09:07:03.974Z] [LOG] Server is running on port 8080 -[2026-03-24T09:08:20.935Z] [LOG] Server is running on port 8080 -[2026-03-24T09:36:10.164Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 for fileId bjc8kfmnke612us8g3gmn -[2026-03-24T09:36:10.164Z] [LOG] โœ… Transcoding completed for job 2 -[2026-03-24T09:36:10.203Z] [LOG] Job 2 has completed successfully! -[2026-03-24T10:00:37.944Z] [LOG] Server is running on port 8080 -[2026-03-24T10:01:07.829Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 for fileId 0330of3lhf4nw4ykrn0ytr -[2026-03-24T10:01:07.829Z] [LOG] โœ… Transcoding completed for job 3 -[2026-03-24T10:01:07.957Z] [LOG] Job 3 has completed successfully! -[2026-03-24T10:01:46.508Z] [LOG] Server is running on port 8080 -[2026-03-24T10:02:04.022Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 4 for fileId prxrlkm0nkh61wlyva9hpl -[2026-03-24T10:02:04.313Z] [LOG] Job 4 has failed with error: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. -[2026-03-24T10:15:04.614Z] [LOG] Server is running on port 8080 -[2026-03-24T10:15:47.344Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 5 for fileId vehuheacw3aj3rsixbmber -[2026-03-24T10:15:47.655Z] [LOG] -[2026-03-24T10:15:47.658Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/vehuheacw3aj3rsixbmber for job 5 -[2026-03-24T10:15:47.713Z] [LOG] Job 5 has completed successfully! -[2026-03-24T11:23:38.742Z] [LOG] Server is running on port 8080 -[2026-03-24T11:24:47.717Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 6 for fileId 3ox4xjswfj3r4s6286mie -[2026-03-24T11:24:50.891Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie for job 6 -[2026-03-24T11:24:50.891Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 3ox4xjswfj3r4s6286mie... -[2026-03-24T11:24:50.891Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-24T11:24:50.893Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-24T11:25:06.700Z] [LOG] โœ… Finished transcode for 360p -[2026-03-24T11:25:07.166Z] [LOG] โœ… Finished transcode for 480p -[2026-03-24T11:25:08.177Z] [LOG] โœ… Finished transcode for 720p -[2026-03-24T11:25:09.023Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-24T11:25:09.023Z] [LOG] โœ… All transcoding finished for job 6. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3ox4xjswfj3r4s6286mie_1080p.mp4 -[2026-03-24T11:25:09.062Z] [LOG] Job 6 has completed successfully! -[2026-03-24T11:39:05.030Z] [LOG] Server is running on port 8080 -[2026-03-24T11:40:20.483Z] [LOG] Server is running on port 8080 -[2026-03-24T11:40:36.711Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 7 for fileId 3pb9gh1ido4pu1hsysrep -[2026-03-24T11:40:37.932Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep for job 7 -[2026-03-24T11:40:37.932Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 3pb9gh1ido4pu1hsysrep... -[2026-03-24T11:40:37.932Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-24T11:40:37.934Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-24T11:40:46.811Z] [LOG] โœ… Finished transcode for 360p -[2026-03-24T11:40:46.994Z] [LOG] โœ… Finished transcode for 480p -[2026-03-24T11:40:47.546Z] [LOG] โœ… Finished transcode for 720p -[2026-03-24T11:40:48.532Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-24T11:40:48.532Z] [LOG] โœ… All transcoding finished for job 7. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/3pb9gh1ido4pu1hsysrep_1080p.mp4 -[2026-03-24T11:40:48.532Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 3pb9gh1ido4pu1hsysrep... -[2026-03-24T11:40:48.790Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/360p.mp4 -[2026-03-24T11:40:48.818Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/480p.mp4 -[2026-03-24T11:40:48.837Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/720p.mp4 -[2026-03-24T11:40:48.983Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/1080p.mp4 -[2026-03-24T11:40:48.984Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 3pb9gh1ido4pu1hsysrep -[2026-03-24T11:40:48.984Z] [LOG] โœ… All uploads complete for job 7. Keys: dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/360p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/480p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/720p.mp4, dev/users/w56kuucscxi1w740lalw7k/original/3pb9gh1ido4pu1hsysrep/1080p.mp4 -[2026-03-24T11:40:49.024Z] [LOG] Job 7 has completed successfully! -[2026-03-24T11:48:24.802Z] [LOG] Server is running on port 8080 -[2026-03-24T11:49:20.079Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 8 for fileId nn57mm3xjs369lq4aeuzi -[2026-03-24T11:49:21.115Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi for job 8 -[2026-03-24T11:49:21.115Z] [LOG] โณ Initiating bulk FFmpeg transcodes for nn57mm3xjs369lq4aeuzi... -[2026-03-24T11:49:21.115Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-24T11:49:21.116Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-24T11:49:21.117Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-24T11:49:21.117Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-24T11:49:31.021Z] [LOG] โœ… Finished transcode for 360p -[2026-03-24T11:49:31.276Z] [LOG] โœ… Finished transcode for 480p -[2026-03-24T11:49:31.874Z] [LOG] โœ… Finished transcode for 720p -[2026-03-24T11:49:32.889Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-24T11:49:32.889Z] [LOG] โœ… All transcoding finished for job 8. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/nn57mm3xjs369lq4aeuzi_1080p.mp4 -[2026-03-24T11:49:32.889Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for nn57mm3xjs369lq4aeuzi... -[2026-03-24T11:49:33.177Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/360p.mp4 -[2026-03-24T11:49:33.236Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/480p.mp4 -[2026-03-24T11:49:33.253Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/720p.mp4 -[2026-03-24T11:49:33.475Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/1080p.mp4 -[2026-03-24T11:49:33.475Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: nn57mm3xjs369lq4aeuzi -[2026-03-24T11:49:33.475Z] [LOG] โœ… All uploads complete for job 8. Keys: dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/360p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/480p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/720p.mp4, dev/users/0psyy0j5hh1r2ybnxoyheb/original/nn57mm3xjs369lq4aeuzi/1080p.mp4 -[2026-03-24T11:49:33.517Z] [LOG] Job 8 has completed successfully! -[2026-03-24T11:49:33.518Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 9 for fileId s4jwrqaneokp1g6k4lntt9 -[2026-03-24T11:49:33.530Z] [LOG] Successfully cleaned up downloads directory -[2026-03-24T11:49:35.299Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9 for job 9 -[2026-03-24T11:49:35.299Z] [LOG] โณ Initiating bulk FFmpeg transcodes for s4jwrqaneokp1g6k4lntt9... -[2026-03-24T11:49:35.299Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-24T11:49:35.299Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-24T11:49:35.300Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-24T11:49:35.300Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-24T11:49:42.649Z] [LOG] โœ… Finished transcode for 360p -[2026-03-24T11:49:43.121Z] [LOG] โœ… Finished transcode for 480p -[2026-03-24T11:49:43.781Z] [LOG] โœ… Finished transcode for 720p -[2026-03-24T11:49:44.782Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-24T11:49:44.782Z] [LOG] โœ… All transcoding finished for job 9. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/s4jwrqaneokp1g6k4lntt9_1080p.mp4 -[2026-03-24T11:49:44.782Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for s4jwrqaneokp1g6k4lntt9... -[2026-03-24T11:49:45.068Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/360p.mp4 -[2026-03-24T11:49:45.073Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/480p.mp4 -[2026-03-24T11:49:45.153Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/720p.mp4 -[2026-03-24T11:49:45.191Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/1080p.mp4 -[2026-03-24T11:49:45.191Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: s4jwrqaneokp1g6k4lntt9 -[2026-03-24T11:49:45.191Z] [LOG] โœ… All uploads complete for job 9. Keys: dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/360p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/480p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/720p.mp4, dev/users/d7dghelm9zwgyeljm9o0o9/original/s4jwrqaneokp1g6k4lntt9/1080p.mp4 -[2026-03-24T11:49:45.221Z] [LOG] Job 9 has completed successfully! -[2026-03-24T11:49:45.229Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T16:47:27.972Z] [LOG] Server is running on port 8080 -[2026-03-26T16:47:56.392Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 10 for fileId gjlpffjg44s925cfbjzkva -[2026-03-26T16:48:44.260Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva for job 10 -[2026-03-26T16:48:44.261Z] [LOG] โณ Initiating bulk FFmpeg transcodes for gjlpffjg44s925cfbjzkva... -[2026-03-26T16:48:44.262Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-26T16:48:44.264Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-26T16:48:53.754Z] [LOG] โœ… Finished transcode for 360p -[2026-03-26T16:48:53.757Z] [LOG] โœ… Finished transcode for 480p -[2026-03-26T16:48:54.798Z] [LOG] โœ… Finished transcode for 720p -[2026-03-26T16:48:55.916Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-26T16:48:55.916Z] [LOG] โœ… All transcoding finished for job 10. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/gjlpffjg44s925cfbjzkva_1080p.mp4 -[2026-03-26T16:48:55.916Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for gjlpffjg44s925cfbjzkva... -[2026-03-26T16:48:56.923Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/360p.mp4 -[2026-03-26T16:48:57.473Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/480p.mp4 -[2026-03-26T16:48:57.581Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/720p.mp4 -[2026-03-26T16:48:58.565Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/1080p.mp4 -[2026-03-26T16:48:58.565Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: gjlpffjg44s925cfbjzkva -[2026-03-26T16:48:58.565Z] [LOG] โœ… All uploads complete for job 10. Keys: dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/360p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/480p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/720p.mp4, dev/users/7eth647c4ztcj86vkwwqpl/original/gjlpffjg44s925cfbjzkva/1080p.mp4 -[2026-03-26T16:48:58.623Z] [LOG] HLS job added for fileId gjlpffjg44s925cfbjzkva -[2026-03-26T16:48:58.863Z] [LOG] Job 10 has completed successfully! -[2026-03-26T16:48:58.880Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T18:01:09.146Z] [LOG] Server is running on port 8080 -[2026-03-26T18:02:16.151Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 11 for fileId 65sbgktk187hir9k4k3xtq -[2026-03-26T18:02:18.247Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq for transcode job 11 -[2026-03-26T18:02:18.247Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 65sbgktk187hir9k4k3xtq... -[2026-03-26T18:02:18.247Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-26T18:02:18.249Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-26T18:02:29.169Z] [LOG] โœ… Finished transcode for 360p -[2026-03-26T18:02:29.235Z] [LOG] โœ… Finished transcode for 480p -[2026-03-26T18:02:30.306Z] [LOG] โœ… Finished transcode for 720p -[2026-03-26T18:02:31.340Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-26T18:02:31.340Z] [LOG] โœ… All transcoding finished for job 11. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/65sbgktk187hir9k4k3xtq_1080p.mp4 -[2026-03-26T18:02:31.340Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 65sbgktk187hir9k4k3xtq... -[2026-03-26T18:02:31.869Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/360p.mp4 -[2026-03-26T18:02:31.913Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/480p.mp4 -[2026-03-26T18:02:31.981Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/1080p.mp4 -[2026-03-26T18:02:31.985Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/720p.mp4 -[2026-03-26T18:02:31.985Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 65sbgktk187hir9k4k3xtq -[2026-03-26T18:02:31.985Z] [LOG] โœ… All uploads complete for job 11. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/1080p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/65sbgktk187hir9k4k3xtq/720p.mp4 -[2026-03-26T18:02:32.036Z] [LOG] HLS job added for fileId 65sbgktk187hir9k4k3xtq -[2026-03-26T18:02:32.133Z] [LOG] Job 11 has completed successfully! -[2026-03-26T18:02:32.151Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T18:07:20.938Z] [LOG] Server is running on port 8080 -[2026-03-26T18:07:21.345Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId 65sbgktk187hir9k4k3xtq -[2026-03-26T18:07:21.694Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p.mp4 for hls job 2 -[2026-03-26T18:07:21.694Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 480p bitrate... -[2026-03-26T18:07:21.695Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [480p]... -[2026-03-26T18:07:21.719Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p.mp4 for hls job 2 -[2026-03-26T18:07:21.719Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 720p bitrate... -[2026-03-26T18:07:21.720Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [720p]... -[2026-03-26T18:07:21.723Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p.mp4 for hls job 2 -[2026-03-26T18:07:21.723Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 360p bitrate... -[2026-03-26T18:07:21.723Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [360p]... -[2026-03-26T18:07:21.833Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p.mp4 for hls job 2 -[2026-03-26T18:07:21.833Z] [LOG] โณ Initiating HLS segmenting for 65sbgktk187hir9k4k3xtq for 1080p bitrate... -[2026-03-26T18:07:21.833Z] [LOG] โณ Starting HLS segmentation for 65sbgktk187hir9k4k3xtq [1080p]... -[2026-03-26T18:07:21.968Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-26T18:07:21.969Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 -[2026-03-26T18:07:21.969Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 -[2026-03-26T18:07:21.969Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 360p bitrate... -[2026-03-26T18:07:21.973Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 -[2026-03-26T18:07:21.973Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 -[2026-03-26T18:07:21.973Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 480p bitrate... -[2026-03-26T18:07:21.974Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-26T18:07:21.975Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 -[2026-03-26T18:07:21.975Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 -[2026-03-26T18:07:21.975Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 720p bitrate... -[2026-03-26T18:07:21.989Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-26T18:07:21.990Z] [LOG] โœ… HLS segmentation complete for 65sbgktk187hir9k4k3xtq [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 -[2026-03-26T18:07:21.990Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 -[2026-03-26T18:07:21.990Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 65sbgktk187hir9k4k3xtq with 1080p bitrate... -[2026-03-26T18:07:22.142Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 720p bitrate -[2026-03-26T18:07:22.142Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/720p/720p.m3u8 -[2026-03-26T18:07:22.144Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 480p bitrate -[2026-03-26T18:07:22.144Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/480p/480p.m3u8 -[2026-03-26T18:07:22.156Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 1080p bitrate -[2026-03-26T18:07:22.156Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/1080p/1080p.m3u8 -[2026-03-26T18:07:22.156Z] [LOG] โœ… HLS playlist uploaded successfully to S3 for 65sbgktk187hir9k4k3xtq with 360p bitrate -[2026-03-26T18:07:22.157Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/65sbgktk187hir9k4k3xtq/360p/360p.m3u8 -[2026-03-26T18:07:22.248Z] [LOG] Successfully cleaned up hlsDownloads directory -[2026-03-26T18:10:06.306Z] [LOG] Server is running on port 8080 -[2026-03-26T18:10:55.341Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 12 for fileId g6bn52zu2ralcgsqhpfy1 -[2026-03-26T18:10:56.721Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1 for transcode job 12 -[2026-03-26T18:10:56.721Z] [LOG] โณ Initiating bulk FFmpeg transcodes for g6bn52zu2ralcgsqhpfy1... -[2026-03-26T18:10:56.721Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-26T18:10:56.724Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-26T18:11:06.368Z] [LOG] โœ… Finished transcode for 360p -[2026-03-26T18:11:06.577Z] [LOG] โœ… Finished transcode for 480p -[2026-03-26T18:11:07.162Z] [LOG] โœ… Finished transcode for 720p -[2026-03-26T18:11:08.179Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-26T18:11:08.179Z] [LOG] โœ… All transcoding finished for job 12. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/g6bn52zu2ralcgsqhpfy1_1080p.mp4 -[2026-03-26T18:11:08.179Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for g6bn52zu2ralcgsqhpfy1... -[2026-03-26T18:11:08.535Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/360p.mp4 -[2026-03-26T18:11:08.575Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/720p.mp4 -[2026-03-26T18:11:08.605Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/480p.mp4 -[2026-03-26T18:11:08.695Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/1080p.mp4 -[2026-03-26T18:11:08.695Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: g6bn52zu2ralcgsqhpfy1 -[2026-03-26T18:11:08.695Z] [LOG] โœ… All uploads complete for job 12. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/g6bn52zu2ralcgsqhpfy1/1080p.mp4 -[2026-03-26T18:11:08.741Z] [LOG] HLS job added for fileId g6bn52zu2ralcgsqhpfy1 -[2026-03-26T18:11:08.784Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 3 for fileId g6bn52zu2ralcgsqhpfy1 -[2026-03-26T18:11:08.835Z] [LOG] Job 12 has completed successfully! -[2026-03-26T18:11:08.844Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T18:11:09.071Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p.mp4 for hls job 3 -[2026-03-26T18:11:09.071Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 480p bitrate... -[2026-03-26T18:11:09.072Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [480p]... -[2026-03-26T18:11:09.147Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-26T18:11:09.148Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p/480p.m3u8 -[2026-03-26T18:11:09.148Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/480p/480p.m3u8 -[2026-03-26T18:11:09.207Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p.mp4 for hls job 3 -[2026-03-26T18:11:09.207Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 360p bitrate... -[2026-03-26T18:11:09.207Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [360p]... -[2026-03-26T18:11:09.250Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-26T18:11:09.251Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p/360p.m3u8 -[2026-03-26T18:11:09.251Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/360p/360p.m3u8 -[2026-03-26T18:11:09.514Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p.mp4 for hls job 3 -[2026-03-26T18:11:09.514Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 720p bitrate... -[2026-03-26T18:11:09.514Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [720p]... -[2026-03-26T18:11:09.560Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-26T18:11:09.561Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p/720p.m3u8 -[2026-03-26T18:11:09.561Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/720p/720p.m3u8 -[2026-03-26T18:11:09.861Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p.mp4 for hls job 3 -[2026-03-26T18:11:09.861Z] [LOG] โณ Initiating HLS segmenting for g6bn52zu2ralcgsqhpfy1 for 1080p bitrate... -[2026-03-26T18:11:09.861Z] [LOG] โณ Starting HLS segmentation for g6bn52zu2ralcgsqhpfy1 [1080p]... -[2026-03-26T18:11:09.908Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-26T18:11:09.908Z] [LOG] โœ… HLS segmentation complete for g6bn52zu2ralcgsqhpfy1 [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p/1080p.m3u8 -[2026-03-26T18:11:09.908Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/g6bn52zu2ralcgsqhpfy1/1080p/1080p.m3u8 -[2026-03-26T18:26:48.061Z] [LOG] Server is running on port 8080 -[2026-03-26T18:27:08.901Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 13 for fileId 7fj07hrkf3csvxqn1iham -[2026-03-26T18:27:10.743Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham for transcode job 13 -[2026-03-26T18:27:10.743Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 7fj07hrkf3csvxqn1iham... -[2026-03-26T18:27:10.743Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-26T18:27:10.745Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-26T18:27:20.647Z] [LOG] โœ… Finished transcode for 360p -[2026-03-26T18:27:21.057Z] [LOG] โœ… Finished transcode for 480p -[2026-03-26T18:27:21.702Z] [LOG] โœ… Finished transcode for 720p -[2026-03-26T18:27:22.775Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-26T18:27:22.775Z] [LOG] โœ… All transcoding finished for job 13. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/7fj07hrkf3csvxqn1iham_1080p.mp4 -[2026-03-26T18:27:22.775Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 7fj07hrkf3csvxqn1iham... -[2026-03-26T18:27:23.049Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/360p.mp4 -[2026-03-26T18:27:23.050Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/480p.mp4 -[2026-03-26T18:27:23.183Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/720p.mp4 -[2026-03-26T18:27:23.197Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/1080p.mp4 -[2026-03-26T18:27:23.197Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 7fj07hrkf3csvxqn1iham -[2026-03-26T18:27:23.197Z] [LOG] โœ… All uploads complete for job 13. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/7fj07hrkf3csvxqn1iham/1080p.mp4 -[2026-03-26T18:27:23.316Z] [LOG] HLS job added for fileId 7fj07hrkf3csvxqn1iham -[2026-03-26T18:27:23.357Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 4 for fileId 7fj07hrkf3csvxqn1iham -[2026-03-26T18:27:23.395Z] [LOG] Job 13 has completed successfully! -[2026-03-26T18:27:23.401Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T18:27:23.631Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p.mp4 for hls job 4 -[2026-03-26T18:27:23.631Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 480p bitrate... -[2026-03-26T18:27:23.632Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [480p]... -[2026-03-26T18:27:23.669Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p.mp4 for hls job 4 -[2026-03-26T18:27:23.669Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 360p bitrate... -[2026-03-26T18:27:23.670Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [360p]... -[2026-03-26T18:27:23.694Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-26T18:27:23.694Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8 -[2026-03-26T18:27:23.694Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8 -[2026-03-26T18:27:23.695Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 480p bitrate... -[2026-03-26T18:27:23.696Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8' -Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/480p/480p.m3u8' -[2026-03-26T18:27:23.712Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-26T18:27:23.712Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8 -[2026-03-26T18:27:23.712Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8 -[2026-03-26T18:27:23.712Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 360p bitrate... -[2026-03-26T18:27:23.712Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8' -Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/360p/360p.m3u8' -[2026-03-26T18:27:23.722Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p.mp4 for hls job 4 -[2026-03-26T18:27:23.722Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 1080p bitrate... -[2026-03-26T18:27:23.722Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [1080p]... -[2026-03-26T18:27:23.723Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p.mp4 for hls job 4 -[2026-03-26T18:27:23.723Z] [LOG] โณ Initiating HLS segmenting for 7fj07hrkf3csvxqn1iham for 720p bitrate... -[2026-03-26T18:27:23.723Z] [LOG] โณ Starting HLS segmentation for 7fj07hrkf3csvxqn1iham [720p]... -[2026-03-26T18:27:23.730Z] [LOG] Job 4 has failed with error: Function not implemented. -[2026-03-26T18:27:23.770Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-26T18:27:23.771Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8 -[2026-03-26T18:27:23.771Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8 -[2026-03-26T18:27:23.771Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 720p bitrate... -[2026-03-26T18:27:23.771Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8' -Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/720p/720p.m3u8' -[2026-03-26T18:27:23.772Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-26T18:27:23.773Z] [LOG] โœ… HLS segmentation complete for 7fj07hrkf3csvxqn1iham [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8 -[2026-03-26T18:27:23.773Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8 -[2026-03-26T18:27:23.773Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 7fj07hrkf3csvxqn1iham with 1080p bitrate... -[2026-03-26T18:27:23.773Z] [ERROR] UNCAUGHT EXCEPTION: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8' -Error: ENOENT: no such file or directory, open '/Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/7fj07hrkf3csvxqn1iham/1080p/1080p.m3u8' -[2026-03-26T18:30:55.922Z] [LOG] Server is running on port 8080 -[2026-03-26T18:31:40.104Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 14 for fileId 47a76ddw00p27bcieb6lpj -[2026-03-26T18:31:42.695Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj for transcode job 14 -[2026-03-26T18:31:42.695Z] [LOG] โณ Initiating bulk FFmpeg transcodes for 47a76ddw00p27bcieb6lpj... -[2026-03-26T18:31:42.695Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-26T18:31:42.697Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-26T18:31:51.199Z] [LOG] โœ… Finished transcode for 360p -[2026-03-26T18:31:51.382Z] [LOG] โœ… Finished transcode for 480p -[2026-03-26T18:31:52.215Z] [LOG] โœ… Finished transcode for 720p -[2026-03-26T18:31:53.122Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-26T18:31:53.122Z] [LOG] โœ… All transcoding finished for job 14. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/47a76ddw00p27bcieb6lpj_1080p.mp4 -[2026-03-26T18:31:53.122Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for 47a76ddw00p27bcieb6lpj... -[2026-03-26T18:31:53.431Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/480p.mp4 -[2026-03-26T18:31:53.432Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/360p.mp4 -[2026-03-26T18:31:53.578Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/720p.mp4 -[2026-03-26T18:31:53.663Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/1080p.mp4 -[2026-03-26T18:31:53.664Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: 47a76ddw00p27bcieb6lpj -[2026-03-26T18:31:53.664Z] [LOG] โœ… All uploads complete for job 14. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/480p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/360p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/720p.mp4, dev/users/ze3ej8dp2v9j2bi43gm63/original/47a76ddw00p27bcieb6lpj/1080p.mp4 -[2026-03-26T18:31:53.699Z] [LOG] HLS job added for fileId 47a76ddw00p27bcieb6lpj -[2026-03-26T18:31:53.787Z] [LOG] Job 14 has completed successfully! -[2026-03-26T18:31:53.789Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 5 for fileId 47a76ddw00p27bcieb6lpj -[2026-03-26T18:31:53.810Z] [LOG] Successfully cleaned up downloads directory -[2026-03-26T18:31:54.202Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p.mp4 for hls job 5 -[2026-03-26T18:31:54.202Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 480p bitrate... -[2026-03-26T18:31:54.203Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [480p]... -[2026-03-26T18:31:54.279Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-26T18:31:54.280Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 -[2026-03-26T18:31:54.280Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 -[2026-03-26T18:31:54.280Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 480p bitrate... -[2026-03-26T18:31:54.325Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p.mp4 for hls job 5 -[2026-03-26T18:31:54.325Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 360p bitrate... -[2026-03-26T18:31:54.326Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [360p]... -[2026-03-26T18:31:54.368Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-26T18:31:54.369Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 -[2026-03-26T18:31:54.369Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 -[2026-03-26T18:31:54.369Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 360p bitrate... -[2026-03-26T18:31:54.567Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/480p.m3u8 -[2026-03-26T18:31:54.597Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_001.ts -[2026-03-26T18:31:54.647Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/360p.m3u8 -[2026-03-26T18:31:54.656Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_001.ts -[2026-03-26T18:31:54.666Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p.mp4 for hls job 5 -[2026-03-26T18:31:54.666Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 720p bitrate... -[2026-03-26T18:31:54.666Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [720p]... -[2026-03-26T18:31:54.673Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_000.ts -[2026-03-26T18:31:54.673Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [480p] -[2026-03-26T18:31:54.673Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/480p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/480p/segment_000.ts -[2026-03-26T18:31:54.726Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-26T18:31:54.727Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 -[2026-03-26T18:31:54.727Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 -[2026-03-26T18:31:54.727Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 720p bitrate... -[2026-03-26T18:31:54.745Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_000.ts -[2026-03-26T18:31:54.745Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [360p] -[2026-03-26T18:31:54.745Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/360p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/360p/segment_000.ts -[2026-03-26T18:31:54.840Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/720p.m3u8 -[2026-03-26T18:31:54.882Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_001.ts -[2026-03-26T18:31:55.075Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p.mp4 for hls job 5 -[2026-03-26T18:31:55.075Z] [LOG] โณ Initiating HLS segmenting for 47a76ddw00p27bcieb6lpj for 1080p bitrate... -[2026-03-26T18:31:55.075Z] [LOG] โณ Starting HLS segmentation for 47a76ddw00p27bcieb6lpj [1080p]... -[2026-03-26T18:31:55.086Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_000.ts -[2026-03-26T18:31:55.087Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [720p] -[2026-03-26T18:31:55.087Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/720p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_001.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/720p/segment_000.ts -[2026-03-26T18:31:55.131Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-26T18:31:55.132Z] [LOG] โœ… HLS segmentation complete for 47a76ddw00p27bcieb6lpj [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 -[2026-03-26T18:31:55.132Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 -[2026-03-26T18:31:55.132Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for 47a76ddw00p27bcieb6lpj with 1080p bitrate... -[2026-03-26T18:31:55.218Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8 -[2026-03-26T18:31:55.341Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_000.ts -[2026-03-26T18:31:55.601Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_001.ts -[2026-03-26T18:31:55.601Z] [LOG] โœ… All HLS files uploaded to S3 for 47a76ddw00p27bcieb6lpj [1080p] -[2026-03-26T18:31:55.601Z] [LOG] โœ… All hls uploads complete for job 5. Keys: dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/1080p.m3u8,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_000.ts,dev/users/ze3ej8dp2v9j2bi43gm63/47a76ddw00p27bcieb6lpj/1080p/segment_001.ts -[2026-03-26T18:31:55.641Z] [LOG] Successfully cleaned up hlsDownloads directory -[2026-03-29T14:41:48.831Z] [LOG] Server is running on port 8080 -[2026-03-29T14:44:16.549Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 1 for fileId xcolv0ia3bezijeod8nhcj -[2026-03-29T14:44:40.469Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj for transcode job 1 -[2026-03-29T14:44:40.469Z] [LOG] โณ Initiating bulk FFmpeg transcodes for xcolv0ia3bezijeod8nhcj... -[2026-03-29T14:44:40.469Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-29T14:44:40.471Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-29T14:44:40.472Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-29T14:44:40.473Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-29T14:44:52.263Z] [LOG] โœ… Finished transcode for 360p -[2026-03-29T14:44:52.607Z] [LOG] โœ… Finished transcode for 480p -[2026-03-29T14:44:53.191Z] [LOG] โœ… Finished transcode for 720p -[2026-03-29T14:44:54.438Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-29T14:44:54.438Z] [LOG] โœ… All transcoding finished for job 1. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/xcolv0ia3bezijeod8nhcj_1080p.mp4 -[2026-03-29T14:44:54.438Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for xcolv0ia3bezijeod8nhcj... -[2026-03-29T14:44:54.936Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/360p.mp4 -[2026-03-29T14:44:55.123Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/720p.mp4 -[2026-03-29T14:44:55.477Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/480p.mp4 -[2026-03-29T14:44:56.301Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/1080p.mp4 -[2026-03-29T14:44:56.301Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: xcolv0ia3bezijeod8nhcj -[2026-03-29T14:44:56.301Z] [LOG] โœ… All uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/360p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/720p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/480p.mp4, dev/users/y3ki145rneqxikqntm95in/original/xcolv0ia3bezijeod8nhcj/1080p.mp4 -[2026-03-29T14:44:56.358Z] [LOG] HLS job added for fileId xcolv0ia3bezijeod8nhcj -[2026-03-29T14:44:56.415Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 1 for fileId xcolv0ia3bezijeod8nhcj -[2026-03-29T14:44:56.448Z] [LOG] Job 1 has completed successfully! -[2026-03-29T14:44:56.457Z] [LOG] Successfully cleaned up downloads directory -[2026-03-29T14:44:56.789Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p.mp4 for hls job 1 -[2026-03-29T14:44:56.789Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 360p bitrate... -[2026-03-29T14:44:56.789Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [360p]... -[2026-03-29T14:44:56.820Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p.mp4 for hls job 1 -[2026-03-29T14:44:56.820Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 480p bitrate... -[2026-03-29T14:44:56.820Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [480p]... -[2026-03-29T14:44:56.839Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p.mp4 for hls job 1 -[2026-03-29T14:44:56.839Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 720p bitrate... -[2026-03-29T14:44:56.839Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [720p]... -[2026-03-29T14:44:56.850Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 -[2026-03-29T14:44:56.850Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 -[2026-03-29T14:44:56.850Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 360p bitrate... -[2026-03-29T14:44:56.877Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-29T14:44:56.878Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 -[2026-03-29T14:44:56.878Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 -[2026-03-29T14:44:56.878Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 480p bitrate... -[2026-03-29T14:44:56.889Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-29T14:44:56.889Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 -[2026-03-29T14:44:56.889Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 -[2026-03-29T14:44:56.889Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 720p bitrate... -[2026-03-29T14:44:57.146Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8 -[2026-03-29T14:44:57.150Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8 -[2026-03-29T14:44:57.197Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8 -[2026-03-29T14:44:57.243Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p.mp4 for hls job 1 -[2026-03-29T14:44:57.243Z] [LOG] โณ Initiating HLS segmenting for xcolv0ia3bezijeod8nhcj for 1080p bitrate... -[2026-03-29T14:44:57.243Z] [LOG] โณ Starting HLS segmentation for xcolv0ia3bezijeod8nhcj [1080p]... -[2026-03-29T14:44:57.252Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_001.ts -[2026-03-29T14:44:57.279Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_001.ts -[2026-03-29T14:44:57.281Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_001.ts -[2026-03-29T14:44:57.292Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-29T14:44:57.292Z] [LOG] โœ… HLS segmentation complete for xcolv0ia3bezijeod8nhcj [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 -[2026-03-29T14:44:57.292Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 -[2026-03-29T14:44:57.292Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for xcolv0ia3bezijeod8nhcj with 1080p bitrate... -[2026-03-29T14:44:57.434Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_000.ts -[2026-03-29T14:44:57.435Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [360p] -[2026-03-29T14:44:57.435Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/360p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/360p/segment_000.ts -[2026-03-29T14:44:57.457Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8 -[2026-03-29T14:44:57.468Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_000.ts -[2026-03-29T14:44:57.468Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [480p] -[2026-03-29T14:44:57.468Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/480p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/480p/segment_000.ts -[2026-03-29T14:44:57.521Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_001.ts -[2026-03-29T14:44:57.794Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_000.ts -[2026-03-29T14:44:57.794Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [1080p] -[2026-03-29T14:44:57.794Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/1080p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/1080p/segment_000.ts -[2026-03-29T14:44:58.035Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_000.ts -[2026-03-29T14:44:58.036Z] [LOG] โœ… All HLS files uploaded to S3 for xcolv0ia3bezijeod8nhcj [720p] -[2026-03-29T14:44:58.036Z] [LOG] โœ… All hls uploads complete for job 1. Keys: dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/720p.m3u8,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_001.ts,dev/users/y3ki145rneqxikqntm95in/xcolv0ia3bezijeod8nhcj/720p/segment_000.ts -[2026-03-29T14:44:58.102Z] [LOG] Successfully cleaned up hlsDownloads directory -[2026-03-29T14:51:08.567Z] [LOG] Server is running on port 8080 -[2026-03-29T14:51:38.246Z] [LOG] -============================================================ -[2026-03-29T14:51:38.246Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci -[2026-03-29T14:51:38.246Z] [LOG] ๐Ÿ”„ Attempt 1 / 5 -[2026-03-29T14:51:38.246Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:38.246Z -[2026-03-29T14:51:38.246Z] [LOG] ============================================================ -[2026-03-29T14:51:38.246Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~5s (exponential backoff). -[2026-03-29T14:51:38.341Z] [LOG] -โŒ Job 2 FAILED on attempt 1/5 -[2026-03-29T14:51:38.342Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~5s (exponential backoff). -[2026-03-29T14:51:38.343Z] [LOG] โณ Next retry in ~5s (exponential backoff: 5s ร— 2^0) -[2026-03-29T14:51:43.482Z] [LOG] -============================================================ -[2026-03-29T14:51:43.482Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci -[2026-03-29T14:51:43.482Z] [LOG] ๐Ÿ”„ Attempt 2 / 5 -[2026-03-29T14:51:43.482Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:43.482Z -[2026-03-29T14:51:43.482Z] [LOG] ============================================================ -[2026-03-29T14:51:43.482Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~10s (exponential backoff). -[2026-03-29T14:51:43.531Z] [LOG] -โŒ Job 2 FAILED on attempt 2/5 -[2026-03-29T14:51:43.531Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~10s (exponential backoff). -[2026-03-29T14:51:43.531Z] [LOG] โณ Next retry in ~10s (exponential backoff: 5s ร— 2^1) -[2026-03-29T14:51:53.592Z] [LOG] -============================================================ -[2026-03-29T14:51:53.593Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 2 | fileId: erizscz8cof0w7o9roswsci -[2026-03-29T14:51:53.593Z] [LOG] ๐Ÿ”„ Attempt 3 / 5 -[2026-03-29T14:51:53.593Z] [LOG] โฐ Timestamp: 2026-03-29T14:51:53.593Z -[2026-03-29T14:51:53.593Z] [LOG] ============================================================ -[2026-03-29T14:51:53.593Z] [LOG] โœ… ๐Ÿงช Attempt 3 โ€” past simulated failure threshold, proceeding normally! -[2026-03-29T14:52:00.960Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci for transcode job 2 -[2026-03-29T14:52:00.960Z] [LOG] โณ Initiating bulk FFmpeg transcodes for erizscz8cof0w7o9roswsci... -[2026-03-29T14:52:00.960Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-29T14:52:00.962Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-29T14:52:00.962Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-29T14:52:00.963Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-29T14:52:11.077Z] [LOG] โœ… Finished transcode for 360p -[2026-03-29T14:52:11.314Z] [LOG] โœ… Finished transcode for 480p -[2026-03-29T14:52:12.071Z] [LOG] โœ… Finished transcode for 720p -[2026-03-29T14:52:13.097Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-29T14:52:13.097Z] [LOG] โœ… All transcoding finished for job 2. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/erizscz8cof0w7o9roswsci_1080p.mp4 -[2026-03-29T14:52:13.097Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for erizscz8cof0w7o9roswsci... -[2026-03-29T14:52:13.662Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/480p.mp4 -[2026-03-29T14:52:13.744Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/720p.mp4 -[2026-03-29T14:52:14.101Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/1080p.mp4 -[2026-03-29T14:52:14.130Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/360p.mp4 -[2026-03-29T14:52:14.130Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: erizscz8cof0w7o9roswsci -[2026-03-29T14:52:14.130Z] [LOG] โœ… All uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/480p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/720p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/1080p.mp4, dev/users/ux6kt6r36hoidrle0a0tmc/original/erizscz8cof0w7o9roswsci/360p.mp4 -[2026-03-29T14:52:14.204Z] [LOG] HLS job added for fileId erizscz8cof0w7o9roswsci -[2026-03-29T14:52:14.303Z] [LOG] Job 2 has completed successfully! -[2026-03-29T14:52:14.319Z] [LOG] Successfully cleaned up downloads directory -[2026-03-29T14:52:14.520Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId erizscz8cof0w7o9roswsci -[2026-03-29T14:52:15.118Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p.mp4 for hls job 2 -[2026-03-29T14:52:15.118Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 1080p bitrate... -[2026-03-29T14:52:15.119Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [1080p]... -[2026-03-29T14:52:15.186Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-29T14:52:15.186Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:15.187Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:15.187Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 1080p bitrate... -[2026-03-29T14:52:15.195Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p.mp4 for hls job 2 -[2026-03-29T14:52:15.195Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 480p bitrate... -[2026-03-29T14:52:15.196Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [480p]... -[2026-03-29T14:52:15.235Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p.mp4 for hls job 2 -[2026-03-29T14:52:15.235Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 360p bitrate... -[2026-03-29T14:52:15.235Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [360p]... -[2026-03-29T14:52:15.236Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-29T14:52:15.237Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:15.237Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:15.237Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 480p bitrate... -[2026-03-29T14:52:15.275Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-29T14:52:15.276Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:15.276Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:15.276Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 360p bitrate... -[2026-03-29T14:52:15.375Z] [WARN] An error was encountered in a non-retryable streaming request. -[2026-03-29T14:52:15.448Z] [WARN] An error was encountered in a non-retryable streaming request. -[2026-03-29T14:52:15.464Z] [LOG] Job 2 has failed with error: read ECONNRESET -[2026-03-29T14:52:15.546Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:15.547Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:15.574Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p.mp4 for hls job 2 -[2026-03-29T14:52:15.574Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 720p bitrate... -[2026-03-29T14:52:15.574Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [720p]... -[2026-03-29T14:52:15.626Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts -[2026-03-29T14:52:15.629Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-29T14:52:15.630Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:15.630Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:15.630Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 720p bitrate... -[2026-03-29T14:52:15.687Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts -[2026-03-29T14:52:15.759Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:15.793Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts -[2026-03-29T14:52:15.794Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [480p] -[2026-03-29T14:52:15.794Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts -[2026-03-29T14:52:15.820Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:16.066Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts -[2026-03-29T14:52:16.179Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts -[2026-03-29T14:52:16.179Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [720p] -[2026-03-29T14:52:16.179Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts -[2026-03-29T14:52:16.451Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts -[2026-03-29T14:52:20.518Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 2 for fileId erizscz8cof0w7o9roswsci -[2026-03-29T14:52:20.908Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p.mp4 for hls job 2 -[2026-03-29T14:52:20.909Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 480p bitrate... -[2026-03-29T14:52:20.909Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [480p]... -[2026-03-29T14:52:20.919Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p.mp4 for hls job 2 -[2026-03-29T14:52:20.919Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 360p bitrate... -[2026-03-29T14:52:20.919Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [360p]... -[2026-03-29T14:52:20.979Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-29T14:52:20.980Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p.mp4 for hls job 2 -[2026-03-29T14:52:20.980Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 720p bitrate... -[2026-03-29T14:52:20.980Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [720p]... -[2026-03-29T14:52:20.981Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:20.981Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:20.981Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 480p bitrate... -[2026-03-29T14:52:20.982Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-29T14:52:20.983Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:20.983Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:20.983Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 360p bitrate... -[2026-03-29T14:52:21.026Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p.mp4 for hls job 2 -[2026-03-29T14:52:21.026Z] [LOG] โณ Initiating HLS segmenting for erizscz8cof0w7o9roswsci for 1080p bitrate... -[2026-03-29T14:52:21.026Z] [LOG] โณ Starting HLS segmentation for erizscz8cof0w7o9roswsci [1080p]... -[2026-03-29T14:52:21.027Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-29T14:52:21.027Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:21.027Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:21.027Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 720p bitrate... -[2026-03-29T14:52:21.071Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-29T14:52:21.071Z] [LOG] โœ… HLS segmentation complete for erizscz8cof0w7o9roswsci [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:21.071Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:21.071Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for erizscz8cof0w7o9roswsci with 1080p bitrate... -[2026-03-29T14:52:21.105Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts -[2026-03-29T14:52:21.135Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8 -[2026-03-29T14:52:21.139Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8 -[2026-03-29T14:52:21.164Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_001.ts -[2026-03-29T14:52:21.199Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts -[2026-03-29T14:52:21.199Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [360p] -[2026-03-29T14:52:21.199Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/360p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/360p/segment_000.ts -[2026-03-29T14:52:21.201Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8 -[2026-03-29T14:52:21.312Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8 -[2026-03-29T14:52:21.356Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts -[2026-03-29T14:52:21.562Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts -[2026-03-29T14:52:21.562Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [720p] -[2026-03-29T14:52:21.562Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/720p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/720p/segment_000.ts -[2026-03-29T14:52:21.633Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts -[2026-03-29T14:52:21.721Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts -[2026-03-29T14:52:21.721Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [480p] -[2026-03-29T14:52:21.721Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/480p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/480p/segment_000.ts -[2026-03-29T14:52:22.216Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_000.ts -[2026-03-29T14:52:22.216Z] [LOG] โœ… All HLS files uploaded to S3 for erizscz8cof0w7o9roswsci [1080p] -[2026-03-29T14:52:22.216Z] [LOG] โœ… All hls uploads complete for job 2. Keys: dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/1080p.m3u8,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_001.ts,dev/users/ux6kt6r36hoidrle0a0tmc/erizscz8cof0w7o9roswsci/1080p/segment_000.ts -[2026-03-29T14:52:22.288Z] [LOG] Successfully cleaned up hlsDownloads directory -[2026-03-29T14:57:08.843Z] [LOG] Server is running on port 8080 -[2026-03-29T14:57:36.935Z] [LOG] -============================================================ -[2026-03-29T14:57:36.936Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx -[2026-03-29T14:57:36.936Z] [LOG] ๐Ÿ”„ Attempt 1 / 5 -[2026-03-29T14:57:36.936Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:36.936Z -[2026-03-29T14:57:36.936Z] [LOG] ============================================================ -[2026-03-29T14:57:36.936Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~3.0s (exponential backoff). -[2026-03-29T14:57:37.020Z] [LOG] -โŒ Job 3 FAILED on attempt 1/5 -[2026-03-29T14:57:37.020Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 1. Will succeed on attempt 3. Next retry in ~3.0s (exponential backoff). -[2026-03-29T14:57:37.020Z] [LOG] โณ Next retry in ~3.0s (exponential backoff: 3s ร— 2^0) -[2026-03-29T14:57:40.455Z] [LOG] -============================================================ -[2026-03-29T14:57:40.455Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx -[2026-03-29T14:57:40.456Z] [LOG] ๐Ÿ”„ Attempt 2 / 5 -[2026-03-29T14:57:40.456Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:40.456Z -[2026-03-29T14:57:40.456Z] [LOG] โฑ๏ธ Time since last attempt: 3.5s (expected: ~3.0s) -[2026-03-29T14:57:40.456Z] [LOG] ============================================================ -[2026-03-29T14:57:40.456Z] [LOG] โŒ ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~6.0s (exponential backoff). -[2026-03-29T14:57:40.522Z] [LOG] -โŒ Job 3 FAILED on attempt 2/5 -[2026-03-29T14:57:40.522Z] [LOG] Error: ๐Ÿงช SIMULATED FAILURE on attempt 2. Will succeed on attempt 3. Next retry in ~6.0s (exponential backoff). -[2026-03-29T14:57:40.522Z] [LOG] โณ Next retry in ~6.0s (exponential backoff: 3s ร— 2^1) -[2026-03-29T14:57:46.618Z] [LOG] -============================================================ -[2026-03-29T14:57:46.618Z] [LOG] ๐Ÿ“ฝ๏ธ Processing job 3 | fileId: i79oyab6j9o6x8kbfedx -[2026-03-29T14:57:46.618Z] [LOG] ๐Ÿ”„ Attempt 3 / 5 -[2026-03-29T14:57:46.618Z] [LOG] โฐ Timestamp: 2026-03-29T14:57:46.618Z -[2026-03-29T14:57:46.618Z] [LOG] โฑ๏ธ Time since last attempt: 6.2s (expected: ~6.0s) -[2026-03-29T14:57:46.618Z] [LOG] ============================================================ -[2026-03-29T14:57:46.618Z] [LOG] โœ… ๐Ÿงช Attempt 3 โ€” past simulated failure threshold, proceeding normally! -[2026-03-29T14:58:25.107Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx for transcode job 3 -[2026-03-29T14:58:25.107Z] [LOG] โณ Initiating bulk FFmpeg transcodes for i79oyab6j9o6x8kbfedx... -[2026-03-29T14:58:25.107Z] [LOG] โณ Starting transcode for 1080p (1920x1080)... -[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 720p (1280x720)... -[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 480p (854x480)... -[2026-03-29T14:58:25.109Z] [LOG] โณ Starting transcode for 360p (640x360)... -[2026-03-29T14:58:36.024Z] [LOG] โœ… Finished transcode for 360p -[2026-03-29T14:58:36.066Z] [LOG] โœ… Finished transcode for 480p -[2026-03-29T14:58:37.067Z] [LOG] โœ… Finished transcode for 720p -[2026-03-29T14:58:38.001Z] [LOG] โœ… Finished transcode for 1080p -[2026-03-29T14:58:38.001Z] [LOG] โœ… All transcoding finished for job 3. Outputs: /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_360p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_480p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_720p.mp4, /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/downloads/i79oyab6j9o6x8kbfedx_1080p.mp4 -[2026-03-29T14:58:38.001Z] [LOG] โ˜๏ธ Uploading transcoded files to S3 for i79oyab6j9o6x8kbfedx... -[2026-03-29T14:58:38.534Z] [LOG] โ˜๏ธ Uploaded 360p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/360p.mp4 -[2026-03-29T14:58:38.572Z] [LOG] โ˜๏ธ Uploaded 480p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/480p.mp4 -[2026-03-29T14:58:38.960Z] [LOG] โ˜๏ธ Uploaded 720p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/720p.mp4 -[2026-03-29T14:58:39.019Z] [LOG] โ˜๏ธ Uploaded 1080p to S3: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/1080p.mp4 -[2026-03-29T14:58:39.020Z] [LOG] โœ… All transcoded files uploaded to S3 for fileId: i79oyab6j9o6x8kbfedx -[2026-03-29T14:58:39.020Z] [LOG] โœ… All uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/360p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/480p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/720p.mp4, dev/users/i0bcemn4itomyvyx5hhhvk/original/i79oyab6j9o6x8kbfedx/1080p.mp4 -[2026-03-29T14:58:39.063Z] [LOG] HLS job added for fileId i79oyab6j9o6x8kbfedx -[2026-03-29T14:58:39.066Z] [LOG] ๐Ÿ“ฝ๏ธ Processing HLS job 3 for fileId i79oyab6j9o6x8kbfedx -[2026-03-29T14:58:39.150Z] [LOG] Job 3 has completed successfully! -[2026-03-29T14:58:39.156Z] [LOG] Successfully cleaned up downloads directory -[2026-03-29T14:58:39.346Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p.mp4 for hls job 3 -[2026-03-29T14:58:39.346Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 360p bitrate... -[2026-03-29T14:58:39.347Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [360p]... -[2026-03-29T14:58:39.413Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p.mp4 for hls job 3 -[2026-03-29T14:58:39.413Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 480p bitrate... -[2026-03-29T14:58:39.413Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [480p]... -[2026-03-29T14:58:39.415Z] [LOG] ๐Ÿ“Š HLS [360p] progress: 100% -[2026-03-29T14:58:39.416Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [360p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 -[2026-03-29T14:58:39.416Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 -[2026-03-29T14:58:39.416Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 360p bitrate... -[2026-03-29T14:58:39.437Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p.mp4 for hls job 3 -[2026-03-29T14:58:39.438Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 720p bitrate... -[2026-03-29T14:58:39.438Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [720p]... -[2026-03-29T14:58:39.457Z] [LOG] ๐Ÿ“Š HLS [480p] progress: 100% -[2026-03-29T14:58:39.458Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [480p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 -[2026-03-29T14:58:39.458Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 -[2026-03-29T14:58:39.458Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 480p bitrate... -[2026-03-29T14:58:39.481Z] [LOG] ๐Ÿ“Š HLS [720p] progress: 100% -[2026-03-29T14:58:39.482Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [720p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 -[2026-03-29T14:58:39.482Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 -[2026-03-29T14:58:39.482Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 720p bitrate... -[2026-03-29T14:58:39.593Z] [LOG] โœ… Video downloaded successfully to /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p.mp4 for hls job 3 -[2026-03-29T14:58:39.593Z] [LOG] โณ Initiating HLS segmenting for i79oyab6j9o6x8kbfedx for 1080p bitrate... -[2026-03-29T14:58:39.593Z] [LOG] โณ Starting HLS segmentation for i79oyab6j9o6x8kbfedx [1080p]... -[2026-03-29T14:58:39.639Z] [LOG] โ˜๏ธ Uploaded 480p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/480p.m3u8 -[2026-03-29T14:58:39.641Z] [LOG] ๐Ÿ“Š HLS [1080p] progress: 100% -[2026-03-29T14:58:39.642Z] [LOG] โœ… HLS segmentation complete for i79oyab6j9o6x8kbfedx [1080p] โ†’ /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 -[2026-03-29T14:58:39.642Z] [LOG] โœ… HLS playlist created at /Users/anshkumain/Developer/POC/videoThumbnailProcessingPOC/server/hlsDownloads/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 -[2026-03-29T14:58:39.642Z] [LOG] โ˜๏ธ Uploading segmented files to S3 for i79oyab6j9o6x8kbfedx with 1080p bitrate... -[2026-03-29T14:58:39.651Z] [LOG] โ˜๏ธ Uploaded 360p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/360p.m3u8 -[2026-03-29T14:58:39.661Z] [LOG] โ˜๏ธ Uploaded 720p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/720p.m3u8 -[2026-03-29T14:58:39.685Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_001.ts -[2026-03-29T14:58:39.706Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_001.ts -[2026-03-29T14:58:39.806Z] [LOG] โ˜๏ธ Uploaded 1080p.m3u8 to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8 -[2026-03-29T14:58:39.862Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_000.ts -[2026-03-29T14:58:39.862Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [360p] -[2026-03-29T14:58:39.862Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/360p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/360p/segment_000.ts -[2026-03-29T14:58:39.907Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_000.ts -[2026-03-29T14:58:39.911Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_000.ts -[2026-03-29T14:58:39.911Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [480p] -[2026-03-29T14:58:39.911Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/480p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/480p/segment_000.ts -[2026-03-29T14:58:39.974Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_001.ts -[2026-03-29T14:58:39.974Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [720p] -[2026-03-29T14:58:39.974Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/720p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_000.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/720p/segment_001.ts -[2026-03-29T14:58:40.058Z] [LOG] โ˜๏ธ Uploaded segment_001.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_001.ts -[2026-03-29T14:58:40.307Z] [LOG] โ˜๏ธ Uploaded segment_000.ts to S3: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_000.ts -[2026-03-29T14:58:40.307Z] [LOG] โœ… All HLS files uploaded to S3 for i79oyab6j9o6x8kbfedx [1080p] -[2026-03-29T14:58:40.307Z] [LOG] โœ… All hls uploads complete for job 3. Keys: dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/1080p.m3u8,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_001.ts,dev/users/i0bcemn4itomyvyx5hhhvk/i79oyab6j9o6x8kbfedx/1080p/segment_000.ts -[2026-03-29T14:58:40.390Z] [LOG] Successfully cleaned up hlsDownloads directory