[Question] Current sample code is "Obsolete"
badstorm opened this issue · comments
BadStorm commented
Hi,
i try to implement ExoPlayer on my Xamarin App using this code:
SimpleExoPlayer _player;
var mediaUri = Android.Net.Uri.Parse("https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3");
var userAgent = Util.GetUserAgent(context, "ExoPlayerDemo");
var defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent);
var defaultDataSourceFactory = new DefaultDataSourceFactory(context, null, defaultHttpDataSourceFactory);
var extractorMediaSource = new ExtractorMediaSource(mediaUri, defaultDataSourceFactory, new DefaultExtractorsFactory(), null, null);
var defaultBandwidthMeter = new DefaultBandwidthMeter();
var adaptiveTrackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter);
var defaultTrackSelector = new DefaultTrackSelector(adaptiveTrackSelectionFactory);
_player = ExoPlayerFactory.NewSimpleInstance(context, defaultTrackSelector);
_player.Prepare(extractorMediaSource);
_player.PlayWhenReady = true;
But i get warning about "obsolete" methods.
I try to follow the official "hello world" example but I can find any reference to the MediaItem
object.
Where I can find a simple updated hello world for xamarin?
Thanks
Emzar commented
Hi. You can prepare player like this:
PlayerView playerView = FindViewById<PlayerView>(Resource.Id.TVPlayer); //you must supply your own Id here
SimpleExoPlayer player;
DefaultTrackSelector trackSelector = new DefaultTrackSelector(this);
trackSelector.SetParameters(trackSelector.BuildUponParameters().SetMaxVideoSizeSd());
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this);
Uri hls = Uri.Parse("http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel.ism/.m3u8");
IMediaSource mediaSource = BuildHlsMediaSource(hls); //here you can build media source of desired type
player = new SimpleExoPlayer.Builder(this, renderersFactory).SetTrackSelector(trackSelector).Build();
playerView.Player = player;
player.PlayWhenReady = true;
player.Prepare(mediaSource, false, false);
Below is code to get IMediaSource object
private IMediaSource BuildMediaSource(Uri uri)
{
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this, "ExoplayerTest");
return new ProgressiveMediaSource.Factory(dataSourceFactory).CreateMediaSource(uri);
}
private IMediaSource BuildDashMediaSource(Uri uri)
{
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this, "ExoplayerTest");
DashMediaSource.Factory mediaSourceFactory = new DashMediaSource.Factory(dataSourceFactory);
return mediaSourceFactory.CreateMediaSource(uri);
}
private IMediaSource BuildHlsMediaSource(Uri uri)
{
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("ExoplayerTest");
IMediaSource hlsMediaSource = new HlsMediaSource.Factory(dataSourceFactory).SetAllowChunklessPreparation(true).CreateMediaSource(uri);
return hlsMediaSource;
}
Feel free to customize above code by Your needs.
Carlos Velazquez commented
@earkania Thank you!