- See Full List On Docs.microsoft.com
- Xamarin.ios - Xamarin Tvos Live Broadcast - Stack Overflow
- Code Xamarin: Play Audio In Xamarin Forms Using Xam.Plugin ...
- See Full List On Devblogs.microsoft.com
Play from steam - does not show any animation; play from uri - works; Expected behavior. All samples work. Reproduction steps. Xamarin.Forms 4.8.0.1821 Visual Studio 16.8.3. Platform: 📱 iOS 🤖 Android 🏁 WPF 🌎 UWP (In case you mean XF.UWP with this flag, maybe not?) 🍎 MacOS 📺 tvOS. See full list on devblogs.microsoft.com. Play from steam - does not show any animation; play from uri - works; Expected behavior. All samples work. Reproduction steps. Xamarin.Forms 4.8.0.1821 Visual Studio 16.8.3. Platform: 📱 iOS 🤖 Android 🏁 WPF 🌎 UWP (In case you mean XF.UWP with this flag, maybe not?) 🍎 MacOS 📺 tvOS.
-->The VideoPlayer
class defines a Source
property used to specify the source of the video file, as well as an AutoPlay
property. AutoPlay
has a default setting of true
, which means that the video should begin playing automatically after Source
has been set:

The Source
property is of type VideoSource
, which is patterned after the Xamarin.Forms ImageSource
abstract class, and its three derivatives, UriImageSource
, FileImageSource
, and StreamImageSource
. No stream option is available for the VideoPlayer
however, because iOS and Android do not support playing a video from a stream.
Video sources
The abstract VideoSource
class consists solely of three static methods that instantiate the three classes that derive from VideoSource
:

The UriVideoSource
class is used to specify a downloadable video file with a URI. It defines a single property of type string
:
Handling objects of type UriVideoSource
is described below.
The ResourceVideoSource
class is used to access video files that are stored as embedded resources in the platform application, also specified with a string
property:
Handling objects of type ResourceVideoSource
is described in the article Loading Application Resource Videos. The VideoPlayer
class has no facility to load a video file stored as a resource in the .NET Standard library.
The FileVideoSource
class is used to access video files from the device's video library. The single property is also of type string
:
Handling objects of type FileVideoSource
is described in the article Accessing the Device's Video Library.
The VideoSource
class includes a TypeConverter
attribute that references VideoSourceConverter
:
This type converter is invoked when the Source
property is set to a string in XAML. Here's the VideoSourceConverter
class:
The ConvertFromInvariantString
method attempts to convert the string to a Uri
object. If that succeeds, and the scheme is not file:
, then the method returns a UriVideoSource
. Otherwise, it returns a ResourceVideoSource
.
Setting the video source
All the other logic involving video sources is implemented in the individual platform renderers. The following sections show how the platform renderers play videos when the Source
property is set to a UriVideoSource
object.
The iOS video source
Two sections of the VideoPlayerRenderer
are involved in setting the video source of the video player. When Xamarin.Forms first creates an object of type VideoPlayer
, the OnElementChanged
method is called with the NewElement
property of the arguments object set to that VideoPlayer
. The OnElementChanged
method calls SetSource
:
Later on, when the Source
property is changed, the OnElementPropertyChanged
method is called with a PropertyName
property of 'Source', and SetSource
is called again.
To play a video file in iOS, an object of type AVAsset
is first created to encapsulate the video file, and that is used to create an AVPlayerItem
, which is then handed off to the AVPlayer
object. Here's how the SetSource
method handles the Source
property when it's of type UriVideoSource
:

The AutoPlay
property has no analogue in the iOS video classes, so the property is examined at the end of the SetSource
method to call the Play
method on the AVPlayer
object.
In some cases, videos continued playing after the page with the VideoPlayer
navigated back to the home page. To stop the video, the ReplaceCurrentItemWithPlayerItem
is also set in the Dispose
override:
The Android video source
The Android VideoPlayerRenderer
needs to set the video source of the player when the VideoPlayer
is first created and later when the Source
property changes:
The SetSource
method handles objects of type UriVideoSource
by calling SetVideoUri
on the VideoView
with an Android Uri
object created from the string URI. The Uri
class is fully qualified here to distinguish it from the .NET Uri
class:
The Android VideoView
doesn't have a corresponding AutoPlay
property, so the Start
method is called if a new video has been set.
There is a difference between the behavior of the iOS and Android renderers if the Source
property of VideoPlayer
is set to null
, or if the Uri
property of UriVideoSource
is set to null
or a blank string. If the iOS video player is currently playing a video, and Source
is set to null
(or the string is null
or blank), ReplaceCurrentItemWithPlayerItem
is called with null
value. The current video is replaced and stops playing.
Android does not support a similar facility. If the Source
property is set to null
, the SetSource
method simply ignores it, and the current video continues to play.
The UWP video source
The UWP MediaElement
defines an AutoPlay
property, which is handled in the renderer like any other property:
The SetSource
property handles a UriVideoSource
object by setting the Source
property of MediaElement
to a .NET Uri
value, or to null
if the Source
property of VideoPlayer
is set to null
:
Setting a URL source
With the implementation of these properties in the three renderers, it's possible to play a video from a URL source. The Play Web Video page in the VideoPlayDemos program is defined by the following XAML file:
See Full List On Docs.microsoft.com
The VideoSourceConverter
class converts the string to a UriVideoSource
. When you navigate to the Play Web Video page, the video begins loading and starts playing when a sufficient quantity of data has been downloaded and buffered. The video is about 10 minutes in length:
On each of the platforms, the transport controls fade out if they're not used but can be restored to view by tapping the video.
Xamarin.ios - Xamarin Tvos Live Broadcast - Stack Overflow
You can prevent the video from automatically starting by setting the AutoPlay
property to false
:
You'll need to press the Play button to start the video.
Similarly, you can suppress the display of the transport controls by setting the AreTransportControlsEnabled
property to false
:
Code Xamarin: Play Audio In Xamarin Forms Using Xam.Plugin ...
If you set both properties to false
, then the video won't begin playing and there will be no way to start it! You would need to call Play
from the code-behind file, or to create your own transport controls as described in the article Implementing Custom Video Transport Controls.
See Full List On Devblogs.microsoft.com
The App.xaml file includes resources for two additional videos:
To reference one of these other movies, you can replace the explicit URL in the PlayWebVideo.xaml file with a StaticResource
markup extension, in which case VideoSourceConverter
is not required to create the UriVideoSource
object:
Alternatively, you can set the Source
property from a video file in a ListView
, as described in the next article, Binding Video Sources to the Player.
Related Links
