public static function scan($dir)
 {
     $subdirs = array();
     $mp4s = array();
     if ($handle = opendir($dir)) {
         while (false !== ($entry = readdir($handle))) {
             if ($entry != "." && $entry != "..") {
                 if (is_dir($dir . "/" . $entry)) {
                     $subdirs[] = "/" . $entry;
                 } elseif (in_array(pathinfo($entry, PATHINFO_EXTENSION), array("mp4", "ffconcat"))) {
                     $mp4s[] = $entry;
                 }
             }
         }
         closedir($handle);
     }
     usort($subdirs, 'self::mb_strnatcasecmp');
     usort($mp4s, 'self::mb_strnatcasecmp');
     self::$files = array_merge((array) "/..", $subdirs, $mp4s);
     return json_encode(self::$files, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
 }