關鍵詞:ijkplayer / 播放器 / 視頻技術
本次筆記主要梳理了幾家主流視頻播放器的調研和對視頻技術的初步分析。
(1)ijkplayer - 支持 Android 和 iOS 平臺; - API 易于集成; - 編譯配置可裁剪,方便控制安裝包大小; - 支持硬件加速解碼; - 移除了 ffmpeg 視頻內核中不常用的特性以減小體積; - 使用各種平臺原生的渲染方式進行優化,修復一些在線視頻播放的 BUG; - 開源;
(2)Vitamio - 支持 Android 和 iOS 平臺; - 支持硬件解碼與 GPU 渲染,API 接口簡潔易用; - 目前,全球已經有超過一萬種應用在使用 vitamio,覆蓋用戶超過 5 億; - 可播放 720P 甚至 1080P 高清 MKV / FLV / MP4 / MOV / TS / RMVB等常見格式的視頻 - 支持 MMS / RTSP / RTSP / HLS(m3u8) 等常見協議,包括點播與直播; - 高級功能收費;
(3)VLC - 全名是 Video Lan Client,是一個開源的、跨平臺的視頻播放器,支持大量的音視頻傳輸、封裝和編碼格式 - 幾乎支持所有的視頻格式,也很注重版權方面的問題,程序結構的擴展性好; - 開源; - 項目龐大;
(4)優酷 - 優酷公司開放的播放器框架,支持 Android / iOS / Web 平臺,用于播放優酷視頻網站的視頻; - 呵呵,比較封閉; - 接口不夠豐富,不支持 1080P; - 不開源;
對我個人而言,更喜歡 ijkplayer,有以下幾個原因:1. 它開源,便于掌握關鍵機制和定制功能;2. 項目代碼比較精簡,相對于 VLC 來說,研究難度小一些;3. 功能強大,主流視頻格式和協議都支持;


ffmpeg 編譯之后主要是用于生成 libijksdl.so,ibijkffmpeg.so 兩個分別主宰不同的方向:libijksdl.so 用于繪圖顯示(視頻播放線程等和鍵鼠操控);libijkffmpeg.so用于數據解碼等處理;
整體解碼內核使用了 3 個第三方庫: 1. ffmpeg 生成 libijkffmpeg.so 2. sdl 生成 libijksdl.so 3. libyuv 被靜態鏈接進 sdl 中
作者的播放器庫: libijkplayer.so 基于 ffplay,增加了不少東西,是 player 級別的關鍵代碼 作者自主功能主要在 libijkplayer.so 這塊
http://dranger.com/ffmpeg/ 這應該是目前網絡上大多數教程的參考源。
http://blog.csdn.net/leixiaohua1020/article/details/15811977 這是一個總結性的文章,作者對 FFmpeg 的底層做了很多的研究,Android 端太少,但是源碼分析的很不錯,唯一可惜的是作者沒有敢去分析 ffplay 的源碼,要不我們的工作量或者我們對播放的原理理解就會進入一個新的高度
http://dande618.github.io/blog/2013/10/29/FFMepg/ 這個博客的代碼對音頻進行了較好的處理(雖然不大懂,但確實可以工作)
http://www.cnblogs.com/tanlon/p/3966130.html 這個博客的作者對很多音視頻相關的內容進行了多個平臺的實踐,值得參考
https://github.com/dxjia/ffmpeg-jni-sample 這位作者使用 FFmpeg 將本地視頻轉成 gif 圖片播放,源碼由于環境的緣故還沒有測試,但好歹是一個突破。
http://blog.csdn.net/jwzhangjie/article/details/9111547 本地視頻播放器開發–SDL 編譯編譯中編譯出 sdl 的支持庫,只可惜是本地的
End.
Note by HF.
新聞熱點
疑難解答