What are some best practices for efficiently handling video uploads and processing in a PHP-based video community platform?

Issue: Efficiently handling video uploads and processing in a PHP-based video community platform involves optimizing the upload process, validating file types and sizes, securely storing videos, and implementing background processing for encoding and thumbnail generation.

// Example PHP code snippet for handling video uploads and processing

// 1. Validate file type and size
$allowed_types = ['video/mp4', 'video/mpeg', 'video/quicktime'];
$max_size = 5000000; // 5MB

if (!in_array($_FILES['video']['type'], $allowed_types) || $_FILES['video']['size'] > $max_size) {
    die('Invalid file type or size.');
}

// 2. Securely store video
$upload_dir = 'uploads/';
$video_path = $upload_dir . $_FILES['video']['name'];

if (!move_uploaded_file($_FILES['video']['tmp_name'], $video_path)) {
    die('Failed to upload video.');
}

// 3. Background processing for encoding and thumbnail generation
$cmd = 'ffmpeg -i ' . $video_path . ' -c:v libx264 -c:a aac -strict -2 ' . $video_path . '.mp4';
exec($cmd);

$thumbnail_cmd = 'ffmpeg -i ' . $video_path . ' -ss 00:00:05 -vframes 1 ' . $video_path . '.jpg';
exec($thumbnail_cmd);