Видео может быть хорошим вариантом.
Вот пара советов:
vgUpdateTime ($ currentTime, $ duration): Вызывается при времени выполнениябыл обновленВозвращает текущее время и общую продолжительность.
seekTime (value, byPercent): Поиск в указанной временной позиции. Значение параметра должно быть целым числом, представляющим целевую позицию в секундах или процентах. По умолчанию seekTime ищет по секундам, если вы хотите искать по процентам, просто передайте byPercent в true.