在线文档完整读一遍吧:http://www.ffmpeg.org/ffmpeg.html
一、视频处理
1.格式转换
把.MOV文件转成.avi文件。可以执行下面的命令:
ffmpeg -i 路径+文件名.MOV 路径+文件名.avi
另一种方法是通过-c:v参数来控制,比如输出的视频格式是H.265。命令行如下:
ffmpeg -i 路径+文件名.MOV -c:v libx265 路径+文件名.avi
注:可以先用ffmpeg -encoders命令查看一下所有可选的编码格式。
2.顺时针旋转90度。使用-vf参数加入一个过滤器
ffmpeg -i 路径+文件名.MOV -vf "rotate=90*PI/180" 路径+文件名.avi
3.截取一小段(截取6秒到10秒)
ffmpeg -ss 6 -t 10 -i 路径+文件名.MOV 路径+文件名.avi
4.视频合成
我发现,用手机拍的视频有时候背景噪音比较大。怎么把噪音去掉,换成一段美妙的音乐呢?使用FFmpeg也能轻易做到。
第一步:把源文件里的音频去掉,生成一个临时文件tmp.mov
ffmpeg -i D:\Media\IMG_0873.MOV-vcodec copy -anD:\Media\tmp.mov
注:-vcodeccopy的意思是对源视频不解码,直接拷贝到目标文件;-an的意思是将源文件里的音频丢弃。
第二步:把这个无声的视频文件(tmp.mov)与一个音乐文件(music.mp3)合成,最终生成output.mov
ffmpeg -i D:\Media\tmp.mov-ss 30 -t 52-i D:\Media\music.mp3-vcodec copyD:\Media\output5.avi
为了保证良好的合成效果,音乐时长必须匹配视频时长。这里我们事先知道视频时长为52秒,于是截取music.mp3文件的第30秒往后的52秒与视频合成。另外,为了保证音频时长截取的准确性,我们这里没有使用-acodec copy,而是让音频重新转码。
还有一种情况:我们希望在一段视频上叠加一张图片。可以简单实现如下:
ffmpeg -i D:\Media\IMG_0873.MOV -i D:\Media\logo.png-filter_complex 'overlay'D:\Media\output6.avi
5.视频播放
格式转换或合成之后,我们需要试着播放一下。播放器的选择很多。这里顺手用ffplay工具也行:
ffplay -i D:\Media\output6.avi
应用场景4:获取视频信息
有时候,我只是想看看这个视频文件的格式信息。可以用ffprobe工具:
ffprobe -i D:\Media\IMG_0873.MOV
二、处理RTMP流媒体的命令
1、将文件当做直播送至
liveffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName
2、将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
3、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
4、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
5、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
6、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
7、功能一样,只是采用-x264opts选项
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
8、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
9、将一个JPG图片经过h264压缩循环输出为mp4视频
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
10、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1″