Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69331
  • 博文数量: 9
  • 博客积分: 206
  • 博客等级: 入伍新兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-09 23:00
文章分类

全部博文(9)

文章存档

2012年(9)

分类: LINUX

2012-10-16 15:49:38

系统:Ubuntu11.10
交叉编译环境:gcc 4.5.1
开发板:友善之臂 Tiny6410

lame-3.99.5,   
faac-1.28,
xvidcore-1.3.2,
ffmpeg-1.0,在中间位置
下好之后解压,推荐解压在opt目录下,这里不做详解。
1.在x264-snapshot-20121007-2245目录下执行./configure --disable-asm
再更改config.mak的ARCH,  CC, CFLAGS, LD, LDFLAGS, AR, RANLIB如下:
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软件或直接在网页上输入     进行监控,下面是截图。
有个问题就是播放的时候要缓冲,需要等几秒再播放,不知道哪里没设置好。应该是先写入缓冲区,再从缓冲区读数据。  哪位大侠知道,给点提示。
阅读(6751) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~