網(wǎng)絡(luò)音頻播放器開發(fā)小結(jié)

最近項目中用到網(wǎng)絡(luò)音頻播放务漩,寫了一個簡單的播放器,沒有什么特別之處它褪,滿足項目需求饵骨。遇到一些小問題,記錄一下茫打。

1居触,后臺持續(xù)播放。這個需求很正常老赤,比較簡單轮洋,在Capabilities中打開后臺模式,勾選audio抬旺。然后代碼注冊后臺事件弊予。如果是播放本地音頻,這樣既可开财,但是網(wǎng)絡(luò)音頻最好申請一個后臺ID汉柒,否則可能會在播放時突然中斷。

- (void)applicationWillResignActive:(MMUIApplication *)application {
    
 
    /* 以下3行注冊后臺事件责鳍。一般寫在AppDelegate的- (BOOL)application:(MMUIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中碾褂。但是寫在這里,會和別的音樂播放app爭奪audio session資源历葛。例如網(wǎng)易云音樂正塌。打開app網(wǎng)易云音樂就會被打斷播放,我的項目并不是純音樂播放啃洋,有資訊和論壇,這樣如果沒有播放音頻就打斷別的app屎鳍,體驗不好宏娄,所以這三行代碼我寫在播放的viewController中。(網(wǎng)易云音樂只要打開就會打斷別的app的音頻播放逮壁,牛)孵坚。
     另外我會在AppDelegate的- (void)applicationWillResignActive:(MMUIApplication *)application方法中也寫一次,不然我的項目中有時候退到后臺,音樂會莫名停止卖宠。
     */
    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setActive:YES error:nil];
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    /*
     這兩行注冊接收鎖屏狀態(tài)下的播放控制中心遠(yuǎn)程事件巍杈,如耳機(jī)控制。不寫的話鎖屏后沒有播放信息扛伍。
     */
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
    //后臺ID
    _bgTaskId = [MMUIApplication backgroundPlayerID:_bgTaskId];
}
    

+(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId {
    //設(shè)置后臺任務(wù)ID
    UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
    newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
    if(newTaskId != UIBackgroundTaskInvalid && backTaskId != UIBackgroundTaskInvalid) {
        [[UIApplication sharedApplication] endBackgroundTask:backTaskId];
    }
    return newTaskId;
}

2筷畦,鎖屏狀態(tài)下的時間進(jìn)度問題。配置好播放控制中心后刺洒,系統(tǒng)會根據(jù)播放狀態(tài)自動控制時間的走動鳖宾,但是暫停再繼續(xù)播放后會發(fā)現(xiàn)時間會跳,暫停的時間也會被加上去逆航。只好每秒都設(shè)置 播放中心信息鼎文。這樣切換歌曲也不會出現(xiàn)問題。不然因俐,播放時間會異常拇惋。

_timeObserve = [_player addPeriodicTimeObserverForInterval:CMTimeMake(1.0, 1.0) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
        float current = CMTimeGetSeconds(time);
        float total = CMTimeGetSeconds(weakSelf.currentItem.duration);
        //監(jiān)聽是否進(jìn)入后臺,后臺模式下每秒都配置媒體中心數(shù)據(jù)
        if (weakSelf.background) {
            [weakSelf configNowPlayingCenter];
        }
        if (!weakSelf.isLive && current > 0.0 && total > 0.0) {
            weakSelf.progress = current / total;
            weakSelf.playTime = current;
            weakSelf.itemDuration = total;
        }
       //發(fā)通知告訴外部更新播放進(jìn)度 
    }];

3抹剩,播放緩沖時間撑帖。在我的項目中,直播只需要很少的緩沖就能很快播放吧兔,但是回放就需要8秒左右的緩沖時間磷仰,太久了。查到一個屬性境蔼,ios10之后可用灶平,能支持大多數(shù)用戶了。設(shè)置后緩沖時間明顯減少箍土,和直播緩沖時間差不多逢享,提高體驗。

if( [[UIDevice currentDevice] systemVersion].intValue >= 10){
     _player.automaticallyWaitsToMinimizeStalling = NO;
 }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴藻,一起剝皮案震驚了整個濱河市瞒爬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沟堡,老刑警劉巖侧但,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異航罗,居然都是意外死亡禀横,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門粥血,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柏锄,“玉大人酿箭,你說我怎么就攤上這事≈和蓿” “怎么了缭嫡?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抬闷。 經(jīng)常有香客問我妇蛀,道長,這世上最難降的妖魔是什么饶氏? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任讥耗,我火速辦了婚禮,結(jié)果婚禮上疹启,老公的妹妹穿的比我還像新娘古程。我一直安慰自己,他們只是感情好喊崖,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布挣磨。 她就那樣靜靜地躺著,像睡著了一般荤懂。 火紅的嫁衣襯著肌膚如雪茁裙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天节仿,我揣著相機(jī)與錄音晤锥,去河邊找鬼。 笑死廊宪,一個胖子當(dāng)著我的面吹牛矾瘾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箭启,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼壕翩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了傅寡?” 一聲冷哼從身側(cè)響起放妈,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荐操,沒想到半個月后芜抒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡托启,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年宅倒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驾中。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡唉堪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肩民,到底是詐尸還是另有隱情唠亚,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布持痰,位于F島的核電站灶搜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏工窍。R本人自食惡果不足惜割卖,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望患雏。 院中可真熱鬧鹏溯,春花似錦、人聲如沸淹仑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匀借。三九已至颜阐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吓肋,已是汗流浹背凳怨。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留是鬼,地道東北人肤舞。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像屑咳,于是被迫代替她去往敵國和親萨赁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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