天天看点

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目录下的虚拟机,将程序安装到上面。