Android之解決Mediaplayer播放網路音頻緩衝太慢的問題

來源:互聯網
上載者:User

  相信有不少人在使用Mediaplayer播放網路音訊時候,prepare與prepareAsync的方法緩衝太慢,如何解決問題?現在就給出一個親身測試並且用到實際項目中的方案。
  該方案中,用到了架構Vitamio(http://vitamio.org/),在下載頁面中有比較詳細的下載項目與介紹。主要是Demo:https://github.com/yixia/VitamioDemo 與 依賴庫:https://github.com/yixia/VitamioBundle/tree/v3.0

  不過如果僅僅使用依賴庫而不使用自己的重新編譯的FFmpeg,那個res下的動態庫so有5m大,將會造成apk過大的問題。以下就是自己編譯FFmpeg的步驟與注意的地方。這是官方提供的:如何在Vitamio中使用自己編譯的FFmpeghttp://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN

  我是在MAC的系統上編譯的,其他系統也差不多,主要是注意自己的環境那些,例如mac下需要gcc,window下需要cygwin等
  1. 確定自己的mac上已經安裝了gcc的編譯環境,如果沒有請到xcode下載
  2. 下載ndk,vitamio推薦我們使用的是ndk-r8b的版本
  3. 在終端下輸入:export ANDROID_NDK=/path/to/your/android-ndk  (export是關鍵字;ANDROID_NDK照著打吧;後面的地址就是你解壓的ndk地址)

  4. 在終端定位到http://github.com/yixia/FFmpeg-Android網址下載的檔案夾的目錄,然後執行  ./FFmpeg-Android.sh命令。
  4.1 執行git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg下載ffmpeg的代碼,然後才能使用configure --help 命令。

  5. 補充4。 根據官方的解釋,我們可以在FFmpeg-Android.sh 進行適當修改,我們主要是關注FFMPEG_FLAGS下面的配置。
  如果需要配置多個,可以用英文的','分開
  --enable-decoder=aac,mp3,mpeg4 \ 實踐了,這樣寫ok
    5.1 附上一個FFMPEG_FLAGS配置例子:

FFMPEG_FLAGS="--target-os=linux \  --arch=arm \  --enable-cross-compile \  --cross-prefix=arm-linux-androideabi- \  --enable-shared \  --disable-symver \  --disable-doc \  --disable-ffplay \  --disable-ffmpeg \  --disable-ffprobe \  --disable-ffserver \  --disable-avdevice \  --disable-avfilter \  --disable-encoders \  --disable-muxers \  --disable-filters \  --disable-devices \  --disable-everything \  --enable-protocol=http,md5,https,cache,file,httpproxy  \  --enable-parser=aac,aac_latm,mpegaudio \  --enable-demuxer=aac,ogg \  --enable-decoder=aac_latm,aac \  --enable-bsf=aac_adtstoasc,noise \  --enable-network \  --enable-swscale  \  --enable-asm \  --enable-version3"

 

  6. 執行是漫長的等待,不過這時不要鬆懈。你有可能會出現類似ccache的錯誤。這個錯誤會引起不能產生libffmpeg.so檔案的錯誤

    6.1 解決辦法:到網上http://mxcl.github.com/homebrew/ 把類似下面的地址複製到終端,斷行符號執行 
     6.2 ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
   
6.3 
安裝完成之後吧,執行 brew install ccache 
    6.4 重新再編譯執行sh檔案,這時候就可以了
  7. 官方文檔也提到VitamioBundle中的res/raw/libarm.so這個檔案是7-zip壓縮檔。得到這個資訊後,我們可以在終端下使用命令 brew search 7zip搜尋需要的軟體,找到之後就可以使用brew install X    X是你需要的那個軟體名字。
    然後根據7z --help命令得到解壓so檔案的指令,把libffmpeg.so替換解壓出來的libffmpeg.so,官網http://vitamio.org/pages/how-to-use-vitamio-with-your-own-ffmpeg-build?locale=zh-CN有提示,替換完之後再用指令打包回so檔案。
  8. 把這個自己編譯的檔案覆蓋 res/raw/libarm.so檔案,到此,所有的操作已經完成。稍後一些時間,我會完善這一文檔及附上部分圖片。
  9. 附上p7zip的解壓指令:
    9.1 pz x 需要解壓的檔案 -o指定的解壓到的目錄,例:7z x /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so -o/Users/Ari/Downloads/VitamioBundle-3.0/res/raw/lib

    9.2 pz a 指定壓縮到的目錄 需要壓縮的檔案或目錄,使用空格隔開多個,例:7z a /Users/Ari/Downloads/VitamioBundle-3.0/res/raw/libarm.so 60 61 70 71

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.