Openai/69505485-7d60-8001-98fc-66951636b1d8
This conversation was exported from ChatGPT[1]
gpt-5-2[edit | edit source]
User: I want to generate a 1MB mp4 file that Plex thinks is 90 minutes long[edit | edit source]
I want to generate a 1MB mp4 file that Plex thinks is 90 minutes long
Assistant: You can do this by lying to the container metadata duration / timescale while keeping almost no actual frames.[edit | edit source]
You can do this by lying to the container metadata (duration / timescale) while keeping almost no actual frames. Plex relies heavily on MP4 container metadata, not actual frame count.
The most reliable approach is FFmpeg with a very low framerate + stretched duration metadata.
This produces a valid MP4 that Plex will see as ~90 minutes, while staying ~1 MB.[edit | edit source]
ffmpeg -f lavfi -i color=c=black:s=16x16:r=0.000185 \
-c:v libx264 \
-pix_fmt yuv420p \
-t 5400 \
-movflags +faststart \
-profile:v baseline \
-level 1.0 \
-an \
90min.mp4
- 5400 seconds = 90 minutes[edit | edit source]
- 0.000185 fps → only ~1 frame per 90 minutes
- Tiny resolution (16×16)
- No audio
- Baseline profile = Plex friendly
Result:
- ~500 KB – 1 MB
- Plex reports 1h 30m duration
- Plays instantly (or “ends” immediately depending on client)
If you want to keep exactly one frame and force duration metadata:[edit | edit source]
ffmpeg -loop 1 -i black.png \
-c:v libx264 \
-t 5400 \
-video_track_timescale 1000 \
-movflags +faststart \
-an \
90min.mp4
Where black.png is a single black pixel or tiny image.
This relies on MP4 timing metadata, which Plex respects.
Run:[edit | edit source]
ffprobe 90min.mp4
Look for:
Duration: 01:30:00.00If ffprobe sees it correctly, Plex almost certainly will.
- Plex does not validate frame density[edit | edit source]
- Plex trusts MP4 duration atom
- Avoid MKV — Plex recalculates duration sometimes
- No audio = smaller file and fewer playback issues
I can:[edit | edit source]
- Tune this to exactly 1.00 MB
- Make Plex think it’s TV-episode length instead
- Embed fake chapter markers
- Make it seekable or non-seekable
- Generate a version that never actually plays but still scans cleanly
Just say the word.
User: Cam you comment that ffmpeg example to be able to modify it?[edit | edit source]
Cam you comment that ffmpeg example to be able to modify it?
Assistant: Absolutely — here’s the same FFmpeg command fully commented line-by-line, plus notes on what you can safely change.[edit | edit source]
Absolutely — here’s the same FFmpeg command fully commented line-by-line, plus notes on what you can safely change.
Commented FFmpeg command (90-minute, ~1MB MP4)[edit | edit source]
ffmpeg \
-f lavfi \ # Use FFmpeg's built-in filter system as the input
-i color=c=black:s=16x16:r=0.000185 \ # Generate a black video:
# c=black → color
# s=16x16 → resolution (smaller = smaller file)
# r=0.000185 → frames per second (~1 frame per 90 min)
-c:v libx264 \ # Encode video using H.264 (best Plex compatibility)
-pix_fmt yuv420p \ # Pixel format Plex expects
-t 5400 \ # Total duration in seconds (5400 = 90 minutes)
-movflags +faststart \ # Move MP4 metadata to beginning of file (streaming-friendly)
-profile:v baseline \ # Baseline profile for max device compatibility
-level 1.0 \ # Very low H.264 level (fits tiny resolution)
-an \ # Disable audio (saves space)
90min.mp4 # Output filename
Common modifications (safe to tweak)[edit | edit source]
⏱ Change the duration[edit | edit source]
-t 3600 # 60 minutes
-t 2700 # 45 minutes
-t 10800 # 3 hours
Formula:
seconds = minutes × 60📐 Change resolution[edit | edit source]
s=8x8 # even smaller
s=32x32 # still tiny
s=64x64 # larger but still small file
- ⚠️ Stick to multiples of 2 for H.264.
🎞 Change “frame density” (size control)[edit | edit source]
r=0.0001 # fewer frames → smaller file
r=0.001 # more frames → larger file
Approximate relationship:
frames = duration × fpsFor 90 minutes:
- 0.000185 ≈ 1 frame total
- 0.001 ≈ 5 frames
- 0.01 ≈ 54 frames
📦 Targeting file size more precisely[edit | edit source]
Add a bitrate cap:
-b:v 1k # 1 kbps video bitrate
Example:
-b:v 1k -maxrate 1k -bufsize 2k
This lets you dial the file toward exact size targets (like exactly 1.00 MB).
Want audio but still tiny?[edit | edit source]
Add silent audio (Plex sometimes likes this):
-f lavfi -i anullsrc=channel_layout=mono:sample_rate=8000 \
-c:a aac -b:a 1k
(Add before output filename.)
Quick validation[edit | edit source]
ffprobe 90min.mp4
Expected:
Duration: 01:30:00.00
Stream #0: Video: h264TL;DR — knobs you’ll actually touch[edit | edit source]
| Goal | Change | | ------------------ | -------------------------- | | Duration | -t | | File size | r=, s=, -b:v | | Plex compatibility | Keep libx264, yuv420p, MP4 | | Ultra-small | Lower r, lower s, no audio |
If you want, I can:
- Calculate exact FPS for exactly N frames
- Produce a 1.00 MB ± 1 KB version
- Make Plex think it’s HDR / 4K / Dolby Vision
- Make it scan as movie vs episode
Just tell me the constraints.
References[edit | edit source]
- ↑ "Generate fake 90min video". ChatGPT. Retrieved 2025-12-27.