Пользовательские свойства 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);
}

Осталось только обновить элемент управления ползунка с "реальной" продолжительностью. Теперь это работает как шарм...

Тило

Другие вопросы по тегам