溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Xamarin的播放音頻和視頻的媒體管理插件

發(fā)布時(shí)間:2020-04-03 05:19:25 來源:網(wǎng)絡(luò) 閱讀:4441 作者:wangccsy 欄目:移動開發(fā)

媒體應(yīng)用程序比其他應(yīng)用程序更受益于與本地平臺一起工作。有些事情,比如處理音頻焦點(diǎn)的中斷、網(wǎng)絡(luò)連接以及通知和其他回放控件之間的通信,這是一件復(fù)雜的事情。

為使Xamarin開發(fā)訪問這些本地平臺的功能,我們決定建立一個(gè)跨平臺的Xamarin插件,抽象了困難。我們使用誘餌和開關(guān)模式創(chuàng)建了一個(gè)可移植類庫,它包含了本機(jī)代碼的所有接口,在應(yīng)用程序中共享基類,使你盡可能輕松地在你的手機(jī)應(yīng)用程序中與音頻和視頻交互。

 Xamarin媒體管理插件 設(shè)計(jì)簡單易用,具有以下特點(diǎn):

  • 從遠(yuǎn)程和本地源本地播放媒體文件

  • 本地媒體通知和遠(yuǎn)程控件

  • 播放狀態(tài)(播放、緩沖、加載、暫停、進(jìn)度)

最重要的是,媒體管理支持所有平臺的插件, 包括iOS, Android, UWP, macOS, tvOS,甚至Xamarin.Forms。在這篇博客中,我們將探討Xamarin的媒體管理插件的各種組件和如何可以輕松地集成到您的移動應(yīng)用程序。

音頻

在玩視頻,你的眼睛和耳朵都會用。播放音頻時(shí),您正在收聽,但也可以同時(shí)使用不同的應(yīng)用程序。每個(gè)用例有不同的設(shè)計(jì)。

音頻播放器并不總是需要用戶界面可見的。一旦開始播放音頻,播放器就可以作為后臺任務(wù)運(yùn)行。用戶可以切換到另一個(gè)應(yīng)用程序,并在繼續(xù)監(jiān)聽的同時(shí)工作。

播放音頻只需要一行代碼,并為您處理所有這些操作:

點(diǎn)擊(此處)折疊或打開

  1. await CrossMediaManager.Current.Play("http://www.montemagno.com/sample.mp3");


Android Exo播放器

ExoPlayer 是公開低級Android音頻API的開源庫。ExoPlayer支持高性能功能比如DASH 和HLS流,這些在MediaPlayer中是不可用的。您可以自定義代碼的能力,使得它很容易添加新的組件。ExoPlayer只能與Android版本4.1和更高版本一起使用。

利用ExoPlayer,在`MainActivity`中添加下面的代碼 :


點(diǎn)擊(此處)折疊或打開

  1. ((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager = new MediaSessionManager(Application.Context, typeof(ExoPlayerAudioService));

  2. var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager);

  3. CrossMediaManager.Current.AudioPlayer = exoPlayer;


視頻

視頻應(yīng)用程序需要一個(gè)窗口來查看內(nèi)容。由于這個(gè)原因,視頻應(yīng)用程序通常在一個(gè)屏幕上實(shí)現(xiàn)。

點(diǎn)擊(此處)折疊或打開

  1. CrossMediaManager.Current.Play("https://archive.org/download/BigBuckBunny_328/BigBuckBunny_512kb.mp4", MediaFileType.Video);


Xamarin的播放音頻和視頻的媒體管理插件

通知

一個(gè)精心設(shè)計(jì)的媒體應(yīng)用程序應(yīng)該與其他播放音頻的應(yīng)用程序“配合得很好”。它應(yīng)該準(zhǔn)備分享手機(jī),并與其他應(yīng)用程序在您的設(shè)備上使用音頻。它還應(yīng)該對設(shè)備上的硬件控制作出響應(yīng),包括:

  • 當(dāng)用戶調(diào)整硬件音量控制時(shí)更改音量

  • 如果耳機(jī)在使用中斷開,請停止播放。

  • 當(dāng)另一個(gè)應(yīng)用接管音頻輸出流時(shí),停止播放,或者降低音量。

媒體按鈕是在Android設(shè)備和其他外圍設(shè)備上找到的硬件按鈕;例如,藍(lán)牙耳機(jī)上的暫停/播放按鈕。


Xamarin的播放音頻和視頻的媒體管理插件    Xamarin的播放音頻和視頻的媒體管理插件

Xamarin的播放音頻和視頻的媒體管理插件

排隊(duì)音頻和視頻

如果您想播放一系列媒體條目,那么有一個(gè)隊(duì)列是有幫助的。將媒體文件列表添加到隊(duì)列中,簡單地CrossMediaManager.Current.Play() 模擬器MediaFiles。排隊(duì),您可以重新洗牌和重復(fù)播放,循環(huán)通過某些媒體文件,等等。

可以通過以下方式訪問隊(duì)列:

點(diǎn)擊(此處)折疊或打開

  1. var queue = CrossMediaManager.Current.MediaQueue;


媒體信息

媒體文件包含大量關(guān)于該文件的信息??梢詮脑獢?shù)據(jù)中提取標(biāo)題、專輯、藝術(shù)家等更多細(xì)節(jié)。使用MediaManager非常容易實(shí)現(xiàn):


點(diǎn)擊(此處)折疊或打開

  1. CrossMediaManager.Current.MediaFileChanged += (object sender, MediaFileChangedEventArgs e) => {

  2. var artist = e.File.Metadata.Artist;

  3.     // Access any other metadata property through the file

  4. };


Xamarin.Forms

MediaManager能夠使用本地應(yīng)用,也可以用在Xamarin.Forms應(yīng)用,通過在本地視頻視圖中的一個(gè)自定義渲染器實(shí)現(xiàn):

點(diǎn)擊(此處)折疊或打開

  1. <forms:VideoView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"

  2.                      Source="YourVideoFile" AspectMode="AspectFill" />


確保在開始播放之前在你的平臺代碼中調(diào)用VideoViewRenderer.Init(),否則視圖將不會準(zhǔn)備播放視頻。

MediaManager在行動:Scott Hanselman應(yīng)用!

即使 Hanselman App 運(yùn)行在MediaManager,要感謝 Erlend Angelsen! 利用媒體管理的實(shí)施,該應(yīng)用程序現(xiàn)在改進(jìn)了音頻播放,但更令人興奮的是,漢塞爾曼的影片從通道 9在應(yīng)用程序是可用的!它也使用通知來控制當(dāng)前媒體的播放。在將來,這將擴(kuò)展到使用隊(duì)列和其他高級功能。要獲取這個(gè)應(yīng)用的更多信息,可以從 James Montemagno‘s Github repository檢出代碼。

Xamarin的播放音頻和視頻的媒體管理插件

結(jié)束語

這里還有一些其它Xamarin MediaManager的樣例可用,包括:

  • MvvmCross

  • Xamarin.Forms

  • Simple


開始,你首先要做的是 從NuGet下載插件 并將MediaManager安裝到每一個(gè)工程中。


如果你想了解更多關(guān)于媒體播放,請務(wù)必跟隨我在Twitter上 @mhvdijk 接收更新。未來的計(jì)劃包括為Android Auto,Chromecast,CarPlay支持,輸出源,如藍(lán)牙、電視之間的無縫切換,或DLNA。如果你有想法,發(fā)現(xiàn)錯(cuò)誤,或者想幫助開發(fā),請確保從 GitHub下載源代碼。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI