video/quicktime
MOV sample video files for testing
Download verified H.264/AAC and silent MOV fixtures for QuickTime uploads, metadata, playback, conversion, and Range tests.
Verified . QuickTime container brand, H.264/AAC streams, duration, 30 fps metadata, hash, and Range delivery are build-verified.
Identify MOV files
- Magic signature
ftyp box with QuickTime-compatible brand- Registered MIME
video/quicktime
MOV and MP4 share related box structures. The ftyp brands and contained sample entries are more useful than the extension alone.
Choosing MOV
MOV is common in Apple and editing workflows. Browser playback depends on contained codecs.
Use MOV for camera, editor, or Apple-originated uploads.
Compare matching MOV, MP4, and WebM scenarios to isolate container behavior.
Common test cases
- QuickTime upload validation
- Container and codec inspection
- Cross-container conversion
Invalid and boundary cases
- MOV declared as video/mp4
- Silent file with no audio track
- Codec accepted by editor but not browser
MOV fixture matrix
| File | Dimensions | Duration | Codecs | Frame rate | Size |
|---|---|---|---|---|---|
| Sample 640x360 3s MOVsample-3s.mov | 640 × 360 | 3.012 s | h264 / aac | 30 fps | 120 KB |
| Silent 640x360 3s MOVsilent-3s.mov | 640 × 360 | 2.967 s | h264 / no audio | 30 fps | 80 KB |
| Tiny 320x240 2s MOVtiny-320p.mov | 320 × 240 | 2.029 s | h264 / aac | 30 fps | 56 KB |
Verify the representative fixture
Each command downloads sample-3s.mov and uses its published URL. The Node.js and Python examples also verify the exact byte count and SHA-256 digest.
Download the published fixture and inspect its response headers before saving the exact bytes.
curl --fail --location --silent --show-error \
--output sample-3s.mov \
--write-out 'status=%{http_code}\ncontent_type=%{content_type}\nbytes=%{size_download}\n' \
'https://assets.testfiles.dev/video/sample-3s.mov'Save the stable fixture URL without changing the published byte stream.
wget --output-document='sample-3s.mov' 'https://assets.testfiles.dev/video/sample-3s.mov'Verify the downloaded byte count and SHA-256 digest in a Node.js workflow.
import assert from "node:assert/strict";
import { createHash } from "node:crypto";
const response = await fetch("https://assets.testfiles.dev/video/sample-3s.mov");
assert.equal(response.ok, true);
assert.match(response.headers.get("content-type") ?? "", /video\/quicktime/i);
const bytes = Buffer.from(await response.arrayBuffer());
assert.equal(bytes.length, 122829);
assert.equal(createHash("sha256").update(bytes).digest("hex"), "999764c4e9b874ad058ed0575aaaac1402881fe14a7bcb8abb51e0b6b8a80879");
console.log("Verified sample-3s.mov", bytes.length, "bytes");Verify the same fixture from a Python test or processing pipeline.
import hashlib
import requests
url = "https://assets.testfiles.dev/video/sample-3s.mov"
response = requests.get(url, timeout=30)
response.raise_for_status()
assert "video/quicktime" in response.headers.get("content-type", "")
assert len(response.content) == 122829
assert hashlib.sha256(response.content).hexdigest() == "999764c4e9b874ad058ed0575aaaac1402881fe14a7bcb8abb51e0b6b8a80879"
print("Verified sample-3s.mov", len(response.content), "bytes")