/ / Silverlight MediaElement Position Propriedade estranheza - silverlight, audio, mediaelement

Silverlight MediaElement Posição Propriedade estranheza - silverlight, audio, mediaelement

Eu tenho um MediaElement que está relatando suaposição incorreta e estranha, mas de forma consistente. Parece que quando chega ao último segundo do áudio (e é sempre o último segundo, independentemente de o som ser de dois segundos ou 10), ele não atualiza a posição até que termine.


Exemplo de saída:

Progresso da Reprodução: 0 / 3.99 - 0 Reprodução

Progresso: 0,01 / 3,99 - 0 Reprodução

Progresso: 0,03 / 3,99 - 0 Reprodução

Progresso: 0,06 / 3,99 - 1 Reprodução

Progresso: 0,07 / 3,99 - 1 Reprodução

Progresso: 0,08 / 3,99 - 2 Reprodução

Progresso: 0,11 / 3,99 - 2 Reprodução

Progresso: 0,14 / 3,99 - 3 Reprodução

Progresso: 0,19 / 3,99 - 4 Reprodução

Progresso: 0,23 / 3,99 - 5 Reprodução

Progresso: 0,25 / 3,99 - 6 Reprodução

Progresso: 0,28 / 3,99 - 7 Reprodução

Progresso: 0,3 / 3,99 - 7 Reprodução

[RECORTE]

Progresso de reprodução: 2,8 / 3,99 - 70

Progresso da reprodução: 2,83 / 3,99 - 70

Progresso da reprodução: 2,88 / 3,99 - 72

Progresso da reprodução: 2,9 / 3,99 - 72

Progresso da reprodução: 2,91 / 3,99 - 72

Progresso da reprodução: 2,92 / 3,99 - 73

Progresso da reprodução: 2,99 / 3,99 - 74

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da Reprodução: 3 / 3.99 - 75

Progresso da reprodução: 3,99 / 3,99 - 100


Esse é o resultado de:

    WriteLine("Playback Progress: " + Position + "/" + LengthInSeconds + " - " + (int)((Position / LengthInSeconds) * 100));

public double Position
{
get
{
return my_media_element != null ? my_media_element.Position.TotalSeconds : 0;
}
}

public double LengthInSeconds
{
get
{
return my_media_element != null ? my_media_element.NaturalDuration.TimeSpan.TotalSeconds : 0;
}
}

Alguém tem alguma idéia porque isso está ocorrendo?

Respostas:

2 para resposta № 1

A propriedade Position no Silverlight tem um efeito de "clamping" que pode causar isso, para impedir que digamos os últimos 1s do conteúdo.

Infelizmente não há nenhuma correção fácil AFAIK.