一、 Ubuntu系统安装
x264库(先安装nasm)
sudo apt-get install nasm
git clone https://github.com/mirror/x264
cd x264
./configure --enable-shared
make
make install
libssl libcrypto安装
openssl编译说明
1.ubuntu方式
sudo ./config --prefix=/usr/local/openssl
sudo make
找到libssl.a libcrypto.a复制到需要的目录即可。
librtmp安装
sudo apt install librtmp
ffmpeg安装
下载地址:http://ffmpeg.org/releases/
下载版本:3.3.9
tar -zxvf ffmpeg-3.3.9.tar.gz
cd ffmpeg-3.3.9
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-shared --enable-postproc --enable-gpl
make && make install
sudo vi ~/.bashrc
export PATH=$PATH:/usr/local/ffmpeg/bin
source ~/.bashrc
ffmpeg -version
libavcodec/libx264.c:282:9: error: ‘x264_bit_depth’ undeclared
打开libx264.c,找到相应的代码行,将“x264_bit_depth”改成“X264_BIT_DEPTH”即可
ffplay播放问题处理
Could not initialize SDL
- No available video device (Did you set the DISPLAY variable?)
1.更新源为阿里源
2.安装依赖库
sudo apt install xorg-dev
sudo apt build-dep xscreensaver totem vlc
sudo apt source xscreensaver totem -b
#is this OK?
#apt -y install xscreensaver totem vlc
3.重新编译SDL
./configure --prefix=/usr/local/sdl2/ --enable-video-x11 --enable-x11-shared --enable-video-x11-vm
4.配置PATH/LD_LIBRARY_PATH
5.再次测试 ffplay xxx.h264
参考:
linux下使用ffmpeg采集摄像头数据并编码成h264文件_snail_hunan的博客-CSDN博客_-vcodec libx264
Linux下FFmpeg之ffplay编译 - 灰信网(软件开发博客聚合)
二、交叉编译
1.x264交叉编译
./configure --prefix=/home/book/workspace/tools/x264/x264_arm/x264-master/build \
--enable-shared \
--enable-static \
--host=arm-linux \
--cross-prefix=/home/book/workspace/armlinux/rk3568/rk3568tools/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
--disable-opencl \
--enable-pic \
--disable-asm
2.ffmpeg交叉编译
./configure \
--prefix=/home/book/workspace/tools/ffmepg/ffmpeg3.3.9_arm/ffmpeg_out \
--enable-cross-compile \
--cross-prefix=/home/book/workspace/armlinux/rk3568/rk3568tools/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- \
--enable-filters \
--disable-asm \
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
--enable-doc \
--arch=aarch64 \
--target-os=linux \
--host-os=linux \
--enable-gpl \
--enable-version3 \
--enable-small \
--enable-static \
--enable-shared \
--enable-encoder=rawvideo \
--enable-encoder=mpeg2video \
--enable-encoder=mp2 \
--enable-encoder=libx264 \
--enable-libx264 \
--enable-muxer=adts \
--enable-muxer=mpegts \
--enable-muxer=mpeg2video \
--enable-muxer=rtsp \
--enable-muxer=hls \
--enable-muxer=h264 \
--enable-muxer=rtp \
--enable-muxer=avi \
--enable-muxer=flv \
--enable-muxer=mp4 \
--enable-demuxer=mpegts \
--enable-demuxer=rtsp \
--enable-demuxer=hls \
--enable-demuxer=h264 \
--enable-demuxer=rtp \
--enable-demuxer=flv \
--enable-muxer=mp4 \
--enable-demuxer=mpegts \
--enable-demuxer=rtsp \
--enable-demuxer=hls \
--enable-demuxer=h264 \
--enable-demuxer=rtp \
--enable-demuxer=flv \
--enable-demuxer=avi \
--enable-demuxer=mpegps \
--enable-demuxer=mpegtsraw \
--enable-demuxer=mpegvideo \
--enable-parser=aac \
--enable-parser=h264 \
--enable-parser=mpeg4video \
--enable-parser=mpegvideo \
--enable-parser=mpegaudio \
--enable-bsf=h264_mp4toannexb \
--enable-protocol=http \
--enable-protocol=rtp \
--enable-protocol=hls \
--enable-protocol=file \
--enable-protocol=data \
--enable-gray \
--enable-safe-bitstream-reader \
--enable-swscale \
--enable-swscale-alpha \
--enable-filter=scale \
--extra-cflags="-I/home/book/workspace/tools/ffmepg/ffmpeg3.3.9_arm/x264_arm/include" \
--extra-ldflags="-L/home/book/workspace/tools/ffmepg/ffmpeg3.3.9_arm/x264_arm/lib"
参考: