nano pi neo linux4.x 自行编译ffmpeg软编码 c库使用Ubuntu 16.04
来源:互联网 发布:淘宝开店成功后怎么做 编辑:程序博客网 时间:2024/05/22 08:13
nano pi neo 使用linux4.x 自行编译ffmpeg[软编码 ]
使用Ubuntu 16.04
Linux-3.4.y内核为CPU芯片厂商全志科技官方提供的内核,全志为该内核做了十分多的定制开发,所以该内核完善度高
但是不够纯净,对应的系统固件发热量较大;
Linux-4.x.y内核仍在不断地完善中,并且尽可能地保持和Linus Torvalds主线内核一致,该内核拥有和主线内核一致
的特性,是一个比较纯净的内核,对应的系统固件发热量较小。如果产品不需要使用VPU和GPU功能,可以使用该内核;
nanopi-neo 使用linux 4.14 镜像文件nanopi-neo_FriendlyCore-Xenial_4.14.0_20171218.img.zip
使用ffmpeg 出现这个错误,应该是硬件编码 就不支持 虽然encoders列表里面有cedrus264 .
[cedrus264 @ 0xf5a560] VE Open error.
所以直接使用软件编码 重新编译ffmpeg动态so库 加入alsa设备支持
源文件
alsa-lib-1.1.5.tar.bz2
ffmpeg-3.4.tar.bz2
last_x264.tar.bz2
lame-3.100.tar.gz
编译好的
一.ubuntu 16.04 编译x264
root@sun:/home/sun# arm-cortexa9-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-cortexa9-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/sun/nanopineo/4.9.3/bin/../libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper
Target: arm-cortexa9-linux-gnueabihf
Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3 --with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++ --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard --with-pkgversion=ctng-1.21.0-229g-FA --with-bugurl=http://www.friendlyarm.com/ --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --with-gmp=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpfr=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpc=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-isl=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-cloog=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-libelf=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-long-long
Thread model: posix
gcc version 4.9.3 (ctng-1.21.0-229g-FA)
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245#
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245#
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245# ./configure --host=arm-cortexa9-linux-gnueabihf --prefix=./x264-neo --enable-shared --disable-asm
platform: ARM
byte order: little-endian
system: LINUX
cli: yes
libx264: internal
shared: yes
static: no
asm: no
interlaced: yes
avs: avxsynth
lavf: no
ffms: no
mp4: no
gpl: yes
thread: posix
opencl: yes
filters: crop select_every
lto: no
debug: no
gprof: no
strip: no
PIC: yes
bit depth: 8
chroma format: all
You can run 'make' or 'make fprofiled' now.
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245# vim config.mak
SRCPATH=.
prefix=./x264-neo
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
SYS_ARCH=ARM
SYS=LINUX
CC=arm-cortexa9-linux-gnueabihf-gcc
CFLAGS=-Wno-maybe-uninitialized -Wshadow -O3 -ffast-math -Wall -I. -I$(SRCPATH) -std=gnu99 -D_GNU_SOURCE -fPIC -fomit-frame-pointer -fno-tree-vectorize
COMPILER=GNU
COMPILER_STYLE=GNU
DEPMM=-MM -g0
DEPMT=-MT
LD=arm-cortexa9-linux-gnueabihf-gcc -o
LDFLAGS= -lm -lpthread -ldl
LIBX264=libx264.a
AR=arm-cortexa9-linux-gnueabihf-ar rc
RANLIB=arm-cortexa9-linux-gnueabihf-ranlib
STRIP=strip
INSTALL=install
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245# make
root@sun:/home/sun/nanopineo/x264-snapshot-20171128-2245# make install
文件都在./x264-neo文件夹下le
二.编译liblamemp3 ffmpeg 所需的编码器
root@sun:/home/sun/nanopineo/lame-3.100# ./configure --host=arm-cortexa9-linux-gnueabihf --prefix=/home/sun/nanopineo/lame-3.100/lame-neo --enable-shared --disable-static
root@sun:/home/sun/nanopineo/lame-3.100# make
root@sun:/home/sun/nanopineo/lame-3.100# make install
文件都在./lame-neo文件夹下了
三.nano pi neo2 的Ubuntu core 缺少libasound.so文件 所以没有alsa设备
导致ffmpeg的alsa设备不能编译.
所以需要手动编译alsa-lib到工具链和板子上
root@sun:/home/sun/nanopineo/alsa-lib-1.1.5# ./configure --host=arm-cortexa9-linux-gnueabihf --prefix=/home/sun/nanopineo/alsa-lib-1.1.5/alsa-neo --enable-shared --disable-static
root@sun:/home/sun/nanopineo/alsa-lib-1.1.5# make
root@sun:/home/sun/nanopineo/alsa-lib-1.1.5# make install
四.编译ffmpeg
root@sun:/home/sun/nanopineo/ffmpeg-3.4# ./configure --cross-prefix=arm-cortexa9-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-cortexa9-linux-gnueabihf-gcc --arch=arm --prefix=./ffmpeg-neo --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libx264 --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --enable-libmp3lame --disable-stripping --extra-cflags=-I../x264-snapshot-20171128-2245/x264-neo/include --extra-ldflags=-L../x264-snapshot-20171128-2245/x264-neo/lib/ --extra-cflags=-I../lame-3.100/lame-neo/include --extra-ldflags=-L../lame-3.100/lame-neo/lib --extra-cflags=-I../alsa-lib-1.1.5/alsa-neo/include --extra-ldflags=-L../alsa-lib-1.1.5/alsa-neo/lib
然后看下配置的结果有没有alsa
root@sun:/home/sun/nanopineo/ffmpeg-3.4# make
root@sun:/home/sun/nanopineo/ffmpeg-3.4# make install
五.编译好的复制到板子上 运行看看
********************************************************
如果想用c库开发 还有把编译好的复制到交叉工具链里
-----------------------------------------------------------------
删掉原来的
root@NanoPi-NEO:/usr/bin# rm ff
ffmpeg ffprobe ffserver
root@NanoPi-NEO:/usr/bin# rm ff*
root@NanoPi-NEO:/usr/bin# rm ff
ffmpeg ffprobe ffserver
root@NanoPi-NEO:/usr/bin# rm ff*
root@NanoPi-NEO:/usr/include# rm libav
libavcodec/ libavdevice/ libavfilter/ libavformat/ libavutil/
root@NanoPi-NEO:/usr/include# rm libav* -rf
root@NanoPi-NEO:/usr/include# rm libpostproc -rf
root@NanoPi-NEO:/usr/include# rm libsw
libswresample/ libswscale/
root@NanoPi-NEO:/usr/include# rm libsw* -rf
然后把编译好的 放到usr/lib usr/bin usr/include
root@NanoPi-NEO:/# tar xf alsa-neo-1.1.5.tar
root@NanoPi-NEO:/# tar xf ffmpeg-neo-3.4.tar
root@NanoPi-NEO:/# tar xf x264-neo-20171128.tar
root@NanoPi-NEO:/# tar xf lame-neo-3.100.tar
root@NanoPi-NEO:/# cp -rf /alsa-neo/lib/* /usr/lib/
root@NanoPi-NEO:/# cp -rf /alsa-neo/include/* /usr/include/
root@NanoPi-NEO:/# cp -rf /x264-neo/lib/* /usr/lib/
root@NanoPi-NEO:/# cp -rf /x264-neo/include/* /usr/include/
root@NanoPi-NEO:/# cp -rf /lame-neo/lib/* /usr/lib/
root@NanoPi-NEO:/# cp -rf /lame-neo/include/* /usr/include/
root@NanoPi-NEO:/# cp -rf /ffmpeg-neo/lib/* /usr/lib/
^[[Aroot@NanoPi-NEO:/# cp -rf /ffmpeg-neo/include/* /usr/include/
root@NanoPi-NEO:/# cp -rf /ffmpeg-neo/bin/* /usr/bin/
root@NanoPi-NEO:/#
测试下
root@NanoPi-NEO:/# ffmpeg -version
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.9.3 (ctng-1.21.0-229g-FA)
configuration: --cross-prefix=arm-cortexa9-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-cortexa9-linux-gnueabihf-gcc --arch=arm --prefix=./ffmpeg-neo --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libx264 --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --enable-libmp3lame --disable-stripping --extra-cflags=-I../x264-snapshot-20171128-2245/x264-neo/include --extra-ldflags=-L../x264-snapshot-20171128-2245/x264-neo/lib/ --extra-cflags=-I../lame-3.100/lame-neo/include --extra-ldflags=-L../lame-3.100/lame-neo/lib --extra-cflags=-I../alsa-lib-1.1.5/alsa-neo/include --extra-ldflags=-L../alsa-lib-1.1.5/alsa-neo/lib
libavutil 55. 78.100 / 55. 17.103
libavcodec 57.107.100 / 57. 24.102
libavformat 57. 83.100 / 57. 25.100
libavdevice 57. 10.100 / 57. 0.101
libavfilter 6.107.100 / 6. 31.100
libswscale 4. 8.100 / 4. 0.100
libswresample 2. 9.100 / 2. 0.101
libpostproc 54. 7.100 / 54. 7.100
- nano pi neo linux4.x 自行编译ffmpeg软编码 c库使用Ubuntu 16.04
- nano pi neo2 上Ubuntu-core自行编译ffmpeg c库使用Ubuntu 16.04
- 在Nanopi-NEO上编译带Cedrus硬件编码器的ffmpeg动态链接库
- Nano-X图形库
- Nano—X库编译make之后报错
- Ubuntu 16.04 编译ffmpeg
- nano pi neo2 给Ubuntu core 安装Samba服务
- 编译microwindow(nano-X) 及flnx-0.18
- Ubuntu内核编译教程-编译Linux4.5.0内核
- ubuntu中使用android ndk编译ffmpeg.
- Ubuntu编译Android使用的FFmpeg
- iOS视频编码库ffmpeg编译
- 在Nanopi-NEO上直接编译带Cedrus-avcodec的ffmpeg
- 在redhat9中交叉编译nano-X nxlib和fltk
- 使用NDK编译ffmpeg库
- Ubuntu下编译Ffmpeg静态库
- Ubuntu下FFmpeg库编译方法
- Ubuntu下编译ffmpeg、SDL、SDL_net库
- RHEL更换为centros的yum
- vsftpd: refusing to run with writable root inside chroot()
- WebPack安装以及使用
- 40个只有程序员才看得懂的段子
- 使用WinDbg查看GDT表
- nano pi neo linux4.x 自行编译ffmpeg软编码 c库使用Ubuntu 16.04
- laravel中实现文章过滤
- QT5中动态链接库的创建和调用(一)
- C++ const 指针 & 指向const对象的指针
- ImportError: No module named easydict
- 血压计板子问题分析
- 多线程编程
- leetcode 605. Can Place Flowers
- Readis安装