• 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调试

  • 相关阅读:
    GPS坐标转化距离(短距离模型公式)
    jquery ajax 同步异步的执行
    视频播放的基本原理
    [css或js控制图片自适应]
    asp.net中js和jquery调用ashx的不同方法分享,需要的朋友可以参考一下
    [转载]在网页中插入media,RealPlayer等控件
    数组的几种排序算法的实现(3)
    -- HTML标记大全参考手册[推荐]
    数组的几种排序算法的实现(2)
    数组的几种排序算法的实现(1)
  • 原文地址:https://www.cnblogs.com/HongyunL/p/5243096.html
Copyright © 2020-2023  润新知