FFmpeg命令分类 (初级)

image.png

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.各种命令集合

image2.png

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
  1. 获取媒体文件的视频总帧数
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4

  1. 获取媒体文件的视频总包数
ffprobe -v error -count_packets -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 xxx.mp4
  1. 显示媒体文件的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

你可能感兴趣的:(FFmpeg命令分类 (初级))