国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

# 對視頻播放器的研究

2019-11-09 17:47:53
字體:
來源:轉載
供稿:網友

關鍵詞:ijkplayer / 播放器 / 視頻技術

本次筆記主要梳理了幾家主流視頻播放器的調研和對視頻技術的初步分析。

1. 對幾家視頻播放器的調研對比 #

(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. 功能強大,主流視頻格式和協議都支持;

2. 視頻技術的初步分析 #

接入模塊基于網絡協議從視頻流中提取真正的視頻數據,并存放到下載緩沖區中; 解復用模塊將音頻和視頻內容分離開;解碼模塊分別對音頻和視頻內容進行解碼,把壓縮的數據還原成原始音視頻數據,類似一張張位圖格式的圖像,并存入解碼緩沖區;輸出模塊,從解碼緩沖區讀取數據并完成渲染實現視頻的播放;控制器模塊,通過與其它模塊的交互,完成同步音視頻流,進行控制播放速度以及暫停快進等操作,獲取視頻流的媒體信息,調整視頻亮度等功能;

3. 關于 ijkplayer #

準備軟硬件。準備 PC 機,JDK,Android SDK,Android NDK,git,yasm 編譯器環境;下載項目代碼。git clone ijkplayer 源代碼和 ffmpeg 源代碼;編譯播放器內核。編譯 ffmpeg 生成庫(libijkffmpeg.so 用于解碼,libijksdl.so 用于播放和顯示,其它平臺庫用于 ijkplayer 編譯);編譯播放器工程。編譯 ijkplayer 生成庫(libijkplayer.so 支持播放器主要的功能實現);基于 Android 開發環境,導入 3 和 4 中的庫文件,并基于 ijkplayer 源碼中的內容,構建項目工程完成播放器應用的開發;

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 這塊

4. 播放器技術能力了解的重點 #

如何定制化視頻框架;實時碼率是否可以獲取;視頻分片的統計信息(分片下載時延,分片大小等)是否可以獲取;播放器緩沖區模型和機制是否了解,是否可以限定初始緩沖量的大小(緩沖區作為重點調研下,如“播放器到底有幾個緩沖區,怎么分,完全開源的應該怎么設置,解碼緩沖區用來設置已經解碼的還是待解碼的”等問題);是否可以直接在播放內部通過緩存區填充情況計算流量和速率;是否支持 HTTP + Range 的播放方式(當前多數主流視頻網站已更新為當前這種機制);VR 產品和應用發展迅速,后續在現場會議,演唱會,游戲等行業會大行其道,對于 VR 視頻的播放,如何解決同傳統視頻播放有什么差別;

5. 其它 #

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.


上一篇:coreText

下一篇:GCD

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瓦房店市| 淮滨县| 平乡县| 新干县| 巨鹿县| 江西省| 轮台县| 晋宁县| 浦东新区| 稻城县| 宁化县| 华坪县| 广东省| 公安县| 丰镇市| 电白县| 全南县| 汾西县| 苍山县| 义乌市| 永寿县| 榆社县| 萍乡市| 乐至县| 措勤县| 花莲县| 河曲县| 建阳市| 丰顺县| 奉新县| 常熟市| 宁晋县| 南京市| 时尚| 平塘县| 台前县| 建瓯市| 常德市| 石林| 长白| 厦门市|