Как да направите аудио предаване на живо

Трябва да излъча аудиосъдържание към мрежата, да го получа и възпроизвеждам в браузъра „в движение“. Аудио съдържанието е само списък от mp3 файлове. и от страна на клиента трябва да изглежда като безкраен аудио поток без състояние. Нещо като предавания на живо в YouTube. Или нещо като онлайн радио. Но аз наистина не знам нищо за това. Може ли някой да ми помогне с това? Как работи, кой протокол се използва за изпращане и получаване на данни? Всичко, което може да ми помогне с това. В най-добрия случай търся решение за .NET, но ще се радвам на всичко, което може да помогне, поне да разбера как работи като цяло. Благодаря ти.


person user3233682    schedule 08.12.2018    source източник
comment
DASH и HLS са най-често срещаните техники за поточно предаване на аудио/видео на живо   -  person L.B    schedule 09.12.2018


Отговори (1)


Един от начините да го направите е с помощта на ffmpeg.

Можете да използвате ffmpeg, за да създадете DASH или HLS плейлист https://ffmpeg.org/ffmpeg-formats.html#hls-2

FFMPEG поддържа и други решения за стрийминг.

За да извикате ffmpeg, трябва да намерите двоични файлове, които са съвместими с вашата система, на която работи сървърът ви (windows, linux). Ето как можете да стартирате външен процес от C#: Как да стартирам процес от C#?

За да възпроизведете своя плейлист в браузър, можете да използвате VideoJS. Има вградена поддръжка за DASH и HLS: https://videojs.com/ (може да възпроизвежда и аудио )

Изградете своята логика за управление/актуализиране на плейлисти и след това просто трябва да създадете HTTP услуга, която може да обслужва вашия файл с плейлист. VideoJS ще го възпроизведе вместо вас.

Ако използвате HLS, вероятно трябва да прочетете това: https://developer.apple.com/streaming/

Ако използвате DASH, прочетете това: https://mpeg.chiariglione.org/standards/mpeg-dash

Друг начин е да използвате готови решения, които често не са безплатни:

person BART    schedule 08.12.2018
comment
Изглежда като това, което наистина търся. Благодаря ти. - person user3233682; 09.12.2018
comment
Но в случай, че искам да поставя на пауза поточно предаване на аудио и след това в бъдеще, разбира се, да го възобновя от мястото, където съм спрял. И така, какво трябва да направя с моя файл с плейлист m3u8, за да „поставя на пауза“ стрийминг? и след това за възобновяване? - person user3233682; 09.12.2018
comment
И от страна на клиента трябва да изглежда, че потокът продължава, но нищо не се възпроизвежда. Така че може ли да се направи с HLS? - person user3233682; 09.12.2018
comment
Също така, прав ли съм, от страна на клиента трябва периодично ръчно да изтеглям и актуализирам плейлиста си чрез js, ако има промени? Ето за какво имам нужда от VideoJs, нали? Или това ще бъде направено от браузър/ос с магия? - person user3233682; 09.12.2018
comment
Да, VideoJS ще проверява периодично дали вашият плейлист е променен. Можете да конфигурирате videojs и актуализациите на вашия плейлист, така че да изглежда като непрекъснат поток. Паузата може да бъде приложена по много начини, на вашия стрийминг сървър или клиент/браузър или някаква комбинация от двете, евентуално използвайки SignalR като комуникационен канал между браузъра и вашия сървър. Някои браузъри може да не ви позволяват да използвате функцията за автоматично пускане без взаимодействие с потребителя: stackoverflow.com/a/49391211/6440521 Не съм сигурен дали това обаче се отнася за аудиото - person BART; 10.12.2018