日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

進(jìn)階功能

更新時(shí)間:

本文提供Flutter框架播放器SDK進(jìn)階功能的使用示例,完整功能說(shuō)明請(qǐng)參見(jiàn)API說(shuō)明。

播放

短視頻列表播放

  1. 創(chuàng)建列表播放器。

    FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
  2. 添加資源、移除資源。

    列表播放器目前只支持兩種播放方式:UrlSource播放和VidSts播放。

    //uid是視頻的唯一標(biāo)志。用于區(qū)分視頻是否一樣。如果uid一樣,則認(rèn)為是一樣的
    fAliListPlayer.addUrlSource(url,uid);
    fAliListPlayer.addVidSource(vid,uid);
    fAliListPlayer.removeSource(uid);
  3. 設(shè)置預(yù)加載個(gè)數(shù)。

    合理設(shè)置預(yù)加載個(gè)數(shù),能夠有效的提高起播的速度。示例如下:

    //設(shè)置預(yù)加載個(gè)數(shù)。總共加載的個(gè)數(shù)為: 1 + count*2。
    fAliListPlayer.setPreloadCount(count);
  4. 播放視頻源。

    //uid為必填項(xiàng),如果是URL播放方式,只需要uid即可,如果是STS方式,則需要填寫STS信息
    fAliListPlayer.moveTo();

軟硬解切換

Flutter框架播放器SDK提供了H.264、H.265的硬解碼能力,同時(shí)提供了setEnableHardwareDecoder開(kāi)關(guān)。默認(rèn)開(kāi),并且在硬解初始化失敗時(shí),自動(dòng)切換為軟解,保證視頻的正常播放。示例如下:

//開(kāi)啟硬解,默認(rèn)開(kāi)啟
fAliplayer.setEnableHardwareDecoder(enable);

網(wǎng)絡(luò)自適應(yīng)切換視頻清晰度

Flutter框架播放器SDK支持多碼率自適應(yīng)HLS、DASH視頻流。在prepare成功之后,通過(guò)getMediaInfo可以獲取到各個(gè)碼流的信息,即TrackInfo。示例如下:

fAliplayer.getMediaInfo().then((value) {
//value為map,value['tracks']可以獲取對(duì)應(yīng)的TrackInfos 列表信息,可以參考Demo中AVPMediaInfo info = AVPMediaInfo.fromJson(value); 了解如何解析TrackInfo

});

在播放過(guò)程中,可以通過(guò)調(diào)用播放器的selectTrack方法切換播放的碼流,參數(shù)為TrackInfo中的trackIndex,切換的結(jié)果會(huì)在OnTrackChangedListener監(jiān)聽(tīng)之后會(huì)回調(diào)。

//多碼率切換
fAliplayer.selectTrack(index);
//多碼率切換并自適應(yīng)
fAliplayer.selectTrack(-1);

截圖

Flutter框架播放器SDK提供了對(duì)當(dāng)前視頻截圖的功能,由setOnSnapShot接口實(shí)現(xiàn)。

//截圖成功監(jiān)聽(tīng)
fAliplayer.setOnSnapShot((path,playerId) {

});
//截圖,path為圖片保存路徑
fAliplayer.snapshot(path);

試看

Flutter框架播放器SDK通過(guò)配合點(diǎn)播服務(wù)配置,可以實(shí)現(xiàn)試看功能,VidAuth播放(推薦)和VidSts播放方式支持試看功能。如何配置和使用試看功能,請(qǐng)參見(jiàn)點(diǎn)播試看

配置試看功能之后,通過(guò)setVidAuth接口的previewTime方法設(shè)置播放器的試看時(shí)長(zhǎng)。示例如下:

//previewTime為試看時(shí)間,單位:秒
//VidAuth播放方式
fAliplayer.setVidAuth(
 vid: "填寫資源的vid",
 region: "填寫資源的region",
 playAuth: "填寫資源的region",
 previewTime: "填寫試看時(shí)間,單位:秒");

 //VidSts播放方式
 fAliplayer.setVidSts(
 vid: "填寫資源的vid",
 region: "填寫資源的region",
 accessKeyId: "填寫資源的鑒權(quán)id",
 accessKeySecret: "填寫資源的鑒權(quán)密鑰",
 securityToken: "填寫資源的安全Token",
 previewTime: "填寫試看時(shí)間,單位:秒");

其他配置

Flutter框架播放器SDK的其他播放配置。需要在prepare()方法之前設(shè)置給播放器。

var configMap = {
 'mStartBufferDuration':_mStartBufferDurationController.text,//起播緩沖區(qū)時(shí)長(zhǎng),單位:毫秒
 'mHighBufferDuration':_mHighBufferDurationController.text,//高緩沖時(shí)長(zhǎng),單位:毫秒
 'mMaxBufferDuration':_mMaxBufferDurationController.text,//最大緩沖區(qū)時(shí)長(zhǎng),單位:毫秒
 'mMaxDelayTime': _mMaxDelayTimeController.text,//直播最大延遲,單位:毫秒。注意:僅直播有效
 'mNetworkTimeout': _mNetworkTimeoutController.text,//網(wǎng)絡(luò)超時(shí)時(shí)間,單位:毫秒
 'mNetworkRetryCount':_mNetworkRetryCountController.text,///網(wǎng)絡(luò)超時(shí)重試次數(shù),單位:毫秒
 'mMaxProbeSize': _mMaxProbeSizeController.text,//最大probe大小
 'mReferrer': _mReferrerController.text,//設(shè)置referrer
 'mHttpProxy': _mHttpProxyController.text,//http代理
 'mEnableSEI': mEnableSEI,//是否啟用SEI
 'mClearFrameWhenStop': !mShowFrameWhenStop,///停止后是否清空畫面
 'mDisableVideo': mDisableVideo,//禁用Video
 'mDisableAudio': mDisableAudio,//禁用Audio
 'mUserAgent':mUserAgent,//設(shè)置UserAgent
};
//應(yīng)用配置
fAliplayer.setConfig(configMap);

性能

預(yù)渲染

Flutter播放器SDK支持在起播之前快速渲染第一幀。示例如下:

fAliplayer.setOption(FlutterAvpdef.ALLOW_PRE_RENDER, 1);

本地緩存

Flutter框架播放器SDK提供了本地緩存(邊播邊緩存)的功能,能夠讓用戶重復(fù)播放視頻時(shí),達(dá)到省流量的目的。需要在prepare之前給播放器配置enableLocalCache即可實(shí)現(xiàn)此功能。示例如下:

/**
 *  開(kāi)啟本地緩存,開(kāi)啟之后,會(huì)緩存到本地文件中。
 *
 *  @param enable - 本地緩存功能開(kāi)關(guān)。true:開(kāi)啟本地緩存,false:關(guān)閉,默認(rèn)關(guān)閉。
 *  @param maxBufferMemoryKB - 5.4.7.1及以后版本已廢棄,暫無(wú)作用
 *  @param localCacheDir - 本地緩存的文件目錄,為絕對(duì)路徑。
 *  @param mDocTypeForIOS - iOS 沙盒目錄類型
 */
FlutterAliplayer.enableLocalCache(bool enable,String maxBufferMemoryKB,String localCacheDir,DocTypeForIOS mDocTypeForIOS);

/**
  * 本地緩存文件清理相關(guān)配置。
  *
  * @param expireMin - 5.4.7.1及以后版本已廢棄,暫無(wú)作用。
  * @param maxCapacityMB - 最大緩存容量。單位:兆,默認(rèn)值20GB,在清理時(shí),如果緩存總?cè)萘砍^(guò)此大小,則會(huì)以cacheItem為粒度,按緩存的最后時(shí)間排序,一個(gè)一個(gè)的刪除最舊的緩存文件,直到小于等于最大緩存容量。
  * @param freeStorageMB - 磁盤最小空余容量。單位:兆,默認(rèn)值0,在清理時(shí),同最大緩存容量,如果當(dāng)前磁盤容量小于該值,也會(huì)按規(guī)則一個(gè)一個(gè)的刪除緩存文件,直到freeStorage大于等于該值或者所有緩存都被清理掉。
  */
FlutterAliplayer.setCacheFileClearConfig(String expireMin,String maxCapacityMB,String freeStorageMB);

開(kāi)啟或關(guān)閉單個(gè)URL的本地緩存

如果想要針對(duì)單個(gè)URL開(kāi)啟或關(guān)閉本地緩存功能,可以在player config中設(shè)置。示例如下:

//獲取配置
fAliplayer.getPlayConfig().then((config){
  //關(guān)閉/開(kāi)啟本地緩存
  config.enableLocalCache = false;
  //應(yīng)用設(shè)置
  fAliplayer.setPlayConfig(config);
});

預(yù)加載

Flutter框架播放器SDK提供預(yù)加載的功能,預(yù)加載是對(duì)本地緩存功能的升級(jí)。通過(guò)設(shè)置視頻緩存的內(nèi)存占用大小,達(dá)到提升視頻起播速度的效果。

預(yù)加載功能的使用限制如下:

  • 目前支持MP4、MP3、FLV、HLS等單個(gè)媒體文件的加載。

  • 僅支持UrlSource播放方式播放視頻的預(yù)加載,暫不支持VidAuth、VidSts方式播放視頻的預(yù)加載。

  1. 開(kāi)啟本地緩存功能,詳細(xì)操作請(qǐng)參見(jiàn)本地緩存

  2. 獲取FlutterAliPlayerMediaLoader實(shí)例。

    //FlutterAliPlayerMediaLoader實(shí)例為單例,即無(wú)論獲取多少次,創(chuàng)建的都是同一個(gè)實(shí)例。
    fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
  3. 配置回調(diào),并開(kāi)始加載。

    /**
     * 設(shè)置加載狀態(tài)回調(diào)
     */
    fAliPlayerMediaLoader.setOnLoadStatusListener((completeURL) {
          //加載完成
        }, (cancelURL) {
          //加載取消
        }, (String url, int code, String msg) {
          //加載異常
        });
    /**
     * 開(kāi)始加載文件。異步加載。可以同時(shí)加載多個(gè)視頻文件。
     * @param url - 視頻文件地址。
     * @param duration - 加載的時(shí)長(zhǎng)大小,單位:毫秒。
     */
    fAliPlayerMediaLoader.load("url","duration");

視頻下載

Flutter框架播放器SDK提供了點(diǎn)播服務(wù)視頻的下載功能,允許用戶通過(guò)阿里云播放器將視頻緩存至本地觀看。同時(shí),提供了普通下載和安全下載兩種下載方式。

  • 普通下載

    下載后的視頻數(shù)據(jù)未經(jīng)過(guò)阿里云加密,用戶可以用第三方播放器播放。

  • 安全下載

    下載后的視頻數(shù)據(jù)經(jīng)過(guò)阿里云加密。第三方播放器無(wú)法播放,僅支持使用阿里云的播放器SDK進(jìn)行播放。

使用說(shuō)明

  • 僅VidSts和VidAuth方式支持視頻下載功能。

  • 使用播放器的視頻下載功能,需要在點(diǎn)播控制臺(tái)開(kāi)啟并配置下載模式,詳細(xì)操作請(qǐng)參見(jiàn)離線下載

  • 視頻下載支持?jǐn)帱c(diǎn)續(xù)傳。

操作步驟

  1. 可選:配置安全下載的加密校驗(yàn)文件。僅安全下載需要配置,普通下載無(wú)需配置。

    說(shuō)明

    請(qǐng)確保配置的加密校驗(yàn)文件與App信息一致,否則會(huì)導(dǎo)致視頻下載失敗。

    如果設(shè)置為安全下載方式,則需要將在點(diǎn)播控制臺(tái)生成的密鑰文件配置到播放器SDK中,用于視頻下載和播放的解密驗(yàn)證,密鑰文件的生成請(qǐng)參見(jiàn)安全下載

    配置一次即可,示例如下:

    FlutterAliPlayerFactory.initService(byteData);
  2. 創(chuàng)建并設(shè)置下載器。

    示例如下:

    FlutterAliDownloader downloader = FlutterAliDownloader.init();
    ///設(shè)置保存路徑
    downloader.setSaveDir(path)
  3. 開(kāi)始下載。

    調(diào)用了開(kāi)始下載后,會(huì)自動(dòng)設(shè)置監(jiān)聽(tīng),并將回調(diào)信息返回。示例如下:

    ///1.prepare
     ///參數(shù)說(shuō)明:type可選值為FlutterAvpdef.DOWNLOADTYPE_STS / FlutterAvpdef.DOWNLOADTYPE_AUTH 。當(dāng)type為DOWNLOADTYPE_STS時(shí)候,必填參數(shù)為:{vid,accessKeyId,accessKeySecret,securityToken},當(dāng) type 為 DOWNLOADTYPE_AUTH 時(shí),必須填參數(shù)為 {vid,playAuth}
     downloader.prepare(type, vid).then((value) {
     //value為map,對(duì)應(yīng)Demo中的DownloadModel自定義下載類
     DownloadModel downloadModel = DownloadModel.fromJson(value);
     //2.selectItem,根據(jù)不同的trackInfo來(lái)確定需要下載哪個(gè)清晰度
     List<TrackInfoModel> trackInfos = downloadModel.trackInfos;
     downloader.selectItem(vid,trackInfos[0].index);
     //3.start
     downloader.start(vid, trackInfos[0].index).listen((event) {
     //說(shuō)明:event可能會(huì)有多種信息,可參考FlutterAvpdef.EventChanneldef中的信息,以下為具體說(shuō)明:
     if (event[EventChanneldef.TYPE_KEY] == EventChanneldef.DOWNLOAD_PROGRESS){
     //下載進(jìn)度百分比信息,獲取下載進(jìn)度百分比:event[EventChanneldef.DOWNLOAD_PROGRESS]
     }else if(event[EventChanneldef.TYPE_KEY] == EventChanneldef.DOWNLOAD_PROCESS){
     //處理進(jìn)度百分比信息,獲取處理進(jìn)度百分比:event[EventChanneldef.DOWNLOAD_PROCESS]
     }else if(event[EventChanneldef.TYPE_KEY] == EventChanneldef.DOWNLOAD_COMPLETION){
     //下載完成,可以通過(guò) event['vid']、event['index'] 獲取對(duì)應(yīng)的vid和index用于判斷是哪個(gè)視頻下載完成,event['savePath'] 用于獲取下載完成視頻的本地路徑
     }else if(event[EventChanneldef.TYPE_KEY] == EventChanneldef.DOWNLOAD_ERROR){
     //下載失敗,可以通過(guò) event['vid']、event['index'] 獲取對(duì)應(yīng)的vid和index用于判斷是哪個(gè)視頻下載失敗,event['errorCode']、event['errorMsg'] 可以獲取對(duì)應(yīng)的錯(cuò)誤碼,和錯(cuò)誤信息
     }
     });
     });
  4. 停止下載。

    示例如下:

    downloader.stop(vid, index)
  5. 刪除下載。

    刪除下載選項(xiàng),如果刪除成功,則下載的本地文件也會(huì)隨之刪除。示例如下:

    downloader.delete(vid, index)
  6. 釋放下載對(duì)象。

    當(dāng)某個(gè)下載對(duì)象不再使用時(shí),使用release方法將其釋放,防止內(nèi)存泄漏。示例如下:

    downloader.release(vid, index)

視頻加密播放

點(diǎn)播視頻支持HLS標(biāo)準(zhǔn)加密、阿里云私有加密和DRM加密。加密播放請(qǐng)參見(jiàn)如何播放加密視頻