Video Transcoding with Infinite Uploads

Infinite Uploads includes video transcoding at no extra cost with your storage and CDN plan. When you upload a video through the Infinite Uploads Video Library, it gets automatically transcoded into multiple resolutions so your visitors get the right quality for their device and connection speed. The original file stays intact in cloud storage.

This is not the same as uploading a video to the WordPress Media Library. Videos uploaded directly to the Media Library are stored and served through Infinite Uploads cloud storage and CDN, but they are not transcoded. Transcoding only happens for videos uploaded through the Video Library.

How Transcoding Works

When you upload a video to the Video Library, Infinite Uploads creates multiple versions of that video at different resolutions. Each version is encoded at a bitrate optimized for that resolution. During playback, the player automatically switches between these versions based on the viewer's bandwidth, so someone on a mobile connection gets a smaller file and someone on fiber gets full quality.

Transcoding happens in the background. You don't need to wait for it to finish before doing other things in WordPress. A progress bar in the Video Library shows you how far along each video is.

If you upload a video at 720p, the system won't create versions at 1080p or higher. Resolutions larger than the original are always skipped.

Available Resolutions

You control which resolutions get created in the Video Settings under the Encoding tab. More resolutions give viewers a smoother experience when their connection fluctuates, but each additional resolution uses more storage.

ResolutionDimensions (16:9)BitrateLabel
240p426 x 240600 kbpsLow quality, minimal bandwidth
360p640 x 360800 kbpsStandard definition
480p854 x 4801,400 kbpsEnhanced standard definition
720p1280 x 7202,800 kbpsHD
1080p1920 x 10805,000 kbpsFull HD
1440p2560 x 14408,000 kbps2K QHD (not yet available)
2160p3840 x 216025,000 kbps4K UHD (not yet available)

The 1440p and 2160p options are currently disabled in the settings UI. These will become available in a future update.

Configuring Encoding Settings

To choose which resolutions your videos are transcoded into:

  1. In your WordPress dashboard, go to Infinite Uploads > Video Cloud.
  2. Click the Encoding tab.
  3. Check or uncheck the resolutions you want enabled.
  4. Click Save Settings.

These settings apply to all future uploads. Videos that have already been transcoded are not affected by changes here.

The Video Player

Infinite Uploads includes a customizable video player that handles adaptive bitrate playback automatically. The player settings are in the Video Settings page under the Player tab.

Infinite Uploads Video Settings, Player tab, showing the Player version options, Main Player Color, Enable Direct Play and Player Controls

Player Version

The Player version setting at the top of the Player tab controls which version of the player your video library uses:

  • Player v2 (recommended). The current player. It supports captions from the CC menu, chapters on the timeline, and your library's player color, controls, and language settings. New video libraries start on Player v2.
  • Player v1 (legacy). Kept for compatibility. Libraries created before this setting existed stay on Player v1 until you switch them.

If your library is on Player v1, you'll see a banner that reads "Player v1 is being retired" with a countdown to December 1, 2026 and a Switch to Player v2 button. Click it, then click Save Settings. On December 1, 2026, we move any libraries still on Player v1 to Player v2 automatically, so switching now just lets you choose the timing.

Switching takes effect everywhere at once, including videos you've already embedded on existing pages and posts with the shortcode or the block. You don't need to re-save any of them.

Note: Switching players in place needs Infinite Uploads 3.4.1 or later. Sites on an older plugin version keep the old player until the plugin is updated.

Player Color

Set the primary accent color for the player controls (play button, progress bar, volume slider). Use the color picker in the Player tab to match your site's branding.

Direct Play

The Enable Direct Play switch controls whether share links appear in a video's Embed Code tab. When it's on, the tab shows these in addition to the shortcode:

  • Embed Code. An iframe you can paste into any page that accepts HTML.
  • Direct Play URL. A link that opens the video in a standalone player page.
  • HLS URL. The .m3u8 playlist for use in a third-party player. It's served from our branded address, iframe.infiniteuploads.com, and works the same whichever player version your library uses (Infinite Uploads 3.4.2 or later).

The Embed Code and Direct Play URL use our branded player addresses: player.infiniteuploads.com for libraries on Player v2 and iframe.infiniteuploads.com for libraries on Player v1. Anyone with one of these links can watch the video, so share them accordingly.

Embed Code tab of a video with Enable Direct Play turned on, showing the shortcode, Embed Code, Direct Play URL and HLS URL

For using the HLS URL in another player, see Using Third-Party Video Players with Infinite Uploads.

Player Language

The player UI supports 30 languages. Select your default language from the dropdown in the Player tab. This controls the text shown on player controls and tooltips.

Player Controls

You can show or hide individual controls on the player. Each control has its own checkbox:

  • Play/Pause and Center Play Button
  • Volume and Mute
  • Picture-in-Picture
  • Settings (quality selector)
  • Captions
  • Current Time and Duration
  • 10s Backward and 10s Forward
  • Progress Bar
  • Full Screen

Embedding Videos

There are two ways to embed a video from the Video Library on your site.

Gutenberg Block

In the block editor, add the Infinite Uploads Video block. You can upload a new video directly from the block or select an existing one from your Video Library. The block supports autoplay, loop, muted, and preload options in the block settings sidebar. The block is rendered when the page loads, so it always uses your library's current player and existing blocks don't need to be re-saved when you change the Player version.

Shortcode

Use the shortcode in any post, page, or widget:

Copy
[infinite-uploads-vid id="YOUR-VIDEO-ID"]

Replace YOUR-VIDEO-ID with the actual video ID, which you can find in the Video Library. The embed code is also available in each video's detail view under the Embed Code tab.

The shortcode supports these optional attributes:

  • autoplay — "true" or "false" (default: false)
  • loop — "true" or "false" (default: false)
  • muted — "true" or "false" (default: false)
  • preload — "true" or "false" (default: true)

Using a Video in a Custom Video Tag

Videos in the Video Library are transcoded and delivered as HLS adaptive streams. The HLS URL in the video dashboard (visible when Enable Direct Play is on) is an HLS playlist (.m3u8), not a raw MP4 file. A plain <video> tag with type="video/mp4" cannot play an HLS stream on its own in most browsers.

Browser support for HLS varies:

  • Safari (macOS and iOS) plays HLS natively, so an .m3u8 URL works in a standard <video> tag.
  • Chrome, Firefox, and Edge need a JavaScript helper such as hls.js.

To use a Video Library stream in a custom tag (for example a muted background video), load it with hls.js so it works across browsers:

📄
filename.js
Copy
<video id="bg-video" autoplay muted loop playsinline></video>

<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
  const video = document.getElementById('bg-video');
  const src = 'YOUR-HLS-URL.m3u8'; // the HLS URL from the video dashboard

  if (video.canPlayType('application/vnd.apple.mpegurl')) {
    // Safari: native HLS
    video.src = src;
  } else if (window.Hls && Hls.isSupported()) {
    // Chrome, Firefox, Edge: use hls.js
    const hls = new Hls();
    hls.loadSource(src);
    hls.attachMedia(video);
  }
</script>

This keeps the adaptive streaming and player benefits of the Video Library. If you need a raw MP4 source instead, see the "Video Library vs. Media Library" section below for which upload path stores the original file as-is.

Video Library Overview

The Video Library page in your WordPress dashboard shows all your uploaded videos with their current status. Each video card displays a thumbnail, title, video length, and storage size.

Videos go through several stages after upload:

  1. Uploaded — File received and stored
  2. Processing — Preparing for transcoding
  3. Transcoding — Creating encoded versions (progress bar visible)
  4. Finished — Ready to embed and stream

From the Video Library, you can also change a video's title, select a different thumbnail from the auto-generated options, and delete videos. Click a video to open its details, which have four tabs:

  • Embed Code. The shortcode to paste into a post, page, or widget. With Enable Direct Play on, it also shows the Embed Code iframe, Direct Play URL, and HLS URL.
  • Views. Total views, watch time, engagement, a 30-day chart, and your top countries. See Understanding Video Views and Engagement.
  • Captions. Upload a caption file for each language. See Adding Captions and Chapters to Your Videos.
  • Chapters. Add chapters by hand or generate Smart Chapters from your captions.
A video's details in the Video Library, showing the Embed Code, Views, Captions and Chapters tabs

The Video Cloud Overview panel (on the main Infinite Uploads settings page) shows your total video count, total video storage used, and video bandwidth consumed for the current calendar month.

Video Library vs. Media Library

This is the most common point of confusion. They do different things.

Video LibraryMedia Library
Videos are transcoded into multiple resolutionsVideos are stored as-is (single file)
Adaptive bitrate streaming via the built-in playerStandard WordPress video playback
Upload through the Video Library page or Gutenberg blockUpload through the standard Media Library
Embed with the IU Video block or shortcodeEmbed with the standard Video block or file URL
View count tracking (Views tab: total views, watch time, engagement)No view tracking

Both options store and serve files through Infinite Uploads cloud storage and CDN. The difference is transcoding and the player. If you need adaptive streaming and a branded player, use the Video Library. If you just need a video file hosted in the cloud, the Media Library works fine.

Troubleshooting

Video stuck on "Processing" or "Transcoding"

Transcoding time depends on the video's length and resolution. A 10-minute 1080p video may take several minutes. If it's been stuck for more than 30 minutes, check the Video Library for an error status. If the status shows an error, try uploading the video again. Contact support if the problem persists.

Video doesn't play after embedding

Make sure the video has finished transcoding (status: Finished). If you're using the shortcode, confirm the video ID is correct. If you want to copy the Direct Play URL, Embed Code iframe, or HLS URL from a video's Embed Code tab, turn on Enable Direct Play in Video Settings so they appear.

Transcoded resolutions are fewer than expected

The system skips any resolution higher than the original video. If you uploaded a 720p video, you won't get 1080p, 1440p, or 2160p versions. Check your source file's resolution before uploading.

Video Library page says "Video library not yet connected"

Your Infinite Uploads account needs to be connected and active. Go to the main Infinite Uploads settings page and verify your connection status. If you're on a plan that doesn't include video, you'll need to upgrade.