MediaElement буферизируется, когда MediaStreamSource имеет достаточно образцов (приложение магазина Windows 8.1)
У меня есть приложение для Windows 8.1 (НЕ Silverlight или WPF), которое воспроизводит пользовательский аудио / видео поток (файл aac/h264 в формате ASF).
Я анализирую поток и предоставляю образцы MediaStreamSource для MediaElement (в событии MSS SampleRequested). Поток воспроизводится нормально в течение нескольких секунд, а затем приостанавливается (состояние MediaElement изменяется с воспроизведения на буферизацию), затем он воспроизводится снова и снова останавливается и т. Д. Я проверил, что MediaStreamSource имеет достаточно сэмплов для подачи в MediaElement (мне никогда не нужно использовать отсрочку).
Условия сети идеальны (я передаю мультимедийный файл через ISS на тот же компьютер, на котором я запускаю приложение). Если я играю только аудио или только видео часть файла, он работает нормально, без пауз. Увеличение MSS Buffertime уменьшает проблему. Буду признателен за любые советы о том, как решить эту проблему.
1 ответ
Если у вас все еще есть проблемы с этим, на ум приходят две вещи:
- Убедитесь, что ваши аудио и видео метки времени начинаются с (или очень близко) нуля.
- Убедитесь, что они оба увеличиваются разумным образом и не расходятся слишком далеко друг от друга.
Также для тех, кто использует отсрочки (вы сказали, что это не так), убедитесь, что отсрочки аудио и видео разделены.
Я портировал некоторый код, который воспроизводит аудио / видео поток с Windows Phone, на новый MSS в Win8.1 и обнаружил, что с ним намного проще справиться. (По крайней мере, меня пока ничто не укусило. Стук по дереву...?) В любом случае, это работает для меня: WinRtMediaStreamSource.cs