最近想在板子上插個攝像頭,錄個像,搞了兩三天,算是能用人家的ffmpeg程序在自己的板子上攝像,然後將文件.avi格式保存到PC機上了。過程有些曲折,但是也算亂撞了。
推薦閱讀:ARM-Linux開機自啟動設置-mini2440開發板 http://www.linuxidc.com/Linux/2011-05/36109.htm
(1)編譯x264
官網上下了個最新的x264,地址在這裡。解壓之後,參考【1】用了個./configure --disable-asm,改寫了下config.mak,改寫ARCH=ARM SYS=LINUX CC=arm-linux-gcc,其中CC寫成你自己的交叉編譯環境位置,相應的AR、RANLIB也是,我的部分修改的config.mak如下:
prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
ARCH=ARM
SYS=LINUX
CC=arm-linux-gcc
CFLAGS=-Wshadow -O3 -ffast-math -Wall -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize
DEPMM=-MM -g0
DEPMT=-MT
LD=arm-linux-gcc -o
LDFLAGS= -lm -lpthread
LIBX264=libx264.a
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
然後,make make install一下。
(2)編譯ffmpeg
官網上下載FFmpeg 0.8.2,地址:http://ffmpeg.org/download.html,然後參考【2】編譯使用。將下載的包解壓之後運行./configure,後面的記不清了,從config.log中復制出來,如下:
./configure --cross-prefix=arm-linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-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
這裡沒有使用ffplay,需要的可以自己加上,參考【2】中說要用到SDL庫,可以試試。在--cc --prefix根據自己的目錄修改,然後就是make 和 make install ,之後在--prefix下找到自己要用到的lib include文件夾。
(3)使用ffmpeg錄像
將生成的ffmpeg庫拷貝到mini2440上,我是用nfs的TCP(參數上加個-o -tcp就可以了,默認是UDP的會斷)拷貝的,還好板子閃存夠大,近30M東西啊(有空了看能不能精簡下)!我是把lib目錄下的庫文件拷到了板子的默認lib下,所以也就省了export。當然還有ffmpeg程序,保持著nfs,用如下命令試下:#./ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/test.avi
補充說明下,我用的是USB攝像頭,mini2440支持,生成的是/dev/video0,nfs到主機的跟目錄,所以/mnt/test.avi是在主機根目錄下生成的。
好了,運行之後看以看到傳輸,終止程序,能看到生成的test.avi,播放一下(我的是復制到windows下播放的),沒調鏡頭,模糊的圖湊合看下吧!
最後想說下的是,我下的ffmpeg中怎麼沒有網上說的Output_example.c等例程,希望知道的人告訴我一下,謝謝!
參考文章:
【1】x264編碼的ARM移植 http://www.linuxidc.com/Linux/2011-09/43792.htm
【2】FFmpeg移植S3C2440 http://www.linuxidc.com/Linux/2011-09/43793.htm
【3】FFmpeg移植到mini2440 http://www.linuxidc.com/Linux/2011-09/43794.htm
更多關於FFmpeg的詳細信息,或者下載地址請點這裡