У элемента video есть событие canplay, которое происходит в момент, когда загружены метаданные + небольшой фрагмент ролика, который уже можно проигрывать
Но если задача отобразить прелоадер, то по-хорошему нужно учесть момент медленного инета, и тут уже буферинг
Добавлю так же, что сам не пробовал, но подсмотрел у ютуба и есть желание как нибудь реализовать: видеопоток грузится по вебсокету и пишется в blob, а в плеер отдается url этого blob, в итоге получаем полный контроль над загрузкой