Написание кастомного класса MediaStreamSource по примеру

Цена договорная • безналичный расчёт, электронные деньги
08 августа 2015, 21:33 • 0 откликов • 20 просмотров
Здравствуйте!
На платформе Windows существует проблема еще со времен Windows 8.0, проблема перекочевала в Windows 10.
Суть проблемы: имеется радио приложение, написанное для магазина Windows. Далее проект был конвертирован в универсальный, была попытка разработать версию под Windows Phone. Оказалось, что некоторые радио потоки встроенный в Windows Phone проигрыватель не умеет читать. И еще хуже, в приложении на Windows для этих проблемных потоков система создает гигантский кеш (несколько гигабайт), в то время как для нормальных потоков этот кеш быстро удаляется и не засоряет диск.

Был задан вопрос на форуме MSDN, сотрудник MS прояснил ситуацию, в принципе это недоработка разработчиков Windows/Windows Phone (ведь на Android и iOS все работает прекрасно), есть обходное решение через написание своего класса MediaStreamSource, подробности в этой теме https://social.msdn.microsoft.com/Forums/en-US/317...

Существует еще вторая проблема, в приложении написан класс, который создает второй поток и парсит название артиста и песни и выводит данные в текстблок, нужно сделать, чтобы создавался единый поток через написанный класс MediaStreamSource, он же передавался и на парсинг и в MediaElement. Алгоритм парсинга уже есть, отправлю тестовый проект, нужно просто внедрить.

Таким образом должен быть такой тестовый проект с простым интерфейсом:
универсальный проект с Windows и Windows Phone 8.1, кнопка включения радиостанции и кнопка стоп для отключения проигрывания, в момент отключения заканчивается прием данных, проигрывание музыки. При включении начинаем играть и парсить данные об артисте. Следим за папкой AC/InetCache в папке приложения,  убеждаемся, что кеш не копится, данные об артисте не зависают, нужно использовать минимум 2 станции (адреса вещания я передам), убедиться, что при переключении станций текст не зависает. Убедиться, что система не убивает поток через некоторые время, опытным путем выяснилось, что Windows Phone отключает потоки через некоторое время и через несколько попыток переподключения не дает подключиться, но это для обычных потоков, а не Media.