海思Hi35xx交叉编译ffmpeg + fdk aac

我的测试版ffmpeg-3.4.8 + fdk-aac-0.1.6开始使用的是fdk高版本,但发现当时ffmpeg还没有支持,有的数据结构不存在。
程序员说话就拿代码说话。

fdk-aac交叉编译脚本

#!/bin/sh
#CFLAGS="-march=armv7-a -O2 -DNDEBUG -fopenmp -pipe"
export PATH=$PATH:/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/

CC=arm-hisiv100nptl-linux-gcc
CXX=arm-hisiv100nptl-linux-g++
LD=arm-hisiv100nptl-linux-ld 
AR=arm-hisiv100nptl-linux-ar 
AS=arm-hisiv100nptl-linux-as 
NM=arm-hisiv100nptl-linux-nm 
STRIP=arm-hisiv100nptl-linux-strip  
OBJDUMP=arm-hisiv100nptl-linux-objdump 

make distclean
    
./configure \
	--host=arm-hisiv100nptl-linux \
	--prefix=$HOME/fdk_install \
	--disable-shared \
	--enable-static 

安装路径我写的是$HOME/fdk_install交叉编译ffmepg的时候还会看到。

ffmpeg交叉编译脚本

#!/bin/sh
#CFLAGS="-I /home/king/projects/fdk_install"
#LDFLAGS="-L /home/king/projects/fdk_install "
export PATH=$PATH:/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/

CC=arm-hisiv100nptl-linux-gcc
CXX=arm-hisiv100nptl-linux-g++
LD=arm-hisiv100nptl-linux-ld 
AR=arm-hisiv100nptl-linux-ar 
AS=arm-hisiv100nptl-linux-as 
NM=arm-hisiv100nptl-linux-nm 
STRIP=arm-hisiv100nptl-linux-strip  
OBJDUMP=arm-hisiv100nptl-linux-objdump 
    
./configure \
    --enable-cross-compile \
    --arch=arm \
    --cross-prefix=arm-hisiv100nptl-linux- \
    --target-os=linux  \
    --cc=arm-hisiv100nptl-linux-gcc \
	--enable-version3 \
	--enable-static  \
	--enable-ffmpeg \
	--disable-ffplay \
	--disable-ffprobe \
	--disable-ffserver \
	--disable-doc \
	--disable-avdevice \
	--disable-swscale \
	--disable-postproc \
	--disable-debug \
	--disable-dxva2 \
	--disable-vaapi \
	--disable-vdpau \
	--enable-encoder=libfdk_aac \
	--enable-decoder=libfdk_aac \
	--enable-libfdk-aac \
	--extra-cflags="-I$HOME/fdk_install/include" \
	--extra-ldflags="-L$HOME/fdk_install/lib" \
	--enable-small \
	--enable-network \
	--enable-protocol=file \
	--enable-protocol=http \
	--enable-protocol=tcp \
	--enable-protocol=udp \
	--enable-protocol=rtmp \
	--enable-protocol=rtmpe \
	--enable-protocol=rtmps \
	--enable-protocol=rtmpt \
	--enable-protocol=rtmpte \
	--enable-protocol=rtmpts \
	--enable-protocol=ffrtmpcrypt \
	--enable-protocol=ffrtmphttp \
	--enable-muxer=rtp \
	--enable-muxer=rtsp \
	--enable-muxer=flv \
	--enable-muxer=mpegts \
	--enable-muxer=h264 \
	--enable-muxer=mp3 \
	--enable-muxer=mp2 \
	--enable-muxer=ac3 \
	--enable-muxer=opus \
	--enable-muxer=hls \
	--enable-muxer=mjpeg \
	--enable-protocol=librtmps \
	--enable-encoder=mp2 \
	--enable-encoder=ac3 \
	--enable-encoder=libopus \
	--enable-encoder=mjpeg

这几句是最重要的:

	--enable-encoder=libfdk_aac \ #注册编码器,如果不注册使用的时候找不到。
	--enable-decoder=libfdk_aac \ #注册解码器,如果不注册使用的时候找不到。
	--enable-libfdk-aac \  #打开libfdk-aac的支持。
	--extra-cflags="-I$HOME/fdk_install/include" \  #编译的时候需要使用的头文件。
	--extra-ldflags="-L$HOME/fdk_install/lib" \  #编译的时候需要使用的库文件。

你可能感兴趣的:(FFmpeg)