What Is AWS Elemental MediaConvert?
AWS Elemental MediaConvert is a file-based video transcoding service for content owners and distributors. It runs in the cloud, scales automatically across availability zones, and supports broadcast-grade codecs including AVC, HEVC, AV1, Apple ProRes, MPEG-2, VP8, and VP9. It handles HDR (Dolby Vision, HDR10, HLG), DRM encryption, captions, still overlays, and adaptive bitrate packaging (CMAF, HLS, DASH, MSS).
MediaConvert is not a live video service. You use AWS MediaLive for live encoding. MediaConvert processes file-based video on demand (VOD) only. It competes with Google Cloud Transcoder, Azure Video Indexer, and hosted FFmpeg APIs that offer lighter-weight alternatives for developers who do not need broadcast infrastructure.
Key Takeaways
- MediaConvert pricing uses a normalized-minute model with resolution, codec, frame rate, and quality-pass multipliers. A single Professional HEVC 4K multi-pass job at 60+ fps carries a 21x multiplier.
- Basic tier starts at $0.0075 per normalized minute for the first 100,000 minutes but locks essential features (captions, DRM, multi-audio) behind the Professional tier.
- The API is a verbose JSON job model with region-specific endpoints. You do not pass raw FFmpeg commands.
- Before your first job you need: an AWS account, S3 buckets, an IAM role with correct policies, and a queue. There is no single-call transcode workflow.
- For developers who want raw FFmpeg control without AWS infrastructure, Very Good FFmpeg charges $0.50/GB processed, requires an API key and a POST request, and needs no IAM or S3 setup.
How Does AWS Elemental MediaConvert Pricing Actually Work?
MediaConvert charges per normalized output minute. A normalized minute is a billing unit that adjusts for resolution, frame rate, codec, and number of encoding passes. The base rate covers a standard unit, then multipliers scale it up.
The multiplier table works like this:
| Factor | Value | Multiplier |
|---|---|---|
| SD (up to 768x576) | 1x | 1 |
| HD (up to 1920x1080) | 2x | 2 |
| 4K (up to 3840x2160) | 4x | 4 |
| 8K (up to 7680x4320) | 8x | 8 |
| Frame rate <=30 fps | base | 1 |
| Frame rate <=60 fps | base | 2 |
| Frame rate >60 fps | base | 3 |
| Single-pass encode | base | 1 |
| Multi-pass encode | base | 1.5 |
| AVC codec | base | 1 |
| HEVC codec | base | 2 |
| AV1 codec | base | 2 |
These multipliers compound. A Professional-tier HEVC 4K multi-pass job running above 60 fps gets 2 (HEVC) x 4 (4K) x 3 (>60 fps) x 2 (Professional tier) x 1.5 (multi-pass) = a 72x multiplier over the base rate.
Wait -- the official AWS multiplier is 21x for that configuration. The actual formula is not fully documented. That opacity is the point: developers cannot easily predict what a given job will cost.
AWS offers two on-demand pricing tiers.
Basic Tier Pricing
The Basic tier supports AVC, VP8, and VP9 codecs only. It targets simple web distribution. Pricing per normalized minute in US East (N. Virginia):
| Volume (monthly) | Price per normalized minute |
|---|---|
| First 100,000 | $0.0075 |
| Next 900,000 | $0.0053 |
| Next 1,000,000 | $0.0038 |
| Over 2,000,000 | $0.0033 |
The Basic tier does not include: captions, DRM encryption, multiple audio tracks, audio remixing, timecode burn-in, deinterlacer, noise reducer, ad markers, Accelerated Transcoding, Dolby Vision, HDR10+, FrameFormer, watermarking, or video passthrough.
Professional Tier Pricing
The Professional tier includes everything the Basic tier omits plus 8K output. Pricing per normalized minute in US East:
| Volume (monthly) | Price per normalized minute |
|---|---|
| First 100,000 | $0.015 |
| Next 900,000 | $0.0105 |
| Next 1,000,000 | $0.0075 |
| Over 2,000,000 | $0.0066 |
If you need captions or multiple audio tracks -- common requirements -- you must use the Professional tier.
Reserved Pricing
AWS offers reserved pricing for predictable, high-volume workloads. Reserved pricing requires a 12-month commitment paid per reserved transcode slot. You estimate slot needs using the "simulate reserved queue" feature. Important exclusions: Dolby Vision, Accelerated Transcoding, AV1 encoding, FrameFormer, and 8K are not available under reserved pricing.
Additional Costs
MediaConvert pricing does not include storage or data transfer. You pay separately for:
- S3 storage for input and output files
- S3 data transfer and API request costs
- CloudFront data delivery if you serve outputs via CDN
- Lambda calls if you use EventBridge triggers or automated workflows
- CloudWatch logs for job monitoring and debugging
Minimum billing is 10 seconds per output. Every output shorter than 10 seconds is billed as 10 seconds.
Real-World Pricing Examples
AWS publishes a pricing example: September with 10 million 20-second highlight clips (HLS, Basic AVC, 1x SD + 2x HD) and 10,000 45-minute games (VP9 Professional, 1x SD + 1x HD, 60 fps). Total cost: $64,420 for Basic tier clips and $94,329 for Professional tier games, for a combined $158,749. The same workload in October drops to $104,382 due to volume discount tier rollover. This fluctuation makes budgeting difficult.
What Does the AWS Elemental MediaConvert API Look Like?
The MediaConvert API is a REST interface with region-specific endpoints. An example endpoint is mediaconvert.us-east-1.amazonaws.com. You create jobs by sending a JSON payload that specifies input sources, output groups, codec settings, and container formats.
A job creation request requires:
- An IAM role ARN with S3 read/write permissions
- A queue name or ARN (or you use the default queue)
- A
SettingsJSON object with:- Inputs array (source S3 URL, clip start/end, input settings)
- OutputGroups array (type, outputs, DRM, captions, etc.)
- Each output specifies video codec, audio codec, container, and encoding settings
AWS provides SDKs for Python (boto3), JavaScript, Java, .NET, Ruby, Go, and C++. Every SDK wraps the same JSON job model.
Here is a minimal boto3 example for an H.264 transcode:
import boto3
client = boto3.client("mediaconvert", endpoint_url="https://xxxxx.mediaconvert.us-east-1.amazonaws.com")
response = client.create_job(
Role="arn:aws:iam::123456789012:role/MediaConvertRole",
Settings={
"Inputs": [{
"FileInput": "s3://input-bucket/video.mp4",
}],
"OutputGroups": [{
"Name": "File Group",
"OutputGroupSettings": {
"Type": "FILE_GROUP",
"FileGroupSettings": {
"Destination": "s3://output-bucket/"
}
},
"Outputs": [{
"VideoDescription": {
"CodecSettings": {
"Codec": "H_264",
"H264Settings": {
"MaxBitrate": 5000000,
"RateControlMode": "QVBR",
"QualityTuningLevel": "SINGLE_PASS"
}
}
},
"AudioDescriptions": [{
"CodecSettings": {
"Codec": "AAC",
"AacSettings": {
"Bitrate": 96000,
"CodingMode": "CODING_MODE_2_0"
}
}
}],
"ContainerSettings": {
"Container": "MP4"
}
}]
}]
}
)Contrast this with the equivalent FFmpeg command:
ffmpeg -i input.mp4 -c:v libx264 -b:v 5M -c:a aac -b:a 96k output.mp4The JSON model is more verbose. Every setting has a specific key path. Errors return API error codes like SubscriptionRequiredException, AccessDeniedException, or ValidationException. Job-level failures appear in CloudWatch logs or EventBridge events, not in stderr. Debugging requires navigating CloudWatch rather than reading FFmpeg's standard error output.
What Can You Actually Do with the MediaConvert API?
The MediaConvert API supports these operations:
- CreateJob: Submit a transcode job with full settings
- GetJob: Retrieve job status and output details
- ListJobs: List jobs by queue, status, or creation time
- CancelJob: Stop a running or queued job
- CreatePreset: Save reusable output encoding configurations
- CreateJobTemplate: Save a full job configuration (inputs + outputs + settings)
- CreateQueue: Set up job queues with concurrent job limits
- UpdateQueue / DeleteQueue: Manage queue capacity
You can produce adaptive bitrate packaging (CMAF, HLS, DASH, MSS) from a single input. You can add DRM (PlayReady, Widevine, FairPlay), burn in captions, overlay images, apply HDR metadata, and use Accelerated Transcoding for up to 25x faster processing (at extra cost).
What you cannot do:
- Pass raw FFmpeg commands or flags
- Use custom FFmpeg filters or filtergraphs
- Process live video (use MediaLive)
- Run one-off format conversions without defining the full job JSON
- Debug via FFmpeg stderr output
The API is built for repeatable, template-driven broadcast pipelines. It is not a general-purpose media processing tool.
How Do You Set Up AWS Elemental MediaConvert for the First Time?
The getting started guide describes five steps:
- Create an AWS account (if you do not have one)
- Create S3 buckets for input source files and output destinations
- Configure an IAM role that grants MediaConvert read/write access to your S3 buckets
- Upload your source video files to the input S3 bucket
- Create a MediaConvert job through the console or API
Before you can make your first API call, you must understand: S3 bucket policies, IAM role trust policies, IAM permission boundaries, regional endpoint selection, MediaConvert queue mechanics, and CloudWatch log groups.
For a developer evaluating MediaConvert for the first time, the setup feels like a multi-day project. AWS provides pre-built solutions like "Video on Demand on AWS" and "Media2Cloud" that automate some of the infrastructure, but these are CloudFormation stacks with their own learning curves.
What Do Developers Complain About Most with MediaConvert?
The AWS re:Post community has 245 tagged threads about MediaConvert. Common complaints include:
Pricing opacity. Developers cannot easily estimate what a job will cost. The normalized-minute model with compounding multipliers, volume discount tiers that vary by region, and separate charges for S3, data transfer, and CloudFront make the monthly bill unpredictable.
Subtitle and caption bugs. Reports of CMAF DASH manifests referencing non-existent WebVTT subtitle files. Forced subtitle track limitations. Subtitle extraction behaves unexpectedly across different input formats.
Audio transcoding issues. PCM-to-AAC audio stuttering is a recurring thread. Configuration workarounds are shared across posts but no single fix applies to all input formats.
Aggressive compression difficulty. Developers report trouble reducing file size while keeping acceptable quality. Without raw FFmpeg access, they cannot apply custom CRF values, two-pass encoding strategies, or advanced filtergraphs.
DRM and licensing confusion. Questions about which DRM schemes are supported, how to configure multi-DRM packaging, and whether AWS properly licenses certain codecs and patents.
Account activation errors. SubscriptionRequiredException appears when accounts have not been activated for MediaConvert, which adds support-ticket delays before first use.
When Should You Use AWS Elemental MediaConvert?
Use MediaConvert when:
- You already operate in AWS and use S3, IAM, CloudWatch, and EventBridge
- You need broadcast-grade output: HDR, DRM, professional codecs, ABR packaging
- You process video at high volume and benefit from managed scaling and queue-based resource control
- Your team is comfortable with IAM policy management, CloudWatch monitoring, and the JSON job model
- You need formal job templates to standardize encoding across multiple content pipelines
MediaConvert excels at what it was built for: large-scale VOD processing for media companies, broadcasters, and OTT platforms that already invest in AWS infrastructure.
When Should You Skip MediaConvert and Use a Hosted FFmpeg API?
Skip MediaConvert when:
- You need compression, clipping, audio extraction, format conversion, or thumbnail generation
- You want raw FFmpeg control: exact flags, complex filtergraphs, custom codec parameters
- You do not want to learn IAM, S3 bucket policies, queues, and CloudWatch
- You want predictable pricing you can estimate before you write any code
- You are building a developer application, not a broadcast pipeline
Very Good FFmpeg is a REST API that runs exact FFmpeg commands on cloud infrastructure. There is no JSON job model. You send the same flags you use on the terminal.
Setup:
- Sign up at verygoodffmpeg.com to get an API key
- POST your FFmpeg command as JSON
- Receive output at a stable URL or via webhook
No AWS account. No IAM roles. No S3 buckets. No queue configuration.
How Does Very Good FFmpeg Compare to AWS MediaConvert Head to Head?
| Factor | AWS Elemental MediaConvert | Very Good FFmpeg |
|---|---|---|
| Pricing model | Per normalized minute with multipliers | Per GB processed |
| Entry price | $0.0075/min (Basic AVC HD) + storage + transfer | $0.50/GB, first 2 GB free |
| Minimum commitment | None on-demand (reserved: 12-month) | None, no monthly minimum |
| Setup steps | AWS account, S3, IAM, queue, region, permissions | Sign up, get API key, POST |
| API style | JSON job model with nested output groups | Raw FFmpeg command passthrough |
| Codec support | Broadcast-grade (AVC, HEVC, AV1, ProRes, VP8, VP9) | Full FFmpeg codec set |
| HDR / DRM / ABR | Full support | Via FFmpeg filters |
| Custom filters | No (fixed job model) | Full FFmpeg filter graph |
| Debugging | CloudWatch logs + EventBridge | Real-time stderr streaming |
| Max job runtime | No enforced limit (queue-based) | 6 hours |
| Compute per job | Shared (depends on queue load) | 16 dedicated CPU cores, Nvidia GPU |
| Cloud lock-in | S3, IAM, CloudWatch, EventBridge, CloudFront | Cloud-agnostic (any input/output URL) |
| Accelerated encoding | Available (extra cost) | Via GPU flags |
Cloud Lock-In Analysis
MediaConvert creates tight coupling to AWS services. Your input files live in S3. Your IAM roles define access. Your output goes back to S3. Your monitoring runs in CloudWatch. Your event-driven workflows use EventBridge. Moving to another provider means rewriting infrastructure, not just changing an API endpoint.
Very Good FFmpeg accepts input from any URL and delivers output to any accessible destination. There is no storage lock-in, no identity provider lock-in, and no monitoring platform lock-in. Your integration is a POST request, not a CloudFormation stack.
Verdict: Is AWS Elemental MediaConvert Right for You?
If you are reading "AWS Elemental MediaConvert pricing API documentation," you are likely in the evaluation phase. You know you need video processing. You are trying to decide whether to invest in the AWS ecosystem or find a simpler path.
MediaConvert is the right choice for media companies that need broadcast-grade VOD pipelines, already run on AWS, and have the team expertise to manage IAM, S3, CloudWatch, and the JSON job model. The normalized-minute pricing, while opaque, can be cost-effective at very high AVC volumes.
For the majority of developer use cases -- compressing user uploads, extracting audio, generating thumbnails, converting formats, clipping highlights -- MediaConvert is overkill. The setup friction, complex pricing, and verbose API add overhead without proportional benefit.
Very Good FFmpeg gives you the same raw FFmpeg power you already know, charged per GB with no infrastructure overhead. Your first 2 GB are free. No credit card required.
FAQ
Does AWS MediaConvert support raw FFmpeg commands?
No. MediaConvert uses its own JSON job model with predefined settings. You cannot pass arbitrary FFmpeg flags or filtergraphs.
Can I use MediaConvert without an AWS account?
No. You need an AWS account, S3 buckets, and an IAM role before running your first job.
Is MediaConvert cheaper than a hosted FFmpeg API?
It depends on volume and codec. For simple AVC encodes at very high volume, MediaConvert Basic tier can be cheaper per minute. For low-to-medium volume, HEVC/AV1 encodes, or any Professional tier work, Very Good FFmpeg is cheaper and simpler.
Does MediaConvert support AV1 encoding?
Yes, in the Professional tier. It is not available under reserved pricing.
What is the minimum billing unit for MediaConvert?
10 seconds per output. Outputs shorter than 10 seconds are billed as 10 seconds.
Can I use MediaConvert for live streaming?
No. Use AWS MediaLive for live video encoding.
How do I estimate my MediaConvert bill?
AWS provides a pricing calculator, but the normalized-minute model with compounding multipliers makes estimates unreliable. The same workload can vary in cost by 30% month to month as volume discounts reset.
Does Very Good FFmpeg support GPU acceleration?
Yes. Set machine: "nvidia" on the request to route the job to an Nvidia GPU worker.
Can I try Very Good FFmpeg without a credit card?
Yes. The first 2 GB are free. No credit card is required to sign up.
References
- AWS MediaConvert pricing: https://aws.amazon.com/mediaconvert/pricing/
- AWS MediaConvert API reference: https://docs.aws.amazon.com/mediaconvert/latest/apireference/welcome.html
- AWS MediaConvert user guide: https://docs.aws.amazon.com/mediaconvert/latest/ug/what-is.html
- AWS MediaConvert features: https://aws.amazon.com/mediaconvert/features/
- AWS MediaConvert getting started: https://aws.amazon.com/mediaconvert/getting-started/
- AWS MediaConvert FAQs: https://aws.amazon.com/mediaconvert/faqs/
- AWS re:Post MediaConvert tag: https://repost.aws/tags/TAvef0yTvSQLGLbns8aVsMAg/aws-elemental-media-convert
- AWS MediaConvert resources: https://aws.amazon.com/mediaconvert/resources/
- AWS News Blog MediaConvert: https://aws.amazon.com/blogs/aws/category/media-services/aws-elemental-mediaconvert/
- AWS SDK code examples: https://docs.aws.amazon.com/mediaconvert/latest/ug/example_mediaconvert_CreateJob_section.html
- AWS MediaConvert reserved pricing: https://aws.amazon.com/mediaconvert/pricing/#Reserved_pricing
- Very Good FFmpeg: https://verygoodffmpeg.com/
- Google Cloud Transcoder API: https://cloud.google.com/transcoder/docs