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

基礎功能

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

基礎播放

創建播放器

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

  1. 創建播放器。

    創建AliPlayer播放器。

    using namespace alivc_player;
    AliPlayer* mPlayerPtr = AliPlayer::CreatePlayer();
  2. 設置監聽器。

    Windows端播放器SDK提供了各種事件回調,比如:onPlayerEvent、onError等事件。使用時需要一個類繼承IAVPListener,并實現里面的純虛函數。示例如下:

    mPlayerPtr->setListener(new AVPListenerImpl);
  3. 創建播放源。

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

    • Windows端播放器SDK僅支持1種直播播放方式,為UrlSource播放。

    點播視頻播放

    點播UrlSource播放

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

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

    AVPUrlSource urlSource;
    urlSource.setUrl("media url"); //播放地址,可以是第三方點播地址,或阿里云點播服務中的播放地址。
    mPlayerPtr->setSource(urlSource);

    點播VidAuth播放(推薦)

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

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

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

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

    AVPVidAuthSource authSource;
    authSource.initWithVid("Vid信息",
     "playAuth信息", // 播放憑證
     "接入地域"); // 點播服務的接入地域,默認為cn-shanghai
    mPlayerPtr->setSource(authSource);

    點播VidSts播放

    使用點播VidSts播放方式播放點播視頻是指用STS臨時憑證而非點播音視頻播放憑證播放。STS臨時Token需要提前獲取,獲取方式請參見創建RAM角色并進行STS臨時授權

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

    AVPVidStsSource vidSource;
    vidSource.initWithVid("Vid信息", //視頻ID(VideoId)
    "<yourAccessKeyId>", //鑒權ID
    "<yourAccessKeySecret>", //鑒權密鑰
     	"<yourSecurityToken>", //安全token
    "region", //接入地域
    nullptr);
    mPlayerPtr->setSource(vidSource);

    直播視頻UrlSource播放

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

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

    AVPUrlSource urlSource;
    urlSource.setUrl("media url"); //播放地址可以是第三方直播地址,或阿里云直播服務中的拉流地址。
    mPlayerPtr->setSource(urlSource);
  4. 設置顯示View。

    如果播放源有畫面,那么需要設置顯示的view到播放器中,用來顯示畫面。示例如下:

    mPlayerPtr->setView((void *)顯示區域的HWND);
  5. 準備播放。

    調用prepare()方法準備播放。

    mPlayerPtr->prepare();
  6. 可選:開啟自動播放,默認為關閉狀態。

    mPlayerPtr->setAutoPlay(true);
  7. 開始播放。

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

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

    mPlayerPtr->start();

控制播放

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

開始播放

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

mPlayerPtr->start();

從指定時間開始播放

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

//跳轉到特定時刻的視頻畫面。
//mode取值:AVP_SEEKMODE_ACCURATE(精確seek)和AVP_SEEKMODE_INACCURATE(非精確seek)。非精確seek會跳轉到向前最近的關鍵幀處。精確seek會跳轉到精確的時間,但比非精確seek會慢一些。
mPlayerPtr->seekToTime(int64_t time_in_ms, mode);

暫停播放

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

mPlayerPtr->pause();

停止播放

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

mPlayerPtr->stop();

設置顯示模式

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

填充

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

//設置寬高比適應(將按照視頻寬高比等比縮小到view內部,不會有畫面變形)
mPlayerPtr->setScalingMode(AVP_SCALINGMODE_SCALEASPECTFIT);
//設置寬高比填充(將按照視頻寬高比等比放大,充滿view,不會有畫面變形)
mPlayerPtr->setScalingMode(AVP_SCALINGMODE_SCALEASPECTFILL);
//設置拉伸填充(如果視頻寬高比例與view比例不一致,會導致畫面變形)
mPlayerPtr->setScalingMode(AVP_SCALINGMODE_SCALETOFILL);

旋轉

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

//設置畫面順時針旋轉0度
mPlayerPtr->setRotateMode(AVP_ROTATE_0);
//設置畫面順時針旋轉90度
mPlayerPtr->setRotateMode(AVP_ROTATE_90);
//設置畫面順時針旋轉180度
mPlayerPtr->setRotateMode(AVP_ROTATE_180);
//設置畫面順時針旋轉270度
mPlayerPtr->setRotateMode(AVP_ROTATE_270);
//獲取旋轉角度
mPlayerPtr->getRotateMode();

鏡像

支持水平鏡像、垂直鏡像和無鏡像,由setMirrorMode接口實現。示例如下:

//設置無鏡像
mPlayerPtr->setMirrorMode(AVP_MIRRORMODE_NONE);
//設置水平鏡像
mPlayerPtr->setMirrorMode(AVP_MIRRORMODE_HORIZONTAL);
//設置垂直鏡像
mPlayerPtr->setMirrorMode(AVP_MIRRORMODE_VERTICAL); 

獲取播放信息

Windows端播放器SDK支持獲取當前的播放進度和播放時長。

獲取當前播放進度

獲取當前的播放時刻,在onCurrentPositionUpdate回調中獲取,單位毫秒。示例如下:

void AlivcLivePlayerMainDlg::onCurrentPositionUpdate(AliPlayer *player, int64_t position)
{
 //position為當前播放進度,單位為毫秒
printf("current position is %lld ms", position);
}

獲取播放時長

獲取視頻總時長。需要在視頻加載完成以后才可以獲取到,可以在AVPEventPrepareDone事件后獲取duration。示例如下:

void AlivcLivePlayerMainDlg::onPlayerEvent(AliPlayer *player, AVPEventType eventType)
{
 if (eventType == AVPEventPrepareDone) {
 int64_t duration = mPlayerPtr->getDuration();
printf("total duration is %lld ms", duration);
 }
}

獲取緩沖進度

獲取視頻當前的緩沖進度,需要在onBufferedPositionUpdate回調中獲取position。示例如下:

void AlivcLivePlayerMainDlg::onBufferedPositionUpdate(AliPlayer *player, int64_t position)
{
 printf("buffered position is %lld ms", position);
}

監聽播放狀態

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

void AlivcLivePlayerMainDlg::onPlayerStatusChanged(AliPlayer *player, AVPStatus oldStatus, AVPStatus newStatus)
{
 switch (newStatus) {
case AVPStatusIdle:{
// 空轉,閑時,靜態
}
break;
case AVPStatusInitialzed:{
// 初始化完成
}
 break;
 case AVPStatusPrepared:{
// 準備完成
}
break;
case AVPStatusStarted:{
// 正在播放
}
 break;
case AVPStatusPaused:{
// 播放暫停
}
break;
case AVPStatusStopped:{
// 播放停止
 }
break;
case AVPStatusCompletion:{
// 播放完成
 }
break;
case AVPStatusError:{
// 播放錯誤
 }
break;
default:
break;
}
}

設置音量

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

音量調節

調節音量大小,由setVolume接口實現。設置后還可獲取音量信息。示例如下:

//volume的值為0~2.0。
mPlayerPtr->setVolume(1.0f);
//獲取音量信息。
mPlayerPtr->getVolume();

靜音設置

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

mPlayerPtr->setMute(true);

倍速播放

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

//設置倍速播放:支持0.5~2倍速的播放,通常按0.5的倍數來設置,例如0.5倍、1倍、1.5倍等
mPlayerPtr->setRate(1.5);

多清晰度設置

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

獲取清晰度

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

void AlivcLivePlayerMainDlg::onTrackReady(AliPlayer *player, AVPTrackInfo *info[], int count)
{
 if (count < 0) {
 return;
 }

 for (int i = 0; i < count; i++) {
 AVPTrackInfo *track = info[i];
 switch (track->trackType) {
 case AVPTRACK_TYPE_VIDEO: {
 int trackBitrate = track->trackBitrate;
 } break;
 }
 }
}

切換清晰度

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

mPlayerPtr->selectTrack(trackIndex);

清晰度切換通知

清晰度切換成功回調。

void AlivcLivePlayerMainDlg::onTrackChanged(AliPlayer *player, AVPTrackInfo *info)
{
 // 切換完成
}

循環播放

Windows端播放器SDK提供了循環播放視頻的功能。調用setLoop開啟循環播放,播放完成后,將會自動從頭開始播放視頻。同時循環開始的回調將會在AVPEventLoopingStart中通知。示例如下:

mPlayerPtr->setLoop(true);