{"id":90,"date":"2026-04-12T19:13:47","date_gmt":"2026-04-12T19:13:47","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/alibaba-cloud-apsaravideo-media-processing-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-media-services\/"},"modified":"2026-04-12T19:13:47","modified_gmt":"2026-04-12T19:13:47","slug":"alibaba-cloud-apsaravideo-media-processing-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-media-services","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/alibaba-cloud-apsaravideo-media-processing-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-media-services\/","title":{"rendered":"Alibaba Cloud ApsaraVideo Media Processing Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Media Services"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Media Services<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>ApsaraVideo Media Processing is Alibaba Cloud\u2019s managed media processing service for common audio\/video workloads such as transcoding, packaging, and generating snapshots\/thumbnails. It is designed for asynchronous, at-scale processing where you submit a job and retrieve processed outputs from storage.<\/p>\n\n\n\n<p>In simple terms: you upload a video to Alibaba Cloud Object Storage Service (OSS), ask ApsaraVideo Media Processing to transform it (for example, \u201cmake an H.264 MP4 at 1080p and generate thumbnails\u201d), and then download or serve the result from OSS\/CDN.<\/p>\n\n\n\n<p>Technically, ApsaraVideo Media Processing (often abbreviated as <strong>MPS<\/strong> in Alibaba Cloud documentation and APIs) provides a job-based workflow that reads source media from OSS, processes it using managed processing backends, and writes outputs back to OSS. You control processing behavior using <strong>pipelines<\/strong>, <strong>templates<\/strong>, and <strong>jobs<\/strong>, and you can integrate with eventing\/notifications to automate downstream steps.<\/p>\n\n\n\n<p>It solves problems teams hit quickly when they try to process media themselves: scaling FFmpeg fleets, maintaining consistent presets, handling bursts safely, and controlling cost\/latency while keeping processing close to storage and delivery.<\/p>\n\n\n\n<blockquote>\n<p>Service name status note: As of the latest publicly available Alibaba Cloud materials, the product is commonly referenced as <strong>ApsaraVideo Media Processing<\/strong> and abbreviated as <strong>MPS<\/strong>. If you see \u201cMPS\u201d in console menus, SDKs, or OpenAPI, it typically refers to this service. Always verify the exact naming and menu location in the current console for your account\/region.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is ApsaraVideo Media Processing?<\/h2>\n\n\n\n<p><strong>Official purpose (scope):<\/strong> ApsaraVideo Media Processing is a managed service in <strong>Alibaba Cloud Media Services<\/strong> for processing audio and video content\u2014most commonly transcoding to different formats\/resolutions\/bitrates, generating snapshots, and performing other standard media transformations\u2014using a job submission model integrated with OSS.<\/p>\n\n\n\n<p><strong>Core capabilities (high-confidence, commonly documented):<\/strong>\n&#8211; <strong>Transcoding \/ format conversion<\/strong> for audio and video (codec\/container\/profile changes using templates).\n&#8211; <strong>Snapshot \/ thumbnail generation<\/strong> from video at specific times or intervals.\n&#8211; <strong>Watermarking<\/strong> (common in MPS feature lists; verify exact watermark modes supported in your region).\n&#8211; <strong>Job orchestration constructs<\/strong> such as <strong>pipelines<\/strong> and <strong>templates<\/strong>, plus <strong>asynchronous jobs<\/strong>.\n&#8211; <strong>OSS integration<\/strong> as the primary input\/output storage mechanism.\n&#8211; <strong>Notifications\/callbacks<\/strong> for job completion (often via MNS or HTTP callbacks depending on configuration; verify exact options in your region).<\/p>\n\n\n\n<p><strong>Major components (conceptual model you\u2019ll see in console\/APIs):<\/strong>\n&#8211; <strong>OSS buckets<\/strong>: source media and processed outputs live in OSS.\n&#8211; <strong>Pipeline<\/strong>: a configuration object that binds region + processing queue + input\/output OSS settings + notification settings.\n&#8211; <strong>Templates<\/strong>: reusable presets for transcoding\/snapshot\/watermark tasks.\n&#8211; <strong>Jobs<\/strong>: submitted processing requests that apply templates to source media and produce output objects.\n&#8211; <strong>Notifications<\/strong>: event mechanism informing your app\/workflow when a job finishes or fails.<\/p>\n\n\n\n<p><strong>Service type:<\/strong> Fully managed, asynchronous media processing (serverless-style consumption model). You do not manage servers.<\/p>\n\n\n\n<p><strong>Scope (regional\/global\/account):<\/strong>\n&#8211; <strong>Regional<\/strong>: Media processing resources (pipelines, endpoints, and often template IDs) are typically <strong>region-scoped<\/strong>. You usually must keep OSS buckets and processing in the same region for best compatibility and to avoid cross-region transfer complexity.\n&#8211; <strong>Account-scoped<\/strong>: Resources are owned by your Alibaba Cloud account and controlled with RAM policies and service roles.<\/p>\n\n\n\n<p><strong>How it fits into the Alibaba Cloud ecosystem:<\/strong>\n&#8211; <strong>OSS<\/strong> is the primary storage integration for source and output.\n&#8211; <strong>CDN<\/strong> commonly delivers processed outputs.\n&#8211; <strong>RAM<\/strong> controls access; service-linked roles may be used so MPS can read\/write OSS securely.\n&#8211; <strong>Eventing\/automation<\/strong> often uses <strong>MNS<\/strong>, <strong>EventBridge<\/strong>, <strong>Function Compute<\/strong>, or application webhooks (availability can vary\u2014verify).\n&#8211; It complements adjacent Media Services such as <strong>ApsaraVideo VOD<\/strong> (end-to-end VOD management) and <strong>ApsaraVideo Live<\/strong> (live streaming). ApsaraVideo Media Processing focuses on the processing layer.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use ApsaraVideo Media Processing?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time to market<\/strong>: Use managed presets and job APIs instead of building\/operating a media pipeline from scratch.<\/li>\n<li><strong>Predictable delivery quality<\/strong>: Standardize encoding ladders and thumbnail policies across teams and products.<\/li>\n<li><strong>Elastic handling of spikes<\/strong>: Campaign launches and creator uploads cause bursts; a managed service is designed to absorb them better than a fixed fleet.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Template-driven consistency<\/strong>: Encoding settings are centralized in templates, reducing \u201cit works on my machine\u201d inconsistencies.<\/li>\n<li><strong>OSS-native workflow<\/strong>: Reads\/writes from OSS reduces data movement compared to processing outside the cloud.<\/li>\n<li><strong>Asynchronous job model<\/strong>: Lets you build reliable, event-driven flows (submit \u2192 wait\/notify \u2192 publish).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No transcoding cluster to manage<\/strong>: No worker autoscaling, patching, and queue management (beyond pipeline configuration).<\/li>\n<li><strong>Simple failure handling<\/strong>: Job status, error codes, and retries can be integrated into workflows.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RAM-based access control<\/strong>: Least-privilege access to OSS and processing APIs.<\/li>\n<li><strong>Auditable API activity<\/strong>: Alibaba Cloud ActionTrail can record relevant API calls (verify service event coverage in your region).<\/li>\n<li><strong>Encryption options<\/strong>: OSS encryption and KMS integration can protect objects at rest (processing-stage encryption capabilities vary\u2014verify in official docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Parallelism managed by the service<\/strong>: Submit many jobs; the service handles scheduling and execution.<\/li>\n<li><strong>Region-local processing<\/strong>: Keeping OSS + MPS in-region reduces latency and avoids egress surprises.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need <strong>batch<\/strong> or asynchronous media processing (user-generated content, VOD preparation, learning platforms, marketing assets).<\/li>\n<li>You want <strong>standard encoding outputs<\/strong> (MP4\/HLS variants) and <strong>thumbnails<\/strong> with managed operations.<\/li>\n<li>You already use or plan to use <strong>OSS<\/strong> and possibly <strong>CDN<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need <strong>real-time<\/strong> transformation with ultra-low latency inside a live stream path (consider live-specific services or edge processing).<\/li>\n<li>You need highly specialized processing not supported by templates (custom filters, proprietary plugins). In that case, self-managed FFmpeg on ECS\/ACK may be more flexible.<\/li>\n<li>You require a fully managed <strong>end-to-end VOD platform<\/strong> (catalog, DRM, player auth, domain acceleration) rather than \u201cprocessing only\u201d\u2014consider ApsaraVideo VOD.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is ApsaraVideo Media Processing used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Media &amp; entertainment (VOD asset preparation, preview clips)<\/li>\n<li>E-learning (lecture transcoding, thumbnails)<\/li>\n<li>Social\/community platforms (UGC moderation preparation, standardized renditions)<\/li>\n<li>Retail &amp; marketing (product videos in multiple resolutions)<\/li>\n<li>Gaming (trailers, highlights)<\/li>\n<li>Enterprise communications (townhall recordings)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Platform engineering teams building shared media pipelines<\/li>\n<li>DevOps\/SRE teams supporting processing reliability and cost controls<\/li>\n<li>Backend teams implementing upload \u2192 process \u2192 publish flows<\/li>\n<li>Security\/compliance teams enforcing access, retention, and audit trails<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Batch transcoding to standardized formats (H.264 MP4, HLS ladders\u2014verify supported combinations)<\/li>\n<li>Thumbnail generation for catalog UIs<\/li>\n<li>Watermarking for content branding (verify exact watermark feature set)<\/li>\n<li>Audio extraction for podcasts or previews (verify exact feature support in your region)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Event-driven pipelines: OSS upload triggers processing job submission, then job completion triggers publishing.<\/li>\n<li>VOD preparation: Process \u2192 store \u2192 deliver via CDN \u2192 track analytics outside the processing layer.<\/li>\n<li>Multi-tenant platforms: Use naming conventions and per-tenant prefixes in OSS and templates.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Production: integrated with identity, auditing, notifications, and cost controls<\/li>\n<li>Dev\/test: smaller presets, limited concurrency, short retention, and test-only buckets<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios that align with how ApsaraVideo Media Processing is typically used (always verify specific feature availability per region\/account).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Standardize user-uploaded videos to MP4 (H.264 + AAC)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Uploads arrive in many formats and encodings; playback fails across browsers\/devices.<\/li>\n<li><strong>Why this service fits:<\/strong> Template-driven transcoding produces consistent outputs.<\/li>\n<li><strong>Example:<\/strong> A community app transcodes every upload to a 720p MP4 for universal playback and keeps the original in OSS for archival.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Build an adaptive bitrate ladder for web\/mobile streaming<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Users have varying bandwidth; a single rendition buffers or looks poor.<\/li>\n<li><strong>Why this service fits:<\/strong> Batch generate multiple renditions and package for streaming (verify supported packaging formats such as HLS in your region).<\/li>\n<li><strong>Example:<\/strong> An e-learning platform generates 240p\/360p\/720p variants and serves via CDN.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Generate poster frames and thumbnail strips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> The UI needs a cover image and timeline thumbnails for scrub previews.<\/li>\n<li><strong>Why this service fits:<\/strong> Snapshot generation creates images at timestamps\/intervals.<\/li>\n<li><strong>Example:<\/strong> A video catalog shows a poster image at 2 seconds and a thumbnail every 10 seconds.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Apply a visible watermark for brand protection<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Content is redistributed without attribution.<\/li>\n<li><strong>Why this service fits:<\/strong> Managed watermarking can be applied consistently (verify watermark types\/positions supported).<\/li>\n<li><strong>Example:<\/strong> A marketing team publishes event recordings with a bottom-right logo watermark.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Create low-resolution preview clips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You want previews without exposing full-quality assets.<\/li>\n<li><strong>Why this service fits:<\/strong> Transcoding templates can create a low-bitrate rendition suitable as preview.<\/li>\n<li><strong>Example:<\/strong> A marketplace generates 480p previews for listing pages.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Normalize audio levels or extract audio tracks (where supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Some apps need audio-only outputs for podcasts or accessibility.<\/li>\n<li><strong>Why this service fits:<\/strong> If audio extraction\/transcoding is supported, you can standardize to AAC\/MP3 (verify exact outputs).<\/li>\n<li><strong>Example:<\/strong> A webinar platform exports audio-only files for offline listening.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Pre-process assets for content review workflows<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Automated review tools require consistent format and frame extraction.<\/li>\n<li><strong>Why this service fits:<\/strong> Produce normalized video plus snapshots for review pipelines.<\/li>\n<li><strong>Example:<\/strong> Generate frames every 1 second for downstream scanning (storage costs must be considered).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Multi-tenant SaaS media pipeline<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Many tenants upload content; you must isolate outputs and enforce naming conventions.<\/li>\n<li><strong>Why this service fits:<\/strong> Use per-tenant OSS prefixes + templates; jobs remain per account with strict RAM policies.<\/li>\n<li><strong>Example:<\/strong> <code>oss:\/\/bucket\/tenantA\/raw\/...<\/code> \u2192 <code>oss:\/\/bucket\/tenantA\/processed\/...<\/code>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Regional processing to keep data residency<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Compliance requires data remain in a specific geography.<\/li>\n<li><strong>Why this service fits:<\/strong> Use region-local OSS + MPS; avoid cross-region transfers.<\/li>\n<li><strong>Example:<\/strong> EU-only bucket and EU region processing for EU users (verify regional availability).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Cost-optimized \u201cencode once, deliver many\u201d<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Serving original uploads is expensive and inconsistent; repeated re-encoding wastes compute.<\/li>\n<li><strong>Why this service fits:<\/strong> Encode to a standard set once; then distribute from OSS\/CDN.<\/li>\n<li><strong>Example:<\/strong> A publisher encodes a stable ladder and caches at CDN edge.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Note: Alibaba Cloud feature sets can vary by region and can evolve. For any feature you plan to rely on, confirm in the current <strong>ApsaraVideo Media Processing<\/strong> documentation for your region.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 Transcoding with templates<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Converts media between codecs\/containers and adjusts resolution\/bitrate using reusable templates.<\/li>\n<li><strong>Why it matters:<\/strong> Standard outputs reduce player\/device issues and support consistent QoE.<\/li>\n<li><strong>Practical benefit:<\/strong> You can define a \u201c720p mobile preset\u201d once and reuse it for every job.<\/li>\n<li><strong>Caveats:<\/strong> Supported input\/output formats and advanced codec options are region- and product-version dependent\u2014verify in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Multi-rendition output (encoding ladder)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Produces multiple outputs from a single source using multiple templates.<\/li>\n<li><strong>Why it matters:<\/strong> Enables adaptive streaming and device targeting.<\/li>\n<li><strong>Practical benefit:<\/strong> Generate 360p, 480p, 720p outputs from one upload.<\/li>\n<li><strong>Caveats:<\/strong> Storage and processing costs increase linearly with the number and complexity of outputs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 Snapshot \/ thumbnail generation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Extracts frames at specified timestamps or intervals and saves them as images to OSS.<\/li>\n<li><strong>Why it matters:<\/strong> Thumbnails drive engagement and UX (catalog grids, search results, scrub previews).<\/li>\n<li><strong>Practical benefit:<\/strong> Automatically create a poster image and a set of timeline thumbnails.<\/li>\n<li><strong>Caveats:<\/strong> Large interval-based snapshot sets can create many objects in OSS and raise storage\/request costs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.4 Watermarking (verify exact modes)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Adds image\/text watermark overlays during processing.<\/li>\n<li><strong>Why it matters:<\/strong> Brand attribution and deterrence against unauthorized redistribution.<\/li>\n<li><strong>Practical benefit:<\/strong> Apply a consistent logo placement across all outputs.<\/li>\n<li><strong>Caveats:<\/strong> Watermark positioning, opacity, and scaling behaviors should be tested per resolution.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.5 Pipelines (queueing + configuration boundary)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Provides a logical boundary for processing settings, job routing, and (often) notifications.<\/li>\n<li><strong>Why it matters:<\/strong> Separation of environments and workloads (prod vs dev, high-priority vs best-effort).<\/li>\n<li><strong>Practical benefit:<\/strong> A \u201cprod pipeline\u201d with strict notifications and a \u201cdev pipeline\u201d with relaxed settings.<\/li>\n<li><strong>Caveats:<\/strong> Pipeline limits\/quotas may apply\u2014verify your account\u2019s quota.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.6 Job-based asynchronous processing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> You submit a job, poll status or receive notifications, and retrieve outputs from OSS.<\/li>\n<li><strong>Why it matters:<\/strong> Decouples user uploads from processing completion; your app remains responsive.<\/li>\n<li><strong>Practical benefit:<\/strong> The upload API returns immediately; your system updates status when processing completes.<\/li>\n<li><strong>Caveats:<\/strong> You must build idempotency and retry logic around submissions and notifications.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.7 Notifications and callbacks (verify options)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Sends job completion\/failure events to a messaging system or HTTP endpoint.<\/li>\n<li><strong>Why it matters:<\/strong> Enables event-driven automation and reduces polling.<\/li>\n<li><strong>Practical benefit:<\/strong> Trigger CDN cache warming, database updates, or publishing steps after completion.<\/li>\n<li><strong>Caveats:<\/strong> Delivery semantics (at-least-once vs exactly-once) and supported notification targets must be confirmed in docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.8 OSS-centric I\/O and permission model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses OSS buckets\/paths as inputs\/outputs with controlled access.<\/li>\n<li><strong>Why it matters:<\/strong> Centralizes data in a durable object store and integrates with CDN and lifecycle rules.<\/li>\n<li><strong>Practical benefit:<\/strong> Standard pattern: <code>raw\/<\/code> prefix for uploads, <code>processed\/<\/code> prefix for outputs.<\/li>\n<li><strong>Caveats:<\/strong> Cross-region bucket use can fail or incur transfer costs; prefer same-region.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.9 API\/SDK automation (OpenAPI)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Exposes operations to create pipelines\/templates and submit\/query jobs.<\/li>\n<li><strong>Why it matters:<\/strong> Infrastructure-as-code and CI\/CD integration.<\/li>\n<li><strong>Practical benefit:<\/strong> Automated creation of presets per environment and reproducible deployments.<\/li>\n<li><strong>Caveats:<\/strong> API versions and parameter names can change; always use the current OpenAPI\/SDK docs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<p>A typical ApsaraVideo Media Processing flow looks like this:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>A user or backend uploads a source video to <strong>OSS<\/strong>.<\/li>\n<li>Your application submits a processing <strong>job<\/strong> to <strong>ApsaraVideo Media Processing<\/strong> (MPS), referencing:\n   &#8211; the source OSS object\n   &#8211; one or more templates\n   &#8211; the destination OSS location<\/li>\n<li>MPS processes asynchronously and writes output objects to OSS.<\/li>\n<li>Your system is notified (or polls) and then publishes the output via <strong>CDN<\/strong> or your application.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Control plane vs data plane<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane:<\/strong> API calls to create templates\/pipelines and submit\/query jobs (authenticated using RAM).<\/li>\n<li><strong>Data plane:<\/strong> Media files read from and written to OSS during processing. Access is typically mediated by service roles and OSS permissions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services<\/h3>\n\n\n\n<p>Common adjacent services in Alibaba Cloud:\n&#8211; <strong>OSS<\/strong>: mandatory for typical workflows (input\/output).\n&#8211; <strong>CDN<\/strong>: distribution of final outputs at scale.\n&#8211; <strong>RAM<\/strong>: least-privilege access and service-linked roles.\n&#8211; <strong>ActionTrail<\/strong>: auditing API activity (verify service coverage).\n&#8211; <strong>CloudMonitor<\/strong>: monitoring\/alarming (verify which MPS metrics are available; OSS\/CDN metrics are commonly used).\n&#8211; <strong>MNS \/ EventBridge \/ Function Compute<\/strong>: automation from job completion events (exact supported targets vary\u2014verify).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OSS buckets in a supported region.<\/li>\n<li>RAM permissions and potentially a service-linked role so MPS can access OSS.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Human and application access uses <strong>RAM users\/roles<\/strong> with policies for:<\/li>\n<li>MPS API calls (submit\/query jobs, manage templates\/pipelines)<\/li>\n<li>OSS actions (read raw inputs, write outputs, list prefixes as required)<\/li>\n<li>MPS itself typically requires authorization to access OSS. This is often done via a service role\/service-linked role and OSS bucket policies\/ACLs. The exact setup depends on your account configuration and console prompts\u2014follow official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You do not deploy VPC networking for MPS itself; it is a managed service endpoint per region.<\/li>\n<li>Networking is relevant for:<\/li>\n<li>Upload\/download to OSS (public endpoints, internal endpoints, or via VPC endpoints where applicable to OSS).<\/li>\n<li>Callback endpoints (if you use HTTP callbacks) which must be publicly reachable or reachable per Alibaba Cloud\u2019s documented requirements.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job status and errors<\/strong> should be centralized (database, ticketing, or log system).<\/li>\n<li><strong>Object lifecycle<\/strong> in OSS (raw vs processed) must be managed (lifecycle rules, retention).<\/li>\n<li><strong>Tagging\/naming<\/strong>: enforce consistent naming for buckets, prefixes, and templates for auditability.<\/li>\n<li><strong>Audit<\/strong>: use ActionTrail for who changed templates\/pipelines and who submitted jobs (verify details).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User \/ Uploader] --&gt;|Upload| OSSIN[(OSS Bucket: raw\/)]\n  APP[Backend App] --&gt;|Submit Job (RAM auth)| MPS[ApsaraVideo Media Processing]\n  MPS --&gt;|Read source| OSSIN\n  MPS --&gt;|Write outputs| OSSOUT[(OSS Bucket: processed\/)]\n  OSSOUT --&gt;|Serve| CDN[Alibaba Cloud CDN]\n  CDN --&gt; V[Viewers\/Clients]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Client_Side[Clients]\n    C1[Mobile\/Web Client]\n  end\n\n  subgraph Ingress[Ingress &amp; Upload]\n    API[API Gateway \/ Backend Service]\n    STS[STS: Temporary Credentials]\n  end\n\n  subgraph Storage[Object Storage]\n    RAW[(OSS: raw\/ prefix)]\n    PROC[(OSS: processed\/ prefix)]\n  end\n\n  subgraph Processing[Media Services]\n    MPS[ApsaraVideo Media Processing]\n    TPL[Templates]\n    PL[Pipeline(s)]\n  end\n\n  subgraph Automation[Event-driven Automation]\n    EVT[Notifications (MNS\/EventBridge\/HTTP callback\\nVerify per region)]\n    FC[Function Compute \/ Worker]\n    DB[(Metadata DB)]\n  end\n\n  subgraph Delivery[Delivery]\n    CDN[Alibaba Cloud CDN]\n    ORIGIN[Origin = OSS processed\/]\n  end\n\n  C1 --&gt; API\n  API --&gt; STS\n  API --&gt;|Upload using OSS signed URL\/credentials| RAW\n\n  API --&gt;|Submit Job| MPS\n  MPS --&gt; RAW\n  MPS --&gt; PROC\n\n  MPS --&gt; EVT\n  EVT --&gt; FC\n  FC --&gt; DB\n\n  PROC --&gt; ORIGIN --&gt; CDN --&gt; C1\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Before starting the lab, make sure you have the following.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Account and billing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong>Alibaba Cloud account<\/strong> with billing enabled.<\/li>\n<li><strong>ApsaraVideo Media Processing<\/strong> activated (some regions\/services require enabling before use).<\/li>\n<li><strong>OSS<\/strong> activated.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions (RAM)<\/h3>\n\n\n\n<p>You need a RAM identity (RAM user or RAM role) with permissions to:\n&#8211; Manage or use ApsaraVideo Media Processing (submit\/query jobs; optionally manage templates\/pipelines).\n&#8211; Read\/write objects in the chosen OSS buckets.<\/p>\n\n\n\n<p>Practical minimum permissions are environment-dependent, but typically include:\n&#8211; MPS API permissions for job submission and querying.\n&#8211; OSS permissions for:\n  &#8211; <code>GetObject<\/code> on the raw prefix\n  &#8211; <code>PutObject<\/code> on the processed prefix\n  &#8211; <code>ListBucket<\/code> if required by console workflows<\/p>\n\n\n\n<blockquote>\n<p>For exact RAM policy actions and recommended policies, verify in the official RAM + MPS documentation for your region and preferred authentication method.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Tools (recommended for the lab)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ossutil<\/strong> (Alibaba Cloud OSS command-line tool) to upload\/download test files:<\/li>\n<li>https:\/\/www.alibabacloud.com\/help\/en\/oss\/developer-reference\/ossutil-overview<\/li>\n<li>A local media player (VLC or similar) to verify outputs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose a region where:<\/li>\n<li>OSS is available<\/li>\n<li>ApsaraVideo Media Processing is available<br\/>\n  Verify on the product page and region list in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pipelines, templates, and concurrent jobs may have quotas.<\/li>\n<li>OSS request rate and object size limits apply.<\/li>\n<li>Verify current quotas in the console quota center or product documentation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OSS buckets<\/strong> (input and output), ideally in the <strong>same region<\/strong> as the MPS pipeline.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<p>ApsaraVideo Media Processing pricing is <strong>usage-based<\/strong>. Exact prices vary by <strong>region<\/strong>, <strong>output settings<\/strong>, and sometimes <strong>billing mode<\/strong> or contract terms. Do not rely on fixed numbers from third-party sources\u2014use Alibaba Cloud\u2019s official pricing pages for your region.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (typical)<\/h3>\n\n\n\n<p>Common billing dimensions for managed media processing services like MPS include:\n&#8211; <strong>Transcoding duration<\/strong> (minutes of output or input processed) with price depending on:\n  &#8211; output resolution (SD\/HD\/FHD\/4K)\n  &#8211; codec (H.264\/H.265, audio codec options, etc.)\n  &#8211; container\/packaging complexity<br\/>\n<em>Verify the exact pricing matrix for MPS in your region.<\/em>\n&#8211; <strong>Snapshot generation<\/strong> billed by count and\/or frequency.\n&#8211; <strong>Watermarking<\/strong> may have an additional charge or be included in transcoding pricing depending on product rules\u2014verify.\n&#8211; <strong>API requests<\/strong> are usually not the major cost driver, but check if any request tiers exist\u2014verify.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier<\/h3>\n\n\n\n<p>Alibaba Cloud free tier availability changes and is region\/product dependent. Verify whether MPS has a free trial quota:\n&#8211; https:\/\/www.alibabacloud.com\/free (general free tier portal; verify product-specific eligibility)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Primary cost drivers<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Minutes transcoded<\/strong>: longer videos and multiple renditions multiply cost.<\/li>\n<li><strong>Output complexity<\/strong>: higher resolution, higher bitrate, more advanced codecs can cost more.<\/li>\n<li><strong>Number of outputs per input<\/strong>: each rendition adds processing and storage.<\/li>\n<li><strong>Snapshot volume<\/strong>: frequent interval snapshots create many images.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs (often larger than expected)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OSS storage<\/strong>: raw + processed + thumbnails + intermediate objects (if any).<\/li>\n<li><strong>OSS requests<\/strong>: many small thumbnails can raise request counts.<\/li>\n<li><strong>Data transfer \/ CDN egress<\/strong>:<\/li>\n<li>Serving videos to the public internet via CDN incurs CDN egress.<\/li>\n<li>Cross-region transfers can create bandwidth charges and operational complexity.<\/li>\n<li><strong>Logging and monitoring<\/strong>:<\/li>\n<li>OSS access logs stored in OSS<\/li>\n<li>ActionTrail delivery to OSS\/SLS (if configured)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep <strong>processing in the same region<\/strong> as the OSS buckets to avoid cross-region data movement.<\/li>\n<li>If your viewers are global, use <strong>CDN<\/strong>; don\u2019t serve directly from OSS public endpoints at scale.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>the minimum number of renditions<\/strong> that still meets QoE requirements.<\/li>\n<li>Choose <strong>reasonable bitrates<\/strong> (avoid \u201cmax quality\u201d defaults).<\/li>\n<li>Generate <strong>only necessary thumbnails<\/strong> (poster + a few timeline frames) rather than very dense intervals.<\/li>\n<li>Set <strong>OSS lifecycle rules<\/strong>:<\/li>\n<li>Move raw uploads to IA\/Archive or delete after a retention window (if business allows).<\/li>\n<li>Expire intermediate thumbnails not needed long-term.<\/li>\n<li>Prefer <strong>H.264<\/strong> for broad compatibility unless you have a clear benefit from H.265\/AV1 (and confirm support\/pricing).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated numbers)<\/h3>\n\n\n\n<p>A realistic starter workload might be:\n&#8211; 10 videos\/day \u00d7 2 minutes each\n&#8211; 1 output rendition (e.g., 720p MP4)\n&#8211; 1 poster snapshot per video<\/p>\n\n\n\n<p>Your monthly cost is approximately:\n&#8211; <strong>Transcoding<\/strong>: (10 \u00d7 2 \u00d7 30) minutes \u00d7 <em>price_per_minute_for_profile<\/em>\n&#8211; <strong>Snapshots<\/strong>: (10 \u00d7 30) snapshots \u00d7 <em>price_per_snapshot<\/em>\n&#8211; <strong>OSS<\/strong>: raw + processed storage GB-month + requests\n&#8211; <strong>Delivery<\/strong>: optional CDN egress if you stream to end users<\/p>\n\n\n\n<p>Use official pricing to plug in values:\n&#8211; Pricing page (verify current URL for MPS in your locale):<br\/>\n  https:\/\/www.alibabacloud.com\/product\/apsaravideo-for-media-processing<br\/>\n  (Open the pricing section from the product page, or use the console billing\/pricing pages for your region.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>For production, cost modeling should include:\n&#8211; Average upload duration distribution (P50\/P95 length)\n&#8211; Rendition ladder size (2\u20136 outputs typical, but depends on product)\n&#8211; Peak submission rates (burst handling)\n&#8211; Thumbnail policy (interval-based thumbnails can be very expensive at scale)\n&#8211; Retention and lifecycle (raw retention vs compliance requirements)\n&#8211; CDN traffic forecasts by geography and cache hit ratio<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Process a sample video using <strong>ApsaraVideo Media Processing<\/strong> in Alibaba Cloud:\n&#8211; Upload a source video to <strong>OSS<\/strong>\n&#8211; Create or select an <strong>MPS pipeline<\/strong>\n&#8211; Submit a <strong>transcoding job<\/strong> (MP4 output) and optionally generate a <strong>snapshot<\/strong>\n&#8211; Verify the output in OSS\n&#8211; Clean up resources to avoid ongoing charges<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will build a minimal, low-cost workflow:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create two OSS buckets (or one bucket with two prefixes): <code>raw\/<\/code> and <code>processed\/<\/code><\/li>\n<li>Upload a small sample video using <code>ossutil<\/code><\/li>\n<li>Configure ApsaraVideo Media Processing to access OSS (via role authorization if prompted)<\/li>\n<li>Create a simple transcoding template (or use a system preset if available in your console)<\/li>\n<li>Submit a transcoding job<\/li>\n<li>Validate: download output and play locally<\/li>\n<li>Cleanup: delete objects, templates\/pipelines (optional), and buckets<\/li>\n<\/ol>\n\n\n\n<blockquote>\n<p>Cost safety tips:\n&#8211; Use a short video (10\u201330 seconds).\n&#8211; Produce only <strong>one<\/strong> output rendition.\n&#8211; Generate at most <strong>one<\/strong> snapshot.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create OSS buckets (input\/output) in the same region<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the Alibaba Cloud console: https:\/\/home.console.alibabacloud.com\/<\/li>\n<li>Go to <strong>Object Storage Service (OSS)<\/strong>.<\/li>\n<li>Create a bucket for input (example): <code>mps-lab-raw-&lt;unique-id&gt;<\/code>\n   &#8211; <strong>Region:<\/strong> choose a region where MPS is available (for example, Singapore, Hong Kong, etc.\u2014verify availability)\n   &#8211; <strong>Storage class:<\/strong> Standard (for the lab)\n   &#8211; <strong>ACL:<\/strong> Private (recommended)<\/li>\n<li>Create a bucket for output (example): <code>mps-lab-processed-&lt;unique-id&gt;<\/code><br\/>\n   Use the <strong>same region<\/strong> and <strong>Private<\/strong> ACL.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> Two private OSS buckets exist in the same region.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Configure ossutil and upload a sample video<\/h3>\n\n\n\n<p>Install and configure <code>ossutil<\/code>:\n&#8211; Official guide: https:\/\/www.alibabacloud.com\/help\/en\/oss\/developer-reference\/ossutil-overview<\/p>\n\n\n\n<p>Typical configuration command:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ossutil config\n<\/code><\/pre>\n\n\n\n<p>You\u2019ll be prompted for:\n&#8211; Endpoint (region-specific OSS endpoint)\n&#8211; AccessKey ID \/ AccessKey Secret (prefer a RAM user, not the root account)\n&#8211; Optional STS token<\/p>\n\n\n\n<p>Upload a sample video (keep it short). Example:<\/p>\n\n\n\n<pre><code class=\"language-bash\"># Upload local file sample.mp4 to the raw bucket under raw\/\nossutil cp .\/sample.mp4 oss:\/\/mps-lab-raw-&lt;unique-id&gt;\/raw\/sample.mp4\n<\/code><\/pre>\n\n\n\n<p>List the object to confirm:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ossutil ls oss:\/\/mps-lab-raw-&lt;unique-id&gt;\/raw\/\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> <code>raw\/sample.mp4<\/code> exists in the input bucket.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Activate ApsaraVideo Media Processing and authorize OSS access<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the console, open <strong>ApsaraVideo Media Processing<\/strong> (MPS). Start here if you don\u2019t have a direct link:\n   &#8211; Product page: https:\/\/www.alibabacloud.com\/product\/apsaravideo-for-media-processing\n   &#8211; From there, navigate to console\/documentation as needed.<\/li>\n<li>Select the <strong>same region<\/strong> as your OSS buckets.<\/li>\n<li>If prompted to authorize the service to access OSS:\n   &#8211; Follow the console workflow to create\/authorize the required role (often a service-linked role).\n   &#8211; Ensure the role allows MPS to read from your raw bucket and write to your processed bucket.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> MPS is enabled in the selected region and has permission to access OSS.<\/p>\n\n\n\n<blockquote>\n<p>If you cannot find the authorization step, verify the \u201cGetting started\u201d doc for MPS in your region. Alibaba Cloud sometimes updates console flows.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create (or select) an MPS Pipeline<\/h3>\n\n\n\n<p>In ApsaraVideo Media Processing console:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to <strong>Pipelines<\/strong> (or similar).<\/li>\n<li>Create a pipeline (example name): <code>mps-lab-pipeline<\/code><\/li>\n<li>Configure:\n   &#8211; <strong>Input bucket:<\/strong> <code>mps-lab-raw-&lt;unique-id&gt;<\/code> (or leave generic if pipeline doesn\u2019t bind input)\n   &#8211; <strong>Output bucket:<\/strong> <code>mps-lab-processed-&lt;unique-id&gt;<\/code>\n   &#8211; <strong>Output path\/prefix:<\/strong> <code>processed\/<\/code><\/li>\n<li>Configure notifications if required (optional for this lab):\n   &#8211; If the console supports MNS\/topic or callback URL, you may skip for now and rely on job list polling.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> A pipeline exists and points to your output bucket\/prefix.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Create a transcoding template (or use a preset)<\/h3>\n\n\n\n<p>Depending on your console:\n&#8211; You may have built-in templates (system presets).\n&#8211; Or you may need to create a custom template.<\/p>\n\n\n\n<p>Create a simple template (example):\n&#8211; Container: MP4\n&#8211; Video codec: H.264\n&#8211; Audio codec: AAC\n&#8211; Resolution: keep source or set to 720p (to keep costs moderate)\n&#8211; Bitrate: moderate (avoid excessive bitrate)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a template ID\/name you can select in a job.<\/p>\n\n\n\n<blockquote>\n<p>Template fields and codec options vary. Use the console defaults when unsure and verify supported settings in the official docs.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Submit a transcoding job<\/h3>\n\n\n\n<p>In the MPS console, go to <strong>Jobs<\/strong> \u2192 <strong>Create Job<\/strong> (wording may vary):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Select your <strong>Pipeline<\/strong>: <code>mps-lab-pipeline<\/code><\/li>\n<li>Input:\n   &#8211; Bucket: <code>mps-lab-raw-&lt;unique-id&gt;<\/code>\n   &#8211; Object: <code>raw\/sample.mp4<\/code><\/li>\n<li>Output:\n   &#8211; Bucket: <code>mps-lab-processed-&lt;unique-id&gt;<\/code>\n   &#8211; Object\/prefix: <code>processed\/sample-720p.mp4<\/code> (or similar)<\/li>\n<li>Select your <strong>transcoding template<\/strong>.<\/li>\n<li>Submit the job.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> A job is created and enters a processing state (Queued\/Processing).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7 (Optional): Add a snapshot\/thumbnail output<\/h3>\n\n\n\n<p>If the job wizard supports snapshots:\n&#8211; Configure a <strong>single snapshot<\/strong> at a timestamp like <code>2s<\/code> (or the first valid timestamp for your sample).\n&#8211; Output to: <code>processed\/thumbnails\/sample-poster.jpg<\/code><\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> When the job completes, you get the MP4 output and (optionally) a JPEG\/PNG thumbnail in OSS.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Monitor job status and verify outputs in OSS<\/h3>\n\n\n\n<p><strong>Option A: Monitor in console<\/strong>\n1. In MPS console, open the job list.\n2. Check status until it becomes <strong>Success<\/strong> (or similar).\n3. If status is <strong>Failed<\/strong>, open the error details.<\/p>\n\n\n\n<p><strong>Option B: Verify by checking OSS<\/strong>\nList processed objects:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ossutil ls oss:\/\/mps-lab-processed-&lt;unique-id&gt;\/processed\/\n<\/code><\/pre>\n\n\n\n<p>Download the processed MP4:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ossutil cp oss:\/\/mps-lab-processed-&lt;unique-id&gt;\/processed\/sample-720p.mp4 .\/output.mp4\n<\/code><\/pre>\n\n\n\n<p>Play <code>output.mp4<\/code> locally (VLC or your preferred player).<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can play the processed output file, and (if configured) you can view the snapshot image.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use this checklist:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] <code>raw\/sample.mp4<\/code> exists in the raw bucket<\/li>\n<li>[ ] MPS job status is <strong>Success<\/strong><\/li>\n<li>[ ] <code>processed\/sample-720p.mp4<\/code> exists in the processed bucket<\/li>\n<li>[ ] The output video plays correctly<\/li>\n<li>[ ] (Optional) <code>processed\/thumbnails\/sample-poster.jpg<\/code> exists and looks correct<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Job fails with OSS permission denied<\/strong>\n   &#8211; Cause: MPS service role doesn\u2019t have read\/write permissions to your buckets\/prefixes.\n   &#8211; Fix:<\/p>\n<ul>\n<li>Re-run authorization workflow in the MPS console.<\/li>\n<li>Ensure bucket ACL is private but allows the service role.<\/li>\n<li>Verify RAM policies and any bucket policy that might block access.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Bucket region mismatch \/ cannot select bucket<\/strong>\n   &#8211; Cause: MPS region differs from OSS bucket region.\n   &#8211; Fix: Create buckets in the same region as the MPS pipeline, or switch to the matching region.<\/p>\n<\/li>\n<li>\n<p><strong>Unsupported format\/codec error<\/strong>\n   &#8211; Cause: Input file codec\/container not supported, or your chosen output settings aren\u2019t supported.\n   &#8211; Fix: Test with a known-good MP4\/H.264 input; simplify the template; verify supported formats in official docs.<\/p>\n<\/li>\n<li>\n<p><strong>Output file not found<\/strong>\n   &#8211; Cause: Output path\/prefix misconfigured, or job wrote to a different prefix.\n   &#8211; Fix: Check job details for the exact output object key; search the processed bucket.<\/p>\n<\/li>\n<li>\n<p><strong>Very slow processing<\/strong>\n   &#8211; Cause: Large input, high-resolution output, or regional capacity variations.\n   &#8211; Fix: Use a shorter sample; reduce output complexity; retry off-peak; verify service health in the region.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Delete processed outputs and thumbnails<\/strong><\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">ossutil rm -r oss:\/\/mps-lab-processed-&lt;unique-id&gt;\/processed\/\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Delete raw uploads<\/strong><\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">ossutil rm -r oss:\/\/mps-lab-raw-&lt;unique-id&gt;\/raw\/\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Delete buckets<\/strong> (only if you created them for the lab and they are empty)<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">ossutil rb oss:\/\/mps-lab-processed-&lt;unique-id&gt;\nossutil rb oss:\/\/mps-lab-raw-&lt;unique-id&gt;\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Delete templates\/pipelines<\/strong> (optional)\n&#8211; If you created custom templates\/pipelines for the lab, remove them in the MPS console to keep your environment clean.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Keep OSS + MPS in the same region<\/strong> to reduce latency and avoid cross-region transfer complexity.<\/li>\n<li><strong>Use separate prefixes<\/strong>:<\/li>\n<li><code>raw\/<\/code> for originals<\/li>\n<li><code>processed\/<\/code> for outputs<\/li>\n<li><code>thumbnails\/<\/code> for images<\/li>\n<li><strong>Design for idempotency<\/strong>:<\/li>\n<li>Use deterministic output keys (e.g., include source hash or version) to avoid duplicate processing.<\/li>\n<li><strong>Use event-driven completion<\/strong> where possible (notifications\/callbacks) instead of polling.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>RAM roles<\/strong> and least privilege:<\/li>\n<li>Restrict OSS access to specific buckets and prefixes.<\/li>\n<li>Restrict MPS actions to only those required (submit\/query vs admin).<\/li>\n<li>Use <strong>STS temporary credentials<\/strong> for client-side uploads to OSS instead of embedding AccessKeys.<\/li>\n<li>Separate duties:<\/li>\n<li>Template\/pipeline management: platform team role<\/li>\n<li>Job submission: application role<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoid overproducing outputs:<\/li>\n<li>Start with one or two renditions and expand only when metrics justify it.<\/li>\n<li>Control snapshot counts:<\/li>\n<li>One poster image is cheap; \u201cevery second\u201d is expensive.<\/li>\n<li>Use OSS lifecycle rules:<\/li>\n<li>Delete raw files after a retention period if allowed.<\/li>\n<li>Transition older processed outputs to cheaper storage classes if rarely accessed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the smallest acceptable resolution\/bitrate for the use case.<\/li>\n<li>Avoid unnecessary re-encoding:<\/li>\n<li>If the source already matches your target spec, consider storing as-is (but confirm compatibility needs).<\/li>\n<li>Batch strategy:<\/li>\n<li>For large backfills, throttle submissions to stay within quotas and avoid pipeline congestion.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implement retry with backoff for job submissions and status checks.<\/li>\n<li>Store job metadata (job ID, source key, output key, template) in a durable database.<\/li>\n<li>Use dead-letter handling for failures: route failed jobs to a queue for inspection.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Track:<\/li>\n<li>number of jobs\/day<\/li>\n<li>failure rate<\/li>\n<li>average processing time<\/li>\n<li>per-template costs (approximate)<\/li>\n<li>Enable audit trails (ActionTrail) and review changes to templates\/pipelines.<\/li>\n<li>Use consistent naming conventions:<\/li>\n<li><code>mps-&lt;env&gt;-pipeline-&lt;purpose&gt;<\/code><\/li>\n<li><code>tpl-&lt;resolution&gt;-&lt;codec&gt;-&lt;bitrate&gt;<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag OSS buckets and (where supported) processing resources with:<\/li>\n<li><code>env=prod|dev<\/code><\/li>\n<li><code>owner=team<\/code><\/li>\n<li><code>costcenter=...<\/code><\/li>\n<li><code>data_classification=public|internal|restricted<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>RAM<\/strong> for:<\/li>\n<li>human admins (least privilege)<\/li>\n<li>application roles (job submission only)<\/li>\n<li>If MPS uses a <strong>service-linked role<\/strong> to access OSS, review:<\/li>\n<li>which buckets\/prefixes it can access<\/li>\n<li>whether access is overly broad<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>At rest (OSS):<\/strong> Enable OSS server-side encryption (SSE) if required:<\/li>\n<li>SSE-OSS or SSE-KMS (KMS keys) depending on compliance needs.<\/li>\n<li><strong>In transit:<\/strong> Use HTTPS endpoints for OSS access and API calls.<\/li>\n<li><strong>Processing-stage encryption:<\/strong> If you need output encryption or DRM-like controls, verify whether this is supported by ApsaraVideo Media Processing or should be handled by other Alibaba Cloud media products (often VOD-focused). Do not assume DRM support in MPS without confirming in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep buckets <strong>private<\/strong> and serve outputs through <strong>CDN<\/strong> with appropriate origin access controls.<\/li>\n<li>Avoid making raw upload buckets public.<\/li>\n<li>If using HTTP callbacks, secure them:<\/li>\n<li>validate signatures (if supported)<\/li>\n<li>allowlist source IP ranges if Alibaba Cloud publishes them (verify)<\/li>\n<li>enforce TLS<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not embed AccessKey secrets in client apps.<\/li>\n<li>Use STS tokens for uploads, and store server-side secrets in a secrets manager solution (Alibaba Cloud secrets products vary; verify current recommended service).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and review:<\/li>\n<li><strong>ActionTrail<\/strong> for API calls (who created templates\/pipelines; who submitted jobs).<\/li>\n<li><strong>OSS access logging<\/strong> for sensitive buckets if required.<\/li>\n<li>Build an internal audit record:<\/li>\n<li>source object key<\/li>\n<li>output object key(s)<\/li>\n<li>template used<\/li>\n<li>requestor identity<\/li>\n<li>timestamps and status<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data residency: process in-region to meet residency requirements.<\/li>\n<li>Retention: enforce lifecycle policies aligned with policy\/legal needs.<\/li>\n<li>Classification: treat raw uploads as potentially sensitive until validated.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Public OSS buckets for raw uploads.<\/li>\n<li>Over-broad RAM policies (<code>oss:*<\/code> on <code>*<\/code>).<\/li>\n<li>No isolation between dev and prod buckets\/pipelines.<\/li>\n<li>Long-lived AccessKeys used in CI\/CD without rotation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use separate Alibaba Cloud accounts or at least separate resource groups for prod vs dev (where feasible).<\/li>\n<li>Restrict OSS access to prefixes and use bucket policies where supported.<\/li>\n<li>Require MFA for privileged RAM users.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Because Alibaba Cloud updates services frequently, treat these as common constraints to validate rather than absolute rules.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Region constraints:<\/strong> Not all regions support every Media Services feature. Always verify region availability for ApsaraVideo Media Processing.<\/li>\n<li><strong>OSS region alignment:<\/strong> Using OSS buckets in a different region than the MPS pipeline can break workflows or create transfer complexity\/cost.<\/li>\n<li><strong>Format\/codec coverage:<\/strong> Not all codecs\/containers are supported. Input files from devices can be variable\u2014test with real samples.<\/li>\n<li><strong>Template compatibility:<\/strong> A template that works for one content type may fail for another (variable frame rate, unusual audio).<\/li>\n<li><strong>Snapshot explosion:<\/strong> Interval snapshots can create thousands of images quickly, affecting OSS request and storage costs.<\/li>\n<li><strong>Notification semantics:<\/strong> Message delivery may be at-least-once; design handlers to be idempotent (verify for your chosen notification target).<\/li>\n<li><strong>Quotas:<\/strong> Pipeline\/template counts and job concurrency may be limited. Check quota center or product docs.<\/li>\n<li><strong>Error visibility:<\/strong> Some errors are only visible in job detail pages; centralize error logging in your app.<\/li>\n<li><strong>Output naming collisions:<\/strong> If you reuse output keys, new jobs can overwrite old outputs unless you version keys.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>ApsaraVideo Media Processing fits best when you need managed, OSS-integrated media processing. Alternatives vary by how \u201cend-to-end\u201d you want the solution to be and how much control you need.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Alibaba Cloud ApsaraVideo Media Processing<\/strong><\/td>\n<td>Batch processing (transcode\/snapshot\/watermark) integrated with OSS<\/td>\n<td>Managed scaling, templates, OSS-native, integrates with Alibaba Cloud ecosystem<\/td>\n<td>Feature scope is processing-focused; advanced workflows may require additional services; region variability<\/td>\n<td>You want a practical managed processing layer for VOD prep and media transformations<\/td>\n<\/tr>\n<tr>\n<td><strong>Alibaba Cloud ApsaraVideo VOD<\/strong><\/td>\n<td>End-to-end VOD platform<\/td>\n<td>Often includes broader VOD management features beyond processing (catalog, distribution workflows, etc.; verify exact features)<\/td>\n<td>May be more than you need if you only want processing; product boundaries matter<\/td>\n<td>You need a full VOD solution, not just transcoding jobs<\/td>\n<\/tr>\n<tr>\n<td><strong>Alibaba Cloud ApsaraVideo Live<\/strong><\/td>\n<td>Live streaming<\/td>\n<td>Live ingest, streaming distribution, live-specific features<\/td>\n<td>Not intended for offline batch processing workflows<\/td>\n<td>You need live streaming rather than batch processing<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS Elemental MediaConvert<\/strong><\/td>\n<td>Managed transcoding on AWS<\/td>\n<td>Deep integration with AWS, strong preset ecosystem<\/td>\n<td>Different ecosystem and cost model; requires AWS storage\/identity patterns<\/td>\n<td>Your workloads are on AWS and you want native services<\/td>\n<\/tr>\n<tr>\n<td><strong>Google Cloud Transcoder API<\/strong><\/td>\n<td>Transcoding on Google Cloud<\/td>\n<td>Simple API, integrates with GCS<\/td>\n<td>Ecosystem mismatch if you\u2019re on Alibaba Cloud<\/td>\n<td>Your media pipeline is on Google Cloud<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure (current media offering)<\/strong><\/td>\n<td>Media workflows on Azure<\/td>\n<td>Azure-native integration<\/td>\n<td>Azure Media Services has had retirement announcements; verify Azure\u2019s current replacement services<\/td>\n<td>Only if your environment is Azure and you\u2019ve validated the current product direction<\/td>\n<\/tr>\n<tr>\n<td><strong>Self-managed FFmpeg on ECS\/ACK<\/strong><\/td>\n<td>Maximum customization\/control<\/td>\n<td>Full control over filters\/codecs, can run custom logic<\/td>\n<td>You manage scaling, failures, patching, queues; higher ops burden<\/td>\n<td>You need custom processing not supported by templates or want strict cost control at scale with ops maturity<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Global e-learning provider<\/h3>\n\n\n\n<p><strong>Problem<\/strong>\nA global e-learning company ingests thousands of lecture videos weekly from instructors. Uploads come in different formats and must be standardized for reliable playback on web and mobile, with thumbnails for catalog UX. Compliance requires region-specific processing and controlled access.<\/p>\n\n\n\n<p><strong>Proposed architecture<\/strong>\n&#8211; Upload to region-specific <strong>OSS raw<\/strong> buckets using STS credentials.\n&#8211; Submit jobs to <strong>ApsaraVideo Media Processing<\/strong> in the same region.\n&#8211; Generate:\n  &#8211; one \u201cuniversal playback\u201d MP4 rendition\n  &#8211; optional multi-rendition ladder for streaming (verify packaging needs)\n  &#8211; poster thumbnail + a small set of timeline thumbnails\n&#8211; Store outputs in <strong>OSS processed<\/strong> with lifecycle policies.\n&#8211; Deliver via <strong>Alibaba Cloud CDN<\/strong> with signed URLs if needed.\n&#8211; Record metadata in a central DB; use notifications\/callbacks to update status.<\/p>\n\n\n\n<p><strong>Why this service was chosen<\/strong>\n&#8211; Managed job processing reduces operational burden compared to maintaining a transcoding fleet.\n&#8211; OSS-native I\/O fits their storage and delivery strategy.\n&#8211; Regional deployment supports data residency controls.<\/p>\n\n\n\n<p><strong>Expected outcomes<\/strong>\n&#8211; Fewer playback failures and support tickets.\n&#8211; Faster publishing times due to automation.\n&#8211; Lower ops overhead and better cost visibility per template\/rendition.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: Community video app<\/h3>\n\n\n\n<p><strong>Problem<\/strong>\nA startup allows short video uploads. They need to standardize to a single 720p MP4 and generate a cover image. They have limited DevOps capacity and want minimal infrastructure.<\/p>\n\n\n\n<p><strong>Proposed architecture<\/strong>\n&#8211; Client uploads to <strong>OSS<\/strong> using signed credentials from backend.\n&#8211; Backend submits a single MPS job per upload.\n&#8211; Backend polls job status initially (simple), later upgrades to notifications.\n&#8211; Outputs served via <strong>CDN<\/strong>; raw retained for 7 days then deleted.<\/p>\n\n\n\n<p><strong>Why this service was chosen<\/strong>\n&#8211; No server fleet to manage; predictable template-based outputs.\n&#8211; Quick to integrate with OSS and CDN already used by the team.<\/p>\n\n\n\n<p><strong>Expected outcomes<\/strong>\n&#8211; Basic video pipeline in days, not weeks.\n&#8211; Costs scale with usage; minimal fixed infrastructure.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is ApsaraVideo Media Processing the same as ApsaraVideo VOD?<\/strong><br\/>\n   No. ApsaraVideo Media Processing focuses on media processing jobs (transcoding, snapshots, etc.). ApsaraVideo VOD is typically a broader VOD solution. Verify exact boundaries in current Alibaba Cloud docs.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need OSS to use ApsaraVideo Media Processing?<\/strong><br\/>\n   Most standard workflows use OSS for input\/output. Check official docs for any alternative inputs\/outputs, but plan on OSS.<\/p>\n<\/li>\n<li>\n<p><strong>Is the service regional?<\/strong><br\/>\n   In practice, pipelines and endpoints are region-scoped. Keep OSS buckets and MPS in the same region.<\/p>\n<\/li>\n<li>\n<p><strong>How do I get notified when a job finishes?<\/strong><br\/>\n   Many workflows use message\/notification integrations or callbacks. The exact options can vary\u2014verify in the MPS docs for your region. You can always poll job status as a fallback.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the simplest workflow for beginners?<\/strong><br\/>\n   OSS upload \u2192 submit one transcoding job \u2192 check job status in console \u2192 download output from OSS.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need to manage servers for transcoding?<\/strong><br\/>\n   No. This is a managed service.<\/p>\n<\/li>\n<li>\n<p><strong>How do I control output quality and size?<\/strong><br\/>\n   Use transcoding templates to set resolution, bitrate, codec, and related parameters. Start with conservative settings and test.<\/p>\n<\/li>\n<li>\n<p><strong>Can I generate multiple outputs from one input?<\/strong><br\/>\n   Typically yes, by applying multiple templates in a job\/workflow. Costs increase with each output.<\/p>\n<\/li>\n<li>\n<p><strong>Can I add watermarks?<\/strong><br\/>\n   Watermarking is commonly listed as part of MPS capabilities, but exact modes vary. Verify watermark types (image\/text), positioning, and limitations in your region.<\/p>\n<\/li>\n<li>\n<p><strong>How do I avoid overwriting existing outputs?<\/strong><br\/>\n   Use versioned output keys (include timestamp, UUID, or source hash) and store mappings in your database.<\/p>\n<\/li>\n<li>\n<p><strong>What are common reasons jobs fail?<\/strong><br\/>\n   OSS permission issues, region mismatch, unsupported codecs, invalid template parameters, or corrupted inputs.<\/p>\n<\/li>\n<li>\n<p><strong>How should I design IAM policies for MPS?<\/strong><br\/>\n   Separate roles: one for template\/pipeline administration and one for job submission. Scope OSS permissions to specific buckets\/prefixes.<\/p>\n<\/li>\n<li>\n<p><strong>How can I estimate costs before going live?<\/strong><br\/>\n   Model minutes processed \u00d7 renditions \u00d7 resolution\/codec pricing, plus OSS storage and CDN egress. Use official pricing pages for your region.<\/p>\n<\/li>\n<li>\n<p><strong>Should I keep the raw uploads?<\/strong><br\/>\n   Keep raw only if required for compliance, reprocessing, or quality needs. Otherwise delete or archive using lifecycle rules to reduce cost and risk.<\/p>\n<\/li>\n<li>\n<p><strong>Is ApsaraVideo Media Processing suitable for live streaming transformations?<\/strong><br\/>\n   It\u2019s primarily a job-based processing service. For live streaming, use live-focused services (for example, ApsaraVideo Live) and verify capabilities.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use VPC-only endpoints?<\/strong><br\/>\n   MPS is a managed service; you interact via API endpoints. For OSS, you can often use internal\/VPC endpoints depending on your network setup. Verify current networking options in OSS docs.<\/p>\n<\/li>\n<li>\n<p><strong>How do I operationalize at scale?<\/strong><br\/>\n   Add notifications, idempotent handlers, centralized metadata storage, dashboards for job success rate\/latency, and cost controls per template.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn ApsaraVideo Media Processing<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official product page<\/td>\n<td>Alibaba Cloud \u2013 ApsaraVideo Media Processing<\/td>\n<td>Entry point for overview, console links, and up-to-date positioning: https:\/\/www.alibabacloud.com\/product\/apsaravideo-for-media-processing<\/td>\n<\/tr>\n<tr>\n<td>Official documentation<\/td>\n<td>ApsaraVideo Media Processing documentation (MPS)<\/td>\n<td>Authoritative feature list, APIs, templates, and region notes (navigate from product page or Alibaba Cloud Help Center)<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>MPS pricing page\/section<\/td>\n<td>Region- and feature-specific pricing model (find via product page pricing section or billing console): https:\/\/www.alibabacloud.com\/product\/apsaravideo-for-media-processing<\/td>\n<\/tr>\n<tr>\n<td>OSS CLI tool docs<\/td>\n<td>ossutil overview<\/td>\n<td>Practical for uploads\/downloads and automation: https:\/\/www.alibabacloud.com\/help\/en\/oss\/developer-reference\/ossutil-overview<\/td>\n<\/tr>\n<tr>\n<td>RAM documentation<\/td>\n<td>Resource Access Management (RAM) docs<\/td>\n<td>Required for least-privilege policies and roles: https:\/\/www.alibabacloud.com\/help\/en\/ram<\/td>\n<\/tr>\n<tr>\n<td>OSS documentation<\/td>\n<td>OSS developer guide<\/td>\n<td>Bucket policies, encryption, lifecycle, signed URLs: https:\/\/www.alibabacloud.com\/help\/en\/oss<\/td>\n<\/tr>\n<tr>\n<td>ActionTrail documentation<\/td>\n<td>ActionTrail<\/td>\n<td>Auditing changes and API activity: https:\/\/www.alibabacloud.com\/help\/en\/actiontrail<\/td>\n<\/tr>\n<tr>\n<td>CDN documentation<\/td>\n<td>Alibaba Cloud CDN docs<\/td>\n<td>Delivery best practices for processed outputs: https:\/\/www.alibabacloud.com\/help\/en\/cdn<\/td>\n<\/tr>\n<tr>\n<td>OpenAPI portal<\/td>\n<td>Alibaba Cloud OpenAPI<\/td>\n<td>Reference for MPS API operations and request parameters (search for MPS\/Media Processing in OpenAPI): https:\/\/api.alibabacloud.com\/<\/td>\n<\/tr>\n<tr>\n<td>Architecture references<\/td>\n<td>Alibaba Cloud Architecture Center<\/td>\n<td>Patterns for media pipelines and OSS\/CDN architectures (browse\/search): https:\/\/www.alibabacloud.com\/solutions\/architecture<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, SREs, platform teams<\/td>\n<td>Cloud + DevOps practices, CI\/CD, automation, operational readiness around cloud services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps fundamentals, SCM, build\/release practices that complement media pipelines<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations teams<\/td>\n<td>Cloud operations, monitoring, reliability practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, reliability-focused engineers<\/td>\n<td>SRE principles, SLIs\/SLOs, incident response for production services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + automation practitioners<\/td>\n<td>AIOps concepts, automation, operational analytics<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>Cloud\/DevOps training content (verify specific offerings)<\/td>\n<td>Engineers seeking guided learning and mentoring<\/td>\n<td>https:\/\/www.rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training programs (verify course catalog)<\/td>\n<td>Beginners to intermediate DevOps learners<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps services\/training (verify scope)<\/td>\n<td>Teams needing short-term help or coaching<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training (verify services)<\/td>\n<td>Ops teams needing practical support-oriented learning<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify offerings)<\/td>\n<td>Architecture reviews, implementation assistance, automation<\/td>\n<td>Designing OSS bucket strategy, CI\/CD for media workflows, operational dashboards<\/td>\n<td>https:\/\/www.cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps consulting and training (verify consulting services)<\/td>\n<td>DevOps process, IaC, reliability practices<\/td>\n<td>Building deployment pipelines, access controls, runbooks for media processing operations<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify offerings)<\/td>\n<td>Cloud migration support, DevOps implementation<\/td>\n<td>Setting up monitoring, security baselines, cost optimization practices<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Object storage fundamentals (OSS):<\/strong><\/li>\n<li>buckets, prefixes, ACLs\/policies<\/li>\n<li>signed URLs \/ STS credential flows<\/li>\n<li>lifecycle rules and storage classes<\/li>\n<li><strong>Basic video concepts:<\/strong><\/li>\n<li>containers vs codecs (MP4 vs H.264)<\/li>\n<li>bitrate, resolution, keyframes (high-level)<\/li>\n<li><strong>Alibaba Cloud IAM (RAM):<\/strong><\/li>\n<li>users vs roles<\/li>\n<li>least privilege<\/li>\n<li>service-linked roles (concept)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CDN delivery patterns<\/strong> (origin configuration, cache keys, signed URLs)<\/li>\n<li><strong>Event-driven architectures<\/strong> (EventBridge\/MNS + Function Compute)<\/li>\n<li><strong>Observability<\/strong>:<\/li>\n<li>tracing job lifecycles<\/li>\n<li>audit logging with ActionTrail<\/li>\n<li><strong>Advanced media pipelines<\/strong>:<\/li>\n<li>multi-rendition ladders and packaging strategies (verify within Alibaba Cloud\u2019s product set)<\/li>\n<li>DRM\/content protection (often VOD-oriented; verify requirements)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud engineer \/ platform engineer (media platform)<\/li>\n<li>DevOps engineer \/ SRE (operationalizing processing workloads)<\/li>\n<li>Backend engineer (upload and processing pipeline integration)<\/li>\n<li>Solutions architect (media delivery architectures)<\/li>\n<li>Cost analyst\/FinOps (media pipeline cost modeling)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Alibaba Cloud certifications and learning paths change over time. Check Alibaba Cloud certification portal and learning resources and map them to:\n&#8211; OSS + CDN knowledge\n&#8211; RAM\/IAM\n&#8211; Media services (if a dedicated track exists\u2014verify)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>UGC upload pipeline<\/strong>: STS upload \u2192 submit MPS job \u2192 callback \u2192 store metadata in DB.<\/li>\n<li><strong>Thumbnail service<\/strong>: generate poster + 10 thumbnails per video; optimize for cost with lifecycle rules.<\/li>\n<li><strong>Multi-region rollout plan<\/strong>: define region-specific buckets\/pipelines and a routing layer.<\/li>\n<li><strong>FinOps dashboard<\/strong>: estimate cost per video based on duration \u00d7 renditions; compare to actual billing.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ApsaraVideo Media Processing (MPS):<\/strong> Alibaba Cloud managed service for media processing tasks like transcoding and snapshots.<\/li>\n<li><strong>OSS (Object Storage Service):<\/strong> Alibaba Cloud object storage for raw and processed media files.<\/li>\n<li><strong>Pipeline:<\/strong> A logical configuration boundary for processing jobs (often includes output settings and notifications).<\/li>\n<li><strong>Template:<\/strong> A reusable preset defining how to transcode or generate snapshots (codec, resolution, bitrate, etc.).<\/li>\n<li><strong>Job:<\/strong> A submitted processing request that transforms an input object into one or more outputs.<\/li>\n<li><strong>Codec:<\/strong> Encoder\/decoder for audio\/video streams (e.g., H.264 for video).<\/li>\n<li><strong>Container:<\/strong> File format that wraps audio\/video streams (e.g., MP4).<\/li>\n<li><strong>Bitrate:<\/strong> Data rate for encoded media; affects quality and file size.<\/li>\n<li><strong>Rendition:<\/strong> One encoded output version of a media file (specific resolution\/bitrate).<\/li>\n<li><strong>Thumbnail\/Snapshot:<\/strong> An image extracted from a video frame.<\/li>\n<li><strong>RAM (Resource Access Management):<\/strong> Alibaba Cloud identity and access control service.<\/li>\n<li><strong>STS (Security Token Service):<\/strong> Temporary credentials service used for secure client uploads.<\/li>\n<li><strong>CDN:<\/strong> Content Delivery Network for caching and delivering media globally.<\/li>\n<li><strong>ActionTrail:<\/strong> Alibaba Cloud auditing service for API actions.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>ApsaraVideo Media Processing is Alibaba Cloud\u2019s managed <strong>Media Services<\/strong> offering for job-based media processing\u2014most commonly <strong>transcoding<\/strong>, <strong>snapshot generation<\/strong>, and related transformations\u2014tightly integrated with <strong>OSS<\/strong> for input and output.<\/p>\n\n\n\n<p>It matters because it removes the operational burden of running your own transcoding fleet while enabling consistent outputs through templates and pipelines. Architecturally, it fits best in OSS-centric workflows where you process once and distribute many times via CDN.<\/p>\n\n\n\n<p>Cost is primarily driven by <strong>minutes transcoded<\/strong>, <strong>number of outputs<\/strong>, and <strong>snapshot volume<\/strong>, with indirect costs from <strong>OSS storage\/requests<\/strong> and <strong>CDN egress<\/strong>. Security hinges on correct <strong>RAM least privilege<\/strong>, private OSS buckets, and auditable operations.<\/p>\n\n\n\n<p>Use ApsaraVideo Media Processing when you need a reliable managed processing layer for VOD preparation and standard transformations. If you need a complete VOD platform (catalog, distribution controls, etc.), evaluate ApsaraVideo VOD; if you need maximum customization, consider self-managed FFmpeg on ECS\/ACK.<\/p>\n\n\n\n<p>Next step: follow the official documentation from the product page, validate supported formats\/templates in your chosen region, and productionize the lab by adding notifications, idempotent handlers, lifecycle policies, and cost monitoring.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Media Services<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,13],"tags":[],"class_list":["post-90","post","type-post","status-publish","format-standard","hentry","category-alibaba-cloud","category-media-services"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/90\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=90"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=90"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}