FFmpeg - 基本工具(1)

本文介绍了FFmpeg中的三个主要工具:ffmpeg用于多媒体编解码,ffprobe用于内容分析,ffplay作为播放器。详细阐述了每个工具的常用命令和参数,包括ffmpeg的转码操作,ffprobe的文件信息分析,以及ffplay的播放控制和可视化功能。此外,还提供了音视频录制的命令实践。
摘要由CSDN通过智能技术生成

1 FFmpeg基本工具

FFmpeg 中常用的工具主要是ffmpeg、ffprobe、ffplay,它们分别用作多媒体的编解码工具、内容分析工具和播放器,重点介绍这三个工具的常用命令。

ffmpeg命令,介绍ffmpeg常用的参数用法并举例说明,例如如何查看ffmpeg 的帮助信息,如何通过ffmpeg 的帮助信息快速了解转码参数并快速上手使用。

ffprobe命令,介绍ffprobe进行音视频数据分析的常用参数,并通过实例介绍如何分析视频文件的流信息、包信息、帧信息、导出数据等。

ffplay命令,介绍ffplay常用的参数使用及示例,例如,如何使用ffplay 定制化窗口播放视频、输出音频可视化数据、输出视频可视化数据等。

2 ffmpeg的使用

ffmpeg在做音视频编解码时非常方便,所以在很多场景下转码使用的是ffmpeg,通过ffmpeg --help可以看到ffmpeg常见的命令大概分为6个部分,具体如下。

  • ffmpeg信息查询部分
  • 公共操作参数部分
  • 文件主要操作参数部分
  • 视频操作参数部分
  • 音频操作参数部分
  • 字幕操作参数部分

2.1 ffmpeg常用命令

使用:ffmpeg [options] [ [infile options] -i infile]…{[outfile options ]outfile}…

命令参数内容命令参数内容
-buildconf显示构建配置-bsfs显示可用的比特流过滤器
-formats显示可用的格式-protocols显示可用的协议
-muxers显示可用的复用器-filters显示可用的过滤器
-demuxers显示可用的解复用器-pix_fmts显示可用的像素格式
-devices显示可用的设备-layouts显示标准通道布局
-codecs显示可用的编解码器-sample_fmts显示可用的音频采样格式
-decoders显示可用的解码器-dispositions显示可用的流配置
-encoders显示可用的编码器-colors显示可用的颜色名称
-y控制覆盖输出文件(即使输出文件已经存在,也会直接覆盖输出文件,而不会提示是否允许覆盖。)-f(-fformat)用于指定输入或输出文件的格式image2(一种格式)
-ss用于指定从输入文件中的哪个时间点开始处理-vframes用于指定要处理的视频帧数称

3 ffplay的使用

ffplay不仅仅是播放器,同时也是测试ffmpeg 的codec引擎、format引擎,以及filter引擎的工具,并且还可以进行可视化的媒体参数分析,其可以通过ffplay --help进行查看。

3.1 ffplay播放控制

选项说明选项说明
q,Esc退出播放t循环切换字幕流
f,鼠标左键双击全屏切换c循环切换节目
p,Space暂停w循环切换过滤器或显示模式
m静音切换s逐帧播放
9,09 减少音量,0 增加音量← / →向后/向前拖动10秒
/,*****/ 减少音量,***** 增加音量↑ / ↓向后/向前拖动1分钟
a循环切换音频流鼠标右键单击拖动与显示宽度对应百分比的文件进行播放
v循环切换视频流

3.2 fplay常用命令

使用:ffplay [ options ] input_file
ffplay基本参数

命令参数内容命令参数内容
-x强制设置视频显示窗口的宽度-nodisp关闭图形化显示窗口
-y强制设置视频显示窗口的高度-noborder无边框窗口
-s设置视频显示的宽高-af设置音频的滤镜
-f强制使用设置的格式进行解析-vf设置视频的滤镜
-fs强制全屏显示-window_title设置显示窗口的标题
-an屏蔽音频-codec强制使用设置的codec进行解码
-vn屏蔽视频-autorotate自动旋转视频
-sn屏蔽字幕-video_size帧尺寸设置显示帧存储(WxH格式),仅适用于类似原始YUv等没有包含帧大小(WxH)的视频。比如:ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv-pixel_format format格式设置像素格式。
-ss根据设置的秒进行定位拖动注意时间单位:比如’55’=55 seconds, ‘12:03:45’=12 hours,03 minutes and 45 seconds, ‘23.189’=23.189 second-bytes设置定位拖动的策略,0为不可拖动,1为可拖动,-1为自动
-t设置播放视频/音频的长度-volume设置起始音量。音量范围[0~100]
-showmode设置显示模式,可用的模式值:0显示视频,1显示音频波形,2显示音频频谱。缺省为0,如果视频不存在则自动选择2.-seek_interval自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒(代码没有看到实现)

fplay高级参数

命令参数内容命令参数内容
-ast指定音频流索引,比如-ast 3,播放流索引为3的音频流。-autoexit视频播放完毕后退出。
-vst指定视频流索引,比如-vst 4,播放流索引为4的视频流。-autorotate根据文件元数据自动旋转视频。值为o或1,默认为1。
-sst指定字幕流索引,比如-sst 5,播放流索引为5的字幕流。-framedrop当CPU资源占用过高时,自动丢帧。
-stats打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。-infbuf设置无极限的播放器buffer,这个选项常见于实时流媒体播放场景。
-genpts生成pts。-fast非标准化规范的多媒体兼容优化。
-exitonkeydown当有按键按下事件产生时退出ffplay-sync type同步类型将主时钟设置为audio (type=audio) , video(type=video)或external (type=ext),默认是audio为主时钟。
-exitonmousedown当有鼠标按键事件产生时退出ffplay-loop设置播放循环次数
-codec:media_specifier强制使用设置的多媒体解码器,media_specifier可用值为a(音频),v(视频)和s字幕。比如-codec:v h264_qsv强制视频采用h264_qsv解码-scodec强制使用设置的字幕解码器进行字幕解码
-acodec强制使用设置的音频解码器进行音频解码-vcodec强制使用设置的视频解码器进行视频解码

4 ffprobe的使用

在FFmpeg 套件中,除了ffmpeg作为多媒体处理工具之外,还有ffprobe多媒体信息查看工具,ffprobe主要用来查看多媒体文件的信息。ffprobe常用的参数比较多,可以通过ffprobe --help来查看详细的帮助信息。

4.1 ffprobe常用命令

使用:ffprobe [ OPTIONS ][ INPUT_FILE ]

命令参数内容命令参数内容
-buildconf显示构建配置-pix_fmts显示可用的像素格式
-formats显示可用格式-layouts显示标准通道布局
-muxers显示可用的复用器-sample_fmts显示可用的音频采样格式
-demuxers显示可用的解复用器-dispositions显示可用的流配置
-devices显示可用设备-filters显示可用的过滤器
-codecs显示可用编解码器-protocols显示可用的协议
-bsfs显示可用的位流过滤器-colors显示可用的颜色名称
packet字段说明
字段说明
codec_type多媒体类型,如视频包、音频包等
stream_index多媒体的stream索引
pts多媒体的显示时间值
pts_time根据不同格式计算过后的多媒体的显示时间
dts多媒体解码时间值
dts_time根据不同格式计算过后的多媒体解码时间
duration多媒体包占用的时间值
duration_time根据不同格式计算过后的多媒体包所占用的时间值
size多媒体包的大小
pos多媒体包所在的文件偏移位置
flags多媒体包标记,如关键包与非关键包的标记
format字段说明
字段说明
filename文件名
nb_streams媒体中包含的流的个数
nb_programs节目数
format_name使用的封装模块的名称
format_long_name封装的完整名称
start_time媒体文件的起始时间
duration媒体文件的总时间长度
size媒体文件的大小
bit_rate媒体文件的码率
frame字段说明
属性说明
media_type帧的类型(视频、音频、字幕等)
stream_index帧所在的索引区域
key_frame是否为关键帧
pkt_ptsFrame包的pts
pkt_pts_timeFrame包的pts 的时间显示
pkt_dtsFrame包的dts
pkt_dts_timeFrame包的dts的时间显示
pkt_durationFrame包的时长
pkt_duration_timeFrame包的时长时间显示
pkt_posFrame包所在文件的偏移位置
width帧显示的宽度
height帧显示的高度
pix_fmt帧的图像色彩格式
pict_type帧类型
sample_fmt采样格式
nb_samples每帧的样本数
channels通道数
channel_layout通道布局
stream字段说明
属性说明
index流所在的索引区域
codec_name编码名
codec_long_name编码全名
profile编码的profile
level编码的 level
has_b_frames包含B帧信息
codec_type编码类型
codec_time_base编码的时间戳计算基础单位
pix_fmt图像显示的色彩格式
coded_width图像的宽度
coded_height图像的高度
codec_tag_string编码的标签数据
r_frame_rate实际帧率
avg_frame_rate平均帧率
time_base时间基数(用来进行timestamp计算)
bit_rate码率
max_bit_ratc最大码率
nb_frames帧数

ffprobe除了使用前面的参数可以获得key-value格式的显示方式,还可以格式化的显示,需要用到ffprobe -print_format或者ffprobe -of参数来进行相应的格式输出,而-print_format支持多种格式输出,包括XML、INI、JSON、CSV、FLAT等。

5 ffmpeg命令练习

5.1 音视频录制

在Windows下使用ffmpeg的录制操作需要安装dshow设备
查看可用设备名称:ffmpeg -list_devices true -f dshow -i dummy
在这里插入图片描述

  1. 录制视频
    桌面:ffmpeg -f dshow -i video=“screen-capture-recorder” desktop.mp4
    摄像头:ffmpeg -f dshow -i video=“Integrated Webcam” record.mp4

  2. 录制声音
    系统声音:ffmpeg -f dshow -i audio=“virtual-audio-capturer” audio.aac
    系统+麦克风:ffmpeg -f dshow -i audio=“麦克风阵列 (Realtek® Audio)” -f dshow -i audio=“virtual-audio-capturer” -filter_complex amix=inputs=2:duration=first:dropout_transition=2 audio2.aac

  3. 录制视频+声音
    ffmpeg -f dshow -i audio=“麦克风阵列 (Realtek® Audio)” -f dshow -i audio=“virtual-audio-capturer” -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -video_size 1536x864 -framerate 30 -pixel_format yuv420p -i video=“screen-capture-recorder” -vcodec libx264 -b:v 3M -y test.flv

  4. 查看录制音视频可选参数
    视频:ffmpeg -f dshow -list_options true -i video=“screen-capture-recorder”
    在这里插入图片描述
    音频:ffmpeg -f dshow -list_options true -i audio=“麦克风阵列 (Realtek® Audio)”
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值