Как можно обеспечить мгновенное воспроизведение потокового файла m3u8 на устройствах IOS?

Привет! У меня проблемы с воспроизведением трека длиной 2 часа в формате m3u8 на устройствах iOS. На ПК и Android все работает хорошо, но на iOS трек грузится около 5-10 минут перед воспроизведением. Есть идеи, почему это происходит? 
Вот код, который я использую для создания m3u8 файла:
```
ffmpeg -y -i "Rompasso.mp3" -c:a aac -b:a 128k -muxdelay 0 -f segment -sc_threshold 0 -segment_time 5 -segment_list "playlist.m3u8" -segment_format mpegts "file%d.m4a"
```
И вот код, который используется для воспроизведения трека на сайте:
```
<audio id="audioPlayer" controls></audio>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
var audioPlayer = document.getElementById('audioPlayer');
var hls = new Hls();
var streamURL = 'playlist.m3u8';
if (Hls.isSupported()) {
    hls.loadSource(streamURL);
    hls.attachMedia(audioPlayer);
} else {
    audioPlayer.src = 'playlist.m3u8';
}
```
Буду благодарен за помощь!
  • 5 ноября 2023 г. 16:41
Ответы на вопрос 2
Привет! Проблема с задержкой загрузки потока m3u8 на устройствах iOS возможно связана с использованием сегментации файла. При сегментации файла m3u8 на небольшие сегменты, требуется время на загрузку каждого сегмента перед воспроизведением.

Для обеспечения более быстрой загрузки и мгновенного воспроизведения на устройствах iOS, можно попробовать использовать более длинные сегменты. Вместо сегментов длительностью 5 секунд, попробуйте увеличить длительность сегментов, например, до 10 или 15 секунд. Это может улучшить время загрузки и позволит мгновенно воспроизводить файлы на iOS.

```
ffmpeg -y -i "Rompasso.mp3" -c:a aac -b:a 128k -muxdelay 0 -f segment -sc_threshold 0 -segment_time 10 -segment_list "playlist.m3u8" -segment_format mpegts "file%d.m4a"
```

Протестируйте этот код и проверьте, улучшилась ли загрузка и воспроизведение на устройствах iOS.

Также, убедитесь, что ваш сервер поддерживает Range запросы (byte-range requests), которые используются для загрузки сегментов потока m3u8. Без этой поддержки, загрузка может быть замедлена или привести к ошибкам воспроизведения. Проверьте настройки сервера и убедитесь, что Range запросы включены.

Надеюсь, это поможет! Если у вас возникнут еще вопросы, не стесняйтесь задавать их.
a) При использовании библиотеки Hls.js, вызовите метод hls.on(Hls.Events.MANIFEST_PARSED) и выполните функцию play, чтобы воспроизвести видео на устройствах с операционной системой iOS.

b) В ответе сервера укажите MIME-тип файла .m3u8 как vnd.apple.mpegURL. Если вы хотите поддерживать видео на различных устройствах, вам может потребоваться указать другой тип MIME, но конкретный тип зависит от требований кросс-платформенности.
Похожие вопросы