โ Video Streaming Platform with Debezium CDC Kafka Connector, Kafka Event Streaming, Minio File Storage and FFmpeg Video Processing
- ๐ This Full-Stack Developer Template provides fully functional Development Environment:
- ๐ Event-Driven Spring Boot Microservices with Debezium Change Data Capture, Debezium Kafka Connector and Kafka Event Streaming
- ๐ Swagger UI Gateway with Keycloak Authorization
- ๐ Video Streaming API with Minio File Storage, PostgreSQL Event and Metadata Persistence, Redis Cache Manager, Debezium Change Data Capture and FFmpeg Video Processing
- ๐ Custom Spring Boot Docker Image with pre-installed FFmpeg Video Processing Tool
- ๐ Local Docker Development Environment
- ๐ Full Technology Stack:
- โ Swagger UI Gateway
- โ Debezium PostgreSQL Change Data Capture
- โ PostgreSQL Event and Metadata Persistence
- โ Debezium Kafka Connector
- โ Minio File Storage Server
- โ Redis Cache Manager
- โ Spring Boot 3
- โ Spring Cloud Gateway
- โ Kafka Transactional Event Streaming
- โ FFmpeg Video Processing Tool
- โ Event-Driven Microservices
- โ Kafka Event Store
- โ Kafka UI
- โ Keycloak Oauth2 Authorization Server
- โ Local Docker Environment
- โ Remote Debugging
- โ Zipkin Distributed Tracing
See original spring-video HLS video streaming application: Spring Video
See previous Spring Boot Template for AWS Setup Example: Twitter Kafka Analytics Platform
sh docker-start.sh
- this script will build all spring boot docker images and start environment with your code changes
sh docker-restart.sh
- this script will restart all docker containers without rebuilding images
sh docker-app-restart.sh video
- this script will rebuild spring boot docker image for
video
application and restart application with rebuilt image - replace
video
with the name of the application you want to rebuild and restart
sh docker-worker-restart.sh
- this script will rebuild spring boot docker image for
worker
application and restart application with rebuilt image worker
uses custom Dockerfile image to pre-install FFmpeg Tool. Therefore, it should be rebuilt with custom script- actual rebuild of
worker
docker image happens indocker-app-compose.yml
file (seebuild: "./worker-service"
)
-
run
sh docker-start.sh
-
run commands in
./command.txt
(Debezium Kafka PostgreSQL connectors) -
open http://localhost:9000 in your Browser
- For authorized requests: click
Authorize
and useadmin/admin
oruser/user
for credentials (clientId
should bevideo-app
)
-
goto http://localhost:9000/webjars/swagger-ui/index.html#/storage-controller/upload and upload mp4 file (you can use
test.mp4
inworker-service
folder for testing) -
goto http://localhost:9000/webjars/swagger-ui/index.html#/video-controller/create and create video with filename from step 4, please copy the video id from response
-
goto http://localhost:9000/webjars/swagger-ui/index.html#/video-controller/profile with video id and wait for the video status to become READY
-
use http://localhost:9000/video/api/video/{your_video_id}/index.m3u8 for any HLS player (alternatively, download links in
m3u8
file and open them with any video player)
- Congratulations! You successfully tested
Swagger UI Gateway
andVideo Streaming API
!
-
Minio File Storage Server should be available here: http://localhost:8086/
-
If acceptance testing was successful, then
stream
andvideo
Buckets should exist and contain video files -
You can download and browse video files using this console
- Kafka UI should be available here: http://localhost:8070/
- You can browse topics, partitions, messages and other kafka resources using this console
- Zipkin Server for Distributed Tracing should be available here: http://localhost:9411/