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

基本介紹

若是用戶對視頻播放中的某一幀畫面特別感興趣,可使用截圖功能將這一幀視頻保存起來。另外有一種場景想知道是否有聲音,或者想感知聲音的大小震動頻率等,能夠經過顯示一個聲音的波形來形象的表示。以下圖所示:微信

那麼播放器提供了相似的方法可讓用戶有辦法去實現音頻波形這個功能。那麼這種一般在音樂播放器中比較常見,或者在直播場景中來標識對方講話是否有聲音等,有必定的應用場景。阿里雲

視頻截圖

實現接口spa

iOS接口以下:3d

/**
 * 功能:截取當前正在播放圖像
 *
 */
-(UIImage*) snapshot;

Android接口以下:code

public Bitmap snapShot();

須要注意視頻

視頻內容截取blog

須要知道的是視頻截圖截取的是視頻的真實內容,而不是渲染窗口大小的圖像。好比播放的是1920x1080的圖像,窗口渲染大小是800*600,那麼截取出來的圖像是原始的1080p的圖像,而不是窗口渲染大小的圖像。這樣截取出來的內容不會有失真的狀況。接口

保持鏡像和旋轉get

若是此時用戶設置了鏡像或者旋轉模式,那麼截取出來的視頻內容也是有旋轉和鏡像的圖像。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層都有不少繪製音頻波形的方法。
要繪製成什麼樣的形狀均可以安裝本身的需求來作。這些在網上都有不少相關的資料,在這裏就不進行描述。

相似以下比較炫的效果均可以實現。

 

 

原文連接 更多技術乾貨 請關注阿里云云棲社區微信號 :yunqiinsight

相關文章
相關標籤/搜索