- 播放带headers的地址
ffplay “http://liveali-mls-ysp.cctv.cn/hls/LSvmu8iNbE5Eg0zp20C3MqpJ210903LSTtpuMUVyIsI7ujio6yIzM8210903cd/playlist.m3u8?wsSecret=8a7594e787b383b581f7e14eac80b10b&wsTime=1631004069” -user_agent “qqlive” -headers “UID:8c94f3a35bf311eb90a46c92bfd79530”
通用选项 (规则:ffplay 播放地址 -参数名 参数值)
- -h, -?, -help,–help [arg]
- 查看帮助
- ffprobe -h decoder=vorbis -hide_banner将显示音频解码器vorbis的详细信息
- -L
- 显示版权信息
- ffprobe -L -hide_banner
- -version
- 显示ffprobe的banner信息
- -formats (formats-格式)
- 查看是否支持对应的视频文件格式,即封装或者容器格式
- 同 ffmpeg -formats ffplay -formats
- 输入
- ffprobe -formats
- 输出
- 第一列是多媒体文件封装格式的解封装(Demuxing)支持与封装(Muxing)支持,分别用D和M表示
- D 表示只支持解封装该格式,但不支持封装成该格式
- E 表示只支持封装成该格式,但是不支持解封装该格式
- D E 表示封装和解封装都支持该格式
- 第二列是媒体文件格式
- 第三列是文件格式的详细说明
- 第一列是多媒体文件封装格式的解封装(Demuxing)支持与封装(Muxing)支持,分别用D和M表示
- -muxers (muxers-封装)
- 等同于只展示 D 的 ffprobe -formats ,表征ffmpeg支持封装哪些格式的多媒体文件
- -demuxers (demuxers-解封装)
- 等同于只展示 E 的 ffprobe -formats,表征ffmpeg支持解析哪些格式的多媒体文件
- -devices
- 列举平台相关的输入输出设备支持,输入设备指的是音视频采集设备类型,输出设备指的是渲染设备类型
- 输入
- ffprobe -devices
- 输出
- 第一列是设备类型
- D 表示输入设备,即音视频采集设备类型
- E 表示输出设备,即渲染设备类型
- 第二列是设备类型名称
- 第三列是设备类型的详细介绍
- 第一列是设备类型
- 不同的平台上,设备采集和渲染采用不同的技术,因此,对于此命令在不同的平台执行结果不同
- Windows :支持dshow、lavfi、vfwcap
- 查看本机(windows)所支持的dshow设备,可以使用ffmpeg -list_devices true -f dshow -i dummy
- mac:AVfoundation是苹果设备上音视频采集的独有技术
- 查看本机(mac)所支持的avfoundation设备,可以使用ffmpeg -list_devices true -f avfoundation -i dummy
- liunx:alsa 是Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持
- Windows :支持dshow、lavfi、vfwcap
- -codecs (codecs-编解码器)
- 命令输出ffmpeg支持的所有编解码器:音频、视频、字幕的编解码
- 输入
- ffprobe -codecs
- 输出
- 第一列是编解码器功能描述
- D 表示支持解码 E 表示支持编码
- V 表示是视频编解码器 A 表示是音频编解码器 S 表示是字幕编解码器
- I 表示编解码只产生I帧,只进行帧内编码,而不进行帧间编码
- L 表示编码方式是有损压缩 S 表示编码方式是无损压缩
- 第二列是编码器名称
- 第三列是编码器的简单描述
- 第一列是编解码器功能描述
- 备注:在音视频领域内,音频编码和视频编码所采用的技术基本上来说是完全不同的,因此一个编码器只会针对音频或者视频,不可能既包含音频编码算法又包含视频编码算法
- -decoders (decoders-解码器)
- 命令输出ffmpeg支持的所有解码器:音频、视频、字幕的解码器
- 输入
- ffprobe -decoders
- 输出
- 第一列是解码器功能描述
- V 表示是视频解码器 A 表示是音频解码器 S 表示是字幕解码器
- F 表示解码器采用帧层面的多线程解码技术 S 表示解码器采用片层多线程解码技术 X 表示解码器是实验性质的
- 第二列是解码器名称
- 第三列是解码器的简单描述
- 第一列是解码器功能描述
- -encoders (encoders-编码器)
- 命令输出ffmpeg支持的所有编码器
- 输入
- ffprobe -encoders
- 输出
- 同ffprobe -decoders
- -bsfs
- 命令输出所有支持的比特流滤镜
- 比特率滤镜:操作的是编码后的流数据,可以在不解码的前提下执行比特流层面的修改
- 输入
- ffprobe -bsfs
- 命令输出所有支持的比特流滤镜
- -protocols (protocols-协议)
- 命令输出支持的文件协议,分为input和output,也就是支持解input中描述的协议,支持按照output中描述的这些协议发送数据
- 输入
- ffprobe -protocols
- 常用协议:rtmp、hls、http、rtp、tee
- -filters (filters-过滤器)
- 命令显示libavfilter中支持的所有滤镜
- 输入
- ffprobe -filters
- -pix_fmts (pix-像素)
- 命令输出ffmpeg支持的所有像素格式,即编码前或者编码后的数据格式,一般有yuv格式和rgb格式
- 其中yuv420p是最常用的格式,因为h.264解码后就是这种格式的数据
- 输入
- ffprobe -pix_fmts
- 输出
- 第一列是像素格式的属性
- I 表示支持输入该格式
- O 表示支持输出该格式
- H 表示支持硬件加速
- P 调色板格式
- B 比特流格式
- 第二列是像素格式名称
- 第三列是像素格式包含了多少个组成部分
- 比如yuv420p包含: 亮度分量y 和 两个色度分量u和v,因此为3
- rgb24包含:r红,g绿,蓝b三原色,因此也为3
- rgba在红绿蓝三原色的基础上,加上了alpha通道,因为为4
- 第四列是平均一个像素点需要多少位来表示
- yuv420p,以4*4的像素矩阵举例有16个像素点,那么亮度分量y有16个点,每个点y分量占8bit,因此总共有128bit表示y分量,
- 对于yuv420p的色度分量因为经过降采样,u,v分量在水平和垂直方向都是y分量的1/2,那么u和v分别都只有4个点,每个点占8bit,因此共有32bit表示u分量,32bit表示v分量。
- 总体来说,16个像素点一共使用了128+32+32=192bit,分配到16个像素点,那么每个像素点得12bit,正如命令输出的最后一列所示
- 备注:yuv420p中的p指代y、u、v三个组分如何存储的
- 第一列是像素格式的属性
- 命令输出ffmpeg支持的所有像素格式,即编码前或者编码后的数据格式,一般有yuv格式和rgb格式
- -layouts (layouts-布局)
- 命令列出了所有支持的音频声道分布
- 最常见的是mono单声道、stereo立体双声道、5.1声道、7.1声道
- 输入
- ffprobe -layouts
- 命令列出了所有支持的音频声道分布
- -sample_fmts (sample - 样本)
- 命令输出ffmpeg中支持的音频采样数据格式,分为两部分
- 输入
- ffprobe -sample_fmts
- 输出
- 第一列:音频采样数据格式名称
- u表示无符号整数,s表示有符号整数,flt表示单精度浮点数,dbl表示双精度浮点数,
- 而后面的数字表示的采样深度,与第二列意思相同,p指的是数据存储方式位planner,相对于packet打包方式来说的,这两种方式在于存在多个成分时,比如双声道数据有两个声道,两个声道的数据在planner的存储方式就是先存储第一个声道的数据,然后再存储第二个声道的数据;
- packet打包方式是两个声道的数据交错存放,先放一部分第一个声道数据,然后放一部分第二个声道数据,再放一部分第一个声道数据…如此反复直到存储完成。
- 第二列 表示采样深度,即一个音频采样点用多少bit表示
- 第一列:音频采样数据格式名称
- 注意:视频数据同样也存在这两种数据存放方式,也以pix_fmt的名称也以p为结尾来区分,带p为planner存储方式,各组分按序先后存放,不带p表示数据交错存放
- -colors
- 命令枚举了ffmpeg支持的颜色名称以及对应的rgb值
- 输入
- ffprobe -colors
- -hide_banner (hide-隐藏)
- 用于禁止打印横幅(版权信息、库版本等banner信息)
- 可和其他命令结合使用 如:ffprobe -hide_banner -colors
- 输入
- ffprobe -hide_banner
- -cpuflags flags (global)
- 允许设置和清楚cpu标志,一般不使用
- 输入
- ffmpeg -cpuflages mmx
- -report (report-报告)
- 用于将完整的命令行和控制台输出存储到当前目录中名为program-YYYYMMDD-HHMMSS.log的文件中,该文件对于错误报告很有用,还可以-loglevel调试
- 输入
- ffprobe -hide_banner 1.mp4 -report
- 输出
- 会将信息都存储到当前运行目录下的 ffprobe-日期.log文件
- -loglevel [flags+]loglevel | -v [flags+]loglevel
- 设置库使用的日志记录级别和标志
- 示例: ffmpeg -loglevel repeat+level+verbose -i 1.mp4 2.mp4 -report
- 输出了文件1.mp4转封装到2.mp4过程中的所有操作信息
- -sources device[,opt1=val1[,opt2=val2]…]
- 显示自动检测到的输入设备的来源
- -sinks device[,opt1=val1[,opt2=val2]…]
- 显示自动检测到的输出设备接收器
主要选项
- -sections
- 打印sections的结构和信息