Решение в другом потоке должно работать, но вы можете подойти к нему иначе.
По сути, чтобы избежать необходимости загружать видео только для того, чтобы захватить первый кадр, вы можете создать статическое изображение, которое является кадром, который вы хотите показать. Если вы кодируете видео, большинство программ для кодирования создаст для вас миниатюру. Если нет, вы можете сделать снимок экрана и использовать это
Затем отобразите это изображение в обычном WPF-изображении, когда фильм не воспроизводится. Когда пользователь воспроизводит видео, используйте триггер, чтобы скрыть изображение и показать видео.
Это даст вам нужный эффект.
Недостаток : это статическое изображение будет не синхронизировано с видео, если ваш видеофайл будет обновлен (в этом случае вам потребуется восстановить миниатюру)