spring-projects/spring-ai · error · java.lang.IllegalArgumentException

Unsupported video format:

Error message

Unsupported video format: 

What it means

BedrockMediaFormat.getVideoFormat() looks up the MimeType in VIDEO_MAP, mapping to Bedrock Converse VideoFormat values. If absent, an IllegalArgumentException is thrown because the video mime type is not supported by the Bedrock Converse API.

Solutions

  1. Transcode the video to a supported Bedrock format (mp4, mov, mkv where mapped) and set the matching MimeType.
  2. Pre-check with isSupportedVideoFormat before constructing the prompt.
  3. Ensure the Media mimeType is explicitly set to a supported value.
  4. Consult AWS Bedrock Converse docs for the up-to-date list of supported video formats.

Example fix

// before
new Media(MimeType.valueOf("video/avi"), aviResource);
// after
new Media(MimeType.valueOf("video/mp4"), mp4Resource);
Defensive patterns

Strategy: validation

Validate before calling

if (!BedrockMediaFormat.isSupportedVideoFormat(media.getMimeType())) {
    throw new IllegalArgumentException("Video format not supported by Bedrock: " + media.getMimeType());
}

Type guard

boolean isSupportedVideo(MimeType mt) {
    return mt != null && BedrockMediaFormat.isSupportedVideoFormat(mt);
}

Try / catch

try {
    String fmt = BedrockMediaFormat.getFormatAsString(media);
} catch (IllegalArgumentException e) {
    // transcode or drop the video item
}

Prevention

When it happens

Trigger: Calling getFormatAsString/getVideoFormat with a video MimeType not in VIDEO_MAP, e.g. video/avi, video/mkv, or a null/blank mimeType on a video Media item.

Common situations: Passing video files with container formats Bedrock does not accept; mime types inferred from filenames that are wrong or unusual; users expecting all video containers to work.

Related errors


AI-assisted analysis of spring-projects/spring-ai@98a7beda4f (2026-09-11). Data as JSON: /api/errors/f4bec5c5a621a891. Report an issue: GitHub.

Appendix: source

Thrown at models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/api/BedrockMediaFormat.java:132

		return IMAGE_MAP.containsKey(mimeType);
	}

	public static ImageFormat getImageFormat(MimeType mimeType) {
		ImageFormat format = IMAGE_MAP.get(mimeType);
		if (format == null) {
			throw new IllegalArgumentException("Unsupported image format: " + mimeType);
		}
		return format;
	}

	public static Boolean isSupportedVideoFormat(MimeType mimeType) {
		return VIDEO_MAP.containsKey(mimeType);
	}

	public static VideoFormat getVideoFormat(MimeType mimeType) {
		VideoFormat format = VIDEO_MAP.get(mimeType);
		if (format == null) {
			throw new IllegalArgumentException("Unsupported video format: " + mimeType);
		}
		return format;
	}

}

View on GitHub (pinned to 98a7beda4f)