1. 程式人生 > >Qt for IOS環境的搭建以及ffmpeg庫的編譯與移植

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系統的蘋果商店下載) 一、平臺搭建 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動態庫 三、移植到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目錄下的虛擬機器,將程式安裝到上面。