nobr
@nobr
Front-end / Shadow DOM / Canvas

Как обновить кадр видео в MediaElement? C# WPF?

Решение найдено. В XAML’е в тег элемента нужно добавить свойство ScrubbingEnabled="True".




Есть медиаэлемент, в нём ролик AVI. По клику на одну кнопку выполняется метод mediaElement.Play();, на другую — mediaElement.Pause();


Есть слайдер, значение которого используется для выставления позиции видеоролика.

public DispatcherTimer _timer = new DispatcherTimer();
    public int waitnum = 3000;
    double TotalTime = 0;

    public MainWindow()
    {
        _timer.Interval = TimeSpan.FromSeconds(1);
        _timer.Tick += new EventHandler(_timer_Tick);
        InitializeComponent();
    }

    void _timer_Tick(object sender, EventArgs e)
    {
        double tPass = mediaElement1.Position.TotalSeconds;
        slider.Value = tPass;
    } 

    private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
    {
        slider.Maximum = mediaElement1.NaturalDuration.TimeSpan.TotalSeconds;
    }

    private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        _timer.Stop();
        TimeSpan ts = TimeSpan.FromSeconds(slider.Value);
        mediaElement1.Position = ts;
        textBox.Text = ts + " / " + mediaElement1.NaturalDuration;
        _timer.Start();
    }

    . . .



Если нажать на «паузу» (выполняется mediaElement.Pause();) а потом сдвигать слайдер, то позиция видеоролика меняется, но кадр не обновляется. Как можно обновить кадр на паузе?
  • Вопрос задан
  • 4526 просмотров
Решения вопроса 1
nobr
@nobr Автор вопроса
Front-end / Shadow DOM / Canvas
ScrubbingEnabled=«True»
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ertaquo
@ertaquo
Попробуйте методом InvalidateVisual
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы