Overview
The media collection provides access to images and videos uploaded via the MX8 Labs dashboard. These media items can be used in questions, filtered dynamically, and reported on using their associated metadata.
The media system is designed for:
- Ad or concept testing
- Filtering or tagging by metadata
- Dynamically pulling content into questions
If no media has been uploaded, a dummy set is used with the default columns:
name,description,product,brand,campaign,agency,id
You can create and upload your own metadata columns via the MX8 Labs dashboard.
@property media
Accesses the full media collection. Returns a MediaCollection object which can be iterated and queried.
for media in s.media:
s.select_question("What do you think of this image?", options=["Like", "Dislike"], image=media)
get_media_values(column: str)
Returns all values from a specific metadata column in the media collection.
| Parameter | Type | Required | Description |
|---|---|---|---|
column | str | yes | The column name to extract unique values from |
car_brands = s.get_media_values("brand")
get_image(**filters)
Returns a single image matching the provided metadata filters.
ford_image = s.get_image(brand="Ford")
s.image_question("What do you think of this Ford car?", image=ford_image)
get_video(**filters)
Returns a single video matching the provided metadata filters.
ford_video = s.get_video(brand="Ford")
s.play_video(video=ford_video)
get_images(**filters)
Returns a list of images that match the provided metadata filters.
for image in s.get_images(brand="Ford"):
s.image_question("What do you think of this Ford car?", image=image)
get_videos(**filters)
Returns a list of videos that match the provided metadata filters.
for video in s.get_videos(brand="Ford"):
s.play_video(video=video)
DRM and Security
When the Security flag is enabled on a survey, every piece of media served through s.media — images and videos alike — is delivered with a full set of content protections. The protections are always on together; they cannot be toggled individually.
| Protection | What it does |
|---|---|
| Anti-tampering video overlay | A transparent overlay sits on top of every video and detects attempts to modify, replace, or scrape the player. Any tampering pauses playback and invalidates the session. |
| Pause-on-background | Playback automatically pauses the moment the tab, window, or app loses focus. Respondents cannot leave a video running in the background while switching to a screen-capture tool. |
| Right-click prevention | The standard context menu is disabled on media elements, blocking "Save image as...", "Save video as...", and inspector shortcuts that would otherwise expose the underlying asset. |
| Keystroke blocking | Common capture and developer-tool shortcuts (PrtScn, Cmd/Ctrl+S, Cmd/Ctrl+Shift+I, F12, and similar) are intercepted while media is on screen. |
| DRM | All video is streamed under the platform's DRM system, which prevents screen recording on mobile devices (iOS and Android both render a black frame in any screenshot or screen capture) and blocks unauthorized decryption on desktop. |
Playback URLs are short-lived — each link expires 60 seconds after it is issued — and videos are IP-watermarked so that any leaked footage can be traced back to the respondent session that captured it.
Security is the right default for any study involving unreleased ads, confidential concepts, agency creative, or other material under NDA. For low-sensitivity stimuli (for example, publicly available images used purely for recall), Security can be left off to reduce friction for respondents on older browsers.
Notes
- You can chain filters using multiple keyword arguments (e.g.
brand="Ford", campaign="Summer") - These tools allow dynamic, personalized question flows based on metadata
- Media metadata is automatically included in reporting for grouped analysis
- All media must be uploaded via the MX8 Labs dashboard and tied to the current survey project
- See Secure Video Player for the video-specific instrument that pairs with these protections