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

FileDimensionsDurationCodecsFrame rateSize
Sample 640x360 3s MOVsample-3s.mov640 × 3603.012 sh264 / aac30 fps120 KB
Silent 640x360 3s MOVsilent-3s.mov640 × 3602.967 sh264 / no audio30 fps80 KB
Tiny 320x240 2s MOVtiny-320p.mov320 × 2402.029 sh264 / aac30 fps56 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.

curl

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'
wget

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'
Node.js

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");
Python Requests

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")

Continue testing

Related formats

Copied