背景
Ffmpeg 中带有264的解码,没有编码,需要添加x264。libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx264。
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。
librtmp用来接收、发布RTMP协议格式的数据。FFmpeg支持RTMP协议,将librtmp编译进去后支持协议RTMPE、RMTPTE、RTMPS。这里我直接使用FFmpeg自带的RTMP功能。
host平台 :Ubuntu 18.04
arm平台 : S5P6818
arm-gcc :4.8.1
## # Copyright By Schips, All Rights Reserved # https://gitee.com/schips/ # File Name: make.sh # Created : Mon 02 Sep 2019 08:05:53 PM HKT ## #!/bin/sh BASE=`pwd` BUILD_HOST=arm-linux OUTPUT_PATH=${BASE}/install X264_DIR=${OUTPUT_PATH}/x264 make_dirs () { #为了方便管理,创建有关的目录 cd ${BASE} && mkdir compressed install source -p } tget () { #try wget filename=`basename $1` echo "Downloading [${filename}]..." if [ ! -f ${filename} ];then wget $1 fi echo "[OK] Downloaded [${filename}] " } download_package () { cd ${BASE}/compressed tget http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20171212-2245.tar.bz2 tget http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.bz2 } tar_package () { cd ${BASE}/compressed ls * > /tmp/list.txt for TAR in `cat /tmp/list.txt` do tar -xf $TAR -C ../source done rm -rf /tmp/list.txt } make_x264() { cd ${BASE}/source/x264* CC=${BUILD_HOST}-gcc \ ./configure \ --host=${BUILD_HOST} \ --enable-shared \ --enable-static \ --enable-pic \ --prefix=${OUTPUT_PATH}/x264 \ --cross-prefix=${BUILD_HOST}- \ --disable-asm make -j4 && make install } make_ffmpeg() { cd ${BASE}/source/ffmpeg* ./configure \ --cross-prefix=${BUILD_HOST}- \ --enable-cross-compile \ --target-os=linux \ --cc=${BUILD_HOST}-gcc \ --arch=arm \ --prefix=${OUTPUT_PATH}/ffmpeg \ --enable-shared \ --enable-static \ --enable-gpl \ --enable-nonfree \ --enable-ffmpeg \ --disable-ffplay \ --enable-ffserver \ --enable-swscale \ --enable-pthreads \ --disable-armv5te \ --disable-armv6 \ --disable-armv6t2 \ --disable-yasm \ --disable-stripping \ --enable-libx264 \ --extra-cflags=-I${X264_DIR}/include \ --extra-ldflags=-L${X264_DIR}/lib make clean && make -j4 && make install } echo "Using ${BUILD_HOST}-gcc" make_dirs download_package tar_package make_x264 make_ffmpeg
配置完成以后可能会有这个警告,但是不影响后续的结果
License: nonfree and unredistributable Creating configuration files ... WARNING: The --disable-yasm option is only provided for compatibility and will be removed in the future. Use --enable-x86asm / --disable-x86asm instead. WARNING: unknown architecture linux WARNING: using libx264 without pkg-config
开发板准备:
拷贝 x264中的make install 以后生成的lib下的所有文件到板子上的/usr/lib 中
同样地,拷贝ffmpeg中的lib到板子上
测试:
ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/tmp/test.avi # video4linux2 代表Linux下 # /dev/video0 代表摄像头设备 # /mnt/tmp/test.avi代表输出路径
来源:https://www.cnblogs.com/schips/p/12193297.html