FFPALY命令查询
前言:
本版本为win10加ffmpeg 7.1
播放控制
即播放的时候 可以来控制
- esc 退出播放界面
- m 静音播放
- a v t 分别为切换音频流 视频流 字幕流(前提是有多种流)
- 9 0 分别是减少 增加音量
- left/right 视频后前 10s down和up后前1分钟
- 鼠标左键2 :全屏
主要命令选项
播放之前:
选项 | 功能描述 | 取值及说明 |
---|---|---|
-x | 强制设定视频显示宽度 | 指定具体像素数值,用于调整播放窗口宽度 |
-y | 强制设定视频显示高度 | 指定具体像素数值,用于调整播放窗口高度 |
-fs | 强制将播放窗口切换为全屏模式 | 无取值,添加此选项即开启全屏 |
-an | 禁用音频播放 | 无取值,添加此选项即关闭音频 |
-vn | 禁用视频播放 | 无取值,添加此选项即关闭视频画面 |
-tn | 禁用字幕显示 | 无取值,添加此选项即不显示字幕 |
-ss | 设置播放开始时间 | 单位为秒,可写成具体秒数,也可写成 小时:分钟:秒数 形式,如 12:03:23 |
-t | 设置播放持续时间 | 单位为秒(s),指定播放时长 |
-bytes | 按字节进行定位拖动设置 | 0 表示关闭按字节定位拖动;1 表示开启;-1 为自动模式 |
-seek_interval | 自定义左右键定位拖动间隔 | 单位为秒(s),自行设定左右键操作时跳转的时间间隔 |
-nodisp | 关闭图形化显示窗口 | 无取值,添加此选项即不显示图形窗口 |
-noborder | 设置播放窗口无边框 | 无取值,添加此选项窗口即无边框 |
-window_title | 设置播放窗口标题 | 指定想要设置的标题文字内容 |
-loop | 设置视频循环播放次数 | 指定具体循环次数数值,如 3 表示循环3次 |
-f | 强制使用特定格式解析 | 指定要强制使用的格式名称,用于特殊格式文件解析 |
-showmode | 设置播放内容显示模式 | 0 显示视频;1 显示音频波形;2 显示音频波谱 |
高级命令
选项 | 说明 |
---|---|
-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 | 视频播放完毕后退出。 |
- stats (重点)
- compatible_brands: isomiso2avcmp41:表示该媒体文件兼容的品牌或文件格式标识 。isom 代表国际标准媒体文件格式(ISO Base Media File Format ),iso2 可能是相关变体,avc 与 H.264 编码相关,mp41 说明和 MP4 格式相关,整体表明文件在格式上的兼容性情况。
- encoder: Lavf61.1.100:指出该文件是由 FFmpeg 的 libavformat(Lavf )库版本 61.1.100 编码生成的 。
时长与比特率- Duration: 00:00:20.08, start: 0.000000, bitrate: 3792 kb/s:
Duration 显示视频总时长为 20.08 秒 。
start 表示视频流起始时间为 0 秒 。
bitrate 指整体媒体文件的平均比特率为 3792kb/s,即每秒传输 3792 千比特的数据量 。
- 视频流信息(Stream #0:0 )
[0x1] (und): Video: h264 (High) (avc1 / 0x31637661), yuv420p (tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 3658 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
[0x1] 是流的索引标识 ;(und) 可能表示未指定特定用途或未标记 。
Video 表明这是视频流 ,编码格式为 h264,采用 High 档次 ,avc1 是四字符代码(FOURCC )表示 H.264 编码 ,0x31637661 是其十六进制表示 。
yuv420p 为像素格式 ,色彩空间基于 bt709(常用于高清电视等 ),progressive 表示逐行扫描 。
视频分辨率为 1920x1080 像素 ,SAR 1:1 是采样纵横比 ,DAR 16:9 是显示纵横比 。
视频比特率为 3658 kb/s ,帧率 25 fps(每秒 25 帧 ),tbr(Time - Base Rate )表示平均帧率 ,tbn(Time - Base Numerator )是时间基准分母 。
Metadata:以下是视频流的元数据 ,handler_name 为 VideoHandler ,vendor_id 为默认值 [0][0][0][0] ,encoder 是 Lavc61.3.100(libavcodec 库版本 ),使用 libx264 编码器 。- 音频流信息(Stream #0:1 )
[0x2] (chi): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
[0x2] 是音频流索引 ,(chi) 可能表示声道布局相关信息(这里推测和中文声道设置等有关 ,不确定场景下可能只是标识 ) 。
Audio 表明是音频流 ,编码格式为 aac(高级音频编码 ),LC 是低复杂度(Low Complexity )档次 ,mp4a 是四字符代码 ,0x6134706D 是十六进制表示 。
采样率为 48000 Hz ,声道数为 stereo(立体声 ),fltp 是音频样本格式(float - planar ,浮点型平面格式 ),比特率为 128 kb/s 。
Metadata:音频流元数据中 ,handler_name 是 SoundHandler ,vendor_id 是 [0][0][0][0] 。- 底部统计信息
15.12 A-V: -0.021 fd= 17 aq= 24KB vq= 686KB sq= 0B:
15.12 可能是某种时间相关统计值(如播放到的时间点 ,不确定具体场景 ) 。
A-V 代表音频 - 视频同步差值 ,这里为 -0.021 ,说明音频和视频存在一定同步偏差 。
fd 可能是文件描述符相关计数 ,这里值为 17 。
aq 表示音频队列大小 ,为 24KB 。
vq 表示视频队列大小 ,为 686KB 。
sq 可能是某种状态队列大小 ,这里为 0B 。
选项 | 说明 |
---|---|
-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 |
- autorotate
功能:ffplay 会依据视频文件里的元数据(比如 Exif 信息中的旋转标识 ),自动对视频进行旋转操作,让视频以正确角度显示。
取值:值设为 0 时,关闭自动旋转功能;值为 1 时开启,默认是 1 。比如拍摄视频时手机横屏竖屏有变化,开启此功能就能自动纠正画面方向。- framedrop
功能:在播放视频过程中,若视频和音频等其他流不同步,ffplay 会自动丢弃一些视频帧来重新同步。比如网络不稳定导致接收视频帧有延迟、音视频编码帧率等参数设置差异导致播放时不同步等情况,就会触发丢帧操作。- infbuf
功能:在读取输入数据(像网络流数据、文件数据 )时,不限制输入缓冲区的大小。ffplay 会尽可能快速地从输入源读取大量数据。在播放实时流(比如直播流 )时,默认启用这个选项,因为实时流数据不断产生,如果读取不及时,数据可能就被丢弃了。
禁用方式:如果担心缓冲区过大占用过多系统资源等情况,不想让它不限制缓冲区大小,就使用 -noinfbuf 来禁用 。
命令播放 (综合)
- 本地文件
ffplay test.mp4
- 网络流
ffpaly "网络流地址"
- 强制解码器
ffplay -vcodec mpeg4 test.mp4
- 禁用
ffplay test.mp4 -an -vn
- 播放 YUV 数据(未压缩的数据)
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv
-video_size视频尺寸 320x240即像素
-framerate 帧率
- 播放 RGB 数据(未压缩的数据)
ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgb rgb24_320x240.rgb
- 播放 PCM 数据
ffplay -ar 48000 -ac 2 f32le_48000_2_f32le.pcm
-ar set audio sampling rate (in Hz) (from 0 to INT_MAX) (default 0)
音频采样帧数
-ac set number of audio channels (from 0 to INT_MAX) (default 0)
音频通道数
PCM 数据是未经压缩或仅经过简单量化处理的数据 ,可视为没有压缩的数据
过滤器
操作类型 | ffplay命令 | 参数解释 |
---|---|---|
视频旋转 | ffplay -i test.mp4 -vf transpose=1 | -i :指定输入文件,这里是 test.mp4 ;-vf :代表视频滤镜(Video Filter),transpose=1 中 transpose 是视频滤镜的一种,用于旋转视频画面,1 表示逆时针旋转90度 ,取值不同旋转方式不同(0是顺时针旋转90度等 ) |
视频反转(水平) | ffplay test.mp4 -vf hflip | -vf 是视频滤镜,hflip 表示水平翻转视频画面 |
视频反转(垂直) | ffplay test.mp4 -vf vflip | -vf 是视频滤镜,vflip 表示垂直翻转视频画面 |
视频旋转和反转 | ffplay test.mp4 -vf hflip,transpose=1 | -vf 后多个滤镜用逗号分隔,先执行 hflip 水平翻转视频,再执行 transpose=1 逆时针旋转90度 |
音频变速播放 | ffplay -i test.mp4 -af atempo=2 | -i 指定输入文件 ;-af 代表音频滤镜(Audio Filter),atempo 是音频滤镜的一种,用于改变音频播放速度,atempo=2 表示将音频播放速度变为原来的2倍 |
视频变速播放 | ffplay -i test.mp4 -vf setpts=PTS/2 | -i 指定输入文件 ;-vf 是视频滤镜,setpts 用于设置视频帧的显示时间戳,PTS 是原始的显示时间戳,PTS/2 表示将时间戳减半,从而使视频播放速度变为原来的2倍 |
音视频同时变速 | ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2 | -i 指定输入文件 ;-vf setpts=PTS/2 让视频播放速度变为原来2倍 ,-af atempo=2 让音频播放速度变为原来2倍 ,实现音视频同时变速 |