MediaStreamSource не работает должным образом в Windows Phone 8.1

Я создал проект, в котором используется оригинальный код libFLAC.dll для воспроизведения файлов FLAC на Windows Phone 8.0. Раньше он работал как в MediaElement, так и в фоновом режиме на WP 8.0, но после обновления проекта до Windows Phone 8.1 звук стал мерцать и компоненты начали "переполняться стеком".

Я обновил проект до проекта Windows Phone 8.1 Runtime, поскольку Silverlight 8.1 не поддерживает фоновое аудио. Хотя проблемы были при использовании фонового аудио и MediaElement в приложении Windows Phone Runtime.

Поскольку это кажется неясным, я хочу уточнить: я создал адаптер MediaStreamSource, который перехватывает события Windows.Media.Core.MediaStreamSource и выполняет всю работу. Я, конечно, не использую реализацию Silverlight MediaStreamSource.

Я создал тема на форумах MSDN, где можно найти более подробную информацию, и открытый проект на CodePlex, чтобы каждый мог просто взять исходный код для WP 8.0 и WP 8.1 и посмотреть, что пошло не так.

Я действительно надеюсь, что кто-то сможет найти обходной путь или, по крайней мере, заставить Microsoft признать проблему.


person Alovchin    schedule 15.04.2014    source источник
comment
Уточните в своем вопросе, выполнили ли вы обновление до Silverlight 8.1 или универсального приложения.   -  person Claus Jørgensen    schedule 15.04.2014
comment
@ ClausJørgensen-MSFT Я обновил вопрос. Я использовал проект Windows Phone Runtime 8.1, а не Silverlight 8.1 (поскольку он не поддерживает новый фоновый звук). Вы можете взять код из CodePlex.   -  person Alovchin    schedule 15.04.2014
comment
Хорошо, но тогда вы не сможете использовать MediaStreamSource, так как он не совместим с универсальными приложениями. Вам потребуется переписать код для работы в среде выполнения Windows.   -  person Claus Jørgensen    schedule 15.04.2014
comment
Конечно, вы можете использовать MediaStreamSource в Universal. Почему вы думаете, что не можете???   -  person Clinton Ward    schedule 04.06.2016


Ответы (1)


Итак, спасибо сообществу форумов MSDN, особенно @mcosmin, решение было найдено, и оно довольно простое.

Чтобы исправить это, мне просто нужно установить свойство Duration для MediaStreamSample, потому что в отличие от образца Silverlight, образец WinRT не может вычислить его самостоятельно.

person Alovchin    schedule 15.08.2014