Openai/69505485-7d60-8001-98fc-66951636b1d8


This conversation was exported from ChatGPT[1]

gpt-5-2 edit

User: I want to generate a 1MB mp4 file that Plex thinks is 90 minutes long edit

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

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

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
  • 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

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

ffprobe 90min.mp4

Look for:

Duration: 01:30:00.00

If ffprobe sees it correctly, Plex almost certainly will.

- Plex does not validate frame density edit

  • Plex trusts MP4 duration atom
  • Avoid MKV — Plex recalculates duration sometimes
  • No audio = smaller file and fewer playback issues

I can: edit

  • 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

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

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

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

⏱ Change the duration edit
-t 3600   # 60 minutes
-t 2700   # 45 minutes
-t 10800  # 3 hours

Formula:

seconds = minutes × 60
📐 Change resolution edit
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
r=0.0001   # fewer frames → smaller file
r=0.001    # more frames → larger file

Approximate relationship:

frames = duration × fps

For 90 minutes:

  • 0.000185 ≈ 1 frame total
  • 0.001 ≈ 5 frames
  • 0.01 ≈ 54 frames
📦 Targeting file size more precisely edit

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

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

ffprobe 90min.mp4

Expected:

Duration: 01:30:00.00
Stream #0: Video: h264

TL;DR — knobs you’ll actually touch edit

| 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

  1. "Generate fake 90min video". ChatGPT. Retrieved 2025-12-27.