ComusThumbz 文档
管理员登录

Video Processor

Overview

The Video Processor Dashboard is a real-time monitoring interface for tracking video processing operations in ComusThumbz. It provides comprehensive visibility into queue status, processing performance, error tracking, and hourly trends. The dashboard auto-refreshes every 30 seconds and supports time range filtering for detailed analysis of processing metrics.

Location: Navigate to this page via Admin Panel → Videos → Video Processing Dashboard or access directly via ct/admin/videoprocessordashboard.php

[Screenshot: video-processor-dashboard-main]


Getting to This Page

  1. Navigate to Admin Panel → Videos
  2. Click Video Processing Dashboard link
  3. Alternatively, access directly via ct/admin/videoprocessordashboard.php

 

Note:
This dashboard monitors the videoprocessor.php cron job which handles video transcoding, thumbnail generation, HLS creation, and CDN uploads. Use it to track processing performance and identify issues.

 


System Requirements

 

Configuration Required:
This page requires the video processing system to be configured and running. Processing jobs are created by ftp
videoprocessor.php and executed by videoprocessor.php cron jobs.

 

PHP Requirements

Requirement Minimum Recommended Notes
PHP Version 8.0 8.2+ Uses modern PHP syntax
memorylimit 64M 128M For dashboard queries
maxexecutiontime 30 60 Standard page load

Required PHP Extensions

Extension Required Purpose
mysqli Yes Database connectivity
session Yes CSRF protection, authentication
json Yes AJAX response handling

Required PHP Functions

Function Required For Notes
mysqliprepare() SQL queries Prepared statements
mysqlistmtbindparam() Query parameters Core
mysqlistmtexecute() Query execution Core
bin2hex() CSRF token generation Security
randombytes() CSRF token generation Security
date() Timestamp formatting Display

Folder Permissions

Folder Permission Purpose
ct/admin/ 755 (read) Page access
ct/logs/videoprocessor/ 755 (write) Processor logs

Network Requirements

Endpoint Protocol Purpose
Font Awesome CDN HTTPS Icons
Chart.js CDN HTTPS Charts

Features & UI Elements

Page Header

[Screenshot: video-processor-dashboard-header]

Element Description
Title "Video Processing Dashboard" with cog icon
Breadcrumb Dashboard → Videos → Video Processing Dashboard
Subtitle "Real-time monitoring and status of video processing queue"

Time Range Filter

[Screenshot: video-processor-dashboard-time-filter]

Period Hours Description
1h 1 Last hour
24h 24 Last 24 hours (default)
7d 168 Last 7 days
30d 720 Last 30 days

Navigation Buttons

[Screenshot: video-processor-dashboard-navigation]

Button Action
Settings Navigate to videoprocessorsettings.php
Queue Visualizer Navigate to videoqueuevisualizer.php
Refresh Reload all dashboard data

Auto-Refresh Toggle

[Screenshot: video-processor-dashboard-auto-refresh]

Element Description
Toggle Button Enable/disable auto-refresh
Interval Selector 10s, 30s (default), 60s
Status Indicator Shows current refresh state
Note: Auto-refresh is enabled by default at 30-second intervals. Disable it when reviewing detailed data to prevent page updates while investigating issues.

Queue Overview Cards

[Screenshot: video-processor-dashboard-overview-cards]

Six stat cards displaying real-time metrics:

Card Description Color Coding
Pending Jobs Jobs waiting to be processed Yellow/Orange for high counts
Processing Jobs Jobs currently being processed Blue/Green
Completed Today Jobs completed in last 24h Green
Failed Today Jobs that failed in last 24h Red for any failures
Avg Wait Time Average time in queue Yellow if > 5 minutes
Avg Processing Time Average time to complete -

Job Type Breakdown Table

[Screenshot: video-processor-dashboard-job-types]

Column Description
Job Type Type of processing job
Total Total jobs of this type
Completed Successfully completed jobs
Failed Failed jobs
Avg Time Average processing time
Success Rate Percentage of successful jobs

Job Types:

  • extractmetadata - FFprobe metadata extraction
  • transcode - Video transcoding to web format
  • generatethumbnails - Timeline thumbnail generation
  • generatesprites - Sprite sheet creation
  • generatepreview - Preview clip generation
  • generategif - Animated GIF creation
  • generatecontactsheet - Contact sheet generation
  • uploadcdn - CDN upload
  • cleanup - Temporary file cleanup

Recent Errors Section

[Screenshot: video-processor-dashboard-errors]

Column Description
Job ID Unique job identifier
Video Video title (linked)
Job Type Type of job that failed
Error Error message (truncated)
Attempts Attempt count / Max attempts
Time When error occurred
Actions Acknowledge button
Warning: Review and acknowledge errors regularly. Unacknowledged errors remain visible as a reminder to investigate and resolve processing issues.

Clear All Errors Button

Button Action
Clear All Errors Marks all current errors as acknowledged

Hourly Processing Trend Chart

[Screenshot: video-processor-dashboard-chart]

Line chart showing:

  • Completed jobs (green line) - Successfully processed
  • Failed jobs (red line) - Failed processing

 

X-axis shows hours, Y-axis shows job count.

 

Tip:
The trend chart helps identify processing patterns and bottlenecks. Spikes in failures may indicate system resource issues or problematic video uploads.

 

Currently Processing Section

[Screenshot: video-processor-dashboard-processing]

Real-time view of active jobs:

Column Description
Job ID Processing job identifier
Video Video being processed
Job Type Current processing type
Started When processing began
Duration Time elapsed
Worker Worker process ID

Pending Queue Preview

[Screenshot: video-processor-dashboard-pending]

Shows next 10 pending jobs:

Column Description
Video Video title
Job Type Job type
Priority Priority level (1-10)
Wait Time Time in queue
Attempts Previous attempt count

Step-by-Step Usage

Monitoring Processing Status

  1. Navigate to Admin Panel → Videos → Video Processing Dashboard
  2. View overview cards for quick status
  3. Check "Currently Processing" for active jobs
  4. Review "Pending Queue" for upcoming work

Investigating Processing Errors

  1. Scroll to "Recent Errors" section
  2. Click video title to view video details
  3. Review error message for root cause
  4. Click "Acknowledge" after resolving issue

Clearing All Errors

  1. Click "Clear All Errors" button
  2. Confirm action in dialog
  3. All errors marked as acknowledged
  4. Fresh errors will appear as they occur

Adjusting Time Range

  1. Click time range button (1h, 24h, 7d, 30d)
  2. Dashboard reloads with new time range
  3. All metrics recalculated for selected period

Managing Auto-Refresh

  1. Click auto-refresh toggle to enable/disable
  2. Select interval from dropdown (10s, 30s, 60s)
  3. Dashboard updates automatically when enabled

AJAX Actions

The dashboard uses POST requests with CSRF protection:

Action Description
clearallerrors Marks all failed jobs as erroracknowledged = 1

Dashboard Refresh Behavior

Component Refresh Method
Overview Cards Page reload via auto-refresh
Job Type Table Page reload via auto-refresh
Error List Page reload via auto-refresh
Trend Chart Rebuilt on page load with Chart.js
Processing/Pending Page reload via auto-refresh

Troubleshooting

Common Errors

 

Error:
Jobs stuck in "processing" status


Cause: videoprocessor.php crashed or was killed during processing
Solution:

  1. Check if cron job is running: ps aux | grep videoprocessor
  2. Review processor logs: ct/logs/videoprocessor/
  3. Jobs will auto-retry up to maxattempts
  4. Reset stuck jobs manually if needed:

 

UPDATE tblVideoProcessingJobs

SET status = 'pending', processingstartedat = NULL, workerid = NULL

WHERE status = 'processing'

AND processingstartedat < DATESUB(NOW(), INTERVAL 1 HOUR);

 

 

Error:
High failure rate for specific job type


Cause: System dependency issue (FFmpeg, disk space, CDN)
Solution:

  1. Check FFmpeg installation: ffmpeg -version
  2. Verify disk space: df -h
  3. Test CDN connectivity
  4. Review specific error messages

 

 

Error:
Pending jobs not being processed


Cause: Cron job not running
Solution:

  1. Verify cron job is configured:

 

crontab -l | grep videoprocessor

 

  1. Test manual execution:

 

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

 

  1. Check processor logs for errors

 

 

Warning:
High average wait time


Cause: More jobs being created than processed
Solution:

  1. Increase processor frequency (run more often)
  2. Reduce concurrent upload volume
  3. Add additional processing workers
  4. Prioritize important videos with higher priority values

 

Database Performance

 

Tip:
For optimal dashboard performance:
  1. Ensure indexes exist on tblVideoProcessingJobs
  2. Consider archiving old completed jobs
  3. Views are pre-calculated for efficiency

 

-- Archive completed jobs older than 30 days
INSERT INTO tblVideoProcessingJobsArchive
SELECT * FROM tblVideoProcessingJobs
WHERE status = 'completed'
AND processingcompletedat < DATESUB(NOW(), INTERVAL 30 DAY);

DELETE FROM tblVideoProcessingJobs
WHERE status = 'completed'
AND processing
completedat < DATESUB(NOW(), INTERVAL 30 DAY);

 


Color Coding Reference

Status Colors

Status Color Hex
Pending Yellow #f39c12
Processing Blue #3498db
Completed Green #27ae60
Failed Red #e74c3c
Cancelled Gray #95a5a6

Priority Levels

Priority Level Color
8-10 High Red
5-7 Medium Yellow
1-4 Low Gray

Translatable Strings

The following strings should be added to backendtranslations.md:

videoprocessordashboardtitle = "Video Processing Dashboard"
videoprocessordashboardbreadcrumb = "Video Processing Dashboard"
videoprocessordashboardsubtitle = "Real-time monitoring and status of video processing queue"
videoprocessordashboardsettings = "Settings"
videoprocessordashboardqueuevisualizer = "Queue Visualizer"
videoprocessordashboardrefresh = "Refresh"
videoprocessordashboardautorefresh = "Auto Refresh"
videoprocessordashboardautorefreshon = "On"
videoprocessordashboardautorefreshoff = "Off"
videoprocessordashboard1h = "1h"
videoprocessordashboard24h = "24h"
videoprocessordashboard7d = "7d"
videoprocessordashboard30d = "30d"
videoprocessordashboardpendingjobs = "Pending Jobs"
videoprocessordashboardprocessingjobs = "Processing Jobs"
videoprocessordashboardcompletedtoday = "Completed Today"
videoprocessordashboardfailedtoday = "Failed Today"
videoprocessordashboardavgwaittime = "Avg Wait Time"
videoprocessordashboardavgprocessingtime = "Avg Processing Time"
videoprocessordashboardjobtypebreakdown = "Job Type Breakdown"
videoprocessordashboardjobtype = "Job Type"
videoprocessordashboardtotal = "Total"
videoprocessordashboardcompleted = "Completed"
videoprocessordashboardfailed = "Failed"
videoprocessordashboardavgtime = "Avg Time"
videoprocessordashboardsuccessrate = "Success Rate"
videoprocessordashboardrecenterrors = "Recent Processing Errors"
videoprocessordashboardclearall = "Clear All Errors"
videoprocessordashboardjobid = "Job ID"
videoprocessordashboardvideo = "Video"
videoprocessordashboarderror = "Error"
videoprocessordashboardattempts = "Attempts"
videoprocessordashboardtime = "Time"
videoprocessordashboardactions = "Actions"
videoprocessordashboardacknowledge = "Acknowledge"
videoprocessordashboardhourlytrend = "Hourly Processing Trend"
videoprocessordashboardcurrentlyprocessing = "Currently Processing"
videoprocessordashboardstarted = "Started"
videoprocessordashboardduration = "Duration"
videoprocessordashboardworker = "Worker"
videoprocessordashboardpendingqueue = "Pending Queue Preview"
videoprocessordashboardpriority = "Priority"
videoprocessordashboardwaittime = "Wait Time"
videoprocessordashboardnoerrors = "No unacknowledged errors"
videoprocessordashboardnoprocessing = "No jobs currently processing"
videoprocessordashboardnopending = "No pending jobs"
videoprocessordashboardclearconfirm = "Are you sure you want to acknowledge all errors?"

Version History

Version Date Changes
1.0 2024-10 Initial release with queue monitoring
1.1 2024-11 Added hourly trend chart with Chart.js
1.2 2024-12 Added auto-refresh toggle and interval selector
1.3 2025-01 Added database views for optimized queries