ffmpeg播放器開發(fā)H.264解碼+OpenGL渲染工具的封裝(完整版可以解碼視頻或者h(yuǎn)264文件然后openGL渲染播放解碼后的yuv)
一聂薪。首先說(shuō)下俗壹,把ffmpeg庫(kù)拉到工程里出現(xiàn)的一系列問題西潘,
也可以參考我的另外一篇文章:Xcode編譯Undefined symbols for architecture xxx 錯(cuò)誤總結(jié)(FFmpeg篇)
由于是別人編譯好的lib文件里面都是.a文件
1.選擇iphone 6s模擬器運(yùn)行出現(xiàn):
Undefined symbols for architecture x86_64:(模擬器64位處理器測(cè)試(iphone5以上的模擬器))
后來(lái)通過(guò)終端查看.a文件支持的架構(gòu):
得知程奠,別人的.a庫(kù)只支持arm7芋膘,arm7s ,i386衙四,沒有iphone 6s的x86_64架構(gòu)铃肯,
解決辦法(1).
然后就改用支持x86_64的庫(kù),
通過(guò)終端查看.a文件支持的架構(gòu):
這下就有了armv7 i386 x86_64 arm64架構(gòu)的庫(kù)了
當(dāng)再此編譯時(shí)又出現(xiàn):Undefined symbols for architecture x86_64
此時(shí)那是個(gè)腦細(xì)胞死亡一大堆传蹈,
解決辦法(2).
添加必須依賴的系統(tǒng)庫(kù)
我的工程添加的庫(kù):
終于解決了Undefined symbols for architecture x86_64的問題押逼,順利編譯運(yùn)行通過(guò)。
題外話:這里我在macOS下創(chuàng)建的工程時(shí)添加的framework內(nèi)容:(一開始警告我說(shuō):ffmpeg的.a庫(kù)是iOS下的惦界,不建議在macOS下使用挑格,同時(shí)也出現(xiàn)了Undefined symbols for architecture x86_64:我就在原來(lái)的基礎(chǔ)上添加了下面的庫(kù):QuartzCore.framework Foundation.framework ?CoreGraphics.framework就好了,也不知道是怎么鬼沾歪,當(dāng)作經(jīng)驗(yàn)積累吧)
二漂彤。介紹下工程內(nèi)容和效果
1.FFmpeg解碼
輸入一個(gè)沙河內(nèi)的視頻文件(比如:flv格式,內(nèi)存性植)解碼為一幀一幀的圖片集合(像素格式挫望,內(nèi)存大)yuv
2.openGL渲染圖片yuv數(shù)據(jù)
這里先渲染的是一張yuv圖片,若屏幕出現(xiàn)綠色或打印說(shuō)參數(shù)錯(cuò)誤,一般是視頻/圖片的寬高不對(duì)引起的,請(qǐng)仔細(xì)查看資源寬高屬性,
3.openGL渲染-H264解碼
調(diào)用h264解碼的類H264DecodeTool 進(jìn)行mtv.h264或者mtv.mp4格式視頻解碼,解碼為yuv狂窑,然后通過(guò)openGLES渲染顯示解碼后yuv士骤。
4.播放器搭建:
就是之前編譯的ffmpeg的庫(kù)導(dǎo)入GitHub上的kxmovie:https://github.com/kolyvan/kxmovie
參見:我的文章:KxMovieViewController
在此感謝大神的資源共享:
http://www.cocoachina.com/bbs/read.php?tid=100908
http://www.cocoachina.com/bbs/u.php?action=post&uid=128606
https://pan.baidu.com/s/1dDvpECh
https://pan.baidu.com/share/home?uk=1698453400#category/type=0
這篇文章是對(duì)上一篇文章(ffmpeg播放器開發(fā)H.264解碼+OpenGL渲染工具的封裝)bug漏洞的修復(fù)和完善(openGL順利渲染解碼后的視頻文件)
demo下載地址:https://github.com/mrzhao12/FFmpegDecodeH264_OpenGLESRenderYUV
更多資源歡迎進(jìn)入學(xué)習(xí)交流平臺(tái):QQ群:224110749
有問題也可以聯(lián)系我QQ:1107214478(一個(gè)做iOS開發(fā)的小生,但是我并不覺的我是在做iOS)