主要命令:
ffmpeg [input_file_options] -i input_file [output_file_options] output_file
注意: "-i input_file" 表示输入的文件或设备.
输入文件或设备相关的配置必须在"-i input_file"前设定, 在之后写的是用于输出文件的配置.
ffmpeg -version //查看ffmpeg版本号,并编译时配置
ffmpeg -formats //Show available formats (including devices).
ffmpeg -devices //Show available devices.
ffmpeg -codecs //Show all codecs known to libavcodec.
ffmpeg -decoders //Show available decoders.
ffmpeg -encoders //Show all available encoders.
ffmpeg -protocols //Show available protocols.
ffmpeg -pix_fmts //Show available pixel formats.
参数选项:
-f 用于指定文件格式. 可用"ffmpeg -formats"是看能支持的文件格式
rawvideo用于指定只有纯图像像素数据的文件
-i 用于指定输入文件或设备名
-y 用于不用确认直接替换存在的输出文件
-t 用于指定输入或输出文件的持续时间.
-ss 用于指定视频文件从什么时间开始
-to 用于指定视频文件在什么时间结束
-vframes number 用于指定输出多少帧数据到输出文件
-framerate number 用于指定输入文件或设备的帧率
-r 用于指定输入或输出文件的帧率,多少帧每秒(fps)
// -re 是指按播放的速度来读取输入帧数据并传输
-s和-video_size 用于指定图像的分辨率, 如"-video_size 640x480"
// -video_size 只能用于指定输入文件或设备的分辨率, -s可用于指定输入和输出
-aspect 用于指定图像比例. "4:3", "16:9"
-vn 用于指定没有视频图像输出.
-vcodec codec 用于指定输出文件使用什么编码格式. "-vcodec copy"表示使用原文件的编码格式, "-vcodec h264"表示使用h264编码
-pix_fmt 或 -pixel_format 用于指定输入或输出的图像像素格式。可用"ffmpeg -pix_fmts"查看支持的像素格式.
-an 用于指定没有声音数据输出
-acodec codec 指定使用的声音编解码器
-b 100k 用于指定输出视频文件的码率为100k, 数字越大越清晰.
-b:v 可用于指定视频的码率
-b:a 可用于指定音频的码率
1. 视频文件简单转换成另一个格式的视频文件, 会默认使用H264编码格式输出视频文件.
ffmpeg -i
2. 把一个视频文件和一个声音文件my.mp3合并成一个音视频文件
ffmpeg –i –i my.mp3 –vcodec copy –acodec copy
3. 把音视频文件里的声音数据去掉生成只有图像的文件, 并使用h264编码
ffmpeg -i -vcodec h264 -an
4. 把音视频文件里的图像数据去掉生成只有声音的文件, 并使用aac编码
ffmpeg -i -acodec aac -vn
5. 把多个图像文件使用h264编码封装成avi文件,如有, ...
ffmpeg -i my% -vcodec h264
6. 指定音视频文件把1分30秒到5分20秒的内容输出到另一个文件
ffmpeg -ss 00:01:30 -i -to 00:05:20 -vcodec copy -acodec copy
7. 把视频文件里内容输出成多张图像
ffmpeg -i -r 1 -f image2 my%
只输出一张图像
ffmpeg -i -r 1 -f image2 -t 0.0001 my%
8. 从音视频文件里生成yuyv422格式的数据
ffmpeg -i 99bear.mp4 -r 1 -f rawvideo -pix_fmt yuyv422
//yuv数据可用ffplay来播放
ffplay -f rawvideo -video_size 640x480 -pixel_format yuyv422
9. 改变原视频文件的分辨率大小为640x480, 使用h264编码, 声音使用aac编码, 并指定视频输出的码率为100k.
ffmpeg -i -vcodec h264 -acodec aac -s 640x480 -b:v 100k
10. 指定把视频文件里在第500秒开始30帧图像数据保存为gif, 指定一秒2张图像的速率
ffmpeg -ss 500 -r 2 -i 99bear.mp4 -vframes 30
11. 合并多个同格式的视频文件. 如把" "三个文件合并为
先创建一个文本文件, 里面记录要合并的文件名:
:
file ''
file ''
file ''
然后:
ffmpeg -f concat -i -vcodec copy -acodec copy
12. 视频文件增加logo.
ffmpeg -i -i -filter_complex overlay
指定logo的位置, overlay=logo在视频里开始显示的x坐标:y坐标. 可以用变量W/w, H/h来表示, W表示视频图像的宽度 H表示视频图像的高度, w表示logo的宽度, h表示logo的高度
如右下角: ffmpeg -i -i -filter_complex overlay=W-w:H-h
如居中: ffmpeg -i -i -filter_complex overlay=W/2-w/2:H/2-h/2
13. 操作摄像头.
查看摄像头所支持的数据格式及分辨率:
ffmpeg -f v4l2 -list_formats all -i /dev/video0
录制10秒摄像头里的内容, 并指定帧率为10和使用h264编码:
ffmpeg -t 10 -f v4l2 -r 10 -i /dev/video0 -vcodec h264 ./
录制摄像头的内容为gif,并指定分辨率及帧率:
ffmpeg -f v4l2 -video_size 320x240 -r 2 -i /dev/video0
14. 操作声卡, 录音10秒并使用aac编码:
ffmpeg -t 10 -f alsa -i default -acodec aac
录音10秒保存为wav文件:
ffmpeg -t 10 -f alsa -i default
15. 录屏,指定录制的分辨率及帧率, 并使用h264编码:
ffmpeg -f x11grab -video_size 1024x768 -r 10 -i :0 -vcodec h264 ./
录屏,并指定从屏幕的坐标10:20开始区域录制:
ffmpeg -f x11grab -video_size 800x600 -r 5 -i :0.0+10,20 -vcodec h264 ./
录屏并录制声音:
ffmpeg -f x11grab -r 5 -i :0 -f alsa -i default -vcodec h264 -acodec aac
udp视频流测试:
1) 使用udp接收视频流数据:
ffplay udp:/127.0.0.1:7788
2) 使用ffmpeg推送udp视频流:
ffmpeg -re -i /disk3/allshares/MV/66.mp4 -f h264 udp://127.0.0.1:7788
rtsp推流的测试:
1) 直接使用ffplay播放码流:
ffplay -rtsp_flags listen -f rtsp -i rtsp://127.0.0.1:7788
2) 使用ffmpeg接收码流并保存为文件:
ffmpeg -rtsp_flags listen -f rtsp -i rtsp://127.0.0.1:7788 aa.mp4
3) 使用ffmpeg推rtsp流:
ffmpeg -re -i /disk3/allshares/MV/66.mp4 -vcodec copy -acodec copy -f rtsp rtsp://127.0.0.1:7788