توثيق ComusThumbz
تسجيل دخول المسؤول

Video Processor Settings

Overview

The Video Processor Settings page is the central hub for configuring how videos are processed, encoded, displayed, and monetized on your platform. This comprehensive admin page contains five main tabs:

  1. Processing Settings - Configure video encoding, thumbnails, previews, HLS streaming, and distributed conversion
  2. Pre-Roll & Post-Roll - Upload and manage videos that play before/after your content
  3. Video Overlays - Create image and text watermarks that are burned into processed videos
  4. Video Player - Configure player features, watermarks, overlays, and playlist settings
  5. Video Player Ads - Set up VAST/IMA advertising and custom overlay ads

[Screenshot: Video Processor Settings page header with tab navigation]


System Requirements

PHP Extensions Required

Extension Purpose Check Command
gd Image processing for thumbnails php -m grep gd
mbstring Multi-byte string handling php -m grep mbstring
json JSON encoding/decoding php -m grep json
mysqli MySQL database connectivity php -m grep mysqli
fileinfo MIME type detection php -m grep fileinfo

External Tools Required

Tool Purpose Minimum Version Check Command
FFmpeg Video encoding, HLS generation, previews 4.0+ ffmpeg -version
FFprobe Video metadata extraction 4.0+ ffprobe -version
ImageMagick Contact sheet generation, image watermarks 6.9+ convert -version
Warning: FFmpeg must be compiled with libx264, libx265, libvpx-vp9, libopus, and aac codecs for full functionality. Missing codecs will cause encoding failures.

PHP Configuration

Setting Recommended Value Purpose
memorylimit 512M or higher Video processing requires significant memory
maxexecutiontime 0 or 3600+ Long-running video processing jobs
uploadmaxfilesize 2G+ Large video file uploads
postmaxsize 2G+ Must be >= uploadmaxfilesize
maxfileuploads 50 Multiple file handling

Permissions

Directory Permission Purpose
uploads/overlays/ 755 (775 recommended) Overlay image storage
uploads/fonts/ 755 (775 recommended) Custom font storage
uploads/videos/ 755 (775 recommended) Processed video output
logs/videoprocessor/ 755 (775 recommended) Processing logs

Installation Requirements

Required Folders

Folder Purpose Auto-Created
uploads/overlays/ Stores overlay images and pre/post-roll videos Yes
uploads/fonts/ Stores custom TTF/OTF fonts No
logs/videoprocessor/ Processing logs Yes

Cron Jobs

 

Error:
The video processor will NOT work without these cron jobs running!

 

# REQUIRED: Site-wide cron (includes processor)
  • php /path/to/ct/admin/cron/sitecron.php >> /path/to/logs/sitecron.log 2>&1

Features & UI Elements

Tab 1: Processing Settings

This is the main configuration tab with multiple sections:

General Processing Settings

Setting Type Default Description
Max Concurrent Jobs Integer 2 Maximum videos to process simultaneously (1-10)
Job Timeout (seconds) Integer 3600 Max time for a single job (300-7200)
Retry Attempts Integer 3 Times to retry failed jobs (0-10)
Retry Delay (seconds) Integer 300 Wait time before retrying (60-3600)
Priority Processing Boolean On Process jobs based on priority level
Log Level String info Logging verbosity: debug, info, warning, error
Cleanup Temporary Files Boolean On Auto-remove old temp files
Delete Original on Completion Boolean Off Delete source after successful processing
ImageMagick Path String /usr/bin/ Path to ImageMagick binaries (must end with /)

[Screenshot: General Processing Settings section]

Storage & Cleanup Settings

Setting Type Default Description
Cleanup After Storage Upload Boolean On Delete local files after CDN upload
Keep Original After Processing Boolean Off Keep source video on main server
Min Storage Copies for Cleanup Integer 1 Required CDN copies before cleanup (1-10)
Cleanup Verification Retries Integer 3 Verify file exists on CDN before deleting (1-5)
Warning: Enabling "Delete Original on Completion" without proper CDN configuration can result in permanent data loss!

Quality Control Settings

Setting Type Default Description
Min Video Duration (seconds) Integer 5 Reject videos shorter than this
Min Resolution Width Integer 480 Minimum acceptable width
Min Resolution Height Integer 360 Minimum acceptable height
Max Resolution Width Integer 4096 Maximum acceptable width
Max Resolution Height Integer 2160 Maximum acceptable height
Min Bitrate (kbps) Integer 500 Reject low-quality uploads
Max Bitrate (kbps) Integer 50000 Reject excessively large files

Smart Crop & Transformation

Setting Type Default Description
Enable Smart Crop Boolean Off Auto-handle aspect ratio issues
Auto-Detect Black Bars Boolean On Remove black bars from source
Smart Crop Mode Select letterbox letterbox, crop, or stretch
Target Aspect Ratio Select 16:9 16:9, 4:3, 1:1, 9:16, auto
Letterbox/Pillarbox Color Select black black, white, blur
Note: Smart Crop "blur" mode creates a blurred version of the video as the letterbox background - popular for vertical videos displayed in horizontal players.

Preview Generation Settings

Setting Type Default Description
Use Segmented Preview Boolean On Create preview from multiple segments
Preview Duration (seconds) Integer 30 Total preview length (5-120)
Preview Segments Integer 10 Number of segments to extract (1-20)
Preview Start Offset (seconds) Integer 10 Skip intro before first segment
Enable Hover Preview on Frontend Boolean On Allow thumbnail hover previews
Tip: Segmented previews give viewers a better overview of the entire video. With 30 seconds duration and 10 segments, each segment is 3 seconds from different parts of the video.

Thumbnail Generation Settings

Setting Type Default Description
Thumbnail Count Integer 5 Thumbnails per video (1-100)
Thumbnail Width Integer 320 Width in pixels (160-640)
Thumbnail Height Integer 180 Height in pixels (90-360)
Poster Width Integer 1280 Main poster width (640-1920)
Poster Height Integer 720 Main poster height (360-1080)
Enable Animated Preview Boolean On Generate GIF previews
Animated Preview FPS Integer 10 GIF frame rate (5-30)
Animated Preview Width Integer 480 GIF width (240-640)
Generate Video Sprites Boolean On Create sprite sheet for timeline scrubbing

Contact Sheet Settings

Setting Type Default Description
Generate Contact Sheet Boolean On Create thumbnail grid image
Contact Sheet Rows Integer 5 Grid rows (1-20)
Contact Sheet Columns Integer 5 Grid columns (1-20)
Contact Sheet Header Text Text (template) Header with placeholders: {FILENAME}, {DURATION}, {RESOLUTION}, {SIZE}

Video Conversion Settings

Setting Type Default Description
Video Formats String mp4 Formats to generate (mp4, webm)
Enable Progressive Download Boolean On Optimize for streaming (faststart)
Max Video Bitrate (kbps) Integer 5000 Cap output bitrate
Max Audio Bitrate (kbps) Integer 192 Cap audio bitrate

HLS Adaptive Streaming Settings

Setting Type Default Description
Enable HLS Adaptive Streaming Boolean Off Generate multi-quality HLS
HLS Segment Duration (seconds) Integer 6 Chunk length (2-10)
Minimum Source Height for HLS Integer 720 Only enable for HD+ sources
HLS Audio Bitrate (kbps) Integer 128 Audio for all variants
Active HLS Resolutions String hd,high,medium,low Which qualities to generate

Resolution Variants:

Quality Resolution Bitrate (kbps)
HD 1920x1080 5000
High 1280x720 2800
Medium 854x480 1400
Low 640x360 800
Warning: HLS generation significantly increases processing time and storage. Each resolution creates a complete copy plus segment files.

MP4 Encoding Settings

Setting Type Default Description
MP4 Video Codec String libx264 Video codec (libx264, libx265)
MP4 Audio Codec String aac Audio codec (aac, mp3)
MP4 Encoding Preset String medium Speed vs quality: ultrafast to veryslow
MP4 CRF Quality Integer 23 Quality factor: 18-28 (lower = better)

WebM Encoding Settings

Setting Type Default Description
WebM Video Codec String libvpx-vp9 VP8 or VP9
WebM Audio Codec String libopus libvorbis or libopus
WebM CRF Quality Integer 31 Quality: 15-40 (lower = better)

FFmpeg Command Configuration

 

Warning:
Custom FFmpeg commands can cause processing failures if incorrectly configured. Test thoroughly before enabling in production.

 

Setting Type Description
Use Custom FFmpeg Commands Boolean Enable custom command templates
Custom MP4 Command Text FFmpeg command with placeholders
Custom WebM Command Text FFmpeg command with placeholders
Custom Preview Command Text Preview generation command

Available Placeholders:

  • {FFMPEG} - Path to FFmpeg executable
  • {INPUT} - Input video file path
  • {OUTPUT} - Output video file path
  • {START} - Start time for preview segments
  • {DURATION} - Duration for preview segments

Distributed Video Conversion

Setting Type Default Description
Enable Remote Conversion Servers Boolean Off Distribute to remote servers
Fallback to Local Processing Boolean On Use local if remote fails
Auto-Fallback on Server Failure Boolean On Auto-switch on critical state
Poll Interval (seconds) Integer 5 Check job completion frequency
Remote Job Timeout (seconds) Integer 3600 Max time per remote job
Heartbeat Stale Threshold (minutes) Integer 10 Mark server offline threshold
Max Jobs Per Dispatch Run Integer 5 Jobs per cron run
Alert Email Address String (empty) Email for server alerts
Processed Files Upload Mode Select returntomain How files reach CDN
Note: Configure remote servers in Dashboard > Videos > Conversion Servers before enabling distributed conversion.

Cloud Encoding Services

Setting Type Default Description
Enable Cloud Encoding Services Boolean Off Use third-party cloud encoding
Cloud Encoding Service Select bunnystream bunnystream, coconut, qencode
Fallback Method Select local local, remote, queue, fail

Bunny Stream Settings:

  • API Key
  • Library ID
  • CDN Hostname
  • Webhook URL (auto-generated)
  • Output Resolutions (2160p, 1440p, 1080p, 720p, 480p, 360p, 240p)

Coconut.co Settings:

  • API Key
  • Webhook URL (auto-generated)
  • Output Format (MP4 H.264, MP4 HEVC, WebM VP9, HLS)
  • Storage Target (S3, GCS, Azure, FTP, SFTP, HTTP)

 

Qencode Settings:

  • API Key
  • Project ID
  • Webhook URL (auto-generated)
  • Output Format (HLS, MP4, WebM, DASH)
  • Output Destination (S3, GCS, Azure, FTP)

 

Cloud Storage Destination (for Coconut/Qencode):

  • Storage Bucket Name
  • Storage Region
  • Storage Access Key
  • Storage Secret Key
  • Storage Path Prefix

 

[Screenshot: Cloud Encoding Services section with Bunny Stream selected]


Tab 2: Pre-Roll & Post-Roll

Upload videos that automatically concatenate to the beginning (pre-roll) or end (post-roll) of all processed videos.

Current Pre-Roll Video

Displays the currently uploaded pre-roll with:

  • Video preview player
  • Status indicator (Active/Inactive)
  • Filename
  • Activate/Deactivate button
  • Delete button

 

Upload New Pre-Roll Video

Field Type Description
Video File File Upload MP4 recommended for best compatibility
Activate Immediately Checkbox Enable right after upload

Current Post-Roll Video

Same layout as pre-roll section.

Upload New Post-Roll Video

Field Type Description
Video File File Upload MP4 recommended
Activate Immediately Checkbox Enable right after upload
Warning: Pre-roll and post-roll videos are concatenated during processing. Changes only affect newly processed videos. To apply to existing videos, they must be reprocessed.

[Screenshot: Pre-Roll & Post-Roll tab with both videos configured]


Tab 3: Video Overlays

Create watermarks that are burned into videos during processing.

Add New Overlay

Overlay Type Selector:

  • Image Overlay - Upload PNG/GIF file (transparent PNG recommended)
  • Text Overlay - Scrolling or static text watermark

 

Common Fields:

Field Type Default Description
Overlay Name Text (required) Identifier for the overlay
Position Select bottom-right Placement on video
Opacity Number 0.8 Transparency (0-1)
Margin Number 20 Distance from edge (pixels)
Activate Immediately Checkbox On Enable after creation

Position Options:

  • Top Left, Top Center, Top Right
  • Bottom Left, Bottom Center, Bottom Right
  • Scrolling - Top, Scrolling - Bottom

Image-Specific Fields:

Field Type Description
Upload Image File PNG or GIF file

Text-Specific Fields:

Field Type Default Description
Text Content Textarea (required) Watermark text
Font Size Number 24 Text size (12-144)
Font Color Color Picker #ffffff Text color
Font Select Default System font or uploaded custom font
Enable Text Shadow Checkbox Off Add drop shadow
Shadow Color Color Picker #000000 Shadow color
Shadow Offset X/Y Number 2 Shadow position
Enable Text Outline Checkbox Off Add stroke
Outline Color Color Picker #000000 Stroke color
Outline Width Number 2 Stroke thickness (1-10)
Enable Text Glow Checkbox Off Add glow effect
Glow Color Color Picker #ffffff Glow color
Text Animation Select none Animation type
Animation Duration Number 1.0 Animation length (seconds)
Scroll Speed Select medium none, slow, medium, fast
Display Timing Select continuous When to show overlay

Animation Types:

  • None
  • Fade In, Fade Out, Fade In & Out
  • Slide from Left, Right, Bottom, Top
  • Bounce, Blinking, Pulse

Display Timing Options:

  • Continuous
  • Random Intervals
  • Every 30 seconds
  • Start & End Only

 

Existing Overlays

Grid display showing:

  • Overlay name and type badge (IMAGE/TEXT)
  • Preview (image or styled text)
  • Position, opacity, scroll speed, timing
  • Status (Active/Inactive)
  • Activate/Deactivate and Delete buttons

 

Manage Custom Fonts

Upload New Font:

  • Accepts TTF or OTF files
  • Uploaded to uploads/fonts/

 

Available Fonts:

  • Grid showing font name, extension, and delete button

 

[Screenshot: Video Overlays tab showing overlay creation form and existing overlays grid]


Tab 4: Video Player

Configure player features, watermarks, and overlays that appear during playback.

Player Features & Mode Configuration

Toggle features for Frontend (public) and Backend (admin) player modes.

Feature Description
Playlist Sidebar Show related videos sidebar
Autoplay Next Auto-play next video
Video Watermark Display branding overlay
Player Overlays Show CTAs and messages
Video Ads Enable advertising
Quality Selector Allow quality switching
Playback Speed Speed control
Picture-in-Picture PiP mode
Fullscreen Fullscreen button
Download Button Allow video download
Note: Player features (playlist, overlays, watermark, ads) only work with videos hosted on your CDN or hotlinked videos using Video.js. Embedded videos (iframe) from external sources cannot use these features.

Playlist & Sidebar Settings

Setting Type Default Description
Sidebar Position Select right Right, Left, or Below Player
Sidebar Width Text 300px Width in px or %
Max Videos Number 10 Playlist length (1-50)
Sort By Select recent recent, popular, related, random
Category Filter Text (empty) Comma-separated category IDs

Autoplay Next Video Settings

Setting Type Default Description
Countdown Delay (seconds) Number 3 Wait before next video (0-30)
Show Countdown Checkbox On Display countdown overlay

Video Watermark / Branding

Setting Type Default Description
Enable Watermark Checkbox Off Show on all videos
Watermark Type Select text text or image
Position Select bottom-right 7 position options

Text Watermark Settings:

  • Watermark Text
  • Text Color (color picker)
  • Font Family (Arial, Helvetica, Times, etc.)
  • Font Size (8-72px)
  • Font Weight (normal/bold)
  • Text Shadow (enable + color)
  • Background Color + Opacity
  • Padding

Image Watermark Settings:

  • Image URL (PNG with transparency recommended)

 

Appearance Settings (both types):

  • Size (% of video width, 1-50)
  • Opacity (0-1)
  • Horizontal/Vertical Margin (0-200px)
  • Always Visible
  • Fade on Hover

 

[Screenshot: Video Watermark configuration section]

Add New Player Overlay

Field Type Default Description
Overlay Title Text (optional) Heading
Message Textarea (required) Content to display
Overlay Type Select info Visual style
Position Select top-right Placement
Show At (seconds) Number 0 When to appear
Hide At (seconds) Number (empty) When to auto-hide
Duration (seconds) Number (empty) Auto-dismiss time
Button Text Text (optional) CTA button label
Button URL URL (optional) Button link
Dismissible Checkbox On Allow user to close
Full Width Checkbox Off Stretch across player
Active Checkbox On Enable overlay

Overlay Types:

  • Info (Blue)
  • Warning (Orange)
  • Error (Red)
  • Success (Green)
  • Call-to-Action (Gradient)

Existing Player Overlays

Grid showing:

  • Title and type badge
  • Message preview
  • Position, timing, duration
  • Button text and URL
  • Options (dismissible, full width)
  • Status and action buttons

 


Tab 5: Video Player Ads

Configure VAST/IMA advertising and custom overlay ads.

Master Control

Setting Type Default Description
Enable Video Ads Checkbox Off Master switch
VAST Tag URL Text (empty) Ad server URL

Ad Type Selection

  • VAST/IMA Ads - Industry-standard video ads
  • Custom Overlay - Your own image/HTML ads

Custom Overlay Ad Configuration

Setting Type Default Description
Overlay Type Select image image or html
Overlay Image File Upload - Ad image
Overlay HTML Textarea - Custom HTML code
Click URL URL (empty) Where ad links to
Width Number 300 Ad width (pixels)
Height Number 300 Ad height (pixels)
Position Select center Ad placement
Show Close Button Checkbox On Allow closing
Close Button Delay Number 5 Seconds before close appears
Auto Close After Number 0 Auto-dismiss (0 = never)
Background Color Text rgba(0,0,0,0.8) Backdrop color

Ad Placement

Setting Type Default Description
Enable Pre-Roll Checkbox On Ad before video
Enable Mid-Roll Checkbox Off Ad during video
Enable Post-Roll Checkbox Off Ad after video

Mid-Roll Timing Configuration

Setting Type Description
Mid-Roll Time (seconds) Number Show ad at specific time
Mid-Roll Percentage Number Show ad at % of video (e.g., 50 = halfway)

Ad Behavior Settings

Setting Type Default Description
Ad Timeout (ms) Number 5000 Max wait for ad to load
Max Ad Duration (seconds) Number (empty) Cap ad length
Skip Button Delay (seconds) Number 5 Wait before skip appears
VPAID Mode Select ENABLED ENABLED, DISABLED, INSECURE

User Experience Settings

Setting Type Default Description
Volume Control Checkbox On Allow volume adjustment
Show Countdown Checkbox On Display remaining time
Autoplay Ad Breaks Checkbox On Auto-start ads

Analytics & Debugging

Setting Type Default Description
Click Tracking Checkbox On Track ad clicks
Enable Debug Mode Checkbox Off Verbose console logs

Test VAST Tags

Sample Google IMA tags for testing:

  • Single Inline Linear
  • Single Skippable Inline
  • VMAP Pre-roll

 

[Screenshot: Video Player Ads tab with VAST configuration]


Step-by-Step Usage

Setting Up Basic Video Processing

  1. Navigate to Dashboard > Videos > Processor Settings
  2. On the Processing Settings tab:
  • Set Max Concurrent Jobs based on your server CPU (2-4 for most servers)
  • Adjust Job Timeout if processing large 4K videos (increase to 7200)
  • Keep Retry Attempts at 3 for reliability
  1. Scroll to Thumbnail Generation Settings:
  • Set Thumbnail Count (5-10 recommended)
  • Enable Generate Video Sprites for timeline preview
  1. Click Save Settings

 

Tip:
Start with conservative settings and increase concurrent jobs only after monitoring server load.

 

Configuring HLS Adaptive Streaming

  1. On the Processing Settings tab, scroll to HLS Adaptive Streaming Settings
  2. Check Enable HLS Adaptive Streaming
  3. Set Minimum Source Height to 720 or 1080
  4. Configure Active HLS Resolutions (e.g., "hd,high,medium" for 1080p, 720p, 480p)
  5. Adjust bitrates for each quality level
  6. Click Save Settings

 

Warning:
HLS significantly increases storage requirements. A 100MB source video may generate 400MB+ of HLS files across all quality levels.

 

Adding a Pre-Roll Advertisement

  1. Go to the Pre-Roll & Post-Roll tab
  2. Under Upload New Pre-Roll Video:
  • Click Choose File and select your MP4 video
  • Check Activate immediately to enable
  1. Click Upload Pre-Roll Video
  2. The pre-roll will now be concatenated to all newly processed videos

Creating a Text Watermark

  1. Go to the Video Overlays tab
  2. Select Text Overlay type
  3. Enter an Overlay Name (e.g., "Copyright Notice")
  4. Set Position to "bottom-right"
  5. Enter Text Content (e.g., "© 2025 Your Company")
  6. Customize styling:
  • Font Color: #ffffff
  • Font Size: 18
  • Enable Text Shadow for visibility
  • Set Opacity to 0.5 for subtle watermark
  1. Click Create Overlay

Setting Up Player Branding

  1. Go to the Video Player tab
  2. Scroll to Video Watermark / Branding
  3. Check Enable Watermark
  4. Select Text or Image type
  5. For text: Enter your brand name, choose colors and font
  6. Set Position to "bottom-right"
  7. Adjust Opacity (0.3-0.5 recommended)
  8. Check Fade on Hover for better UX
  9. Click Save Watermark Settings

Configuring VAST Video Ads

  1. Go to the Video Player Ads tab
  2. Check Enable Video Ads
  3. Enter your VAST Tag URL from your ad provider
  4. Under Ad Placement:
  • Check Enable Pre-Roll for ads before video
  • Optionally enable mid-roll at specific percentage
  1. Set Skip Button Delay to 5 seconds
  2. Enable Click Tracking for analytics
  3. Click Save Ad Settings

 

Tip:
Use the Test VAST Tags section to verify your player works before connecting to your ad server.

 

Creating a Call-to-Action Overlay

  1. Go to Video Player tab
  2. Scroll to Add New Player Overlay
  3. Fill in:
  • Title: "Subscribe for More!"
  • Message: "Get unlimited access to premium content"
  • Type: Call-to-Action (Gradient)
  • Position: center
  • Show At: 10 seconds
  • Duration: 10 seconds
  • Button Text: "Subscribe Now"
  • Button URL: https://yoursite.com/subscribe
  • Enable Dismissible
  1. Click Add Player Overlay

Troubleshooting

Videos Stuck in "Pending" Status

Symptom: Videos upload but never get processed.

Solution:

  1. Check if the cron job is running:
crontab -l | grep videoprocessor

 

  1. Test manual execution:

 

php /path/to/ct/admin/cron/videoprocessor.php

 

  1. Check processor logs:
tail -100 /path/to/ct/logs/videoprocessor/videoprocessor.log

 

  1. Verify FFmpeg is installed and accessible
  2. Check file permissions on upload directories

 

Thumbnails Not Generating

Symptom: Videos process but have no thumbnails.

Solution:

  1. Verify FFmpeg can extract frames:

 

ffmpeg -i /path/to/video.mp4 -vframes 1 test.jpg

 

  1. Check Thumbnail Count is > 0
  2. Ensure upload directories are writable
  3. Look for FFmpeg errors in processing logs

 

HLS Not Working

Symptom: Videos don't offer quality selection.

Solution:

  1. Confirm Enable HLS Adaptive Streaming is checked
  2. Verify source video meets Minimum Source Height requirement
  3. Check that Active HLS Resolutions is not empty
  4. Ensure FFmpeg has required codecs:

 

ffmpeg -codecs | grep x264

 

  1. Check for HLS files in video output directory

 

Watermarks Not Appearing

Symptom: Video overlays configured but not visible on processed videos.

Solution:

  1. Watermarks are burned in during processing - check if overlay is Active
  2. Existing videos need reprocessing to apply new watermarks
  3. Verify image file exists at the stored path
  4. Check that FFmpeg can read the overlay image:

 

ffmpeg -i video.mp4 -i overlay.png -filtercomplex "overlay" test.mp4

 

Player Overlays Not Showing

Symptom: Player overlays configured but not appearing during playback.

Solution:

  1. Check if overlay is marked Active
  2. Verify Show At time hasn't passed
  3. Player overlays don't work with embedded videos (iframes)
  4. Check browser console for JavaScript errors
  5. Verify player feature is enabled in Player Features table

 

VAST Ads Not Playing

Symptom: Ads configured but not appearing.

Solution:

  1. Check Enable Video Ads is on
  2. Verify VAST tag URL is valid and accessible
  3. Test with Google IMA sample tags first
  4. Enable Debug Mode and check console
  5. Ensure player is using Video.js (not embedded)
  6. Check for CORS issues with ad server

 

Cloud Encoding Webhook Failures

Symptom: Cloud encoding completes but videos aren't updated.

Solution:

  1. Verify webhook URL is publicly accessible
  2. Check that SSL certificate is valid (webhooks require HTTPS)
  3. Look for webhook calls in server access logs
  4. Test webhook endpoint manually with curl:

 

curl -X POST https://yoursite.com/api/v1/webhooks/bunny-stream -d "test=1"

 


Translatable Strings

The following strings are used in this page and should be added to lang/en.json. Strings are organized by category for easier localization.

Page Title & Navigation

{
  "videoprocessorsettings": "Video Processor Settings",
  "dashboard": "Dashboard",
  "videos": "Videos"
}

Tab Labels

{
  "processingsettings": "Processing Settings",
  "prerollpostroll": "Pre-Roll & Post-Roll",
  "videooverlays": "Video Overlays",
  "videoplayer": "Video Player",
  "videoplayerads": "Video Player Ads"
}

Section Headings

{
  "aboutvideoprocessing": "About Video Processing",
  "generalprocessingsettings": "General Processing Settings",
  "storagecleanupsettings": "Storage & Cleanup Settings",
  "qualitycontrolsettings": "Quality Control Settings",
  "smartcroptransformation": "Smart Crop & Transformation",
  "previewgenerationsettings": "Preview Generation Settings",
  "thumbnailgenerationsettings": "Thumbnail Generation Settings",
  "thumbnailimageformatsettings": "Thumbnail Image Format Settings",
  "animatedgifsettings": "Animated GIF Settings",
  "contactsheetsettings": "Contact Sheet Settings",
  "videoconversionsettings": "Video Conversion Settings",
  "hlsadaptivestreamingsettings": "HLS Adaptive Streaming Settings",
  "hlsresolutionvariants": "HLS Resolution Variants",
  "mp4encodingsettings": "MP4 Encoding Settings",
  "webmencodingsettings": "WebM Encoding Settings",
  "distributedvideoconversion": "Distributed Video Conversion",
  "cloudencodingservices": "Cloud Encoding Services",
  "cloudstoragedestination": "Cloud Storage Destination",
  "playeroverlaysystem": "Player Overlay System",
  "playerfeaturesmodeconfiguration": "Player Features & Mode Configuration",
  "playlistsidebarsettings": "Playlist & Sidebar Settings",
  "autoplaynextvideosettings": "Autoplay Next Video Settings",
  "videowatermarkbranding": "Video Watermark / Branding",
  "textwatermarksettings": "Text Watermark Settings",
  "imagewatermarksettings": "Image Watermark Settings",
  "appearancesettings": "Appearance Settings",
  "addnewplayeroverlay": "Add New Player Overlay",
  "existingplayeroverlays": "Existing Player Overlays",
  "playlistuicustomization": "Playlist & Sidebar UI Customization",
  "videoviewlimitsaccesscontrol": "Video View Limits & Access Control",
  "upgradepromptcustomization": "Upgrade Prompt Customization",
  "vastimaadsettings": "VAST/IMA Ad Settings",
  "adtypeselection": "Ad Type Selection",
  "customoverlayadconfiguration": "Custom Overlay Ad Configuration",
  "adplacement": "Ad Placement",
  "midrolltimingconfiguration": "Mid-roll Timing Configuration",
  "adbehavior": "Ad Behavior",
  "userexperience": "User Experience",
  "analyticsdebugging": "Analytics & Debugging",
  "currentstatus": "Current Status",
  "testvasttags": "Test VAST Tags"
}

Info Box Content

{
  "aboutvideoprocessingtext": "This page allows you to configure how videos are processed, including quality settings, thumbnail generation, HLS streaming, and more. Settings are applied to all new videos that enter the processing queue.",
  "aboutprerollpostroll": "Pre-roll videos play before your main content. Post-roll videos play after. These are useful for branding, advertisements, or content warnings.",
  "prerollinfo": "Pre-roll videos are concatenated to the beginning of processed videos. Changes only affect newly processed videos.",
  "postrollinfo": "Post-roll videos are concatenated to the end of processed videos. Changes only affect newly processed videos.",
  "aboutplayeroverlays": "Player overlays appear on top of the video player during playback. They're perfect for:",
  "overlayusecasescta": "CTAs (Call-to-Action): Encourage users to subscribe, sign up, or visit other pages",
  "overlayusecaseswarnings": "Warnings: Display important notices, age restrictions, or disclaimers",
  "overlayusecasespromotional": "Promotional Messages: Promote special offers, new content, or features",
  "overlayusecasesinformation": "Information: Provide context, credits, or additional details",
  "overlayfeatures": "Features:",
  "overlayfeaturetimebased": "Time-based display (show/hide at specific video timestamps)",
  "overlayfeaturepositions": "Multiple position options (top, bottom, center, corners)",
  "overlayfeaturetypes": "Various types (info, warning, error, success, CTA)",
  "overlayfeaturebuttons": "Clickable buttons with custom URLs",
  "overlayfeaturedismiss": "Auto-dismiss or user-dismissible options",
  "aboutplayerfeatures": "Control which features are enabled for different player modes:",
  "playermodefrontend": "Frontend Mode: Full-featured player for public-facing videos /debugplayer.php?mode=frontend (default with playlist, autoplay, overlays, etc.)",
  "playermodebackend": "Backend Mode: Minimal player for admin area /debugplayer.php?mode=backend. (useful for video management/preview without distractions)",
  "embeddedvideosnotice": "Important Notice About Embedded Videos:",
  "embeddedvideosnoticetext": "The player features below (playlist sidebar, overlays, watermark, ads) are not available for embedded videos (importmode = 'embed'). These features only work with videos hosted on your CDN or hotlinked videos that use the Video.js player. Embedded videos use external iframe players that cannot be controlled by your system.",
  "thumbnailformatssupported": "Supported Formats:",
  "thumbnailformatjpg": "JPG: Universal compatibility, good compression",
  "thumbnailformatwebp": "WebP: Modern format, better compression, smaller file sizes",
  "thumbnailformatboth": "Both: Generate both formats for maximum compatibility and performance",
  "thumbnailformatnote": "Note: Animated GIFs are always generated in GIF format regardless of this setting.",
  "animatedgifgeneration": "Animated GIF Generation:",
  "animatedgifdescription": "Create engaging animated preview GIFs from your videos.",
  "animatedgifcontinuous": "Continuous Mode: Extract one continuous clip from the video",
  "animatedgifsegmented": "Segmented Mode: Extract multiple short clips from throughout the video and combine them",
  "animatedgifformatnote": "Animated GIFs are always generated in GIF format (not WebP)",
  "whatishlsstreaming": "What is HLS Streaming?",
  "hlsstreamingdescription": "HTTP Live Streaming (HLS) creates multiple quality versions of your video and allows automatic quality switching based on viewer's bandwidth.",
  "hlsadaptivequality": "Adaptive Quality: Viewers get the best quality their connection can handle",
  "hlsm3u8playlists": ".m3u8 Playlists: Master playlist coordinates between quality levels",
  "hlssegments": "Segments: Videos are split into small chunks for smooth streaming",
  "hlsthreshold": "Threshold: Only enabled for videos meeting minimum resolution requirements",
  "hlswarning": "Note: HLS generation significantly increases processing time and storage requirements. Each enabled resolution creates a complete copy of your video plus segment files.",
  "hlsvariantsdescription": "Select which resolution variants to generate. The processor will only create variants that are smaller than or equal to the source video resolution.",
  "hdquality": "HD Quality",
  "highquality": "High Quality",
  "mediumquality": "Medium Quality",
  "lowquality": "Low Quality",
  "aboutdistributedconversion": "About Distributed Conversion:",
  "distributedconversiondescription": "Distribute video processing workloads across multiple remote servers for faster processing and better scalability.",
  "distributedremoteservers": "Remote Servers: Configure dedicated conversion servers to handle processing",
  "distributedloadbalancing": "Load Balancing: Jobs are distributed based on server capacity and priority",
  "distributedautofailover": "Automatic Failover: Falls back to local processing if remote servers are unavailable",
  "distributedhealthmonitoring": "Health Monitoring: Automatic heartbeat checks and alerting",
  "distributedconversionnote": "Note: Configure remote servers in Conversion Servers before enabling this feature.",
  "uploadmodereturnmain": "Return to Main Server: Conversion server sends processed files back. Main server then uploads to your CDN. More bandwidth but simpler.",
  "uploadmodedirectstorage": "Direct to Storage: Conversion server uploads directly to your CDN. Faster and uses less bandwidth. Requires sharing CDN credentials with conversion servers.",
  "aboutcloudencoding": "About Cloud Encoding:",
  "cloudencodingdescription": "Instead of processing videos locally or on your own conversion servers, you can use third-party cloud encoding services. These services handle all the heavy lifting of video transcoding in the cloud.",
  "cloudencodingbenefits": "Benefits:",
  "cloudencodingnoinfrastructure": "No Infrastructure: No need to set up or maintain conversion servers",
  "cloudencodingscalable": "Scalable: Process hundreds of videos simultaneously",
  "cloudencodingpayasyougo": "Pay-as-you-go: Only pay for what you encode",
  "cloudencodingfast": "Fast: Enterprise-grade encoding infrastructure",
  "bunnystreamdescription": "Bunny Stream is a powerful video hosting and encoding platform by Bunny.net. It offers:",
  "bunnystreamhls": "Automatic HLS transcoding to multiple resolutions",
  "bunnystreamcdn": "Global CDN delivery included",
  "bunnystreamthumbnails": "Thumbnail and preview generation",
  "bunnystreampricing": "Starting at $1/TB storage + $1/TB delivery",
  "coconutdescription": "Coconut is a cloud video transcoding API. It supports:",
  "coconutformats": "Multiple output formats (MP4, WebM, HLS, DASH)",
  "coconutupload": "Direct upload to S3, GCS, Azure, FTP",
  "coconutthumbnails": "Thumbnail and GIF generation",
  "coconutpricing": "Pay-per-minute pricing",
  "qencodedescription": "Qencode is an enterprise video encoding platform. Features:",
  "qencodehlsdash": "Advanced HLS/DASH adaptive streaming",
  "qencodepertitle": "Per-title encoding optimization",
  "qencodeupload": "Direct upload to cloud storage",
  "qencodeai": "AI-powered quality optimization",
  "cloudstoragedescription": "Coconut and Qencode need a storage destination to upload encoded files. Configure your S3-compatible storage credentials here.",
  "cloudstoragebunnynote": "Note: If you're using Bunny Stream, encoded files are stored in Bunny's CDN automatically.",
  "midrolltimingdescription": "Choose one timing method:",
  "midrolltimebased": "Time-based: Show ad at a specific timestamp (e.g., 30 seconds)",
  "midrollpercentagebased": "Percentage-based: Show ad at % of video duration (e.g., 50% = halfway)",
  "midrollprioritynote": "Note: If both are set, percentage takes priority.",
  "testvasttagsdescription": "Google IMA Sample Tags for Testing:",
  "testvasttagsinfo": "Use these official Google test tags to verify your ad setup:",
  "singleprerolllinear": "Single Pre-roll (Linear):",
  "skippablead": "Skippable Ad:",
  "vpaidad": "VPAID Ad:",
  "testvastnote": "Note: These are sample tags provided by Google for testing purposes. Replace with your actual ad network's VAST tag URL in production."
}

Form Labels

{
  "enable": "Enable",
  "active": "Active",
  "inactive": "Inactive",
  "resolution": "Resolution",
  "videobitratekbps": "Video Bitrate (kbps)",
  "activehlsresolutions": "Active HLS Resolutions",
  "activehlsresolutionsdescription": "Select which resolution variants to generate. Use comma-separated values: hd, high, medium, low",
  "enablehlsstreaming": "Enable HLS Streaming",
  "enabledistributedconversion": "Enable Distributed Conversion",
  "enablecloudencoding": "Enable Cloud Encoding Services",
  "overlayname": "Overlay Name",
  "overlaytype": "Overlay Type",
  "position": "Position",
  "opacity": "Opacity",
  "margin": "Margin",
  "fontsize": "Font Size",
  "fontcolor": "Font Color",
  "fontfamily": "Font Family",
  "fontweight": "Font Weight",
  "textcontent": "Text Content",
  "textshadow": "Text Shadow",
  "shadowcolor": "Shadow Color",
  "shadowoffsetx": "Shadow Offset X",
  "shadowoffsety": "Shadow Offset Y",
  "textoutline": "Text Outline",
  "outlinecolor": "Outline Color",
  "outlinewidth": "Outline Width",
  "textglow": "Text Glow",
  "glowcolor": "Glow Color",
  "textanimation": "Text Animation",
  "animationduration": "Animation Duration",
  "scrollspeed": "Scroll Speed",
  "displaytiming": "Display Timing",
  "activateimmediately": "Activate Immediately",
  "sidebarposition": "Sidebar Position",
  "sidebarwidth": "Sidebar Width",
  "maxvideos": "Max Videos",
  "sortby": "Sort By",
  "categoryfilter": "Category Filter",
  "countdowndelayseconds": "Countdown Delay (seconds)",
  "showcountdown": "Show Countdown",
  "showcountdownoverlay": "Show countdown overlay",
  "enablewatermark": "Enable Watermark",
  "watermarkenableddescription": "Show watermark on all videos",
  "enablewatermarkbranding": "Enable watermark/branding",
  "watermarktype": "Watermark Type",
  "watermarktext": "Watermark Text",
  "textcolor": "Text Color",
  "backgroundcolor": "Background Color",
  "backgroundopacity": "Background Opacity",
  "padding": "Padding",
  "paddingpx": "Padding (px)",
  "sizevideowidthpercent": "Size (% of video width)",
  "horizontalmarginpx": "Horizontal Margin (px)",
  "verticalmarginpx": "Vertical Margin (px)",
  "alwaysvisible": "Always Visible",
  "alwaysshowwatermark": "Always show watermark",
  "fadeonhover": "Fade on Hover",
  "fadeonuserinteraction": "Fade on user interaction",
  "imageurl": "Image URL",
  "imageurldescription": "URL to your watermark image (PNG with transparency recommended)",
  "overlaytitle": "Overlay Title",
  "overlaymessage": "Message",
  "showatseconds": "Show At (seconds)",
  "hideatseconds": "Hide At (seconds)",
  "durationseconds": "Duration (seconds)",
  "buttontext": "Button Text",
  "buttonurl": "Button URL",
  "dismissible": "Dismissible",
  "allowuserstodismiss": "Allow users to dismiss",
  "fullwidth": "Full Width",
  "enablefullwidth": "Enable full width",
  "enablevideoads": "Enable Video Ads",
  "vasttagurl": "VAST Tag URL",
  "prerollads": "Pre-roll Ads",
  "enableprerollads": "Enable pre-roll ads",
  "midrollads": "Mid-roll Ads",
  "enablemidrollads": "Enable mid-roll ads",
  "postrollads": "Post-roll Ads",
  "enablepostrollads": "Enable post-roll ads",
  "midrolltimeseconds": "Mid-roll Time (seconds)",
  "midrollpercentage": "Mid-roll Percentage (%)",
  "adtimeoutms": "Ad Timeout (ms)",
  "maxaddurationseconds": "Max Ad Duration (seconds)",
  "skipbuttondelayseconds": "Skip Button Delay (seconds)",
  "vpaidmode": "VPAID Mode",
  "volumecontrol": "Volume Control",
  "enablevolumecontrol": "Enable volume control",
  "autoplayadbreaks": "Autoplay Ad Breaks",
  "enableautoplay": "Enable autoplay",
  "clicktracking": "Click Tracking",
  "enableclicktracking": "Enable click tracking",
  "debugmode": "Debug Mode",
  "enabledebuglogging": "Enable debug logging",
  "cloudencodingservice": "Cloud Encoding Service",
  "fallbackmethod": "Fallback Method",
  "apikey": "API Key",
  "libraryid": "Library ID",
  "cdnhostname": "CDN Hostname",
  "webhookurl": "Webhook URL",
  "outputresolutions": "Output Resolutions",
  "outputformat": "Output Format",
  "storagetarget": "Storage Target",
  "outputdestination": "Output Destination",
  "projectid": "Project ID",
  "storagebucket": "Storage Bucket",
  "storageregion": "Storage Region",
  "storageaccesskey": "Storage Access Key",
  "storagesecretkey": "Storage Secret Key",
  "storagepath": "Storage Path"
}

Select Options

{
  "positiontopleft": "Top Left",
  "positiontopcenter": "Top Center",
  "positiontopright": "Top Right",
  "positionbottomleft": "Bottom Left",
  "positionbottomcenter": "Bottom Center",
  "positionbottomright": "Bottom Right",
  "positioncenter": "Center",
  "positionscrollingtop": "Scrolling - Top",
  "positionscrollingbottom": "Scrolling - Bottom",
  "positionrightside": "Right Side",
  "positionleftside": "Left Side",
  "positionbelowplayer": "Below Player",
  "overlaytypeinfo": "Info (Blue)",
  "overlaytypewarning": "Warning (Orange)",
  "overlaytypeerror": "Error (Red)",
  "overlaytypesuccess": "Success (Green)",
  "overlaytypecta": "Call-to-Action (Gradient)",
  "sortmostrecent": "Most Recent",
  "sortmostpopular": "Most Popular",
  "sortrelatedvideos": "Related Videos",
  "sortrandom": "Random",
  "fontnormal": "Normal",
  "fontbold": "Bold",
  "vpaidenabled": "Enabled (Recommended)",
  "vpaiddisabled": "Disabled (VAST only)",
  "vpaidinsecure": "Insecure (Allow all VPAID)",
  "scrollspeednone": "None",
  "scrollspeedslow": "Slow",
  "scrollspeedmedium": "Medium",
  "scrollspeedfast": "Fast",
  "timingcontinuous": "Continuous",
  "timingrandomintervals": "Random Intervals",
  "timingevery30seconds": "Every 30 Seconds",
  "timingstartendonly": "Start & End Only",
  "animationnone": "None",
  "animationfadein": "Fade In",
  "animationfadeout": "Fade Out",
  "animationfadeinout": "Fade In & Out",
  "animationslideleft": "Slide from Left",
  "animationslideright": "Slide from Right",
  "animationslideup": "Slide from Bottom",
  "animationslidedown": "Slide from Top",
  "animationbounce": "Bounce",
  "animationblinking": "Blinking",
  "animationpulse": "Pulse",
  "typetext": "Text",
  "typeimage": "Image",
  "typehtml": "HTML",
  "servicebunnystream": "Bunny Stream",
  "servicecoconut": "Coconut.co",
  "serviceqencode": "Qencode",
  "fallbacklocal": "Local Processing",
  "fallbackremote": "Remote Servers",
  "fallbackqueue": "Queue for Later",
  "fallbackfail": "Fail Job"
}

Buttons

{
  "savesettings": "Save Settings",
  "saveplayerfeatures": "Save Player Features",
  "savewatermarksettings": "Save Watermark Settings",
  "saveadsettings": "Save Ad Settings",
  "addplayeroverlay": "Add Player Overlay",
  "createoverlay": "Create Overlay",
  "uploadprerollvideo": "Upload Pre-Roll Video",
  "uploadpostrollvideo": "Upload Post-Roll Video",
  "uploadfont": "Upload Font",
  "activate": "Activate",
  "deactivate": "Deactivate",
  "delete": "Delete",
  "refresh": "Refresh",
  "copyurl": "Copy URL",
  "signupbunny": "Sign Up for Bunny.net",
  "signupcoconut": "Sign Up for Coconut.co",
  "signupqencode": "Sign Up for Qencode",
  "documentation": "Documentation"
}

Status & Messages

{
  "settingssavedsuccessfully": "Settings saved successfully!",
  "playerfeaturesupdated": "Player features updated successfully!",
  "watermarksettingsupdated": "Watermark settings updated successfully!",
  "errorsavingsettings": "Error saving settings",
  "errorupdatingwatermark": "Error updating watermark",
  "somefeaturesfailed": "Some features failed to update",
  "changessaved": "changes saved",
  "errors": "errors",
  "adssystemenabled": "Enabled",
  "adssystemdisabled": "Disabled",
  "activeplacements": "Active Placements:",
  "none": "None",
  "notconfigured": "Not configured",
  "copiedtoclipboard": "Copied to clipboard!",
  "confirmsavesettings": "Are you sure you want to save these settings? This will affect all future video processing jobs.",
  "confirmdeleteoverlay": "Are you sure you want to delete this player overlay?",
  "nooverlayscreated": "No player overlays created yet. Create your first overlay above!",
  "optional": "Optional",
  "required": "required"
}

Feature Table Headers

{
  "feature": "Feature",
  "frontendmode": "Frontend Mode",
  "backendmode": "Backend Mode",
  "description": "Description",
  "nodescription": "No description"
}

Placeholder Text

{
  "placeholderjpgwebpboth": "jpg, webp, or both",
  "placeholderhdhighmediumlow": "hd,high,medium,low",
  "placeholderresolution1920x1080": "1920x1080",
  "placeholderresolution1280x720": "1280x720",
  "placeholderresolution854x480": "854x480",
  "placeholderresolution640x360": "640x360",
  "placeholderadminemail": "admin@example.com",
  "placeholderapikey": "Your API key",
  "placeholderlibraryid": "123456",
  "placeholdercdnhostname": "vz-abc123.b-cdn.net",
  "placeholderprojectid": "Optional project ID",
  "placeholderbucketname": "my-video-bucket",
  "placeholderregion": "us-east-1",
  "placeholderaccesskey": "Access key",
  "placeholdersecretkey": "Secret key",
  "placeholderstoragepath": "videos/",
  "placeholderbrandname": "Your Brand",
  "placeholdercompanycopyright": "© Your Company",
  "placeholderimageurl": "https://example.com/watermark.png",
  "placeholdersubscribenow": "e.g., Subscribe Now!",
  "placeholderpremiumcontent": "e.g., Get unlimited access to premium content",
  "placeholderlearnmore": "e.g., Learn More",
  "placeholderexampleurl": "https://example.com",
  "placeholdercategoryids": "e.g., 1,2,5",
  "placeholderwidthpercentage": "e.g., 300px or 20%",
  "placeholdervasttag": "e.g., 30",
  "placeholdertime": "e.g., 30",
  "placeholderpercentage": "50"
}

VPAID Help Text

{
  "vpaidhelptext": "VPAID enables interactive ads but requires JavaScript execution"
}

Pre-Roll & Post-Roll Tab

{
  "currentprerollvideo": "Current Pre-Roll Video",
  "currentpostrollvideo": "Current Post-Roll Video",
  "uploadnewpreroll": "Upload New Pre-Roll Video",
  "uploadnewpostroll": "Upload New Post-Roll Video",
  "videofile": "Video File",
  "mp4recommended": "MP4 recommended for best compatibility",
  "status": "Status",
  "filename": "Filename"
}

Video Overlays Tab

{
  "addnewoverlay": "Add New Overlay",
  "selectoverlaytype": "Select Overlay Type",
  "imageoverlay": "Image Overlay",
  "imageoverlaydescription": "Upload PNG/GIF file (transparent PNG recommended)",
  "textoverlay": "Text Overlay",
  "textoverlaydescription": "Scrolling or static text watermark",
  "existingoverlays": "Existing Overlays",
  "managecustomfonts": "Manage Custom Fonts",
  "uploadnewfont": "Upload New Font",
  "acceptsttfotf": "Accepts TTF or OTF files",
  "availablefonts": "Available Fonts",
  "customfont": "Custom Font",
  "systemfonts": "System Fonts",
  "defaultfont": "Default"
}

Playlist UI Customization

{
  "playlistitemstyle": "Playlist Item Style",
  "thumbnailsize": "Thumbnail Size",
  "showduration": "Show Duration",
  "showviews": "Show Views",
  "hovereffect": "Hover Effect",
  "activeitemindicator": "Active Item Indicator"
}

Video View Limits

{
  "viewlimitsdescription": "Control how many videos guests and free users can watch before requiring registration or upgrade.",
  "guestviewlimit": "Guest View Limit",
  "guestviewlimitdescription": "Number of videos guests can watch before prompting registration (0 = unlimited)",
  "freeuserviewlimit": "Free User View Limit",
  "freeuserviewlimitdescription": "Number of videos free users can watch per day before prompting upgrade (0 = unlimited)",
  "limitresetperiod": "Limit Reset Period",
  "limitresetdescription": "How often the view counter resets",
  "daily": "Daily",
  "weekly": "Weekly",
  "monthly": "Monthly",
  "never": "Never"
}

Upgrade Prompt Customization

{
  "upgradeprompttitle": "Upgrade Prompt Title",
  "upgradepromptmessage": "Upgrade Prompt Message",
  "upgradebuttontext": "Upgrade Button Text",
  "upgradebuttonurl": "Upgrade Button URL",
  "showregisteroption": "Show Register Option",
  "registeroptiontext": "Register Option Text"
}


String Count Summary

Category Count
Page Title & Navigation 3
Tab Labels 5
Section Headings 32
Info Box Content 63
Form Labels 73
Select Options 36
Buttons 14
Status & Messages 14
Feature Table Headers 5
Placeholder Text 18
VPAID Help Text 1
Pre-Roll & Post-Roll Tab 8
Video Overlays Tab 12
Playlist UI Customization 6
Video View Limits 10
Upgrade Prompt Customization 6
Total 306

Last Updated: 2026-01-04*