1. 程式人生 > >阿裏雲移動端播放器高級功能---截圖和音頻波形

阿裏雲移動端播放器高級功能---截圖和音頻波形

音頻 blog aca androi () 什麽 snap 取出 阿裏雲

基本介紹
如果用戶對視頻播放中的某一幀畫面特別感興趣,可以使用截圖功能將這一幀視頻保存起來。另外有一種場景想知道是否有聲音,或者想感知聲音的大小震動頻率等,可以通過顯示一個聲音的波形來形象的表示。如下圖所示:
技術分享圖片
那麽播放器提供了類似的方法可以讓用戶有辦法去實現音頻波形這個功能。那麽這種通常在音樂播放器中比較常見,或者在直播場景中來標識對方講話是否有聲音等,有一定的應用場景。

視頻截圖
實現接口
iOS接口如下:

/**

  • 功能:截取當前正在播放圖像
  • /
    -(UIImage
    ) snapshot;
    Android接口如下:

public Bitmap snapShot();
需要註意
視頻內容截取
需要知道的是視頻截圖截取的是視頻的真實內容,而不是渲染窗口大小的圖像。比如播放的是1920x1080的圖像,窗口渲染大小是800*600,那麽截取出來的圖像是原始的1080p的圖像,而不是窗口渲染大小的圖像。這樣截取出來的內容不會有失真的情況。

保持鏡像和旋轉
如果此時用戶設置了鏡像或者旋轉模式,那麽截取出來的視頻內容也是有旋轉和鏡像的圖像。SDK內部已經對這種情況進行了處理。

音頻波形
實現接口
用戶要實現音柱功能,播放器SDK必須要將實時的播放音頻數據回調出來,具體見一下方法:
iOS接口:通過一個block回調出PCM音頻數據

/**

  • 功能:
  • 參數:block:音頻數據回調
  • /
    -(void) getAudioData:(void (^)(NSData
    data))block;
    Android接口:通過一個監聽來獲取音頻數據

public interface OnPcmDataListener {
public void onPcmData(byte[] data, int size);

}

public void setOnPcmDataListener(OnPcmDataListener onPcmDataListener);
實現音頻波形
拿到了PCM數據之後,如何去繪制音頻波形,就是應用層的事情了,iOS和Java層都有很多繪制音頻波形的方法。
要繪制成什麽樣的形狀都可以安裝自己的需求來做。這些在網上都有很多相關的資料,在這裏就不進行描述。

類似如下比較炫的效果都可以實現。
技術分享圖片
技術分享圖片

阿裏雲移動端播放器高級功能---截圖和音頻波形