• Ubuntu编译安装FFMPEG


    Ubuntu编译安装FFMPEG

    • 更新
    apt-get update -qq && apt-get -y install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget yasm zlib1g-dev
    
    • 工具安装
    apt-get -y install vim git unzip wget cmake
    
    • 依赖
    apt-get -y install build-essential pkg-config checkinstall libfaac-dev \ 
      libgpac-dev ladspa-sdk-dev libunistring-dev libbz2-dev libjack-jackd2-dev \
      libmp3lame-dev libsdl2-dev libopencore-amrnb-dev libopencore-amrwb-dev libvpx-dev \
      libx264-dev libx265-dev libxvidcore-dev libopenal-dev libopus-dev \
      libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev \
      libxfixes-dev texi2html yasm zlib1g-dev libssl-dev libfdk-aac-dev
    
    • nvidia-codec-headers
    # nvidia codec-headers
    git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
    cd nv-codec-headers
    make && make install
    
    • 其他编译安装(可选)

      • x264
      git clone https://code.videolan.org/videolan/x264.git
      cd x264
      ./configure --enable-shared --disable-asm
      make && make install
      
      tar zxvf fdk-aac-2.0.2.tar.gz
      cd fdk-aac-2.0.2
      ./configure
      make && make install
      
      echo "/usr/local/lib" > /etc/ld.so.conf.d/aac.conf  
      ldconfig
      
    • ffmpeg 安装

    git clone https://git.ffmpeg.org/ffmpeg.git
    
    cd ffmpeg
    
    ./configure --prefix=/usr/local/ffmpeg --enable-shared \
    --enable-nonfree --enable-gpl --enable-version3 \
    --enable-libmp3lame --enable-libvpx --enable-libopus \
    --enable-opencl --enable-libxcb  \
    --enable-opengl --enable-nvenc --enable-vaapi \
    --enable-vdpau --enable-ffplay --enable-ffprobe \
    --enable-libxvid \
    --enable-libnpp \
    --enable-libx264 --enable-libx265 --enable-openal \
    --enable-openssl --enable-cuda-nvcc --enable-cuvid --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
    
    make -j8 && make install
    ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
    ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe
    ln -s /usr/local/ffmpeg/bin/ffplay /usr/bin/ffplay
    ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
    ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
    ln -s /usr/local/ffmpeg/bin/ffplay /usr/local/bin/ffplay
    vim /etc/ld.so.conf.d/ffmpeg.conf #在其中添加路径:/usr/local/ffmpeg/lib
    
    #更新环境变量
    sudo ldconfig
    
    • 查看版本
    ffmpeg -version
    
    • 查看硬件加速方式
    ffmpeg -hwaccels
    
    • 报错解决方法(容器内):

      [h264_cuvid @ 0x55b5efb8d900] Cannot load libnvcuvid.so.1

      [h264_cuvid @ 0x55b5efb8d900] Failed loading nvcuvid.

    # 容器内没有这2个文件需要去宿主机拷贝到容器(宿主机执行)
    cd /usr/lib/x86_64-linux-gnu/
    # 宿主机文件夹下: /usr/lib/x86_64-linux-gnu/ {libnvcuvid.so.470.82.01, libnvidia-encode.so.470.82.01}
    # 拷贝到容器/lib64/下(容器执行)
    docker cp libnvcuvid.so.470.82.01 7286404e2f78:/lib64/
    docker cp libnvidia-encode.so.470.82.01 7286404e2f78:/lib64/
    # 容器内创建软连接(容器执行)
    ln -s libnvcuvid.so.470.82.01 /lib64/libnvcuvid.so.1
    ln -s libnvidia-encode.so.470.82.01 /lib64/libnvidia-encode.so.1
    
    • 容器内添加软连接路径
    echo '/lib64' >> /etc/ld.so.conf
    ldconfig
    
    • 测试
    ffmpeg -rtsp_transport tcp -hwaccel cuvid -c:v h264_cuvid -i rtsp://admin:hh123456@192.168.110.64:554 -r 30 -t 100 -b:v 2048k -vf scale_npp=1280:-1 -y -c:v h264_nvenc tcp_gpu_output.mp4
    
  • 相关阅读:
    POJ-1035 Spell checker---字符串处理
    hdu-3572 Task Schedule---最大流判断满流+dinic算法
    BZOJ4826: [Hnoi2017]影魔
    BZOJ4825: [Hnoi2017]单旋
    BZOJ3504: [Cqoi2014]危桥
    BZOJ4407: 于神之怒加强版
    BZOJ2818: Gcd
    BZOJ4542: [Hnoi2016]大数
    BZOJ4540: [Hnoi2016]序列
    BZOJ4537: [Hnoi2016]最小公倍数
  • 原文地址:https://www.cnblogs.com/xujunkai/p/15922227.html
Copyright © 2020-2023  润新知