Единственный способ сделать это эффективно - это потоковая передача файла через ваш PHP-скрипт с readfile()
. Используя этот метод, вы можете подсчитать количество отправленных байтов и сделать предположение о том, сколько было воспроизведено на стороне клиента.
Невозможно, однако, узнать (без каких-либо измерений на стороне клиента), что было сыграно. Разные проигрыватели буферизуют данные по-разному, и даже это часто зависит от условий сети. Вы можете только знать, сколько данных вы отправили клиенту. Обычно для аналитики этой информации достаточно, поскольку она обычно используется для сравнения с другими воспроизводимыми треками. Вы можете использовать инструмент, такой как FFMPEG, чтобы определить длину звука в файле и разделить ее на процент данных в файле, который вы отправили. Это будет менее точным для треков с переменным битрейтом, но будет наиболее эффективным способом вывести вас на стадион.