阿里云移动端播放器高级功能---截图和音频波形
基本介紹
如果用戶對(duì)視頻播放中的某一幀畫(huà)面特別感興趣,可以使用截圖功能將這一幀視頻保存起來(lái)。另外有一種場(chǎng)景想知道是否有聲音,或者想感知聲音的大小震動(dòng)頻率等,可以通過(guò)顯示一個(gè)聲音的波形來(lái)形象的表示。如下圖所示:
那么播放器提供了類(lèi)似的方法可以讓用戶有辦法去實(shí)現(xiàn)音頻波形這個(gè)功能。那么這種通常在音樂(lè)播放器中比較常見(jiàn),或者在直播場(chǎng)景中來(lái)標(biāo)識(shí)對(duì)方講話是否有聲音等,有一定的應(yīng)用場(chǎng)景。
視頻截圖
實(shí)現(xiàn)接口
iOS接口如下:
/**
- 功能:截取當(dāng)前正在播放圖像
*
*/
-(UIImage*) snapshot;
Android接口如下:
public Bitmap snapShot();
需要注意
視頻內(nèi)容截取
需要知道的是視頻截圖截取的是視頻的真實(shí)內(nèi)容,而不是渲染窗口大小的圖像。比如播放的是1920x1080的圖像,窗口渲染大小是800*600,那么截取出來(lái)的圖像是原始的1080p的圖像,而不是窗口渲染大小的圖像。這樣截取出來(lái)的內(nèi)容不會(huì)有失真的情況。
保持鏡像和旋轉(zhuǎn)
如果此時(shí)用戶設(shè)置了鏡像或者旋轉(zhuǎn)模式,那么截取出來(lái)的視頻內(nèi)容也是有旋轉(zhuǎn)和鏡像的圖像。SDK內(nèi)部已經(jīng)對(duì)這種情況進(jìn)行了處理。
音頻波形
實(shí)現(xiàn)接口
用戶要實(shí)現(xiàn)音柱功能,播放器SDK必須要將實(shí)時(shí)的播放音頻數(shù)據(jù)回調(diào)出來(lái),具體見(jiàn)一下方法:
iOS接口:通過(guò)一個(gè)block回調(diào)出PCM音頻數(shù)據(jù)
/**
- 功能:
- 參數(shù):block:音頻數(shù)據(jù)回調(diào)
*
*/
-(void) getAudioData:(void (^)(NSData *data))block;
Android接口:通過(guò)一個(gè)監(jiān)聽(tīng)來(lái)獲取音頻數(shù)據(jù)
public interface OnPcmDataListener {
public void onPcmData(byte[] data, int size);}
public void setOnPcmDataListener(OnPcmDataListener onPcmDataListener);
實(shí)現(xiàn)音頻波形
拿到了PCM數(shù)據(jù)之后,如何去繪制音頻波形,就是應(yīng)用層的事情了,iOS和Java層都有很多繪制音頻波形的方法。
要繪制成什么樣的形狀都可以安裝自己的需求來(lái)做。這些在網(wǎng)上都有很多相關(guān)的資料,在這里就不進(jìn)行描述。
類(lèi)似如下比較炫的效果都可以實(shí)現(xiàn)。
本文作者:雋阜
閱讀原文
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的阿里云移动端播放器高级功能---截图和音频波形的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 蓝桥学院2019算法题1.3
- 下一篇: 【随笔】工程师都是性情中人