ios直播基礎(chǔ)篇二集成ijkplayer

一:ijkplayer簡(jiǎn)介

ijkplayer 是一款做視頻直播的開(kāi)源框架, 基于ffmpeg, 支持 Android 和 iOS, 對(duì)于 App 中的直播功能,如果我們成功集成ijkplayer,視頻播放的功能就基本完成一半了。下面詳細(xì)介紹一下ijkplayer 從下載源碼到打包的流程。

二:下載ijkplayer源碼

下載地址:https://github.com/Bilibili/ijkplayer

三:相關(guān)知識(shí)簡(jiǎn)介

README.md文件:框架的描述文件,描述這個(gè)框架怎么使用

編譯語(yǔ)言:程序在被執(zhí)行之前,需要一個(gè)專(zhuān)門(mén)的編譯過(guò)程,把程序編譯成為機(jī)器語(yǔ)言的文件,運(yùn)行時(shí)不需要翻譯,所以編譯型語(yǔ)言的程序執(zhí)行效率高,比如OC,C,C++

解釋性語(yǔ)言:解釋性語(yǔ)言的程序不需要編譯,在運(yùn)行程序的時(shí)候才翻譯,每個(gè)語(yǔ)句都是執(zhí)行的時(shí)候才翻譯。這樣解釋性語(yǔ)言每執(zhí)行一次就需要逐行翻譯一次,效率比較低

解釋性語(yǔ)言執(zhí)行和編譯語(yǔ)言執(zhí)行的區(qū)別:

解釋性語(yǔ)言一行一行的解析,如果有錯(cuò)誤,就不會(huì)執(zhí)行,直接執(zhí)行下一行。

編譯語(yǔ)言,只要有錯(cuò),就不能編譯,一行都不能執(zhí)行。

腳本語(yǔ)言:屬于解析語(yǔ)言,必須通過(guò)解釋器解析,將其一條條的翻譯成機(jī)器可識(shí)別的指令,并按程序順序執(zhí)行。

python:腳本語(yǔ)言,適合網(wǎng)絡(luò)應(yīng)用程序的開(kāi)發(fā),有利于開(kāi)發(fā)效率,現(xiàn)在顯得越來(lái)越強(qiáng)大

PHP:服務(wù)器端腳本語(yǔ)言,適合做動(dòng)態(tài)網(wǎng)站

JS:作為客戶(hù)端的腳本語(yǔ)言,在瀏覽中解釋執(zhí)行,

shell:操作系統(tǒng)腳本語(yǔ)言,一般指Unix/Linux中使用的命令行

編譯語(yǔ)言,執(zhí)行文件是二進(jìn)制。腳本語(yǔ)言是解釋執(zhí)行的,執(zhí)行文件是文本

shell解釋器:shell是一個(gè)命令行解釋器,相當(dāng)于windows的cmd,處于內(nèi)核和用戶(hù)之間,負(fù)責(zé)把用戶(hù)的指令傳遞給內(nèi)核并且把執(zhí)行結(jié)果回顯給用戶(hù).

默認(rèn)Unix都有shell,OS基于Unix,因此OS自帶shell。

bash: bash是一種shell解釋器版本,shell有很多種版本,就像人,也分不同國(guó)家的人。

牛程序員看到不爽的Shell解釋器,就會(huì)自己重新寫(xiě)一套,慢慢形成了一些標(biāo)準(zhǔn),常用的Shell解釋器有這么幾種,sh、bash、csh等

shell:通常我們說(shuō)的shell,指的是shell腳本語(yǔ)言,而不是shell解釋器。

在編寫(xiě)shell時(shí),第一行一定要指明系統(tǒng)需要哪種shell解釋器解釋你的shell腳本,如:#! /bin/bash,使用bash解析腳本語(yǔ)言

什么時(shí)候使用shell命令,比如有些系統(tǒng)命令經(jīng)常需要用到,可以把命令封裝到一個(gè)腳本文件,以后就不用再敲一遍了,直接執(zhí)行腳本語(yǔ)言。

比如ijkplayer,就用腳本文件下載ffmpeg,因?yàn)橄螺dffmpeg需要執(zhí)行很多命令,全部封裝到腳本文件中。

在導(dǎo)入一些第三方框架的時(shí)候,經(jīng)常需要用到一些命令,所以一般都會(huì)封裝到一個(gè)腳本文件中,以后只要執(zhí)行腳本,就會(huì)自動(dòng)執(zhí)行集成第三方框架的命令。

sh:sheel腳本文件后綴名

四 編譯ijkplayer

1 打開(kāi)下載的demo 如圖

2.編譯會(huì)發(fā)現(xiàn)報(bào)如下錯(cuò)誤,原因是libavformat是ffmpeg中的庫(kù),而ijkplayer是基于ffmpeg這個(gè)庫(kù)的,因此需要導(dǎo)入ffmpeg(這些在demo中的readme文件中有寫(xiě))

3 打開(kāi)終端 cd到j(luò)kplayer-master文件夾中, 也就是下載完解壓后的文件夾, 如下圖:

執(zhí)行命令行./init-ios.sh, 這個(gè)命令是下載 ffmpeg到當(dāng)前目錄下?

4? 下載完成后執(zhí)行cd ios, 也就是進(jìn)入到 ios目錄中, 如下圖:



5 ?進(jìn)入 ios 文件夾后, 在終端依次執(zhí)行./compile-ffmpeg.sh clean和./compile-ffmpeg.sh all命令, 編譯 ffmpeg, 也就是README.md中這兩步,

./compile-ffmpeg.sh clean:刪除一些文件和文件夾,為編譯ffmpeg.sh做準(zhǔn)備,在編譯ffmpeg.sh的時(shí)候,會(huì)自動(dòng)創(chuàng)建剛剛刪除的那些文件,為避免文件名沖突,因此在編譯ffmpeg.sh之前先刪除等會(huì)會(huì)自動(dòng)創(chuàng)建的文件夾或者文件

./compile-ffmpeg.sh all :編譯ffmepg

6 編譯成功開(kāi)始打包

五 打包IJKMediaFramework.framework框架

1 首先打開(kāi)工程IJKMediaPlayer.xcodeproj, 位置如下圖:



打開(kāi)后是這樣的, 如下圖:


2.工程打開(kāi)后設(shè)置工程的 scheme, 具體步驟如下圖:



3 ?設(shè)置好 scheme 后, 分別選擇真機(jī)和模擬器進(jìn)行編譯, 編譯完成后, 進(jìn)入 Finder, 如下圖:


4 ?然后合并真機(jī)和模擬器版本的 framework, 注意不要合并錯(cuò)了, 合并的是這個(gè)文件, 如下圖:

5 打開(kāi)終端, 進(jìn)行合并, 命令行具體格式為:

lipo -create "真機(jī)版本路徑" "模擬器版本路徑" -output "合并后的文件路徑" (ps 這里合并后的文件路徑可以選擇前兩個(gè)路徑之一 會(huì)省幾個(gè)替換的步驟)這里我合并后的文件路徑我選的是真機(jī)版本路徑 合并完成后如圖(這個(gè)framework我們就可以直接用了)


六 驗(yàn)證framework?

將合并后的framework導(dǎo)入到新工程中并引用framework里的頭文件編譯成功即表示合并成功:



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容