Linux下編譯ffmpeg並用GDB調試


1、在Ubuntu界面上調處命令行界面,最方便的方式是使用快捷鍵Ctrl+Alt+T。

2、安裝SDL

     SDL是一個開源的多媒體開發庫,可以設置圖像和視頻的繪制等操作。如果不安裝SDL,FFMPEG將不能生成ffplay.exe播放器。在Ubuntu下安裝SDL也很簡單,只需要依次執行下列命令:

     sudo apt-get install libsdl1.2-dev
     sudo apt-get install libsdl-image1.2-dev
     sudo apt-get install libsdl-mixer1.2-dev
     sudo apt-get install libsdl-ttf2.0-dev
     sudo apt-get install gfx1.2-dev

3、安裝x264和yasm

     x264是非常流行的視頻編解碼工具,yasm則用於x264中匯編語言優化。

    yasm: sudo apt-get install yasm

    X264:

               到官網下載X264的源代碼,編譯:

               ./configure --prefix=/usr --enable-shared     //必須指定prefix位置,否則編譯ffmpeg的時候會提示找不到libx264
               make
               sudo make install

4、安裝ffmpeg的其他依賴庫,通過兩條命令完成:

     sudo apt-get update
     sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev

5、到ffmpeg官網下載ffmpeg的源代碼,或者 git clone https://github.com/FFmpeg/FFmpeg.git 解壓,編譯:

    cd 到源碼文件夾下

    ./configure --enable-debug --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-x11grab --enable-version3 --disable-optimizations --disable-asm --enable-shared --enable-pic  //優化操作,會使得某些變量被優化掉,在后續的調試時無法觀察變量的變化,因此關閉優化;里面有些參數可能環境不支持,刪去就好

    make

    sudo make install

//以上部分參考:在Ubuntu下編譯FFmpeg

6、GDB調試:

    有兩種方式可以進入GDB,一種就是直接在命令行上輸入gdb,然后再在gdb中用file命令加載要調試的程序;另一種就是,直接在命令行上使用:gdb 程序名

    gdb ffmpeg_g        //調試時應當是ffmpeg_g,它帶有調試符號;而不是ffmpeg

    file ffmpeg_g         //file <文件名>: 加載被調試的可執行程序文件

    set args -h filter=transform  //用 "set args 參數值1  參數值2...."來設置輸入參數

    set args -i input.mp4 -vf transform=input_stereo_format=MONO:w_subdivisons=4:h_subdivisons=4:max_cube_edge_length=512 -qscale 20 output.mp4

    //以上參數是ffmpeg加入facebook/transform代碼的設置參數,自己調試時改成自己想要的參數就好了,ffmpeg常用參數一覽表

    b transform_pos    //b <函數名稱> : b: Breakpoint的簡寫,設置斷點。兩可以使用“行號”“函數名稱”“執行地址”等方式指定斷點位置。

    b 450                   //b <行號>

    r                          //Run的簡寫,運行被調試的程序。如果此前沒有下過斷點,則執行完整個程序;如果有斷點,則程序暫停在第一個可用斷點處。

    p face                  //p <變量名稱> : Print的簡寫,顯示指定變量(臨時變量或全局變量)的值。

    c                         //Continue的簡寫,繼續執行被調試程序,直至下一個斷點或程序結束。

     i b                      //查看斷點信息(i-->info,b-->break)

     d <斷點標號>       //刪除某個斷點

     更多gdb調試參見:linux編程之GDB調試 LINUX下GDB調試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM