ffmpeg命令分类

1.基本信息查询命令

ffmpeg命令分类_第1张图片

 

2.录制命令

1.ffmpeg录屏命令

ffmpeg -f avfoundation -i 1 -r 30 out.yuv

-f:指定使用avfoundation采集数据(mac下)

-i:指定从哪采集数据,它是一个文件索引号,1是指电脑屏幕

-r:指定帧率

 

ctrl+c录制完成,使用ffplay命令播放

ffplay -s 2560×1600 -pix_fmt uyvy422 out.yuv

-s:指定分辨率

-pix_fmt:指定录制时使用的像素格式

 

查看-i指令所有的文件索引号

ffmpeg -f avfoundation -list_devices true -i ""

mac下视频:0-摄像头,1-屏幕;音频:1-系统麦克风。

 

2.ffmpeg录音指令

ffmpeg -f avfoundation -i :0 out.wav

-i:指定从哪采集数据,注意0前面的冒号,冒号前指定视频设备索引,冒号后指定音频设备索引。

 

录制完成,播放

ffplay out.wav

 

3.分解/复用命令

ffmpeg命令分类_第2张图片

 

1.改变视频封装格式

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

-i:输入文件

-vcodec copy:视频编码处理方式

-acodec copy:音频编码处理方式

 

2.抽取视频

ffmpeg -i out.mp4 -vcodec copy -an out.h264

-an:audio no,不要音频

 

3.抽取音频

ffmpeg -i out.mp4 -acodec copy -vn out.aac

-vn:video no,不要视频

 

4.处理原始数据命令

1.ffmpeg提取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv

-c:v:code video,指定视频编码器

rawvideo:编码格式,对原始视频进行编码

-pix_fmt:像素格式,原始视频必须指定像素格式

 

播放yuv格式数据:ffplay out.yuv

但这时会报错

 Picture size 0x0 is invalid sq=    0B f=0/0

out.yuv: Invalid argument

是因为对原始视频进行编码没有指定分辨率。

播放时指定分辨率:ffplay -s 576x1024 out.yuv 即可正确播放。

 

2.ffmpeg提取PCM数据

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

-ar:音频采样率,常用采样率44.1k,48k,32k,16k

-ac:audio channel,声道,1-单声道,2-双声道,立体声,环绕立体声

-f:抽取的音频PCM数据存储格式,s-有符号的,16-每一个数值16位标识,le-little小头存储

 

使用ffplay播放报错:

out.pcm: Invalid data found when processing input sq=    0B f=0/0

是因为没有指定采样率和声道

播放时指定采样率等信息:ffplay -ar 44100 -ac 2 -f s16le out.pcm

 

5.裁剪与合并命令

1.音视频裁剪

裁剪(cutting)指的是,截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)。

 

$ ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]

$ ffmpeg -ss [start] -i [input] -to [end] -c copy [output]

 

ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts

-ss:视频从什么时间开始裁剪

-t:裁剪的时长,单位s

-c copy:表示不改变音频和视频的编码格式,直接拷贝

 

2.音视频合并

ffmpeg -f concat -i inputs.txt out.flv

concat:拼接命令

attention:inputs.txt内容为file filename格式

inputs.txt文件内容

file '2.ts'

file '1.ts'

 

添加音轨,将外部音频加入视频

$ ffmpeg -i input.aac -i input.mp4 output.mp4

上面例子中,有音频和视频两个输入文件,FFmpeg 会将它们合成为一个文件。

 

6.图片/视频互转命令

1.视频换图片

ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg

-r:指定转换图片的帧率,1-每秒一张

-f:告诉ffmpeg将输入文件转成什么格式

image2:文件格式

 

如果只需要截一张图,可以指定只截取一帧

$ ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg

-ss:从指定时间开始

-vframes 1:指定只截取一帧

-q:v 2:表示输出的图片质量,一般是1到5之间(1 为质量最高)。

 

2.图片转视频

ffmpeg -i image-%3d.jpeg out.mp4

 

3.为音频添加封面

$ ffmpeg \

-loop 1 \

-i cover.jpg -i input.mp3 \

-c:v libx264 -c:a aac -b:a 192k -shortest \

output.mp4

上面命令中,有两个输入文件,一个是封面图片cover.jpg,另一个是音频文件input.mp3。-loop 1参数表示图片无限循环,-shortest参数表示音频文件结束,输出视频就结束。

 

7.直播相关命令

1.直播推流

ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName

-re:减慢帧率

-i:要推出去的多媒体文件

-c:同时指定音视频编码

2.直播拉流

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

3.实操直播拉流

首先搜一些RTMP、RTSP、HTTP视频协议直播流地址

例如CCTV6,先用ffplay命令看下能不能播

ffplay http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8

拉流

ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8 -c copy dump.m3u8

注意保存格式,拉取的时候是什么格式,存储就是什么格式。

 

8.各种滤镜命令

1.视频裁剪

ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4

-vf:视频滤镜

crop:滤镜名字,in_w视频本身宽度,in_h视频本身高度

in_w-200:视频本身宽度减200

 

2.改变分辨率

$ ffmpeg -i input.mp4 -vf scale=480:-1 output.mp4

改变分辨率,转为480p

 

3.改变视频播放速度

$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4

该命令将双倍视频的速度。

 

为降低你的视频速度,你需要使用一个大于 1 的倍数。为减少播放速度,运行:

$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4

 

9.ffmpeg中帮助信息的查看

下面是ffmpeg查看帮助文档的方法

基础的帮助

选中的项目的帮助

ffmpeg -? or ffmpeg -h

ffmpeg -h decoder=decoder_name

额外的帮助/扩展的帮助

ffmpeg -h encoder=encoder_name

ffmpeg -h long or ffmpeg -h full

ffmpeg -h demuxer=demuxer_name

ffmpeg –? topic or ffmpeg -h topic

ffmpeg -h muxer=muxer_name

 

例如要查看libwebp编码器的帮助信息,执行以下命令即可

ffmpeg -h encoder=libwebp

你可能感兴趣的:(视频图像处理)