Android MediaPlayer 音頻倍速播放鸳慈,調(diào)整播放速度

現(xiàn)在市面上的很多音視頻App都有倍速播放的功能饱溢,例如把播放速度調(diào)整為0.5、1.5走芋、2倍等等绩郎。

從Android API 23 (Android M)開始,MediaPlayer支持調(diào)整播放速度翁逞。
使用的方法是setPlaybackParams肋杖,傳入一個(gè)代表播放屬性的類PlaybackParams。

本文介紹如何使用MediaPlayer調(diào)整播放速度挖函。

MediaPlayer.setPlaybackParams 說明

播放速度設(shè)置在PlaybackParams對(duì)象中状植,再將此對(duì)象傳入setPlaybackParams。

setPlaybackParams是一個(gè)native方法怨喘。
如果MediaPlayer沒有準(zhǔn)備(在prepared之前)津畸,調(diào)用此方法并不會(huì)改變MediaPlayer的狀態(tài)。
在MediaPlayer成功prepare之后必怜,如果設(shè)置的速度為0肉拓,相當(dāng)于調(diào)用了pause方法;如果設(shè)置速度不為0梳庆,相當(dāng)于調(diào)用了start方法暖途。

異常情況

如果MediaPlayer沒有初始化或者已經(jīng)被釋放,即處于Idle或End狀態(tài)膏执,調(diào)用setPlaybackParams方法會(huì)拋出IllegalStateException異常驻售。

如果傳入的PlaybackParams不被支持,則拋出IllegalArgumentException異常更米。

如果設(shè)置速度小于0欺栗,則拋出java.lang.IllegalArgumentException異常。

MediaPlayer.setPlaybackParams 方法示例

設(shè)置播放速度。先判斷當(dāng)前系統(tǒng)版本纸巷。

private boolean setPlaySpeed(float speed) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        PlaybackParams params = mediaPlayer.getPlaybackParams();
        params.setSpeed(speed);
        mediaPlayer.setPlaybackParams(params);
        return true;
    }
    return false;
}

getPlaybackParams可以獲取到MediaPlayer當(dāng)前的PlaybackParams對(duì)象镇草。
也可以給這個(gè)方法加上try catch,結(jié)合返回的boolean值判斷設(shè)置速度是否成功瘤旨。

private boolean setPlaySpeed(float speed) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        try {
            PlaybackParams params = mediaPlayer.getPlaybackParams();
            params.setSpeed(speed);
            mediaPlayer.setPlaybackParams(params);
            return true;
        } catch (Exception e) {
            Log.e(TAG, "setPlaySpeed: ", e);
            return false;
        }
    }
    return false;
}

參考代碼 https://github.com/RustFisher/android-MediaPlayer

PlaybackParams 包含的速度值

調(diào)整MediaPlayer播放速度時(shí)梯啤,我們使用了PlaybackParams對(duì)象。AudioTrack也會(huì)用到這個(gè)類存哲。

PlaybackParams包含著播放時(shí)候的一些屬性因宇。例如speed就是播放速度。

PlaybackParams.setSpeed(float speed)

傳入速度倍率值祟偷。會(huì)標(biāo)記當(dāng)前設(shè)置過了速度察滑。

public PlaybackParams setSpeed(float speed) {
    mSpeed = speed;
    mSet |= SET_SPEED;
    return this;
}

PlaybackParams.getSpeed()

獲取已設(shè)置的速度值。如果之前沒設(shè)置過速度修肠,則拋出IllegalStateException異常贺辰。

public float getSpeed() {
    if ((mSet & SET_SPEED) == 0) {
        throw new IllegalStateException("speed not set");
    }
    return mSpeed;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嵌施,隨后出現(xiàn)的幾起案子饲化,更是在濱河造成了極大的恐慌,老刑警劉巖吗伤,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吃靠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡足淆,警方通過查閱死者的電腦和手機(jī)巢块,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巧号,“玉大人族奢,你說我怎么就攤上這事×阎穑” “怎么了歹鱼?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卜高。 經(jīng)常有香客問我弥姻,道長,這世上最難降的妖魔是什么掺涛? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任庭敦,我火速辦了婚禮,結(jié)果婚禮上薪缆,老公的妹妹穿的比我還像新娘秧廉。我一直安慰自己伞广,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布疼电。 她就那樣靜靜地躺著嚼锄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔽豺。 梳的紋絲不亂的頭發(fā)上区丑,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音修陡,去河邊找鬼沧侥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛魄鸦,可吹牛的內(nèi)容都是我干的宴杀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拾因,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旺罢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盾致,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤主经,失蹤者是張志新(化名)和其女友劉穎荣暮,沒想到半個(gè)月后庭惜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡穗酥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年护赊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砾跃。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骏啰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抽高,到底是詐尸還是另有隱情判耕,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布翘骂,位于F島的核電站壁熄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏碳竟。R本人自食惡果不足惜草丧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莹桅。 院中可真熱鬧昌执,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岖赋,卻和暖如春呜师,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贾节。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工汁汗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栗涂。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓知牌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斤程。 傳聞我的和親對(duì)象是個(gè)殘疾皇子角寸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容