Есть два способа сделать это в UWP.
API композиции
API композиции предлагают CompositionSurfaceBrush
, с помощью которых можно рисовать область с пикселями, отрисованными с использованием видео через MediaPlayer
.Пример из документации :
Compositor _compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
SpriteVisual _videoVisual;
CompositionSurfaceBrush _videoBrush;
// MediaPlayer set up with a create from URI
_mediaPlayer = new MediaPlayer();
// Get a source from a URI. This could also be from a file via a picker or a stream
var source = MediaSource.CreateFromUri(new Uri("https://www.example.com/video.mp4"));
var item = new MediaPlaybackItem(source);
_mediaPlayer.Source = item;
_mediaPlayer.IsLoopingEnabled = true;
// Get the surface from MediaPlayer and put it on a brush
_videoSurface = _mediaPlayer.GetSurface(_compositor);
_videoBrush = _compositor.CreateSurfaceBrush(_videoSurface.CompositionSurface);
_videoVisual = _compositor.CreateSpriteVisual();
_videoVisual.Brush = _videoBrush;
Обратитесь к документации для получения дополнительной информации о поиске одного из множества руководств по использованию API композиции в Интернете (например, здесь ).
Отдельный элемент MediaPlayer
Более простым решением было бы просто поместить MediaPlayerElement
под Grid
.Когда Grid
имеет Transparent
фон, видео будет отображаться под Grid
.
<Grid>
<MediaPlayerElement x:Name="mediaPlayer"
AreTransportControlsEnabled="False"
Source="ms-appx:///SomeVideo.mp4" />
<Grid>
... your content
</Grid>
</Grid>