SRCPATH=.
prefix=/usr
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
STRIP=strip
然后make 再 make install
2.进入lame-3.99.5目录后,执行./configure --enable-shared --prefix=/usr
make
make install
3.先进入faac-1.28目录执行./bootstrap
./configure --prefix=/usr
make
make install
4.先进入xvidcore目录,再cd build/generic 进入generic目录
./configure --prefix=/usr
make
make install
5.进入ffmpeg-1.0目录,最好先执行./configure --help > ffmpeg_help.txt 生成帮助文档ffmpeg_help.txt,有兴趣的自己看里面的介绍很详细的,不过全是英文的。
这个是生成静态的可执行文件ffmpeg的配置,最终ffmpeg有10M左右
./configure --cross-prefix=arm-linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc --arch=arm --prefix=/usr/local/ffmpeg
make 一下在ffmpeg-1.0目录就会有ffmpeg了。
这个是生成动态的可执行文件ffmpeg的配置,最终ffmpeg只有100多K
./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-swscale --enable-pthreads --enable-nonfree --enable-libfaac --enable-libxvid --enable-libmp3lame --enable-libx264 --enable-x11grab --enable-version3 不过都得先安装,不然会报找不到的。根据个人需要配置。
make
make install 后在/usr/local/ffmpeg目录下的bin下面就有ffmpeg ffserver了。
这次生成的ffmpeg下到板子上是执行不了的,应为没有库文件。要到编译的目录下去把7个包考到板子的lib目录下。
七个包分别在libavcodec, libavdevice等下面,这7个包是
。用友善之臂的Tiny6410的话,可以用SD卡考,很快的。
再把/usr/local/ffmpeg/bin下的ffmpeg和ffserver考到sd卡里,这里考到哪里都行,只要是在板子上执行就行。
6.现在进行测试,将/usr/local/下的ffmpeg目录考到sd卡里
在超级终端或者SecureCRT里面执行cd /sdcard/ffmpeg/bin后
#./ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 test.asf 开始录制视频
按q键后退出,则会有test.asf文件。不过在板子上播放不起asf格式的。编译时可以生成test.avi格式的。
#./ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 test.avi 这样就会有test.avi,在板子上可以播放演示。
下面进行视频格式转换测试:
./ffmpeg -i test.avi test.flv 可以将avi格式的转换为flv 其它格式的asf, mpg等只要编译起了库文件的应该都可以。
此时会生成test.flv,在电脑上可以播放。
这是截图或gif动画命令:
./ffmpeg -i wheer.avi -t 0.001 -f image2 cap.jpg
./ffmpeg -i wheer.avi -ss 10 -t 5 -pix_fmt rgb24 -loop_output 0 -f gif cap.gif
第二个表示从第10秒开始截5秒视频为gif动画,并将gif设为无限次重复播放
现在用ffserver和ffmpeg做视频的网络传输:
首先要配置ffmpeg.conf,我把名字改为了myffmpeg.conf,内容如下
port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 4096
CustomLog -
NoDaemon
File /tmp/feed1.ffm
FileMaxSize 256k
ACL allow 172.19.72.68 //这个是Tiny6410板子的IP地址
Feed feed1.ffm
Format asf
AudioBitRate 64
VideoCodec mpeg4
videoFrameRate 15
VideoSize 320*240
VideoBitRate 256
VideoBufferSize 40
VideoGopSize 35
StartSendOnKey
把myffmpeg.conf考到ffserver可执行文件一个目录下:
在板子的终端上执行
./ffserver -f ffserver.conf 7 //设置后台服务
运行成功后应该显示:
[root@FriendlyARM bin]# ./ffserver -f myffserver.conf 7
ffserver version 1.0 Copyright (c) 2000-2012 the FFmpeg developers
built on Oct 12 2012 16:47:43 with gcc 4.5.1 (ctng-1.8.1-FA)
configuration: --cross-prefix=arm-linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc-4.5.1 --arch=armv6 --prefix=/usr/local/ffmpeg --enable-shared
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
Wed Oct 17 18:16:25 2012 FFserver started.
再在SecureCRT或超级终端执行
./ffmpeg -f video4linux2 -s 320*240 -r 35 -i /dev/video0
IP为Tiny6410板子的。
再用VLC软件或直接在网页上输入 进行监控,下面是截图。
有个问题就是播放的时候要缓冲,需要等几秒再播放,不知道哪里没设置好。应该是先写入缓冲区,再从缓冲区读数据。 哪位大侠知道,给点提示。