Video Lesson Activity is an open-source Moodle activity that enables video-based learning with completion tracking, analytics, and subtitles.
While all learning logic runs inside Moodle, video processing requires specialized infrastructure that typical Moodle servers are not designed to handle efficiently. For this reason, Video Lesson Activity integrates with AWS-managed media services for video transcoding, subtitle generation, and secure delivery.
This documentation explains:
- Why AWS infrastructure is required
- What responsibilities belong to Moodle vs AWS
- How the AWS setup guides fit together
- Who should follow these guides
This page is intentionally conceptual, not procedural.
Who this documentation is for #
This documentation is intended for:
- Moodle Administrators responsible for infrastructure decisions
- AWS Administrators or DevOps teams
- Technical partners setting up self-hosted Video Lesson deployments
It assumes:
- An active AWS account with billing enabled
- IAM permissions to create AWS services and roles
- Basic familiarity with AWS concepts such as S3, IAM, and Lambda
It does not require:
- Writing Lambda code
- Modifying the Video Lesson plugin
Why AWS is used #
Video Lesson Activity handles:
- Video lesson creation
- Completion rules and progress tracking
- Analytics and reporting
- Subtitle selection and display
- Moodle UI and learning workflows
AWS is used only for tasks that require scalable, media-specific infrastructure:
- Video transcoding into streaming formats
- Subtitle and transcript generation
- Secure, high-performance video delivery
This separation keeps Moodle fast, stable, and focused on learning rather than media processing.
High-level architecture #
At a high level, the system works as follows:
- A video is uploaded from Moodle to an S3 input bucket
- An AWS Lambda function detects the upload
- A MediaConvert job is created to transcode the video
- Processed outputs are written to an S3 output bucket
- Optional transcription and subtitle generation is triggered
- Videos and subtitles are delivered securely via CloudFront
- Moodle fetches playback URLs, subtitles, and processing status
Moodle never performs video transcoding directly.
Responsibilities: Moodle vs AWS #
Moodle (Video Lesson Activity)
- Video lesson configuration
- Completion rules and enforcement
- Analytics and reporting
- Subtitle selection and display
- Student and Teacher experience
AWS Infrastructure
- Video transcoding and streaming formats
- Subtitle and transcript generation
- Secure media delivery
- Scalable storage
- Job status tracking
This clear separation prevents Moodle from becoming a media server and allows the system to scale reliably.
AWS services involved #
The AWS stack uses the following services:
- AWS MediaConvert for video transcoding
- AWS Lambda for event-driven orchestration
- Amazon S3 for media storage
- Amazon Transcribe for speech-to-text processing
- Amazon CloudFront for secure content delivery
- Amazon DynamoDB for processing state and metadata
Each service has a single, well-defined responsibility.
How the documentation is structured #
This guide acts as the entry point for AWS provisioning.
The detailed setup is covered in the following documents:
- Guide to Create a MediaConvert, Transcribe, and CloudFront Stack – Covers AWS resource creation and permissions
- Media Processing Lambda – Functional Guide – Explains how video uploads are processed and tracked
- Transcription and Subtitle Processing Lambda – Functional Guide – Explains subtitle generation, translation, and lifecycle handling
Each document focuses on a single concern to avoid repetition.
Deployment models supported #
This AWS architecture supports:
- Fully self-hosted AWS deployments
- Multiple Moodle sites using a shared AWS account
- Optional subtitle generation
- Usage-based scaling and costs
If you need help with AWS provisioning, managed hosting, or have any questions about this setup, please contact us and we’ll be happy to assist.
