Video Encoding for Digital Signage
Video content dominates digital signage, but improper encoding leads to playback failures, poor quality, excessive bandwidth, and frustrated deployments. This comprehensive guide covers everything you need to know about encoding video for reliable digital signage playback.
Video Encoding Fundamentals
The Encoding Pipeline
Source Video → Decode → Process → Encode → Container → Distribute → Decode → Display
Key Decisions:
├── Codec: How video is compressed (H.264, HEVC, AV1)
├── Container: File format wrapper (MP4, MKV, MOV)
├── Resolution: Frame dimensions (1920×1080, 3840×2160)
├── Bitrate: Data rate (quality vs. file size)
├── Frame Rate: Frames per second (24, 30, 60 fps)
└── Profile/Level: Codec capability subset
Why Encoding Matters for Signage
Common Problems from Poor Encoding:
- Playback stuttering or freezing
- Audio/video sync issues
- Player crashes
- Excessive storage consumption
- Network congestion
- Display compatibility failures
- Color/quality degradation
Properly Encoded Video Delivers:
- Reliable 24/7 playback
- Consistent quality across devices
- Efficient bandwidth utilization
- Reduced storage costs
- Simplified content management
Video Codec Comparison
Major Codecs for Digital Signage
| Codec | Also Known As | Released | Compression | Support Level |
|---|---|---|---|---|
| H.264 | AVC, MPEG-4 Part 10 | 2003 | Good | Universal |
| H.265 | HEVC | 2013 | Excellent | Good |
| VP9 | - | 2013 | Excellent | Good |
| AV1 | - | 2018 | Best | Growing |
| MPEG-2 | H.262 | 1995 | Poor | Legacy |
| MPEG-4 Part 2 | DivX, Xvid | 1999 | Poor | Legacy |
H.264/AVC (Recommended for Most Deployments)
Why H.264 Remains the Standard:
- Universal hardware decode support
- Mature, well-optimized encoders
- Extensive player compatibility
- Reasonable file sizes
- Well-documented behavior
H.264 Profiles:
| Profile | Use Case | Features |
|---|---|---|
| Baseline | Legacy devices, mobile | I and P frames, no CABAC |
| Main | Standard signage | B frames, CABAC |
| High | HD/4K content | 8×8 transform, additional tools |
| High 10 | HDR content | 10-bit color depth |
| High 4:2:2 | Broadcast, professional | 4:2:2 chroma |
Recommended: High Profile for modern signage players
H.264 Levels:
| Level | Max Resolution | Max Bitrate | Use Case |
|---|---|---|---|
| 3.1 | 1280×720 | 14 Mbps | 720p signage |
| 4.0 | 2048×1024 | 20 Mbps | 1080p standard |
| 4.1 | 2048×1024 | 50 Mbps | 1080p high quality |
| 4.2 | 2048×1088 | 50 Mbps | 1080p 60fps |
| 5.0 | 3840×2160 | 135 Mbps | 4K 30fps |
| 5.1 | 4096×2160 | 240 Mbps | 4K 60fps |
H.265/HEVC (For 4K and Advanced Deployments)
Advantages:
- 40-50% better compression than H.264
- Essential for 4K content
- HDR/WCG support
- Growing hardware support
Considerations:
- Requires modern hardware decode
- Licensing complexity
- Slower encoding
- Not universal yet
HEVC Profiles:
| Profile | Features | Use Case |
|---|---|---|
| Main | 8-bit, 4:2:0 | Standard 4K signage |
| Main 10 | 10-bit, 4:2:0 | HDR content |
| Main 4:2:2 10 | 10-bit, 4:2:2 | Professional/broadcast |
Player Support Matrix:
| Platform | HEVC Hardware Decode |
|---|---|
| Windows (Intel 6th gen+) | Yes |
| Windows (AMD 2016+) | Yes |
| Windows (NVIDIA 900+) | Yes |
| Android (2016+) | Most devices |
| Raspberry Pi 4/5 | Yes |
| BrightSign (HD/XD/XT) | Yes |
| Chrome OS | Varies by device |
| Smart TVs (2017+) | Most models |
AV1 (Future Standard)
Advantages:
- 30% better than HEVC
- Royalty-free
- Growing hardware support
- Best for 4K/8K
Current Limitations:
- Limited hardware decode (2020+ devices)
- Slower encoding
- Not yet universal
- Player support varies
AV1 Timeline:
- 2024-2025: Growing hardware support
- 2026+: Becoming mainstream option
VP9 (Alternative for Specific Platforms)
Use Cases:
- YouTube/Google ecosystem
- Web-based players
- Chrome devices
- Android primary
Limitations:
- Less universal than H.264
- Fewer hardware decoders
- Google-centric ecosystem
Codec Selection Guide
Decision Matrix
Select Your Codec:
Need universal compatibility?
├── Yes → H.264 High Profile
└── No ↓
Is 4K content primary?
├── Yes → HEVC (verify player support)
└── No ↓
Bandwidth severely limited?
├── Yes → HEVC or AV1 (if supported)
└── No ↓
Web-based player only?
├── Yes → H.264 or VP9
└── No ↓
Default recommendation → H.264 High Profile
Platform-Specific Recommendations
| Platform | Primary Codec | Secondary | Avoid |
|---|---|---|---|
| Windows Players | H.264 | HEVC | MPEG-2 |
| BrightSign | H.264 | HEVC | VP9 |
| Android/SoC | H.264 | HEVC | AV1 (older) |
| Raspberry Pi 4+ | H.264 | HEVC | VP9 |
| Chrome OS | H.264 | VP9 | HEVC (some) |
| Samsung Tizen | H.264 | HEVC | VP9 |
| LG webOS | H.264 | HEVC | AV1 |
| Web Players | H.264 | VP9 | HEVC |
Resolution and Frame Rate
Resolution Guidelines
| Display Resolution | Source Resolution | Notes |
|---|---|---|
| 1920×1080 (FHD) | 1920×1080 | Native 1:1 |
| 3840×2160 (4K) | 3840×2160 | Native 1:1 |
| 1080×1920 (Portrait FHD) | 1080×1920 | Encode portrait |
| 2160×3840 (Portrait 4K) | 2160×3840 | Encode portrait |
| Video Wall (custom) | Match total pixels | Or per-screen segments |
Resolution Best Practices:
- Match source to display native resolution
- Never upscale source content
- Encode in display orientation (portrait/landscape)
- Video walls: Encode at total wall resolution
Frame Rate Selection
| Content Type | Recommended FPS | Notes |
|---|---|---|
| Static/text heavy | 24-30 fps | Lower = smaller files |
| General signage | 30 fps | Good balance |
| Smooth motion | 60 fps | Sports, smooth scroll |
| Cinematic content | 24 fps | Film look |
| Animation | 30 fps | Sufficient fluidity |
Frame Rate Rules:
- Match source frame rate (don't convert 24 → 30)
- Use constant frame rate (not variable)
- 60 fps only when motion requires it
- Higher fps = larger files, more processing
Aspect Ratio Handling
| Scenario | Approach |
|---|---|
| 16:9 content → 16:9 display | Direct playback |
| 4:3 content → 16:9 display | Pillarbox or crop |
| 16:9 content → 9:16 portrait | Letterbox, crop, or re-edit |
| Non-standard → Standard | Encode to target with padding |
Bitrate Optimization
Understanding Bitrate
Bitrate = File Size / Duration
- Higher bitrate = better quality, larger files
- Lower bitrate = smaller files, potential quality loss
- Balance: Sufficient quality with efficient file size
Recommended Bitrates
H.264 Bitrate Guidelines:
| Resolution | Low Motion | Medium Motion | High Motion |
|---|---|---|---|
| 720p (30fps) | 2-4 Mbps | 4-6 Mbps | 6-8 Mbps |
| 1080p (30fps) | 4-6 Mbps | 6-10 Mbps | 10-15 Mbps |
| 1080p (60fps) | 6-10 Mbps | 10-15 Mbps | 15-20 Mbps |
| 4K (30fps) | 15-20 Mbps | 20-35 Mbps | 35-50 Mbps |
| 4K (60fps) | 25-35 Mbps | 35-50 Mbps | 50-80 Mbps |
HEVC Bitrate Guidelines (30-40% lower than H.264):
| Resolution | Low Motion | Medium Motion | High Motion |
|---|---|---|---|
| 1080p (30fps) | 3-4 Mbps | 4-7 Mbps | 7-10 Mbps |
| 4K (30fps) | 10-15 Mbps | 15-25 Mbps | 25-35 Mbps |
| 4K (60fps) | 18-25 Mbps | 25-35 Mbps | 35-55 Mbps |
VBR vs. CBR
Constant Bitrate (CBR):
- Fixed data rate throughout
- Predictable file sizes
- Predictable bandwidth
- Quality varies with content complexity
Variable Bitrate (VBR):
- Adapts to content complexity
- Better quality per bit
- Less predictable file sizes
- More efficient overall
Recommendation: VBR with constrained maximum (capped VBR)
Encoding Settings:
Constrained VBR Example:
- Target bitrate: 8 Mbps
- Maximum bitrate: 12 Mbps
- VBV buffer: 1.5× target = 12 Mbit
Result: Quality adapts to content, never exceeds 12 Mbps
Calculating Storage Requirements
File Size (GB) = (Bitrate in Mbps × Duration in seconds) / 8 / 1024
Example:
- 8 Mbps video
- 60 seconds
- Size = (8 × 60) / 8 / 1024 = 0.059 GB ≈ 60 MB
Daily Loop (8 hours, various content):
- Average 6 Mbps
- 28,800 seconds
- Size = (6 × 28800) / 8 / 1024 = 21.1 GB
Container Formats
Containers vs. Codecs
Container = File format (packaging) Codec = Compression method (content)
Example: video.mp4
Container: MP4 (MPEG-4 Part 14)
├── Video track: H.264 codec
├── Audio track: AAC codec
└── Metadata: Duration, chapters, etc.
Container Comparison
| Container | Extension | H.264 | HEVC | AV1 | Signage Use |
|---|---|---|---|---|---|
| MP4 | .mp4 | ✓ | ✓ | ✓ | Recommended |
| MOV | .mov | ✓ | ✓ | ✓ | Mac-origin |
| MKV | .mkv | ✓ | ✓ | ✓ | Flexible |
| WebM | .webm | ✗ | ✗ | ✓ | Web players |
| AVI | .avi | ✓ | ✗ | ✗ | Legacy |
| TS | .ts | ✓ | ✓ | ✗ | Streaming |
Recommendation: MP4 for maximum compatibility
MP4 Best Practices
Moov Atom Placement:
- Place at file start (fast start/web optimized)
- Enables immediate playback without full download
- Critical for network-delivered content
FFmpeg Command:
-movflags +faststart
Audio Encoding
Audio Codec Selection
| Codec | Quality | Compatibility | Use Case |
|---|---|---|---|
| AAC-LC | Good | Universal | Default choice |
| AAC-HE | Good (low bitrate) | Good | Bandwidth limited |
| MP3 | Acceptable | Universal | Legacy |
| AC3/Dolby | Good | HDMI output | AV systems |
| Opus | Excellent | Growing | Web, modern |
| PCM | Perfect | Large files | Archival |
Recommendation: AAC-LC for universal signage
Audio Bitrate Guidelines
| Quality Level | Stereo Bitrate | Typical Use |
|---|---|---|
| Background | 64-96 kbps | Ambient, low priority |
| Standard | 128 kbps | General signage |
| Good | 192 kbps | Music-focused |
| High | 256-320 kbps | Premium audio |
Audio Sample Rate
| Sample Rate | Use Case |
|---|---|
| 44.1 kHz | Music, CD-quality |
| 48 kHz | Video standard (recommended) |
| 96 kHz | Professional audio |
Recommendation: 48 kHz to match video standards
Channel Configuration
| Channels | Configuration | Notes |
|---|---|---|
| 1 | Mono | Simple, small files |
| 2 | Stereo | Standard |
| 5.1 | Surround | Requires compatible output |
Signage Recommendation: Stereo (2 channel) at 48 kHz, 128-192 kbps AAC
Encoding Tools and Settings
Professional Tools
Software Encoders:
| Tool | Type | Best For |
|---|---|---|
| FFmpeg | Command-line | Automation, batch |
| HandBrake | GUI | Individual files |
| Adobe Media Encoder | GUI | Creative workflow |
| DaVinci Resolve | GUI | Color grading + encode |
| Compressor (Apple) | GUI | Apple ecosystem |
Hardware Encoders:
- NVIDIA NVENC
- Intel QuickSync
- AMD VCE
- Apple VideoToolbox
FFmpeg Reference Commands
Standard 1080p H.264 for Signage:
ffmpeg -i input.mp4 \
-c:v libx264 \
-preset medium \
-profile:v high \
-level 4.1 \
-crf 18 \
-maxrate 10M \
-bufsize 15M \
-c:a aac \
-b:a 192k \
-ar 48000 \
-movflags +faststart \
output.mp4
4K HEVC for Modern Players:
ffmpeg -i input.mp4 \
-c:v libx265 \
-preset medium \
-profile:v main \
-crf 20 \
-maxrate 25M \
-bufsize 37M \
-c:a aac \
-b:a 192k \
-ar 48000 \
-movflags +faststart \
output.mp4
Portrait Mode Encoding (1080×1920):
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 \
-preset medium \
-crf 18 \
-c:a aac \
-b:a 192k \
-movflags +faststart \
output.mp4
Batch Encoding Script (Bash):
#!/bin/bash
for file in *.mp4; do
ffmpeg -i "$file" \
-c:v libx264 -preset medium -crf 18 \
-c:a aac -b:a 192k \
-movflags +faststart \
"encoded/${file%.mp4}_signage.mp4"
done
Quality Settings Explained
CRF (Constant Rate Factor):
- Range: 0-51 (lower = better quality, larger files)
- 18: Visually lossless for most content
- 20-22: Excellent quality, good compression
- 23-25: Good quality, smaller files
- 26+: Noticeable quality loss
Preset (Encoding Speed):
| Preset | Speed | Compression | Use |
|---|---|---|---|
| ultrafast | Fastest | Poorest | Testing only |
| veryfast | Very fast | Poor | Real-time |
| faster | Fast | Below average | Quick jobs |
| fast | Fast | Average | Daily use |
| medium | Medium | Good | Recommended |
| slow | Slow | Better | Final encode |
| slower | Slower | Even better | Quality priority |
| veryslow | Slowest | Best | Maximum quality |
Recommendation: medium preset with crf 18-20
Common Issues and Solutions
Playback Problems
| Symptom | Likely Cause | Solution |
|---|---|---|
| Video won't play | Codec incompatibility | Re-encode with H.264 |
| Stuttering/choppy | Bitrate too high | Reduce bitrate or resolution |
| Audio out of sync | VFR source | Convert to CFR |
| Black screen with audio | Hardware decode failure | Check player codec support |
| Freezing mid-playback | Corrupt file | Re-encode, check source |
| Color looks wrong | Color space mismatch | Set bt709 color space |
| Blocky artifacts | Bitrate too low | Increase bitrate |
Variable Frame Rate (VFR) Issues
Problem: Many phone/screen recordings use VFR, causing playback issues.
Detection:
ffprobe -v error -select_streams v:0 \
-show_entries stream=r_frame_rate,avg_frame_rate \
input.mp4
If r_frame_rate ≠ avg_frame_rate, content may be VFR.
Solution - Convert to CFR:
ffmpeg -i input.mp4 \
-vsync cfr \
-r 30 \
[other options] \
output.mp4
Color Space Issues
Standard for SDR Signage:
-colorspace bt709 -color_primaries bt709 -color_trc bt709
Full FFmpeg Example:
ffmpeg -i input.mp4 \
-c:v libx264 -crf 18 \
-colorspace bt709 \
-color_primaries bt709 \
-color_trc bt709 \
-c:a aac \
output.mp4
File Size Optimization
When Files Are Too Large:
- Reduce bitrate (try CRF 22-24)
- Lower resolution if viewing distance allows
- Use HEVC if players support it
- Reduce frame rate for low-motion content
- Optimize source content (remove unnecessary complexity)
When Quality Is Insufficient:
- Verify source quality is good
- Lower CRF (try 16-18)
- Increase bitrate limits
- Use slower encoding preset
- Check for VFR issues
Encoding Workflow
Production Workflow
Content Creation Workflow:
1. PRODUCTION
├── Shoot/create at highest practical quality
└── Export masters in production codec (ProRes, DNxHD)
2. ARCHIVAL
├── Keep production masters
└── Create high-quality archive version
3. SIGNAGE ENCODE
├── Encode from archival master (not production master)
├── Target specific player requirements
└── Create multiple versions if needed
4. QUALITY CHECK
├── Test on target hardware
├── Verify playback performance
└── Check sync, color, audio
5. DEPLOYMENT
├── Upload to CMS
├── Verify delivery
└── Monitor playback
Multi-Platform Encoding
When supporting multiple player types:
Source Master
│
├──► H.264 High Profile (universal)
│ └── Resolution/bitrate for weakest player
│
├──► HEVC Main Profile (4K players)
│ └── Higher quality, smaller files
│
└──► WebM/VP9 (web players)
└── Browser compatibility
Frequently Asked Questions
Summary
Universal Signage Encoding Settings:
Codec: H.264 High Profile (Level 4.1 for 1080p, 5.0 for 4K)
Container: MP4 with fast start
Resolution: Match display native
Frame Rate: 30 fps (60 for smooth motion)
Bitrate: 6-10 Mbps (1080p) / 20-35 Mbps (4K)
Audio: AAC-LC, 192 kbps, 48 kHz, Stereo
Key Principles:
- Always verify player codec support before encoding
- Match resolution to display native resolution
- Use constant frame rate (CFR), not variable (VFR)
- Enable fast start for MP4 files
- Test on actual target hardware before deployment
- Keep source masters for re-encoding needs
Proper video encoding prevents playback failures, optimizes bandwidth, and ensures consistent quality across your digital signage network.