1.基本信息查询命令
ffmpeg -version //显示版本
ffmpeg -demuxers //显示可用的demuxers
ffmpeg --muxers //显示可用的muxers
ffmpeg --devices //显示可用的设备
ffmpeg --codecs //显示可用的编解码器
ffmpeg --decoders //显示可用的解码器
ffmpeg -encoders //显示可用的编码器
ffmpeg -bsfs //显示比特流filter
ffmpeg -formates //显示可用的格式
ffmpeg -protocols //显示可用的协议
ffmpeg -filters //显示可用的过滤器
ffmpeg -pix_fmts //显示可用的像素格式
ffmpeg -sample_fmts //显示可用的采样格式
ffmpeg -layouts //显示channnel名称
ffmpeg --colors //显示识别的颜色名称
2.录制命令
2.1 查看当前mac 设备支持avfoundataion音视频输入源
ffmpeg -f avfoundation -list_devices true -i ""
2.2 录当前屏幕的视频
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用avfoundation采集数据
-i:制定从哪采集,它是一个文件索引号
-r: 指定帧率
2.3 ffplay播放 yuv数据
ffplay out.yuv //此命令播放会失败
ffplay -s 1920x1080 -pix_fmt uyvy422 out.yuv //指定画面像素 和图像编码格式
-s: 查看采集的流的视频画面宽高
-pix_fmt:查看采集的流的图像的编码格式
2.4 用ffmpeg 在mac 下录制声音
ffmpeg -f avfoundation -i :0 out.wav
:0 代表音频设备
2.5 用ffplay 播放 录音文件
ffplay out.wav
3.分解/复用命令
3.1 将mp4 的封装格式更改为flv(可转其它格式)
ffmpeg -i input.mp4 -vcodec copy -acodec copy out.flv
-i :输入文件
-vcodec copy :视频编码处理方式
-acodec copy :音频编码处理方式
3.2 抽取输入文件mp4封装格式的视频流
ffmpeg -i input.mp4 -an -vcodec copy out.h264
-an : audio not 音频不要的意思
3.3 抽取输入文件mp4封装格式的音频流
ffmpeg -i input.mp4 -vn -acodec copy out.aac
-vn: video not 不要视频
4.处理原始数据命令
4.1 ffmpeg 提取YUV 数据
ffmpeg -i input.mp4 - an -c:v rawvideo -pix_fmt yuv420p out.yuv
-an 输出文件不开启音频
-c:v 使用编码格式, rawvideo 表示原始视频格式
-pix_fmt 像素格式编码格式yuv420p
4.2 ffmpeg 提取PCM 数据
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-vn 输出文件不开启视频
-ar 设置音频的采样率
-ac 2 a代表audio、c代表channel 、2 代表双声道
-f 数据存储格式
4.3 ffplay 播放 pcm
ffplay -ar 44100 -ac 2 -f s16le out.pcm
5.裁剪与合并命令
5.1 裁剪一个视频大小
ffmpeg -i input.mp4 -vf crop= in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-vf v代表视频 、f代表滤镜
in_w 本身的视频宽 (in_w-200 本身视频的宽度减去200)
-c:v 编码器 视频的 用libx264
-c:a 编码器 音频的用copy (不对音频做特殊处理)
5.2 裁剪一个视频中的某个片段
ffmpeg -i input.mp4 -ss 0:0:0 -t 10 out.ts
-i 指定输入源
-ss 指定开始时间 (00:00:00 时/分/秒)
-t 指定截取时间(以秒为单位)
5.3 合并多个视频片段
ffmpeg -f concat -i input.txt out.flv
input.txt 内容为"file filename"格式
例如:
file '1.ts'
file '2.ts'
6.图片/视频互转命令
6.1 视频转图片
ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jepg
-r 指定转换图片的帧率(1秒钟转出1张图)
-f 输出文件转成image2 格式
6.2 图片转视频
ffmpeg -i image-%3d.jpeg newout.mp4
7.直播相关命令
7.1 直播推流
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/streamName
-i 需要推出去的多媒体文件
-c copy 音频与视频的参数不变
-f flv 推出的文件格式 flv 格式
7.2 直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy output.flv
7.3 合并视频 /音频文件 封装
ffmpeg -i “video.h264" -i "audio.aac" -vcodec copy -acodec copy -absf aac_adtstoasc "res.mp4"
ffmpeg -y -i input.mp4 -hls_time 6 -hls_playlist_type vod -hls_segment_filename "list%3d.ts" list.m3u8
7.4 ffmpeg 分割成m3u8 ts
7.6 ffmpeg 提取h264 中关键帧
ffmpeg -i /Users/pengchao/Desktop/Caches/video_4 -r 10 -f image2 /Users/pengchao/Desktop/Caches/%05d.png
-i 表示如输入
-r 表示 指定1秒内抽取几帧
-vf 表示 scale=640:480 (-vf scale=640:480)
-ss 00:00:00 表示起始时间
-t 00:03:00 表示截取视频长度(-ss 00:00:00 -t 00:03:00)
-q 2 表示 (编码质量)
指定 转码后文件质量
8.各种命令集合
9.ffplay 旋转播放
ffplay还可以进行图片和视频的旋转和翻转。-vf 表示画面旋转和翻转。
ffplay还可以进行图片和视频的旋转和翻转。-vf 表示画面旋转和翻转。
旋转参数 说明
“transpose=0” 逆时针旋转90°后再水平翻转
“transpose=1” 顺时针旋转90°
“transpose=2” 逆时针旋转90°
“transpose=3” 顺时针旋转90°后再水平翻转
ffplay -vf "transpose=0" -i image.jpg
- 获取媒体文件的视频总帧数
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4
- 获取媒体文件的视频总包数
ffprobe -v error -count_packets -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4
- 显示媒体文件的PTS
ffprobe -show_entries packet=pts_time -select_streams v:0 -i /Users/pengchao/Downloads/513_sd_direct_access_to_media_encoding_and_decoding.mov