1. 程式人生 > 其它 >amd和arm安裝ffmpeg踩坑報錯處理

amd和arm安裝ffmpeg踩坑報錯處理

技術標籤:ffmpeg

一、amd安裝ffmpeg(yum安裝)

系統版本:CentOS Linux release 7.2.1511 (Core)

核心版本:3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Nux Dextop文件:http://li.nux.ro/repos.html

# 安裝 epel源
yum -y install epel-release
# 安裝 nux-dextop
rpm -Uvhhttp://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# 安裝 ffmpeg
yum install -y ffmpeg ffmpeg-devel yasm 
# 檢驗安裝成功
ffmpeg -version

二、arm安裝ffmpeg(編譯安裝)

因為Nux Dextop庫沒有arm的包,並且不使用yum安裝的話,會缺少很多依賴包

# 安裝yum源
yum install -y epel-release
####(編譯需要的包 可以編譯後刪除) 
yum -y install gcc cmake gcc-c++

# 一些報錯處理

# --enable-gnutls
# 解決 ERROR: gnutls not found using pkg-config
yum -y install gnutls-devel
# --enable-ladspa 
# 解決 ERROR: ladspa.h header not found
yum -y install ladspa-devel
# --enable-libass
# 解決 ERROR: libass not found using pkg-config
yum -y install libass-devel
# --enable-libgsm
# 解決 ERROR: libgsm not found
yum -y install gsm-devel
# --enable-libmp3lame
# 解決 ERROR: libmp3lame >= 3.98.3 not found
yum -y install lame-devel
# --enable-libopenjpeg 
# 解決 ERROR: libopenjpeg not found
yum -y install openjpeg-devel
# --enable-libopus
# 解決 ERROR: opus not found using pkg-config
yum -y install opus-devel
# --enable-libpulse
# 解決 ERROR: libpulse not found using pkg-config
yum -y install pulseaudio-libs-devel
# --enable-libschroedinger
# 解決 ERROR: schroedinger-1.0 not found using pkg-config
yum -y install schroedinger-devel
# --enable-libsoxr
# 解決 ERROR: libsoxr not found
yum -y install soxr-devel
# --enable-libspeex 
# 解決 ERROR: speex not found using pkg-config
yum -y install speex-devel
# --enable-libtheora
# 解決 ERROR: libtheora not found
yum -y install libtheora-devel
# --enable-libv4l2
# 解決 ERROR: libv4l2 not found using pkg-config
yum -y install libv4l-devel
# --enable-libvorbis
# 解決 ERROR: libvorbis not found
yum -y install libvorbis-devel
# --enable-openal
# 解決 ERROR: openal not found
yum -y install openal-devel
# --enable-libdc1394
# 解決 ERROR: libdc1394-2 not found using pkg-config
yum -y install libdc1394-devel
# --enable-libcdio
# 解決 ERROR: No usable libcdio/cdparanoia found
yum -y install libcdio-paranoia-devel
# --enable-x11grab
# 解決 ERROR: Xlib not found
yum -y install libX11-devel
# 解決 make install後沒有ffplay命令的問題
yum -y install SDL-devel
# 安裝yasm
yum -y install yasm
# --enable-libfdk-aac 
# 解決 ERROR: libfdk_aac not found
# 包下載地址 https://sourceforge.net/projects/opencore-amr/files/fdk-aac/
tar xf fdk-aac-0.1.6.tar.gz
cd fdk-aac-0.1.6/
./configure && make -j`nproc`&& make install -j`nproc`
cd -
rm -f fdk-aac-0.1.6.tar.gz 
rm -rf fdk-aac-0.1.6/
# --enable-libopencore-amrnb 
# --enable-libopencore-amrwb
# 解決 ERROR: libopencore_amrnb not found    
# 解決 ERROR: libopencore_amrweb not found
# 包下載地址 https://sourceforge.net/projects/opencore-amr/files/opencore-amr/
tar xf opencore-amr-0.1.5.tar.gz
cd opencore-amr-0.1.5
./configure && make -j`nproc`&& make install -j`nproc`
cd -
rm -f opencore-amr-0.1.5.tar.gz
rm -rf opencore-amr-0.1.5
# --enable-libvo-amrwbenc
# 解決 ERROR: libvo_amrwbenc not found
# 包下載地址 https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc/
tar xf vo-amrwbenc-0.1.3.tar.gz 
cd vo-amrwbenc-0.1.3/
./configure && make -j`nproc`&& make install -j`nproc`
cd -
rm -f vo-amrwbenc-0.1.3.tar.gz
rm -rf vo-amrwbenc-0.1.3/
# --enable-libxvid 
# 解決 ERROR: libxvid not found
# 包下載地址:https://ftp.osuosl.org/pub/blfs/conglomeration/xvidcore/
tar xf xvidcore-1.3.7.tar.gz 
cd xvidcore/build/generic/
./configure --build=arm-linux && make -j`nproc`&& make install -j`nproc`
cd -
rm -f xvidcore-1.3.7.tar.gz
rm -rf xvidcore
# --enable-libx264
# 解決 ERROR: libx264 not found
# 包下載地址 http://ftp.videolan.org/pub/videolan/x264/snapshots/
tar xf x264-snapshot-20191217-2245.tar.bz2 
cd x264-snapshot-20191217-2245
./configure --enable-shared && make -j`nproc`&& make install -j`nproc`
cd -
rm -f x264-snapshot-20191217-2245.tar.bz2
rm -rf x264-snapshot-20191217-2245
# --enable-libx265
# 解決 ERROR: x265 not found using pkg-config
# 程式碼倉庫克隆地址 hg clone http://hg.videolan.org/x265
# 原始碼地址:http://hg.videolan.org/x265/file/tip
# x265.tar.gz 是clone 原始碼後tar打包生成的
# 文件地址:https://www.videolan.org/developers/x265.html
# 解決 bash: hg: command not found   
# yum -y install hg
tar xf x265.tar.gz 
cd x265/build/arm-linux/
cmake ../../source
make -j`nproc` && make install -j`nproc`
cd -
rm -f x265.tar.gz
rm -rf x265
# 此路徑為.pc檔案所在路徑
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# 編譯安裝的so檔案會去到/usr/local/lib  需要加到ld.so.conf檔案中載入
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
# ffmpeg
# 包下載地址:http://ffmpeg.org/releases/
tar xf ffmpeg-2.8.15.tar.gz
cd ffmpeg-2.8.15
./configure --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=aarch64 \
	--optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' \
	--extra-ldflags='-Wl,-z,relro ' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib \
	--disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfdk-aac --enable-nonfree --disable-indev=jack \
	--enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger \
	--enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab \
	--enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping \
	--shlibdir=/usr/lib64 --enable-runtime-cpudetect
make -j`nproc` && make install -j`nproc`
cd -
rm -f ffmpeg-2.8.15.tar.gz
rm -rf ffmpeg-2.8.15

三、dockerfile(arm)

基於centos:7安裝

系統版本:CentOS Linux release 7.9.2009 (AltArch)

核心版本:4.19.90-2003.4.0.0036.oe1.aarch64 #1 SMP Mon Mar 23 19:06:43 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

FROM centos:7

ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# ffmpeg 依賴的包
ADD x265.tar.gz /tmp
ADD ffmpeg-2.8.15.tar.gz /tmp
ADD fdk-aac-0.1.6.tar.gz /tmp
ADD xvidcore-1.3.7.tar.gz /tmp
ADD vo-amrwbenc-0.1.3.tar.gz /tmp 
ADD opencore-amr-0.1.5.tar.gz /tmp
ADD x264-snapshot-20191217-2245.tar.bz2 /tmp

RUN yum install -y epel-release \
    # 安裝編譯工具
    && yum -y install gcc cmake gcc-c++ \
    # 安裝 ffmpeg 依賴
    && yum -y install \
    gnutls-devel \
    ladspa-devel \
    libass-devel \
    gsm-devel \
    lame-devel \
    openjpeg-devel \
    opus-devel \
    pulseaudio-libs-devel \
    schroedinger-devel \
    soxr-devel \
    speex-devel \
    libtheora-devel \
    libv4l-devel \
    libvorbis-devel \
    openal-devel \
    libdc1394-devel \
    libcdio-paranoia-devel \
    libX11-devel \
    SDL-devel \
    yasm \
    # 編譯安裝 fdk-aac
    && cd /tmp/fdk-aac-0.1.6 \
    && ./configure && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/fdk-aac-0.1.6 \
    # 編譯安裝 opencore-amr
    && cd /tmp/opencore-amr-0.1.5 \
    && ./configure && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/opencore-amr-0.1.5 \
    # 編譯安裝 vo-amrwbenc
    && cd /tmp/vo-amrwbenc-0.1.3 \
    && ./configure && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/vo-amrwbenc-0.1.3 \
    # 編譯安裝 xvidcore
    && cd /tmp/xvidcore/build/generic \
    && ./configure --build=arm-linux && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/xvidcore \
    # 編譯安裝 x264
    && cd /tmp/x264-snapshot-20191217-2245 \
    && ./configure --enable-shared && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/x264-snapshot-20191217-2245 \
    # 編譯安裝 x265
    && cd /tmp/x265/build/arm-linux \
    && cmake ../../source \
    && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/x265 \
    # 編譯安裝的so檔案會去到 /usr/local/lib 需要加到ld.so.conf檔案中載入
    && echo "/usr/local/lib" >> /etc/ld.so.conf && ldconfig \
    # 編譯 ffmpeg
    && cd /tmp/ffmpeg-2.8.15 \
    && ./configure \
    --prefix=/usr \
    --bindir=/usr/bin \
    --datadir=/usr/share/ffmpeg \
    --incdir=/usr/include/ffmpeg \
    --libdir=/usr/lib64 \
    --mandir=/usr/share/man \
    --arch=aarch64 \
    --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' \
    --extra-ldflags='-Wl,-z,relro ' \
    --enable-libopencore-amrnb \
    --enable-libopencore-amrwb \
    --enable-libvo-amrwbenc \
    --enable-version3 \
    --enable-bzlib \
    --disable-crystalhd \
    --enable-gnutls \
    --enable-ladspa \
    --enable-libass \
    --enable-libcdio \
    --enable-libdc1394 \
    --enable-libfdk-aac \
    --enable-nonfree \
    --disable-indev=jack \
    --enable-libfreetype \
    --enable-libgsm \
    --enable-libmp3lame \
    --enable-openal \
    --enable-libopenjpeg \
    --enable-libopus \
    --enable-libpulse \
    --enable-libschroedinger \
    --enable-libsoxr \
    --enable-libspeex \
    --enable-libtheora \
    --enable-libvorbis \
    --enable-libv4l2 \
    --enable-libx264 \
    --enable-libx265 \
    --enable-libxvid \
    --enable-x11grab \
    --enable-avfilter \
    --enable-avresample \
    --enable-postproc \
    --enable-pthreads \
    --disable-static \
    --enable-shared \
    --enable-gpl \
    --disable-debug \
    --disable-stripping \
    --shlibdir=/usr/lib64 \
    --enable-runtime-cpudetect \
    && make -j`nproc` && make install -j`nproc` \
    && rm -rf /tmp/ffmpeg-2.8.15 \
    # 刪除編譯工具 清除yum快取
    && yum -y remove gcc cmake gcc-c++ \
    && yum clean all