FFmpeg-主要命令梳理

it2022-05-05  178

一:FFmpeg命令分类:

二:ffmpeg处理音视频的流程

demuxer:解封装,将音视频流进行分离,得到音视频编码后的数据。 muxer:封装,将音视频流编码后的数据合于一体。 decoder:解码。

三:基本信息查询命令

四:命令

1:录制视频:

# -f:指定从使用mac的avfoundation采集数据。 # -i:就是input,输入流,后面的1是设备编号,表示屏幕(录屏) i处理输入流)。 # -r:指定帧率,一般来说25帧就比较流畅,15帧就勉强够用了。 # out.yuv:采集后的数据保存成yuv格式,这是一种原始格式的数据,比较大。 ffmpeg -f avfoundation -i 1 -r 30 out.yuv

播放视频:

# -s 指定分辨率 # -pix_fmt 指定原始视频格式 ffplay -s 2560*1600 -pix_fmt uyvy422

采集音频

# 冒号之前代表视频设备,冒号之后就代表音频设备 ffmpeg -f avfoundation -i :1 out.wav

播放音频

# 这里由于是有格式的音频数据,直接播放就可以了。 ffplay out.wav

2:分解与复用

用于更换多媒体数据的格式(封装格式) 解复用 - 本质是音视频数据的分离。 复用 - 将音视频数据重新封装。 转换音视频格式

# -vcodec 视频解复用 # -acodec 音频解复用 # copy 表示不更改变解复用后的编码格式,完全copy ffmpeg -i test.mp4 -vcodec copy -acodec copy out.flv

提取视频流

# -an 表示不要音频流 ffmpeg -i test.mp4 -an -vcodec copy out.h264

提取音频流

ffmpeg -i test.mp4 -acodec copy -vn out.h264

3:处理原始数据

提取视频原数据

# -c:v 对视频进行解码,使用的编解码器是 rawvideo # -pix_fmt 每一帧图像编码为 yuv 4:2:0 ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

播放视频原数据 上面有提到,略:

提取音频原数据

# -ar 即 audio read,音频采样率为44100 # -ac 即 audio channel,声道,ac2表示双声道 # -f 抽取出的音频pcm数据的格式,s16le s表示有符号,16位,le-little end 表示小头。 ffmpeg -i out.mp4 -vn -ar 44100 ac 2 -f s16le out.pcm

播放音频原数据

ffplay -ar 44100 -ac 2 -f s16le out.pcm

4:滤镜命令

# -vf 指定滤镜 # crop,一个滤镜的名字,=后面是参数,in_w 表示宽度减少200,in_h表示高度减少200 # -c:v 指定使用的编解码器,前面有说过 # -c:a copy 不对音频做处理 ffmpeg -i test.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

5:ffmpeg 裁剪与合并命令

裁剪:

# -ss 裁剪的时间点 # -t 裁剪的时长,以秒为单位 ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

合并:

# -f concat 表示要对后面的文件进行拼接 # -i 指定输入文件,inputs.txt 中是一个文件列表,指定了要拼接的视频 # out.flv 输出 ffmpeg -f concat -i inputs.txt out.flv

其中,inputs.txt中文件的格式为

file '1.mp4' file '2.mp4'

加上copy,会使用当前的编码方式,不会执行解码的流程,速度更快:

ffmpeg -f concat -i files.txt -c copy output.mp4

6:图片与视频互转命令

视频转图片

# -r 1 表示一秒钟转一张图片 # -f 指定转出文件格式,这里为image2 # image-=.jpeg 表示图片名,=表示图片编号由3个数字组成。 ffmpeg -i in.flv -r 1 -f image2 image-%3.jpeg

图片转视频

ffmpeg -i image-=.jpeg out.mp4

7:直播推/拉流

直播推流

#-c 音视频编解码,-a是音频编解码 -v是视频编解码 #-f 指定格式 #-re 表示帧率和真正的帧率保持同步 ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

直播拉流

ffmpeg -i rtmp://server/live.streamName -c copy dump.flv

最新回复(0)