[iOS]FFmpeg框架在iOS平臺上的編譯和使用

最近有同學來詢問FFmpeg框架的使用方法
以下過程中如有問題,請簡信我.

使用環(huán)境

  • Mac OS Yosemite 10.10.5

開發(fā)工具

  • Xcode 7.0

  • Terminal

需要的文件鏈接

編譯適用于iOS平臺的FFmpeg靜態(tài)庫

  • 打開終端Terminal進入下載后的gas-preprocessor文件夾

    • 將文件夾內(nèi)的gas-preprocessor.pl文件拷貝到/usr/sbin/目錄下

    • 修改/usr/sbin/gas-preprocessor.pl的文件權(quán)限為可執(zhí)行權(quán)限

      chmod 777 /usr/sbin/gas-preprocessor.pl
      
  • 執(zhí)行FFmpeg-iOS-build-script-master文件夾內(nèi)的build-ffmpeg.sh

    • 編譯所有的版本arm64armv7x86_64的靜態(tài)庫
    ./build-ffmpeg.sh
    
    • 編譯支持arm64架構(gòu)的靜態(tài)庫
    ./build-ffmpeg.sh arm64
    
    • 編譯適用于armv7x86_64(64-bit simulator)的靜態(tài)庫
    ./build-ffmpeg.sh armv7 x86_64
    
    • 編譯合并的版本
    ./build-ffmpeg.sh lipo
    

編譯靜態(tài)庫遇到的問題

  • yasm沒有安裝的情況

    • 解決方案1

      • 進入下載后的yasm文件夾,通過編譯安裝命令yasm

        ./configure && make -j 4 && sudo make install
        
    • 解決方案2

      • 使用Homebrew包管理器,進行安裝

        brew install yasm
        
    • 測試是否安裝成功

      yasm --verision
      
  • c test failed的情況

    • xcode環(huán)境安裝過多,使用xcode-select選擇默認的工具路徑/Applications/Xcode-beta.app

      sudo xcode-select -s /Applications/Xcode-beta.app
      

使用編譯完成的FFmpeg靜態(tài)庫

  • 編譯成功后,即可將FFmpeg-iOS文件夾(包含include和lib)引入到Xcode內(nèi)

  • 加入依賴庫libz.lib

  • 加入依賴庫libbz2.lib

  • 加入依賴庫libiconv.lib

  • 如有編譯錯誤,鏈接文件不存在

    修改Build Setting 
    Header Search Paths = $(SRCROOT)/LOFFmpegSample/FFmpeg-iOS/include
    

使用框架kxmovie播放視頻

    NSString *path = @"";
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    
    // increase buffering for .wmv, it solves problem with delaying audio frames
    if ([path.pathExtension isEqualToString:@"wmv"])
        parameters[KxMovieParameterMinBufferedDuration] = @(5.0);
    
    // disable deinterlacing for iPhone, because it's complex operation can cause stuttering
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        parameters[KxMovieParameterDisableDeinterlacing] = @(YES);
    
    KxMovieViewController *vc = [KxMovieViewController movieViewControllerWithContentPath:path
                                                                               parameters:parameters];
    [self presentViewController:vc animated:YES completion:nil];

實例工程:
LOFFmpeg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容