xeeqqw
@xeeqqw
WEB-программист на ASP.NET MVC

Клик по временной шкале audio-элемента приводит к перезапуску аудио трека. Почему так?

Всем доброго времени суток!

У меня имеется следующая ситуация: в базе данных хранится mp3-файл. На стороне сервера я перевожу его в массив байтов и передаю клиенту:

public FileResult StreamTrack(int VoiceId)
{
        var file = repo.StreamTrack(VoiceId);
        return File(file.ToArray(), "audio/mpeg");
}


На стороне клиента код выглядит примерно так:
<audio controls preload="none" codecs="mp3">
    <source type="audio/mp3" src="/Home/StreamTrack?VoiceId=216">
</audio>


При нажатии на Play аудиотрек воспроизводится нормально. Элементы управления, такие как Play и Pause, работают также без проблем. НО, при попытке тыкнуть в определённое место на таймлайне, аудиотрек запускается заново. Причём, если в качестве атрибута src указать путь к физическому mp3 файлу, то всё будет работать прекрасно! Следовательно, я как-то не так организовал возвращение аудиофайла с сервера. Не могли бы вы подсказать, как быть в такой ситуации?
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
xeeqqw
@xeeqqw Автор вопроса
WEB-программист на ASP.NET MVC
Проблема решилась путём добавления заголовка:
Response.AppendHeader("Accept-Ranges", "bytes");

Итого метод теперь такой:
public FileResult StreamTrack(int VoiceId)
{
        Response.AppendHeader("Accept-Ranges", "bytes");
        var file = repo.StreamTrack(Response, VoiceId);
        return File(file.ToArray(), "audio/mpeg");
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы