FFMPEG命令行——【音视频开发学习笔记2】MAC OS

目录

1、ffmpeg/ffplay/ffprobe区别

2、ffmpeg命令查看帮助文档

3、ffplay命令查看帮助文档

4、ffprobe命令查看帮助文档

5、ffmpeg音视频处理流程

6、ffmpeg命令分类查询

7、查看具体分类所支持的参数

8、ffplay播放控制

9、ffplay命令-主要选项

10、ffplay命令-高级选项

11、在Mac OS上使用ffmpeg进行视频录制——录制的是桌面

12、在Mac OS上使用ffmpeg进行视频录制——使用摄像头录制

13、在Mac OS上使用ffmpeg进行音频录制

14、在Mac OS上使用ffmpeg进行音视频录制

15、在Mac OS上使用ffmpeg查询音频和视频录制可用设备

16、视频裁剪

17、FFmpeg滤镜Filter内置变量

18、添加水印

(1)文字水印

(2)图片水印

(3)FFmpeg生成画中画

(4)FFmpeg视频多宫格处理


1、ffmpeg/ffplay/ffprobe区别

  • ffmpeg:

Hyper fast Audio and Video encoder

超快音视频编码器(类似爱剪辑)

  • ffplay:

Simple media player简单媒体播放器

  • ffprobe:

Simple multimedia streams analyzer

简单多媒体流分析器

2、ffmpeg命令查看帮助文档

基本信息:ffmpeg -h

高级信息:ffmpeg -h long

所有信息:ffmpeg -h full

3、ffplay命令查看帮助文档

所有信息:ffplay -h

4、ffprobe命令查看帮助文档

所有信息:ffprobe -h

5、ffmpeg音视频处理流程

6、ffmpeg命令分类查询

命令参数

内容

命令参数

内容

-version

显示版本

-bsfs

显示可用比特流filter

-buildconf

显示编译配置

-protocols

显示可用的协议

-formats

显示可用格式(muxers+demuxers)

-filters

显示可用的过滤器

-muxers

显示可用复用器

-pix_fmts

显示可用的像素格式

-demuxers

显示可用解复用器

-layouts

显示标准声道名称

-codecs

显示可用编解码器(decoders+encoders)

-sample_fmts

显示可用的音频采样格式

-decoders

显示可用解码器

-colors

显示可用的颜色名称

-encoders

显示可用编码器

7、查看具体分类所支持的参数

语法:ffmepg -h type=name

比如:

  • ffmpeg -h muxer=flv
  • ffmpeg -h filter=atempo      (atempo调整音频播放速率)
  • ffmpeg -h encoder=libx264

8、ffplay播放控制

选项

说明

选项

说明

q, ESC

退出播放

t

循环切换字幕流

f

全屏切换

c

循环切换节目

p, SPC

暂停

w

循环切换过滤器或显示模式

m

静音切换

s

逐帧播放

9, 0

9减少音量,0增加音量

left/right

向后/向前拖动10秒

/, *

/减少音量,*增加音量

down/up

向后/向前拖动1分钟

a

循环切换音频流

鼠标右键单击

拖动与显示宽度对应百分比的文件进行播放

v

循环切换视频流

鼠标左键双击

全屏切换

9、ffplay命令-主要选项

选项

说明

-x width

强制显示宽带。

-y height

强制显示高度。

-video_size size

帧尺寸 设置显示帧存储(WxH格式),仅适用于类似原始YUV等没有包含帧大小(WxH)的视频。

比如: ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5  yuv420p_320x240.yuv

-pixel_format format

格式设置像素格式

-fs

以全屏模式启动

-an

禁用音频(不播放声音)

-vn

禁用视频(不播放视频)

-sn

禁用字幕(不显示字幕)

-ss pos

根据设置的秒进行定位拖动,注意时间单位:比如'55' 55 seconds, '12:03:45' ,12 hours, 03 minutes and 45 seconds, '23.189' 23.189 second

-t duration

设置播放视频/音频长度,时间单位如 -ss选项

-bytes

按字节进行定位拖动(0=off 1=on -1=auto)

-seek_interval interval

自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒

-nodisp

关闭图形化显示窗口,视频将不显示

-noborder

无边框窗口

-volume vol

设置起始音量。音量范围[0 ~100]

-f fmt

强制使用设置的格式进行解析。比如-f s16le

-window_title title

设置窗口标题(默认为输入文件名)

-loop number

设置播放循环次数

-showmode mode

设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。缺省为0,如果视频不存在则自动选择2

-vf filtergraph

设置视频滤镜

-af filtergraph

设置音频滤镜

10、ffplay命令-高级选项

选项

说明

-stats 

打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。。

-fast

非标准化规范的多媒体兼容优化

-genpts

生成pts

-sync type

同步类型 将主时钟设置为audio(type=audio),video(type=video)或external(type=ext),默认是audio为主时钟。

-ast audio_stream_specifier

指定音频流索引,比如-ast 3,播放流索引为3的音频流

-vst video_stream_specifier

指定视频流索引,比如-vst 4,播放流索引为4的视频流

-sst subtitle_stream_specifier

指定字幕流索引,比如-sst 5,播放流索引为5的字幕流

-autoexit

视频播放完毕后退出。

-exitonkeydown

键盘按下任何键退出播放

-exitonmousedown

鼠标按下任何键退出播放

-codec:media_specifier codec_name

强制使用设置的多媒体解码器,media_specifier可用值为a(音频), v(视频)和s字幕。比如-codec:v h264_qsv 强制视频采用h264_qsv解码

-acodec codec_name

强制使用设置的音频解码器进行音频解码

-vcodec codec_name

强制使用设置的视频解码器进行视频解码

-scodec codec_name

强制使用设置的字幕解码器进行字幕解码

-autorotate

根据文件元数据自动旋转视频。值为0或1 ,默认为1

-framedrop

如果视频不同步则丢弃视频帧。当主时钟非视频时钟时默认开启。若需禁用则使用 -noframedrop

-infbuf

不限制输入缓冲区大小。尽可能快地从输入中读取尽可能多的数据。播放实时流时默认启用,如果未及时读取数据,则可能会丢弃数据。此选项将不限制缓冲区的大小。若需禁用则使用-noinfbuf

11、在Mac OS上使用ffmpeg进行视频录制——录制的是桌面

ffmpeg -f avfoundation -i 1 -r 30 -s 1280x720 -vcodec libx264 output.mp4

参数解释:

  • -f avfoundation: 指定输入设备为avfoundation,这是Mac特有的。

  • -i 11通常是内置摄像头的设备索引。

  • -r 30: 录制的帧率为30帧/秒。

  • -s 1280x720: 录制的视频分辨率为1280像素宽和720像素高。

  • -vcodec libx264: 使用H.264编码。

  • output.mp4: 输出文件的名称。

12、在Mac OS上使用ffmpeg进行视频录制——使用摄像头录制

ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p

13、在Mac OS上使用ffmpeg进行音频录制

ffmpeg -f avfoundation -i "1:0" -acodec libmp3lame -ac 2 -ar 44100 -y output.mp3

参数解释:

  • -f avfoundation: 指定使用Mac OS的AVFoundation来获取输入。

  • -i "1:0": 指定输入设备。这里的 "1:0" 表示系统的默认音频输入设备。

  • -acodec libmp3lame: 指定音频编码器使用libmp3lame(MP3)。

  • -ac 2: 设置音频通道数为2(立体声)。

  • -ar 44100: 设置采样率为44100Hz。

  • -y output.mp3: 输出文件名,并且使用该选项将覆盖已存在的文件。

14、在Mac OS上使用ffmpeg进行音视频录制

ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -c:v libx264 -preset veryfast -crf 23 -pix_fmt yuv420p -c:a aac -b:a 160k -ac 2 -ar 44100 output.mp4

参数解释:

  • -f avfoundation 指定使用 macOS 的 AVFoundation 框架来捕获输入。
  • -framerate 30 设置捕获帧率为 30 FPS。
  • -video_size 1280x720 设置视频分辨率为 1280x720。
  • -i "0:0" 指定输入设备,"0:0" 通常代表第一个视频设备(通常是内置的摄像头),同时 FFmpeg 会尝试从这个设备捕获音频(如果可用)。
  • -c:v libx264 指定视频编码器为 libx264。
  • -preset veryfast 和 -crf 23 是 libx264 编码器的选项,用于控制编码速度和输出质量。
  • -pix_fmt yuv420p 设置像素格式为 yuv420p,这对于与大多数播放器和设备兼容很重要。
  • -c:a aac 指定音频编码器为 AAC。
  • -b:a 160k 设置音频比特率为 160 kbps。
  • -ac 2 和 -ar 44100 分别设置音频通道数为 2(立体声)和采样率为 44100 Hz。
  • output.mp4 是输出文件的名称。

15、在Mac OS上使用ffmpeg查询音频和视频录制可用设备

ffmpeg -f avfoundation -list_devices true -i ""

16、视频裁剪

变量

用于owoh参数的表达式中的可用变量

x, y

对x的计算值(从左上角水平方向的像素个数)和y(垂直像素的数量),对每个帧进行评估,x的默认值为(iw - ow)/2, y的默认值为(ih - oh)/2

in_w, iw

输入的宽度

in_h, ih

输入的高度

out_w, ow

输出(裁剪)宽度,默认值= iw

out_h, oh

输出(裁剪)高度,默认值= ih

a

纵横比,与iw/ih相同

sar

输入样本比例

dar

输入显示宽比,等于表达式a*sar

hsub, vsub

水平和垂直的色度子样本值,对于像素格式yuv422p, hsub的值为2,vsub为1

n

输入帧的数目,从0开始

pos

位置在输入框的文件中,如果不知道NAN

t

时间戳以秒表示,如果输入时间戳未知

17、FFmpeg滤镜Filter内置变量

变量

说明

t

以秒表示的时间戳,如果输入的时间是未知的则是NAN

n

输入帧的顺序编号,从0开始

pos

输入帧的位置,如果未知的则是NAN

w

输入视频帧的宽度

h

输入视频帧的高度

18、添加水印

(1)文字水印

参数

类型

说明

text

字符串

文字

textfile

字符串

文字文件

box

布尔

文字区域背景框(缺省false)

boxcolor

色彩

展示字体区域块的颜色

font

字符串

字体名称(默认为Sans字体)

fontsize

整数

显示字体的大小

x

字符串

缺省为0

y

字符串

缺省为0

alpha

浮点数

透明度(默认为1),值从0~1

(2)图片水印

参数

类型

说明

filename

字符串

输入的文件名,可以是文件,协议,设备

format_name, f

字符串

输入的封装格式

stream_index, si

整数

输入的流索引编号

seek_point, sp

浮点数

Seek输入流的时间位置

streams, s

字符串

输入的多个流的流信息

loop

整数

循环次数

discontinuity

时间差值

支持跳动的时间戳差值

(3)FFmpeg生成画中画

参数

类型

说明

x

字符串

X坐标

y

字符串

Y坐标

eof_action

整数

遇到eof表示时的处理方式,默认为重复

Ø  repeat(值为0):重复前一帧

Ø  endcall(值为1):停止所有的流

Ø  pass(值为2):保留主图层

shortest

布尔

终止最短的视频时全部终止(默认false)

format

整数

设置output的像素格式,默认为yuv420

Ø  yuv420 (值为0)

Ø  yuv422 (值为1)

Ø  yuv444 (值为2)

Ø  rgb (值为3)

(4)FFmpeg视频多宫格处理

ffmpeg -i 1.mp4 -i 2.mp4 -i  3.mp4 -i  4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v] setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS, scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" out.mp4

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值