交叉编译工具:arm-linux-gcc一.先下载一下文件1.
yasm-1.2.0.tar.gz2.
x264-snapshot-20140424-2245.tar.bz23.
xvidcore-1.1.3.tar.gz4.
SDL-1.2.15.tar.gz5.
ffmpeg-1.2.2.tar.gz链接如下1.
yasm-1.2.0.tar.gzhttp://download.csdn.net/detail/zengzhihao/7677671
2.
x264-snapshot-20140424-2245.tar.bz2http://download.csdn.net/detail/zengzhihao/7677707
3.
xvidcore-1.1.3.tar.gzhttp://download.csdn.net/detail/zengzhihao/7677717
4.
SDL-1.2.15.tar.gzhttp://download.csdn.net/detail/zengzhihao/7677691
5.
ffmpeg-1.2.2.tar.gzhttp://download.csdn.net/detail/zengzhihao/7677745
二.逐个编译上面源文件/usr/local/ffmpeg_arm:依赖的库文件目录,目标目录,库目录
1. yasm-1.2.0.tar.gztar -zxvf yasm-1.2.0.tar.gz && cd yasm-1.2.0 && ./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux && make&&make install && cd ../
2. x264-snapshot-20140424-2245.tar.bz2tar -jxvf x264-snapshot-20140424-2245.tar.bz2 && cd x264-snapshot-20140424-2245 && ./configure --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux --cross-prefix=arm-linux- --disable-asm && make && make install && cd ../
3. xvidcore-1.1.3.tar.gz3.1tar -zxvf xvidcore-1.1.3.tar.gz && cd xvidcore-1.1.3/build/generic
3.2vi configure修改$CC为gcc4361 gcc -o gcc-ver test.c3.3./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux --target=arm-linux && make && make install && cd ../../../4. SDL-1.2.15.tar.gztar -zxvf SDL-1.2.15.tar.gz && cd SDL-1.2.15 && ./configure --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux --disable-video-x11 --disable-input-tslib --disable-esd --disable-arts --disable-nasm --disable-alsa --disable-video-nanox --disable-video-qtopia --disable-video-photon --disable-video-ggi --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts && make && make install && cd ../
5. ffmpeg-1.2.2.tar.gz5.1
tar -zxvf ffmpeg-1.2.2.tar.gz && cd ffmpeg-1.2.2
5.2
vi configure
修改configure的SDL_CONFIG
3973 SDL_CONFIG="${cross_prefix}sdl-config"
为
3973 SDL_CONFIG="/usr/local/ffmpeg_arm/bin/sdl-config"
5.3
./configure --cross-prefix=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux- --prefix=/usr/local/ffmpeg_arm --enable-shared --enable-cross-compile --arch=armv7 --target-os=linux --cc=arm-linux-gcc --enable-libxvid --enable-libx264 --enable-gpl --enable-pthreads --disable-ffserver --enable-ffmpeg --disable-ffprobe --enable-ffplay --enable-avfilter --disable-network --enable-runtime-cpudetect --disable-indevs --ar=arm-linux-ar --ld=arm-linux-gcc --strip=arm-linux-strip --extra-cflags=-I/usr/local/ffmpeg_arm/include --extra-ldflags=-L/usr/local/ffmpeg_arm/lib
5.4 检查ffplay是否包含"CONFIG_FFPLAY=yes" 没有则说明有问题
vi config.mak
CONFIG_FFPLAY=yes
5.5
make && make install
6 拷贝/usr/local/ffmpeg_arm到开发板上运行
7 删除多余的文件
ffplay 使用示例
view sourceprint?01.
1
) 播放 test.mp4 ,播放完成后自动退出
02.
ffplay -autoexit test.mp4
03.
04.
2
) 以
320
x
240
的大小播放 test.mp4
05.
ffplay -x
320
-y
240
test.mp4
06.
07.
3
) 将窗口标题设置为
"myplayer"
,循环播放
2
次
08.
ffplay -window_title myplayer -loop
2
test.mp4
09.
10.
4
) 播放 双通道 32K 的 PCM 音频数据
11.
ffplay -f s16le -ar
32000
-ac
2
test.pcm
更多 ffplay 可用选项,可以使用 ffplay -h 获取所有的命令如下列表所示。名称有参数作用xY强制屏幕宽度yY强制屏幕高度sY强制屏幕大小fsN全屏anN关闭音频vnN关闭视频astY设置想播放的音频流(需要指定流ID)vstY设置想播放的视频流(需要指定流ID)sstY设置想播放的字幕流(需要指定流ID)ssY从指定位置开始播放,单位是秒tY播放指定时长的视频nodispN无显示屏幕fY强制封装格式pix_fmtY指定像素格式statsN显示统计信息idctYIDCT算法ecY错误隐藏方法syncY视音频同步方式(type=audio/video/ext)autoexitN播放完成自动退出exitonkeydownN按下按键退出exitonmousedownN按下鼠标退出loopY指定循环次数framedropNCPU不够的时候丢帧window_titleY显示窗口的标题rdftspeedYRdft速度showmodeY显示方式(0 = video, 1 = waves, 2 = RDFT)codecY强制解码器
项目组成
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。
libavformat:用于各种音视频
封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
libavcodec:用于各种类型声音/
图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、 {MOD}彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或
电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
4命令集
ffmpeg 命令集举例1.获取视频的信息ffmpeg -i video.avi2.将图片序列合成视频ffmpeg -f image2 -i image%d.jpg video.mpg上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成video.mpg3.将视频分解成图片序列ffmpeg -i video.mpg image%d.jpg上面的命令会生成image1.jpg. image2.jpg. …支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI4.为视频重新编码以适合在iPod/iPhone上播放ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X final_video.mp4说明:* 源视频:source_video.avi* 音频编码:aac* 音频位率:128kb/s* 视频编码:mpeg4* 视频位率:1200kb/s* 视频尺寸:320 X 180* 生成的视频:final_video.mp45.为视频重新编码以适合在PSP上播放ffmpeg -i source_video.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4说明:* 源视频:source_video.avi* 音频编码:aac* 音频位率:32kb/s* 视频编码:xvid* 视频位率:1200kb/s* 视频尺寸:320 X 180* 生成的视频:final_video.mp46.从视频抽出声音.并存为Mp3ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3说明:* 源视频:source_video.avi* 音频位率:192kb/s* 输出格式:mp3* 生成的声音:sound.mp37.将wav文件转成Mp3ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp38.将.avi视频转成.mpgffmpeg -i video_origine.avi video_finale.mpg9.将.mpg转成.aviffmpeg -i video_origine.mpg video_finale.avi10.将.avi转成gif动画(未压缩)ffmpeg -i video_origine.avi gif_anime.gif11.合成视频和音频ffmpeg -i son.wav -i video_origine.avi video_finale.mpg12.将.avi转成.flvffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video_finale.flv13.将.avi转成dvffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv或者:ffmpeg -i video_origine.avi -target pal-dv video_finale.dv14.将.avi压缩成divxffmpeg -i video_origine.avi -s 320×240 -vcodec msmpeg4v2 video_finale.avi15.将Ogg Theora压缩成Mpeg dvdffmpeg -i film_sortie_cinelerra.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg16.将.avi压缩成SVCD mpeg2NTSC格式:ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpgPAL格式:ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg17.将.avi压缩成VCD mpeg2NTSC格式:ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpgPAL格式:ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg18.多通道编码ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-219.从flv提取mp3ffmpeg -i source.flv -ab 128k dest.mp3
5格式
支持的编码源自FFmpeg项目组的两个
视频编码:SnowFFV1
支持的格式ASFAVIBFI[7]IFF[8]RL2[9]FLVMXF, Material eXchange Format, SMPTE 377MMatroskaMaxis XA[10]MSN Webcam stream[11]MPEG transport streamTXD[6]OMA[12]GXF, General eXchange Format, SMPTE 360Mmov,mp4,m4a,3gp,
6协议
支持的协议HTTPRTPRTSPRealMedia RTSP/RDTTCPUDPGopherRTMPRTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)SDPMMS over TCP