Skip to content
This repository was archived by the owner on Jun 11, 2026. It is now read-only.

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

topicsample
languages
csharp
products
windows
windows-uwp

BuildCast Video Player UWP Sample

BuildCast is an end-to-end sample built to showcase the Microsoft Fluent Design System as well as other capabilities of the Universal Windows Platform. It permits browsing, downloading and playback of select video podcasts including a sampling of the most popular ones from Channel 9 as well as some popular Windows tech enthusiast feeds. It has other features such as ink notes, bookmarks and remote playback. This sample was initially shown and discussed at the 2017 Build conference during the Build Amazing Apps with Fluent Design talk.

Features

At a high level this sample demonstrates usage of:

  • Fluent design system (Acrylic material, Reveal highlight, Connected animations, ParallaxView, an Adobe XD UX Prototype etc)
  • XAML controls and features (NavigationView, swipe commanding, context menu with icons and SVG assets, LoadedImageService, conditional XAML etc)
  • Media playback including picture-in-picture and fullscreen views
  • Inking and smart ink
  • Project Rome and AppServices
  • Background download service, Entity Framework and SQLite
  • Windows composition APIs (InteractionTracker, implicit animations, scene lighting)
  • Notifications with progress bar
  • Share contract

Run the sample

Prepare your environment

This sample requires Visual Studio 2017 with Update 5 and the Windows 10 Software Development Kit (SDK) version 16299, Windows 10 OS - Fall Creators Update.

Additionally, to receive the latest updates to Windows and the development tools, and to help shape their development, join the Windows Insider Program.

Run

After opening the Visual Studio solution, set your startup project as BuildCast, the architecture to AMD64 or x86, and press F5 to run.

Code at a glance

The table below shows the platform features used in the application and where abouts to find them in the sample.

Release Notes Update 1 October 2017

  • Add the Adobe XD UX prototype file
  • Add back Spectrum Analyzer visualization to now playing
  • On startup, app will check for cached media changes at filesystem level and update database state to match this
  • Improved commanding on favorites, downloads, notes
  • Design tweaks
  • Known issues where there will be code changes have all been moved to issues on github
  • Bug fixes

Known Issues

  • Download progress reported via toasts / action center will not update when the app quits, even though the download will proceed using background transfer service. This is due to a known platform gap
  • Deploying / running BuildCast on a XBOX will result in the app crashing due to a platform bug that is being investigated. More details here.
  • A number of warnings have not been addressed
  • Things that didn't make it from the Build talk:
    • TreeView control: did not ship in the final Fall Creator's update
    • 360 video playback: this will come in a future update to the app

App details

Frameworks

FrameworkUsageCode file
Entity frameworkORM to store objects in SQLiteLocalStorageContext.cs
SQLite in UWPPrimary mechanism for persistenceN/A
.NET Standard 2.0Provides System.TupleNowPlayingState.cs

App features

App featureDescriptionCode file
Adobe XD UX PrototypeAcrylic material imageBuildCast.xd
Acrylic materialAcrylic material usage
Acrylic material image
Branded.xaml
Reveal highlightReveal highlight usage
Reveal highlight image
CustomMTC.xaml
NavigationViewNavigationView usage
NavigationView image
NavigationRoot.xaml
Connected animationsUsed in connected transitions between pagesFeedDetails.xaml.cs
InkingInk annotation on video frame
Ink annotation image
InkNote.xaml.cs
Smart InkRecognize and convert images to glyphs and emoji
Ink recognition image
2nd ink recognition image
InkNote.xaml.cs
Emoji pickerSelect emoji
Emoji picker image
InkNote.xaml.cs
Context menus with iconsContext menus with icons
Context menus image
FeedDetails.xaml
Swipe commandingSwipe controls on lists
swipe image
FeedDetails.xaml
Mnemonics/Access KeysMnemonics usage
Mnenomics image
EpisodeDetails.xaml
Command barCommand bar usage
Command bar image
Player.xaml
Coordinated animationsUsed in connected transitions between pagesFeedDetails.xaml.cs
Conditional XAMLNavigationView loads based on OS version supportNavigationRoot.xaml
SVGBuildCast logo on homepageHome.xaml
Adaptive state triggersUI optimizations for assorted screen sizes
Adaptive layout image
Home.xaml
ParallaxViewHome screen parallax layout
ParallaxView image
Home.xaml
LightingBuffering animationBufferingVisualManager.cs
Interaction trackerInteraction tracker
Interaction tracker image
Timeline.cs
Layout animationsLayout animationsHome.xaml.cs
LoadedImageSurfaceComposition Surface for ImagesCustomMediaPlayer.xaml.cs
Composition expression languageTimeline animationsTimeline.cs
Implicit animationsPoster frame fade out when video starts playingVisualHelpers.cs
Compact overlay modePicture-in-picture support
Virtual surfaces image
ViewModeService.cs
Spectrum AnalyzerRealtime visualization of audio spectra for currently playing clip
Full screen mode image
player.xaml.cs
Full screen modeFull screen mode for video
Full screen mode image
ViewModeService.cs
Share contractShare the annotated frame
Share contract image
InkNote.xaml.cs
Background transfer serviceVideo download for offline viewingBackgroundDownloadHelper.cs
BTS toast completion notificationsToast display upon background download completion
Background completion image
BackgroundDownloadHelper.cs
Toast progress barsVisual download progress indicator
Toast progress image
BackgroundDownloadHelper.cs
App servicesSupport Rome based remote controlRemotePlayService.cs
Media Composition APIExtract frame for Ink annotations from local filePlayerService.cs
Template studioTheming, settings model
Settings image

Contributing

While we expect to at a later date, this project is not currently accepting contributions. For now, if you have any feedback or questions, please open an Issue on GitHub for the team.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments

Copyright © Microsoft Corporation. All rights reserved. This program/project is and its use is subject to the MIT License

About

Example UWP Media Application to show best practices

Resources

Code of conduct

Security policy

Stars

453 stars

Watchers

63 watching

Forks

Releases

Packages

Used by

Contributors

Languages