Mac下調(diào)試FFmpeg的兩種方式(支持10.15.4及以上)

公共步驟

step.1 編譯 ffmpeg

在github上下載ffmpeg最新版

  • tar xvf ffmpeg-4.0.2.tar.bz2
  • cd ffmpeg-4.0.2
  • ./configure --prefix="ffmpeg_build" --enable-debug --extra-cflags="-fno-stack-check" --cc=clang
  • sudo make && make install

step.2 新建一個(gè)空的 xcode 項(xiàng)目

  • Create a new Xcode project
  • 新建一個(gè)空的 xcode 項(xiàng)目


    1.png

    2.png

step.3 添加 ffmpeg-4.0.2 源碼目錄進(jìn) ffmpeg4_demo 項(xiàng)目中

image.png

step.4 添加頭文件搜索路徑

  • 到這里就可以實(shí)現(xiàn)頭文件跳轉(zhuǎn)了. 要等待處理完畢才可以點(diǎn)擊頭文件或者類來(lái)查看代碼.


    image.png

方法一. 編譯庫(kù)之后用調(diào)試庫(kù)下斷點(diǎn)調(diào)試

step.1 添加一個(gè) target

  • File -> New -> Target -> Cross-platform -> External Build System

    8.png

  • target 命名為 ffmpeg-make

    image.png

  • target 切換到 ffmpeg-make

    10.png

step.2 修改 ffmpeg-make 源碼路徑配置

  • 修改 ffmpeg-make 源碼路徑。
    image.png

step.3 修改 ffmpeg-make 命令行參數(shù)

  • 修改命令行參數(shù)


    image.png
  • 修改可執(zhí)行命令


    image.png

step.4 添加斷點(diǎn)(ffplay.c->main函數(shù)), 點(diǎn)擊 run

14.png

方法二. 調(diào)試具體代碼

在公共步驟之后我們?cè)趍ain.cpp寫(xiě)如下代碼:

#include <iostream>

#ifdef __cplusplus
extern "C" {
#endif
    
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
    
#ifdef __cplusplus
}
#endif

int decodeStream(const char *url) {
    int ret;
    AVFormatContext *ifmtCtx = NULL;
    if ((ret = avformat_open_input(&ifmtCtx,url, NULL, NULL)) < 0) {
        av_log(NULL, AV_LOG_ERROR, "Cannot openinput file\n");
        return ret;
    }
    if ((ret = avformat_find_stream_info(ifmtCtx, NULL))< 0) {
        av_log(NULL, AV_LOG_ERROR, "Cannot findstream information\n");
        return ret;
    }
    
    return 0;
}

int main(int argc, const char * argv[]) {
        // insert code here...
    decodeStream("xxx");
    
    return 0;
}

然后打斷點(diǎn)即可完成調(diào)試

xcode添加庫(kù)

image.png

注意事項(xiàng)

1. 如果ffmpeg目錄變了或者更新怎么辦?

現(xiàn)在拿到了路徑,我們就去這里路徑去add.處理完之后變成這樣。

image.png

利用dwarfdump -debug-info target xxx.a去查看編譯的ffmpeg路徑,如果更新或者目錄變了需要重新編譯

2. 編譯指定版本的ffmpeg

比如我現(xiàn)在要安裝FFmpeg3.4.2版本.

1. 查看軟件包安裝來(lái)源

$ brew info ffmpeg

執(zhí)行上述命令您會(huì)得到如下信息:

$ From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb

你看到了什么?github(版本控制) 還有 *.rb(安裝文件)

2. Github中查看rb文件歷史提價(jià)(版本)信息

復(fù)制鏈接到地址欄:https://github.com/Homebrew/homebrew-core/blob/master/Formula/ffmpeg.rb
可以看到如下信息:

url "https://ffmpeg.org/releases/ffmpeg-4.0.1.tar.xz"
sha256 "605f5c01c60db35d3b617a79cabb2c7032412be243554602eeed1b628125c0ee"

可以看到當(dāng)前版本就是: ffmpeg-4.0.1
接著,在Github上查看歷史提交信息,按照如下操作依次點(diǎn)擊(熟悉github的同學(xué)應(yīng)該已經(jīng)看透了秘密):

17.png

18.png

19.png

20.png

3. 安裝 ffmpeg-3.4.2 版本軟件包

ffmpeg:3.4.2 對(duì)應(yīng)的ffmpeg.rb文件網(wǎng)址:https://raw.githubusercontent...
執(zhí)行安裝

參考文獻(xiàn)

  1. ijkPlayer編譯、打包、多格式及Https支持
  2. ffmpeg安裝指定版本
  3. ffmpeg源碼調(diào)試,非靜態(tài)庫(kù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容