天天看點

Qt for IOS環境的搭建以及ffmpeg庫的編譯與移植

最新版的Qt5.6.0 for IOS,需要xcode7以上的版本,而隻有OS X10.11以上才有安裝,是以這裡選擇OS X10.11版本的系統。 系統環境: MAC OSX10.11  VMware12以上(必須的) 軟體環境:Qt5.6.0 for IOS, XCode7(從OSX系統的蘋果商店下載下傳)

一、平台搭建 MAC OSX系統的安裝:   VMware 12安裝Mac OS X 10.11 參考文獻: http://jingyan.baidu.com/article/e75057f2dfa293ebc91a8921.html Qt5.6.0 for IOS安裝:官網下載下傳後,直接點選安裝 XCode7安裝:通過AppStore安裝 VMware12安裝:下載下傳後直接安裝 上述系統和軟體安裝完成後,下面就可以開發自己的APP軟體。

二、ffmpeg等庫的編譯 1)ffmpeg的編譯, 分别為MAC版本和IOS版本。      MAC版本:      git下載下傳ffmpeg官方源碼後,進入ffmpeg主目錄,      ./configure --prefix=build_ffmpeg(編譯目标目錄,自己先建立的)      make & make install      即可生成可以在MAC OSX上使用的ffmpeg動态庫      IOS版本: https://github.com/kewlbear/FFmpeg-iOS-build-script,裡面賦有編譯步驟,最後會得到ffmpeg的靜态庫。

三、移植到Qt for IOS中      1)MAC端:      pro添加内容,并将所需庫複制到工程目錄下。      macx {          LIBS += -L"$$PWD/ffmpeg/libs/mac"          LIBS += -lavformat -lavformat.57 -lavformat.57.36.100 -lavdevice -lavdevice.57 -lavdevice.57.0.101 -lavfilter -lavfilter.6 \                  -lavfilter.6.45.100 -lavutil -lavutil.55 -lavutil.55.24.100 -lswresample -lswresample.2 -lswresample.2.0.101 \                  -lswscale -lswscale.4 -lswscale.4.1.100 -lavcodec -lavcodec.57 -lavcodec.57.42.100      }

    2) IOS端:      pro添加内容,并将所需庫複制到工程目錄下。            ios {

         LIBS += "$$PWD/ffmpeg/libs/ios/ios_simulator/libavformat.a" \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/libavdevice.a" \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/libavfilter.a"   \                                                           "$$PWD/ffmpeg/libs/ios/ios_simulator/libavutil.a"  \                      "$$PWD/ffmpeg/libs/ios/ios_simulator/libswresample.a" \                      "$$PWD/ffmpeg/libs/ios/ios_simulator/libswscale.a"    \                      "$$PWD/ffmpeg/libs/ios/ios_simulator/libavcodec.a"

         LIBS += "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libbz2.tbd" \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libbz2.1.0.tbd"  \                        "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libz.1.tbd"  \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libz.tbd"  \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libz.1.2.5.tbd" \                       "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libz.1.1.3.tbd" \                      "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libiconv.2.4.0.dylib" \                      "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libiconv.2.dylib" \                     "$$PWD/ffmpeg/libs/ios/ios_simulator/xcode_simulator_lib/libiconv.dylib"

          LIBS += -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks             -framework VideoToolbox          LIBS += -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks -framework CoreMedia          LIBS += -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks -framework CoreVideo }     如上所示,除了必須的ffmpeg靜态庫外,還需要 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib下的-lbz2 -lbz2.1.0 -lz.1 -lz -lz.1.2.5 -lz.1.1.3 -liconv.2.4.0 -liconv.2 -liconv等動态庫檔案(這是IOS模拟器的路徑,如果是真機則用iPhone目錄的lib檔案),還有架構庫VideoToolbox、CoreMedia、CoreVideo,這些都是需要的,不然編譯會出如下所示,通過檢視qmake編譯過程,可以知道這些庫是否已經連接配接上:      

Undefined symbols for architecture x86_64:   "_CMBlockBufferCreateWithMemoryBlock", referenced from:       _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)   "_CMSampleBufferCreate", referenced from:       _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)   "_CMVideoFormatDescriptionCreate", referenced from:       _av_videotoolbox_default_init2 in libavcodec.a(videotoolbox.o)

  "_ModPlug_GetCurrentOrder", referenced from: 三、編譯運作      MAC端:選擇Qt for IOS的Destop編譯器      IOS端:選擇iphonesimulator編譯器      程式編譯成功後,開始運作即調用Xcode目錄下的虛拟機,将程式安裝到上面。