1

Тема: Стрімінг файлу (аудіо).

Привіт. Цікавить наступне..
Допустимо є готовий audio.mp3 файл і http://host/stream - сторінка, яка повинна стрімити цей файл.
Кінцевий результат повинен бути таким, що кожен, хто запускає..
<audio src="http://host/stream"></audio>
повинен отримувати одні й ті ж дані (музику) в потоці. Можна сказати інтернет-радіо.

Отже, як бачу ралізацію і чи правильно це взагалі..
Беремо файл audio.mp3

Псевдокод..

HTTP/ stream
Заголовки аудіо файлу

Поки (можна_зчитатувати_файл(файл) ) {

  зчитуємо шматок файла по N кб наприклад
      виводимо результат
      чистимо буфер виводу
      
      зупиняємо цикл на 1 сек.
      //далі в циклі видаємо наступну порцію по N кб

}

Але ж при новому завантаженні /stream дані просто наново почнуть  завантажуватися з початку файлу..
Отже потрібно створити окремий потік для зчитування тільки тих даних, які "нові",а не з початку.
Для цього може підійти запис в окремий mp3 файл поступаючих даних?
З якого боку взагалі підійти?
Я наче розумію що до чого, але до купи зібрати не можу.

Подякували: ostap34PHP, 0xDADA11C7, Monolith, 221VOLT4

2 Востаннє редагувалося ostap34PHP (07.01.2018 12:24:15)

Re: Стрімінг файлу (аудіо).

Знайшов в гуглі, може допоможе...
PHP
http://php.net/manual/en/swfmovie.streammp3.php
https://github.com/gadgetguru/PHP-Streaming-Audio
https://stackoverflow.com/questions/149 … hrough-php
http://php.net/manual/ru/function.strea … a-data.php
https://stackoverflow.com/questions/114 … on-android
https://www.script-tutorials.com/stream-radio-script/
http://codesamplez.com/programming/php- … g-tutorial
https://stackoverflow.com/questions/235 … eaming-mp3
Node.js
https://medium.com/@daspinola/video-str … 0b3191a6b6
https://gist.github.com/paolorossi/1993068
https://stackoverflow.com/questions/249 … he-video-c
https://medium.freecodecamp.org/node-js … 141306be93
https://github.com/noamtcohen/AudioStreamer
https://github.com/audiojs/web-audio-stream
https://stackoverflow.com/questions/384 … to-clients

Подякували: 221VOLT1

3

Re: Стрімінг файлу (аудіо).

Дякую,якби не ви, я б точно перед цим не нагуглив би.
Питання відкрите.

Подякували: 0xDADA11C7, 221VOLT2

4

Re: Стрімінг файлу (аудіо).

koala, чекаю на вас.

5

Re: Стрімінг файлу (аудіо).

А що я? Я такого ніколи не робив.
Суто теоретично - може, нарізати потік по секундах, і хто під'єднується - отримує потік цих секунд після маленької паузи (для синхронізації), а хто не встиг якусь секунду вчасно завантажити - отримує секунду тиші? Бо все одно mp3 - це не raw data, там треба не тупо різати, а перекодовувати (хоча б контейнер і починати з кейфрейму).

Так, мабуть, тут в будь-якому разі якісь дії з синхронізації доведеться робити руками з боку клієнта - бо є ймовірність, що клієнт має завузький канал.

Подякували: 0xDADA11C7, VTrim, Monolith, 221VOLT, ostap34PHP5

6 Востаннє редагувалося /KIT\ (08.07.2021 13:17:10)

Re: Стрімінг файлу (аудіо).

`

7

Re: Стрімінг файлу (аудіо).

/KIT\ написав:

Юзайте IceCast2 або ShoutCast.

Справа в тому, що я хочу аби кожен юзер міг стрімити своє, отже потрібне кастомне рішення.
//
Взагалі,  моє костильне рішення таке.
Юзер тицяє на файл, запускається eventlistener для timeupdate треку в js і всім, хто заходить на сторінку трек перемотується на той час треку, який транслюю я. Працює через websocket.
По суті це віддалений контроль плеєра користувача, а не стрім :D
Є ще рішення з WebRTC, але воно теж сировате.

Подякували: Monolith, NaharD, 0xDADA11C7, sensei, 221VOLT5

8

Re: Стрімінг файлу (аудіо).

Можливо трохи не то, але http://replace.org.ua/topic/6464/
Я би однозначно в сторону онлайн радіо гуглив і дивився, як то інші роблять

Подякували: 221VOLT, ostap34PHP2

9

Re: Стрімінг файлу (аудіо).

Все далеко не так просто як я міг подумати..
Ідея з керуванням плеєром вже не виглядає так погано :D

Подякували: 221VOLT1

10

Re: Стрімінг файлу (аудіо).

тема цікава однако

VTrim написав:

Є ще рішення з WebRTC, але воно теж сировате.

чим саме воно сирувате, якщо в декількох словах?

справді цікаво, і я не вкурсі, не підколюю )

Подякували: 0xDADA11C7, Monolith, ostap34PHP3

11

Re: Стрімінг файлу (аудіо).

221VOLT написав:

тема цікава однако

VTrim написав:

Є ще рішення з WebRTC, але воно теж сировате.

чим саме воно сирувате, якщо в декількох словах?

справді цікаво, і я не вкурсі, не підколюю )

Ось демо
https://rtcmulticonnection.herokuapp.co … aming.html
Просто далеко не всі (а тим більше мобільні) браузери це підтримують повністю, а там ряд нових API.
А так, все працює.

Подякували: 221VOLT1

12 Востаннє редагувалося VTrim (08.01.2018 10:05:32)

Re: Стрімінг файлу (аудіо).

І там стрімінг такий, що транслюється файл з файлової системи пристрою.
Треба спробувати переписати на стрім віддаленого файлу (по http).
Вроді робиться ajax запит до mp3 і зчитується в arraybuffer.

Подякували: 221VOLT1