Пользовательские свойства MediaStreamSource и MediaElement.Naturalduration
Я написал пользовательский источник медиастрима, который может воспроизводить мультимедиа из растущих исходных файлов (транспортные потоки MPEG). Как только он достигает конца своего медиапотока, он читает новую длительность из медиафайла и продолжает доставлять образцы. MediaElement играет постоянно.
К сожалению, я не нашел способа обновить свойство MediaElement.NaturalDuration. Следовательно, я не могу искать в "перезагруженной" области, потому что ME не знает об этом и устанавливает изменение моей позиции в значение NaturalDuration.
Я попытался вызвать ReportOpenMediaCompleted после получения новой длины потока. Затем Naturalduration обновляется, но я больше не могу играть.
Есть ли другой способ справиться с этим?
1 ответ
Иногда жизнь может быть такой легкой:-)
Я решил это, дав MediaElement значение "фантазии" продолжительности при инициализации моего MediaStreamSource:
protected override void OpenMediaAsync()
{
...
mediaSourceAttributes[MediaSourceAttributesKeys.Duration] = TimeSpan.FromHours(10).Ticks.ToString(CultureInfo.InvariantCulture);
this.ReportOpenMediaCompleted(mediaSourceAttributes, mediaStreamDescriptions);
}
Осталось только обновить элемент управления ползунка с "реальной" продолжительностью. Теперь это работает как шарм...
Тило