Как мне перехватить бесконечный сетевой поток и отфильтровать метаданные в dart? - PullRequest
1 голос
/ 01 ноября 2019

Я пишу приложение для радиостанции в Германии и хочу получить информацию о заголовке аудиопотока с их сервера Icecast. Как получить аудиопоток во Flutter / Dart и отфильтровать метаданные аудио для отображения названия песни?

Я уже получил код для получения номера icy-metaint, необходимого для подсчета байтов (аудиоданные mp3) до байта, показывающего, какова длина строки метаданных. (В моем случае это 16000)

Мой код для получения целого числа icy-metaint:

Future<Map> getInfoDataFromIceCastStream(String url) async {
    var request = http.Request('GET', Uri.parse(url));
    request.headers['Icy-MetaData'] = '1';
    var response = await request.send();
    var headers = response.headers;

    return headers;
  }

  Future<int> getIcyMetaInt(String url) async {
    Map metaData = await getInfoDataFromIceCastStream(url);
    print(metaData['icy-metaint']);
    return int.parse(metaData['icy-metaint']);
  }

В конце я ожидаю получить строку вроде: StreamTitle='Gong 96.3 - Mark Forster - Chöre';StreamUrl='';

...