libavcodec: 用于各种类型声音/图像编解码
libavutil: 包含一些公共的工具函数
libavformat: 包含多种多媒体容器格式的封装丶解封装工具
libswscale: 用于视频场景的比例缩放丶色彩映射转换
libpostproc: 用于后期效果处理
libavdevice: 用于音视频数据采集和渲染等功能的设备相关
ibswresample: 用于音频重采样和格式转换等功能
libavfilter: 包含多媒体处理常用的滤镜功能
ffmpeg的官方网站是:http://ffmpeg.org/
编译好的windows可用版本的下载地址(和官网保持同步):http://ffmpeg.zeranoe.com/builds/
该网站中的FFMPEG分为3个版本:Static,Shared,Dev。
前两个版本都可以直接在命令行使用:
Static:只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe。每个exe的体积都很大,相关的Dll都已经被编译到exe里面去了。
Shared : 除了上面那三个exe之外,还有一些Dll,比如avcodec-54.dll之类的。shared里面的exe体积很小,他们运行时到相应的Dll中调用功能。
Dev : 用于开发,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。
ffmpeg :该项目提供的一个工具,可用于格式转换丶解码或电视卡即时编译等。
ffprobe : ffprobe是用于查看文件格式的应用程序。
ffplay :是一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示
ffserver :一个HTTP多媒体即时广播串流服务器。
常用命令集
获取视频的信息
ffmpeg -i video.avi将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg, image2.jpg等..)合成video.mpg将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg,image2.jpg…
支持的图片格式有:PGM,PPM,PAM,PGMYUV,JPEG,GIF,PNG,TIFF,SGI为视频重新编码以适合在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 320x180 -title X final_video.mp4
说明:1
2
3
4
5
6
7- 源视频:source_vidro.avi
- 音频编码:aac
- 音频位率:128kb/s
- 视频编码:mpeg4
- 视频位率:1200kb/s
- 视频尺寸:320 X 180
- 生成的视频:final_video.mp4为视频重新编码以适合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.np4
说明:1
2
3
4
5
6
7+ 源视频:source_video.avi
+ 音频编码:aac
+ 音频位率:32kb/s
+ 视频编码:xvid
+ 视频位率:1200kb/s
+ 视频尺寸:320 X 180
+ 生成的视频:final_video.mp4从视频抽出声音。并存为Mp3
ffmpeg -i source_video.avi -vn -ar44100 -ac 2 -ab 192 -f mp3 sound.mp3
说明:1
2
3
4* 源视频:source_video.avi
* 音频位率:192kb/s
* 输出格式:mp3
* 生成的声音:sound.mp3将wav文件转成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3将.avi视频转成.mpg
ffmpeg -i video_origine.avi video_finale.mpg将.mpg转成.avi
ffmpeg -i video_origine.mpg video_finale.avi将.avi转成gif动画(未压缩)
ffmpeg -i video_origine.avi gif_anime.gif合成视频和音频
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg将.avi转成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv将.avi转成dv
ffmpeg -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.dv将.avi压缩成divx
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi将Ogg Theora 压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg将.avi压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg将.avi压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -traget pal-vcd video_finale.mpg多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2从flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
##win下编译ffmpeg3.3
- 下载安装MinGW
- 下载yasm
- ffmpeg
- 编辑ffmpeg文件夹下面的configure文件,找到
1
2
3
4
5
6
7
8
9SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
将其修改成:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
- 新建build_android.sh文件
注意:要根据环境配置的前四项,且每行末尾不能有空格。export TMPDIR,NDK,SYSROOT,TOOLCHAIN-cross-prefix 一定有1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34!/bin/bash
export TMPDIR="D:\ffmpeg\tmp"
NDK=D:\/sdk\/ndk-bundle
SYSROOT=$NDK/platforms\/android-24\/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
function build_one {
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
然后在MinGW中cd进ffmpeg目录。
命令:
chomd 777 ./build_android.sh
./build_android.sh 开始编译
编译完成后在FFmpeg下会多一个Android文件夹。