zoukankan      html  css  js  c++  java
  • FFmpeg之Linux下编译与调试

    注:下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行

    1. 安装linux的基础环境

    基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句如下:

    # apt-get -y install autoconf automake build-essential libtool libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
    

    2. 安装依赖库

    依赖库分两方面,参考以下网站列出的依赖库信息,本文选择的版本均参考于此网页: FFmpeg依赖库信息

    2.1 FFmpeg推荐的依赖开发库(不需要独立安装)
    # apt-get -y install libass-dev libfreetype6-dev libmp3lame-dev libtheora-dev libvorbis-dev libopus-dev libx264-dev yasm
    
    2.2 FFmpeg 桌面应用推荐的依赖开发库(不需要独立安装)
    # apt-get -y install libva-dev libvdpau-dev libsdl2-dev
    
    2.3 需要独立安装的依赖开发库

    首先创建 FFmpeg 代码目录,所有的源代码放在这个目录下

    # mkdir ~/ffmpeg_sources
    
    2.3.1 安装 fdk-aac-0.1.5:
    # cd ~/ffmpeg_sources
    # wget http://downloads.sourceforge.net/opencore-amr/fdk-aac-0.1.5.tar.gz
    # tar -zxvf fdk-aac-0.1.5.tar.gz && mv fdk-aac-0.1.5 fdk-aac
    # cd fdk-aac
    # ./configure --prefix="$HOME/ffmpeg_build" --disable-shared
    # make
    # make install
    # make distclean
    
    2.3.2 安装 libvpx-1.6.1:
    # cd ~/ffmpeg_sources
    # wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.1.tar.bz2
    # tar -jxvf libvpx-1.6.1.tar.bz2 && mv libvpx-1.6.1 libvpx
    # cd libvpx
    # PATH="$HOME/bin:$PATH"
    # ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests
    # PATH="$HOME/bin:$PATH"
    # make 
    # make install
    # make distclean
    
    2.3.3 安装 x265-2.4:
    # cd ~/ffmpeg_sources
    # sudo apt-get install cmake mercurial
    # wget https://bitbucket.org/multicoreware/x265/downloads/x265_2.4.tar.gz
    # tar -zxvf x265_2.4.tar.gz && mv x265_2.4 x265
    # cd x265/build/linux
    # PATH="$HOME/bin:$PATH"
    # cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
    # make 
    # make install
    # make clean
    
    2.3.4 安装 x264:
    # cd ~/ffmpeg_sources
    # wget  https://download.videolan.org/x264/snapshots/x264-snapshot-20170822-2245-stable.tar.bz2
    # tar -jxvf x264-snapshot-20170822-2245-stable.tar.bz2 && mv x264-snapshot-20170822-2245-stable x264
    # ./configure --prefix="$HOME/ffmpeg_build" --enable-shared --enable-pic
    # make
    # make install
    # make distclean
    

    3. 编译FFmpeg

    # cd ~/ffmpeg_sources
    # wget http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.xz
    # tar -Jxvf ffmpeg-3.3.3.tar.xz && mv ffmpeg-3.3.3 ffmpeg
    # cd ffmpeg
    # PATH="$HOME/bin:$PATH"
    # export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
    # ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
    # PATH="$HOME/bin:$PATH"
    # make
    # make install
    # make distclean
    # hash -r
    

    FFmpeg 编译之后,即可使用。编译生成的可执行程序在 ~/bin 目录下

    注:上面的 ./configure 配置编译后并不能进行调试,需要如下配置.

    4. FFmpeg 代码 Debug

    刚才的工程可以运行,但不能debug。解决此问题,首先认定一点,生成的可执行程序中,ffmpeg 不包含调试信息,调试信息在 ffmpeg_g 中,debug 要选择 ffmpeg_g。

    另外,./config选项也是确定包含调试信息的核心,需要在config中添加:

    • -–enable-debug=3:开启debug调试
    • -–disable-asm:禁用 asm 优化
    • --disable-optimizations:禁用优化,以便调试时按函数顺序执行。
    • –-disable-stripping:禁用剥离可执行程序和共享库,即调试时可以进入到某个函数进行单独调试。

    采用以下命令重新config:

    PATH="/home/rong/bin:$PATH" PKG_CONFIG_PATH="/home/rong/ffmpeg_build/lib/pkgconfig" ./configure 
      --prefix="/home/rong/ffmpeg_build" 
      --pkg-config-flags="--static" 
      --extra-cflags="-I/home/rong/ffmpeg_build/include" 
      --extra-ldflags="-L/home/rong/ffmpeg_build/lib" 
      --bindir="/home/rong/bin" 
      --enable-gpl 
      --enable-libass 
      --enable-libfdk-aac 
      --enable-libfreetype 
      --enable-libmp3lame 
      --enable-libopus 
      --enable-libtheora 
      --enable-libvorbis 
      --enable-libvpx 
      --enable-libx264 
      --enable-libx265 
      --enable-nonfree 
      --enable-pthreads 
      --enable-debug=3 
      --disable-optimizations 
      --disable-asm 
      --disable-stripping
    

    一些注意事项:

    1. 在使用 ffplay 播放生成 h264 格式的视频时,播放速度会加快,解决方式:不要使用 FFmpeg 转码生成纯 h264 格式的视频,要使用一种容器包含 h264 视频,即生成一种音视频流格式,也就是不要生成纯粹的 h264 码流,而是生成诸如 mkv 等格式的文件。
  • 相关阅读:
    函数、对象
    webpack配置
    创智培训内容
    oracle方法
    Weblogic
    药店
    ip
    jdk账号
    ansible
    目录编码
  • 原文地址:https://www.cnblogs.com/jimodetiantang/p/9160183.html
Copyright © 2011-2022 走看看