Xymis, похоже на стандартную «задачу об упаковке» (bin packing) — требуется так расставить эти отрезки в рамках суток, чтобы высота была минимальна, т.е. они максимально плотно улеглись в минимум строк. В общем случае решается полным перебором.
доставляемость писем, попадание их в спам в ящиках получаетелей – за рамками этого вопроса. Но часто лучше воспользоваться сервисом доставки, чем просто mail() с сервера.
непонятно, как сортировать. Вроде бы по возрастанию. Но с девяткой в примере 4 «разряда», а у остальных всего по 3. Выходит, число разрядов влияет не в начале, а в конце сравнений, и "1/2/3" окажется «больше», чем "1/2". Но при этом же "1/2/3" меньше, чем "2/2".
Дописываем короткие цепочки нулями, но не слева, а справа? "1/2/3" > "1/2/0"; "1/2/3" < "2/2/0";
Уточните порядок сортировки.
В целом задача несколько неоправданно выглядит: так и так придётся загружать видео целиком и «проигрывать», чтобы получить кадр. Наверное, нет смысла делать это в вокрере в фоне, только лишняя работа по пересылке кадра из воркера в интерфейс.
Превью кадров имеют смысл только в сочетании с бэком, где хранятся кадры, скажем один на 5 секунд, в виде облегченной уменьшенной картинки.
И вопрос про CORS: сервер с видео ведь отдаёт нужные заголовки? Иначе отрисовать видео в canvas получится, но будет считаться небезопасным, и кадр оттуда не получить.