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

基礎功能

本文提供Android端播放器SDK基礎功能的使用示例,更多功能說明請參見進階功能、API說明。

創建播放器

本節介紹如何用簡單的方式通過Android端播放器SDK播放視頻,按照播放方式的不同可以分為手動播放和自動播放。

  1. 創建播放器。

    通過AliPlayerFactory類創建AliPlayer播放器。

    說明

    播放器提供的播放質量監控(可查看播放器整體播放質量相關數據)、單點追查(可定位到具體的用戶或設備,分析其播放行為,快速定位播放異常等問題)及視頻播放統計功能都依賴埋點日志上報功能而實現。

    在創建播放器時,根據setTraceId參數的設置不同,其后續可實現的功能不同,具體如下:

    • setTraceId參數不傳(默認):埋點日志上報功能開啟,后續可以使用播放質量監控和視頻播放統計功能,無法使用單點追查功能。

    • setTraceId參數傳入traceid:traceid的值由您自行定義,需為您的用戶或用戶設備的唯一標識符,例如傳入您業務的userid或者IMEI、IDFA等您業務用戶的設備ID。傳入traceid后,埋點日志上報功能開啟,后續可以使用播放質量監控、單點追查和視頻播放統計功能。

    • setTraceId參數設置為DisableAnalytics:關閉埋點日志上報,后續無法使用播放質量監控、單點追查和視頻播放統計功能。

    // 創建播放器
    AliPlayer aliPlayer = AliPlayerFactory.createAliPlayer(context);
    // 建議傳入traceId
    aliPlayer.setTraceId("traceId");  
  2. 設置監聽器。

    播放器支持設置多個監聽器。

    • OnPreparedListener必須設置,因為手動播放需要在OnPreparedListener回調中調用aliPlayer.start()開始播放。

    • OnErrorListenerOnCompletionListenerOnLoadingStatusListenerOnInfoListener較為重要,建議您設置。

    aliPlayer.setOnErrorListener(new IPlayer.OnErrorListener() {
     //此回調會在使用播放器的過程中,出現了任何錯誤,都會回調此接口。
    
     @Override
     public void onError(ErrorInfo errorInfo) {
     ErrorCode errorCode = errorInfo.getCode(); //錯誤碼。
     String errorMsg =errorInfo.getMsg(); //錯誤描述。
     //出錯后需要停止掉播放器。
     aliPlayer.stop();
     }
    });
    aliPlayer.setOnPreparedListener(new IPlayer.OnPreparedListener() {
     // 調用aliPlayer.prepare()方法后,播放器開始讀取并解析數據。成功后,會回調此接口。
    
     @Override
     public void onPrepared() {
     //一般調用start開始播放視頻。
     aliPlayer.start();
     }
    });
    aliPlayer.setOnCompletionListener(new IPlayer.OnCompletionListener() {
     //播放完成之后,就會回調到此接口。
     @Override
     public void onCompletion() {
     //一般調用stop停止播放視頻。
     aliPlayer.stop();
     }
    });
    aliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
     //播放器中的一些信息,包括:當前進度、緩存位置等等。
     @Override
     public void onInfo(InfoBean infoBean) {
     InfoCode code = infoBean.getCode(); //信息碼。
     String msg = infoBean.getExtraMsg();//信息內容。
     long value = infoBean.getExtraValue(); //信息值。
    
     //當前進度:InfoCode.CurrentPosition
     //當前緩存位置:InfoCode.BufferedPosition
     }
    });
    aliPlayer.setOnLoadingStatusListener(new IPlayer.OnLoadingStatusListener() {
     //播放器的加載狀態, 網絡不佳時,用于展示加載畫面。
    
     @Override
     public void onLoadingBegin() {
     //開始加載。畫面和聲音不足以播放。
     //一般在此處顯示圓形加載。
     }
    
     @Override
     public void onLoadingProgress(int percent, float netSpeed) {
     //加載進度。百分比和網速。
     }
    
     @Override
     public void onLoadingEnd() {
     //結束加載。畫面和聲音可以播放。
     //一般在此處隱藏圓形加載。
     }
    });
  3. 創建DataSource。

    • Android端播放器SDK支持4種點播播放方式,包括:UrlSource播放、VidAuth播放(視頻點播用戶推薦使用)、VidSts播放、加密播放。

    • Android端播放器SDK支持2種直播播放方式,UrlSource播放和加密播放。

      說明
      • UrlSource是直接通過URL播放,VidSts,VidAuth是通過Vid進行播放。

      • 接入地域Region的設置,請參見點播地域標識

    點播視頻播放

    點播UrlSource播放

    使用點播UrlSource播放方式播放點播視頻,需要將播放器的setUrl屬性設置為播放地址。播放地址可以是第三方點播地址或阿里云點播服務中的播放地址。

    阿里云播放地址可以調用獲取音視頻播放地址接口獲取。建議您集成點播服務端SDK來獲取音視頻播放地址,免去自簽名的麻煩。調用接口獲取音視頻播放地址的示例請參見開發者門戶

    本地視頻請確保有訪問權限,播放地址為將本地視頻文件轉換成URL,例如:/sdcard/xxx/xxx/xxx.mp4content://xxx/xxx/xx.mp4

     UrlSource urlSource = new UrlSource();
     urlSource.setUri("播放地址");//播放地址,可以是第三方點播地址,或阿里云點播服務中的播放地址,也可以是本地視頻地址。
     aliPlayer.setDataSource(urlSource);

    點播VidAuth播放(推薦)

    使用VidAuth播放方式播放點播視頻,需要將播放器的vid屬性設置為音視頻ID,將playauth屬性設置為音視頻播放憑證。

    • 音視頻ID可以在音視頻上傳完成后通過控制臺(路徑:媒資庫>音/視頻。)或服務端接口(SearchMedia)獲取。

    • 音視頻播放憑證可以調用獲取音視頻播放憑證接口獲取。建議您集成點播服務端SDK來獲取音視頻播放憑證,免去自簽名的麻煩。調用接口獲取音視頻播放憑證的示例請參見開發者門戶

      推薦視頻點播用戶采用此播放方式。相比STS播放方式,PlayAuth播放方式在易用性和安全性上更有優勢,對比詳情請參見憑證方式與STS方式對比

    VidAuth vidAuth = new VidAuth();
     vidAuth.setVid("Vid信息");//視頻ID(VideoId)
     vidAuth.setPlayAuth("playAuth信息");//播放憑證
     vidAuth.setRegion("接入地域");//點播服務的接入地域,默認為cn-shanghai
     aliPlayer.setDataSource(vidAuth);

    點播VidSts播放

    使用點播VidSts播放方式播放點播視頻是指用STS臨時憑證而非點播音視頻播放憑證播放。STS臨時Token需要提前獲取,獲取方式請參見使用STS臨時授權方案上傳視頻

    播放時需要將播放器的securityToken屬性設置為STS臨時Token,同時設置為STS臨時Token生成的臨時AK對(accessKeyId和accessKeySecret)。

    VidSts vidSts = new VidSts();
     vidSts.setVid("Vid信息");//視頻ID(VideoId)
     vidSts.setAccessKeyId("<yourAccessKeyId>");//鑒權ID
     vidSts.setAccessKeySecret("<yourAccessKeySecret>");//鑒權密鑰
     vidSts.setSecurityToken("<yourSecurityToken>");//安全token
     vidSts.setRegion("接入地域");//點播服務的接入地域,默認為cn-shanghai
     aliPlayer.setDataSource(vidSts);

    點播加密播放

    點播視頻支持HLS標準加密、阿里云私有加密和DRM加密。加密播放請參見如何播放加密視頻

    直播視頻播放

    直播UrlSource播放

    使用UrlSource播放方式播放直播視頻,需要將播放器的setUrl屬性設置為直播拉流地址。播放地址可以是第三方直播地址或阿里云直播服務中的拉流地址。

    阿里云直播拉流地址可以通過直播控制臺的地址生成器生成。詳情請參見直播地址生成器

    UrlSource urlSource = new UrlSource();
     urlSource.setUri("播放地址");//播放地址,可以是第三方直播地址,或阿里云直播服務中的拉流地址。
     aliPlayer.setDataSource(urlSource);

    直播DRM加密播放

    直播DRM加密播放請參見播放DRM加密視頻-Web端

  4. 設置顯示View。

    播放器支持SurfaceView和TextureView,任選其中一種即可。

    • 設置SurfaceView,示例如下:

      SurfaceView surfaceView = findViewById(R.id.surface_view);
      surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
       @Override
       public void surfaceCreated(SurfaceHolder holder) {
       aliPlayer.setSurface(holder.getSurface());
       }
      
       @Override
       public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
       aliPlayer.surfaceChanged();
       }
      
       @Override
       public void surfaceDestroyed(SurfaceHolder holder) {
       aliPlayer.setSurface(null);
       }
      });
    • 設置TextureView,示例如下:

      TextureView textureView = findViewById(R.id.texture_view);
      textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
       @Override
       public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
       aliPlayer.setSurface(new Surface(surface));
       }
      
       @Override
       public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
       aliPlayer.surfaceChanged();
       }
      
       @Override
       public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
       aliPlayer.setSurface(null);
       return false;
       }
      
       @Override
       public void onSurfaceTextureUpdated(SurfaceTexture surface) {
      
       }
      });
  5. 可選:開啟自動播放,默認為關閉狀態。

    aliPlayer.setAutoPlay(true);
  6. 準備播放。

    調用aliPlayer.prepare()開始讀取并解析數據。

    aliPlayer.prepare();
  7. 開始播放。

    • 如果未開啟自動播放,需要在OnPrepard回調中調用aliPlayer.start()開始播放視頻。

    • 如果開啟了自動播放,則不需要調用aliPlayer.start(),數據解析完成后將開始自動播放視頻。

    aliPlayer.start();//開始之后可以調用pause()暫停播放視頻。

控制播放

Android端播放器SDK支持從指定時間點播放、開始、暫停、停止播放等操作。

開始播放

指開始播放視頻,由start接口實現。示例如下:

aliyunVodPlayer.start();

從指定時間開始播放

指跳轉到某個時刻進行播放,由seekTo接口實現。適用于用戶拖拽進度條,或續播等需要從指定時間點開始播放的場景。示例如下:

//posotion為指定的時間,單位:毫秒。
aliyunVodPlayer.seekTo(long position);

暫停播放

指暫停播放視頻,由pause接口實現。示例如下:

aliyunVodPlayer.pause();

停止播放

指停止播放視頻,由stop接口實現。示例如下:

aliyunVodPlayer.stop();

設置顯示模式

Android端播放器SDK支持填充、旋轉、鏡像等顯示設置。

填充

支持設置寬高比適應、寬高比填充和拉伸填充這3種畫面填充模式,由setScaleMode接口實現。示例如下:

//設置寬高比適應(將按照視頻寬高比等比縮小到view內部,不會有畫面變形)
aliyunVodPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FIT);
//設置寬高比填充(將按照視頻寬高比等比放大,充滿view,不會有畫面變形)
aliyunVodPlayer.setScaleMode(ScaleMode.SCALE_ASPECT_FILL);
//設置拉伸填充(如果視頻寬高比例與view比例不一致,會導致畫面變形)
aliyunVodPlayer.setScaleMode(ScaleMode.SCALE_TO_FILL);

旋轉

指畫面按指定角度旋轉,由setRotateMode接口實現。設置后還可查詢旋轉角度。示例如下:

//設置畫面順時針旋轉0度
aliyunVodPlayer.setRotateMode(RotateMode.ROTATE_0);
//設置畫面順時針旋轉90度
aliyunVodPlayer.setRotateMode(RotateMode.ROTATE_90);
//設置畫面順時針旋轉180度
aliyunVodPlayer.setRotateMode(RotateMode.ROTATE_180);
//設置畫面順時針旋轉270度
aliyunVodPlayer.setRotateMode(RotateMode.ROTATE_270);
//獲取旋轉角度
aliyunVodPlayer.getRotateMode();

鏡像

指畫面按不同鏡像效果顯示,支持水平鏡像、垂直鏡像和無鏡像,由setMirrorMode接口實現。示例如下:

//設置無鏡像
aliyunVodPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_NONE);
//設置水平鏡像
aliyunVodPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_HORIZONTAL);
//設置垂直鏡像
aliyunVodPlayer.setMirrorMode(MirrorMode.MIRROR_MODE_VERTICAL);

獲取播放信息

Android端播放器SDK支持獲取當前的播放進度、播放時長和緩沖進度等信息。

獲取當前播放進度

指獲取當前的播放時刻,需要在onInfo回調中獲取,由getExtraValue接口實現。示例如下:

mAliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
 @Override
 public void onInfo(InfoBean infoBean) {
 if(infoBean.getCode() == InfoCode.CurrentPosition){
 //extraValue為當前播放進度,單位為毫秒
 long extraValue = infoBean.getExtraValue();
 }
 }
});

獲取播放時長

指獲取視頻總時長。需要在視頻加載完成以后才可以獲取到,可以在onPrepared事件后獲取。由getDuration接口實現。示例如下:

long duration = mAliPlayer.getDuration();

獲取緩沖進度

指獲取視頻當前的緩沖進度,需要在onInfo回調中獲取,由getExtraValue接口實現。示例如下:

mAliPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
 @Override
 public void onInfo(InfoBean infoBean) {
 if(infoBean.getCode() == InfoCode.BufferedPosition){
 ////extraValue為當前緩沖進度,單位為毫秒
 long extraValue = infoBean.getExtraValue();
 }
 }
});

獲取實時渲染幀率、音視頻碼率、網絡下行碼率

示例如下:

//獲取當前渲染的幀率,數據類型為Float。
mAliPlayer.getOption(IPlayer.Option.RenderFPS);
//獲取當前播放的視頻碼率,數據類型為Float,單位為bps。
mAliPlayer.getOption(IPlayer.Option.VideoBitrate);
//獲取當前播放的音頻碼率,數據類型為Float,單位為bps。
mAliPlayer.getOption(IPlayer.Option.AudioBitrate);
//獲取當前的網絡下行碼率,數據類型為Float,單位為bps。
mAliPlayer.getOption(IPlayer.Option.DownloadBitrate);

監聽播放狀態

指監聽播放器的狀態,onStateChanged回調參數為當前播放器狀態。示例如下:

mAliPlayer.setOnStateChangedListener(new IPlayer.OnStateChangedListener() {
 @Override
 public void onStateChanged(int newState) {
 /*
 int idle = 0;
 int initalized = 1;
 int prepared = 2;
 int started = 3;
 int paused = 4;
 int stopped = 5;
 int completion = 6;
 int error = 7;
 */
 }
});

設置音量

設置音量包括音量調節和靜音設置。

音量調節

指調節音量大小,支持0~2倍,當音量大于1時,可能出現噪音,不推薦使用。由setVolume接口實現。設置后還可獲取音量信息。示例如下:

//volume的值為0~2之間的實數。
aliyunVodPlayer.setVolume(1f);
//獲取音量信息。
aliyunVodPlayer.getVolume();

靜音設置

指將播放中的視頻設置為靜音狀態,由setMute接口實現。示例如下:

aliyunVodPlayer.setMute(true);

倍速播放

Android端播放器SDK提供了倍速播放視頻的功能,通過設置setSpeed方法,能夠以0.5倍~5倍速去播放視頻。同時保持變聲不變調。示例如下:

//設置倍速播放:支持0.5~5倍速的播放,通常按0.5的倍數來設置,例如0.5倍、1倍、1.5倍等
aliyunVodPlayer.setSpeed(1.0f);

多清晰度設置

如果使用VID方式(VidAuth及VidSts)播放,無需額外設置。Android端播放器SDK會從點播服務獲取清晰度列表。Android端播放器SDK支持獲取和切換清晰度,UrlSource方式暫不支持此設置。

獲取清晰度

當視頻加載完成后,可以獲取視頻的清晰度。

//獲取媒體所有的流信息
List<TrackInfo> trackInfos = mAliPlayer.getMediaInfo().getTrackInfos();
//遍歷并獲取清晰度
for (TrackInfo trackInfo : trackInfos) {
 if(trackInfo.getType() == TrackInfo.Type.TYPE_VOD){
 //獲取視頻清晰度
 String vodDefinition = trackInfo.getVodDefinition();
 }
}

切換清晰度

通過selectTrack方法切換清晰度,傳遞對應TrackInfo的index即可。

mAliPlayer.selectTrack(index);

清晰度切換通知

清晰度切換成功與失敗回調。

mAliPlayer.setOnTrackChangedListener(new IPlayer.OnTrackChangedListener() {
 @Override
 public void onChangedSuccess(TrackInfo trackInfo) { }

 @Override
 public void onChangedFail(TrackInfo trackInfo, ErrorInfo errorInfo) { }
});

循環播放

Android端播放器SDK提供了循環播放視頻的功能。調用setLoop開啟循環播放,播放完成后,將會自動從頭開始播放視頻。示例如下:

aliyunVodPlayer.setLoop(true);

同時循環開始的回調將會使用onInfo中通知。示例如下:

aliyunVodPlayer.setOnInfoListener(new IPlayer.OnInfoListener() {
 @Override
 public void onInfo(InfoBean infoBean) {
 if (infoBean.getCode() == InfoCode.LoopingStart){
 //循環播放開始事件。
 }
 }
});

相關文檔