Linux下編譯ffmpeg並用GDB調試

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

二、安裝SDLlinux

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

     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-devgithub

三、安裝x264和yasm編程

     x264是很是流行的視頻編解碼工具,yasm則用於x264中彙編語言優化。函數

    yasm: sudo apt-get install yasm工具

    X264:post

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

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

四、安裝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

五、到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

六、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調試

相關文章
相關標籤/搜索