2009-07-16 4 views
0

Gibt es eine Möglichkeit, ein Video an einer bestimmten Position mit Windows Media Player SDK zu stoppen? Ich verwende C#, um den Player einzubetten und zu überprüfen, ob die IWMPControls3-Schnittstelle an einem bestimmten Punkt in Bezug auf Position oder Zeit angehalten werden kann. Wenn es gemacht werden kann, wie geht das?Stoppen Sie das Video an einer bestimmten Position mit Windows Media Player SDK

+1

Warum keine Pause zu verwenden und dann put_currentPosition? –

+1

Angenommen, Sie pausieren und setzen die aktuelle Position, und das Video wird an dieser Position wiedergegeben. Wie kann ich das Video an einer anderen Position anhalten? – Arvind

+0

Sie können von der Position auch lesen. Stellen Sie einen Timer ein, um die Position zu lesen, und stoppen Sie dann den Player, wenn er die Position erreicht, die Ihnen wichtig ist. –

Antwort

1

Es kann sicherlich getan werden, obwohl ich mich nicht mehr an die Techniken erinnere. Es gibt Möglichkeiten, auf die Daten im Stream gut genug zuzugreifen, um das Audio und einzelne Frames des Videos zu rekonstruieren. Die Leute haben Systeme geschrieben, wo der Benutzer eine genaue Zeit- und Bildnummer eingeben kann und der Videoplayer zu dieser Stelle springt.

Da Ihre Frage war "gibt es einen Weg", ist die Antwort "Ja". Allerdings kann ich mich nicht genug an die Besonderheiten erinnern, um Ihnen zu sagen, wie es geht.

0

Wie ich in der same question here erklärt, können Sie einen Timer verwenden, um die Currentposition zu steuern:

private Timer tmrWmpPlayerPosition; 
private TimeSpan StopPosition; 

private void btn_Click(object sender, EventArgs e) 
{ 
    wmpPlayer.Ctlcontrols.currentPosition = 4; 
    StopPosition=TimeSpan.Parse("00:20:20"); 
    StopWmpPlayerTimer(); 
    StartWmpPlayerTimer(); 
} 

private void tmrWmpPlayerPosition_Tick(object sender, EventArgs e) 
{ 
    if ((Convert.ToInt32(StopPosition.TotalSeconds) != Convert.ToInt32(wmpPlayer.Ctlcontrols.currentPosition))) return; 
    wmpPlayer.Ctlcontrols.pause(); 
    StopWmpPlayerTimer(); 
} 

private void StartWmpPlayerTimer() 
{ 
    tmrWmpPlayerPosition = new Timer(); 
    tmrWmpPlayerPosition.Tick += new EventHandler(tmrWmpPlayerPosition_Tick); 
    tmrWmpPlayerPosition.Enabled = true; 
    tmrWmpPlayerPosition.Interval = 1000; 
    tmrWmpPlayerPosition.Start(); 
} 

private void StopWmpPlayerTimer() 
{ 
    if (tmrWmpPlayerPosition != null) 
     tmrWmpPlayerPosition.Dispose(); 
    tmrWmpPlayerPosition = null; 
} 
Verwandte Themen