# Mobile-safe vertical export and caption QA

Use this when a Shorts/Reels/TikTok review clip appears with black bars, squeezed height, wrong Telegram/mobile aspect ratio, or cramped active-word subtitles.

## Durable lesson

A source clip can be technically vertical yet still display incorrectly on mobile if export metadata, sample aspect ratio, or player handling is not explicit. For review/post candidates, do a final mobile-safe export boundary rather than trusting provider output.

## Recommended final export normalization

For final-near review MP4s, normalize to square-pixel 9:16:

```bash
ffmpeg -y -i input.mp4 \
  -vf "scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,setsar=1,setdar=9/16,format=yuv420p" \
  -c:v libx264 -preset veryfast -crf 18 -movflags +faststart -an \
  output_1080x1920_sar1.mp4
```

If audio is present, map video/audio explicitly and encode AAC:

```bash
ffmpeg -y -i video_no_audio.mp4 -i voiceover.mp3 \
  -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 160k \
  -movflags +faststart output_review.mp4
```

Use `-shortest` only when the visual timeline intentionally ends with the voiceover. Otherwise preserve planned duration.

## Mandatory ffprobe check

Before sending a review MP4, verify from the actual delivered file:

```bash
ffprobe -v error -select_streams v:0 \
  -show_entries stream=width,height,sample_aspect_ratio,display_aspect_ratio,r_frame_rate \
  -show_entries format=duration -of json output_review.mp4
```

Expected for normal Shorts review:

- width: 1080
- height: 1920
- sample_aspect_ratio: 1:1
- display_aspect_ratio: 9:16
- format: yuv420p H.264/AAC where applicable

## Visual QA frames

Extract at least one mid-video and one final-rule frame:

```bash
ffmpeg -y -ss 12 -i output_review.mp4 -frames:v 1 qa_frame_00_12.png
ffmpeg -y -ss 31 -i output_review.mp4 -frames:v 1 qa_frame_00_31.png
```

Inspect for:

- no top/bottom black bars;
- no squeezed height / wrong DAR;
- UI/card text not clipped inside boxes;
- subtitles not merged into unreadable compounds;
- final rule/takeaway visible and not hidden behind subtitles or platform-safe zones.

## Active-word subtitle guardrail

For uppercase active-word subtitles in 1080-wide vertical videos, `3–7 word` phrase chunks can still become visually cramped or merge. Prefer:

- 1–3 words for dense uppercase captions;
- 2 words when the font is bold/large;
- generous inter-word spacing;
- dynamic font shrink until the full segment fits within the safe width;
- visual QA of a real frame after burn-in/render, not just timing metadata.

If the user reports subtitles are irritating, cramped, clipped, or not simultaneous with voiceover, treat it as blocking and re-render before asking for posting approval.
