概述
ijkplayer 是一款做視頻直播的框架,基於FFmpeg,支持Android和iOS。這里介紹一下iOS中集成ijkplayer
一、FFmpeg
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化為流的開源計算機程序。它包括了領先的音/視頻編碼庫libavcodec等。
libavformat:用於各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結構
和讀取音視頻幀等功能;
libavcodec:用於各種類型聲音/圖像編解碼;
libavutil:包含一些公共的工具函數;
libswscale:用於視頻場景比例縮放、色彩映射轉換;
libpostproc:用於后期效果處理;
ffmpeg:該項目提供的一個工具,可用於格式轉換、解碼或電視卡即時編碼等;
ffsever:一個 HTTP 多媒體即時廣播串流服務器;
ffplay:是一個簡單的播放器,使用ffmpeg 庫解析和解碼,通過SDL顯示;
支持的編碼
源自FFmpeg項目組的兩個視頻編碼:
Snow
FFV1
支持的格式
ASF、AVI、BFI[7]、IFF[8]、RL2[9]、FLV、MXF
Material eXchange Format, SMPTE 377M
Matroska、Maxis XA[10]、MSN Webcam stream[11]
MPEG transport stream、TXD[6]、OMA[12]
GXF,General eXchange Format, SMPTE 360M
mov,mp4,m4a,3gp,
支持的協議
HTTP RTP RTSP RealMedia RTSP/RDT
TCP UDP Gopher RTMP
RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)
SDP
MMS over TCP
二、下載ijkplayer
下載完成后解壓, 解壓后文件夾內部目錄如下圖:
三、編譯
其實這里主要是編譯FFmpeg,因為他是一個C語言的跨平台庫,需要sh腳本來進行編譯
- 打開終端, cd 到jkplayer-master文件夾中, 也就是下載完解壓后的文件夾, 如下圖:
- 執行命令行./init-ios.sh, 這一步是去下載 ffmpeg 的, 時間會久一點, 耐心等一下.如下圖:
- cd 到ios目錄中
- 執行./compile-ffmpeg.sh clean
- 執行./compile-ffmpeg.sh all進行FFmpeg的編譯,時間較久
四、打包IJKMediaFramework.framework框架
其實集成ijkplayer有兩種方法,一種是按照Demo中的導入IJKMediaPlayer.xcodeproj,此方法不是很推薦
下面主要說另一種把 ijkplayer 打包成framework導入工程中使用.
首先打開工程IJKMediaPlayer.xcodeproj,
選擇IJKMediaFramework點擊EditScheme
選擇release
設置好 scheme 后, 分別選擇真機和模擬器進行編譯, 編譯完成后, 進入 Finder,
下面開始合並真機和模擬器版本的 framework, 注意不要合並錯了, 合並的是這個文件, 如下圖:
打開終端, 進行合並, 命令行具體格式為:
lipo -create 真機版本路徑 模擬器版本路徑 -output 合並后的文件路徑
合並后如下圖
用合並后的IJKMediaFramework把原來的IJKMediaFramework替換掉
五、在iOS項目中集成ijkplayer
新建工程, 導入合並后的IJKMediaFramework.framework以及相關依賴框架以及相關依賴框架,如下圖:
導入框架后在ViewController.m中進行buid,如果成功,說明集成成功。然后可以在控制器中寫一個Demo測試
可以是mp4格式,也可以是m3u8,rtmp,hls等流媒體
六、效果圖
ijkPlayer 集成
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權