關於做ipod library開發的體驗。ios擷取音樂庫資訊

來源:互聯網
上載者:User

最近在忙著做一個檔案傳輸的軟體,剛開始也沒去想項目實現的困難度,可不可行。怎麼說呢,因為有類似的軟體都已經上線了,別人都已經實現了,就算在可行性上面做再多的分析,也是多餘的了。做這個項目也是我換工作後的第一個項目,以前做ios開發時間並不是很長,對ios開發的經驗也是有限的。也沒想過會遇到什麼困難,既來之則安之了吧。

  項目分下來後,我被安排做音視頻模組和圖片模組,主要做UI和媒體檔案的擷取任務和播放。看起來並不是很多事情,我按照以前的工作思維,拿到需求,找到解決方案,考慮工作周期,計劃工作量,恭恭敬敬的做起來。一般我的做法都是先把自己沒把握的問題先去找個解決方案,要是有了這些方案後,工作起來就不會感覺到壓力,就只是工作量的問題了。所以看了需求後,我第一個就是去找怎麼擷取ipod裡面的檔案,以及它們的基本屬性,比如音樂檔案,它們的專輯名稱、歌手、封面等。當時在部落格園上找到了一篇關於擷取ipod音樂檔案基本資料的部落格,很興奮的看完了,同時也轉載到了自己的部落格中,供自己以後隨時翻閱,在我的部落格中叫《ios擷取音樂庫資訊(轉)》,當時看的也不是原文,所以我也不知道原文在哪,就只是在標題上加了個“轉”字,以表非自己著作。然後我便按照此篇文章將ipod裡的操作都完成了,播放音樂,音樂列表,音樂檔案的封面,歌手等。其實僅僅只是做到這些,並不是很難,因為你只需要使用MPMediaQuery就可以擷取ipod裡的所有音樂檔案,然後迴圈他的item就可以拿到每個音樂檔案對象,根據音樂檔案對象的valueForProperty:方法可以拿到你想要的東西。小說明一下:並不是你想要的所有都能拿到。正因為這個,我才遇到了些問題,也是我在此項目中遇到最困難最難解決的問題。也開始瞭解ios系統的基本原理。文章開始就說了,我是要做一個檔案傳輸的軟體,所以並不是只將自己程式中的檔案傳輸,既然要提到ipod,也意味著要對ipod裡面的檔案進行操作,需要播放,傳輸等。我想:做ios開發的人都知道ios是一個比較封閉的,這也是此系統的高安全性所在。他基於沙箱原理,想要對其他程式的檔案進行操作,不是系統給出的介面,你是沒辦法去實現你想要的需求的。所以當時我一直對ipod檔案匯出困惑不解,查閱了很多資料,發過很多貼,問過一些同事,但都沒能解決問題。所以這個問題也拖了很久。問題不主要在於怎麼匯出,關鍵在於匯出後還能提供給其他平台的系統使用,比如android系統。這就是檔案的格式問題了。因為在ios系統中,提供的介面匯出的檔案基本上是m4a、caf等的格式。這些格式在android系統上播放不了。所以要想在其他系統中也能播放,也就只能是mp3格式了。想要匯出成mp3格式的檔案,我想很多人都想要這個需求吧,這是我在很多貼上看到的,但基本上沒人能把這個匯出成mp3格式的解決方案貼的很詳細。後來我能想到的辦法就是使用網上說的lame庫,首先將ipod裡面的檔案匯出成caf格式的,再通過lame庫將其轉換成mp3格式的。我試了,成功了,讓我興奮了一把,但匯出的結果卻不盡人意。有兩個最嚴重的缺點,一個是轉換的時間比較長,10M的檔案轉換花了一分鐘,我想:對於一個檔案傳輸的軟體是接受不了這個現實的;二就是它轉換後音質變底了,檔案大小也明顯變小了。我想這是mp3格式的問題,mp3本身就是有損的轉換。做到這裡了,我實在是絕望了,不知道怎麼去解決這個問題了。但別的軟體有是怎麼解決這個問題的呢?我自己都不知道怎麼去說服自己,難道別人是自己做的格式轉換?還是花了錢給了蘋果找了介面直接匯出mp3檔案?這些困惑我無法證實。突然感覺到絕望了。我也開始轉移了注意,著手做了其他項目。也就在做其他項目不久,終於看到希望了,有個同事在網上找到了一個demo,匯出mp3檔案就在一秒之內解決。很神奇,讓我有驚訝有興奮。沒有音質的損失,檔案大小基本沒變化,但還是丟失了一些基本元素,比如歌曲的封面、歌手等屬性。要想做到屬性也不丟失,還得自己加上這些屬性,我想我們已經做的更好了,能匯出mp3檔案已經實在是讓我很興奮了。這些小問題也就先不看吧。

  匯出mp3格式的檔案了,問題也就解決了。我心情也平複了許多。如果有朋友也有此方面的需求,我可以發demo哦。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.