ffmpeg、ffprobe、ffplay 常用参数及命令行示例说明

一:参数说明

通用选项

      能力集列表

  • -formats:列出支持的文件格式。
  • -codecs:列出支持的编解码器。
  • -decoders:列出支持的解码器。
  • -encoders:列出支持的编码器。
  • -protocols:列出支持的协议。
  • -bsfs:列出支持的比特流过滤器。
  • -filters:列出支持的滤镜。
  • -pix_fmts:列出支持的图像采样格式。
  • -sample_fmts:列出支持的声音采样格式。

常用输入选项

  • -i filename:指定输入文件名。
  • -f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
  • -ss hh:mm:ss[.xxx]:设定输入文件的起始时间点,启动后将跳转到此时间点然后开始读取数据。

对于输入,以下选项通常是自动识别的,但也可以强制设定。

  • -c codec:指定解码器,需使用能力集列表中的名称。
  • -acodec codec:指定声音的解码器,需使用能力集列表中的名称。
  • -vcodec codec:指定视频的解码器,需使用能力集列表中的名称。
  • -b:v bitrate:设定视频流的比特率,整数,单位bps。
  • -r fps:设定视频流的帧率,整数,单位fps。
  • -s WxH : 设定视频的画面大小。也可以通过挂载画面缩放滤镜实现。
  • -pix_fmt format:设定视频流的图像格式(如RGB还是YUV)。
  • -ar sample rate:设定音频流的采样率,整数,单位Hz。
  • -ab bitrate:设定音频流的比特率,整数,单位bps。
  • -ac channels:设置音频流的声道数目。

常用输出选项

  • -f fmt:强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
  • -c codec:指定编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
  • -acodec codec:指定声音的编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
  • -vcodec codec:指定视频的编码器,需使用能力集列表中的名称(编解码器设定为”copy“表示不进行编解码)。
  • -r fps:设定视频编码器的帧率,整数,单位fps。
  • -pix_fmt format:设置视频编码器使用的图像格式(如RGB还是YUV)。
  • -ar sample rate:设定音频编码器的采样率,整数,单位Hz。
  • -b bitrate:设定音视频编码器输出的比特率,整数,单位bps。
  • -ab bitrate:设定音频编码器输出的比特率,整数,单位bps。
  • -ac channels:设置音频编码器的声道数目。
  • -an 忽略任何音频流。
  • -vn 忽略任何视频流。
  • -t hh:mm:ss[.xxx]:设定输出文件的时间长度。
  • -to hh:mm:ss[.xxx]:如果没有设定输出文件的时间长度的画可以设定终止时间点。

ffmpeg:

“ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.”

流标识

FFMPEG的某些选项可以对一个特定的媒体流起作用,这种情况下需要在选项后面增加一个流标识。流标识允许以下几种格式:

  • 流序号。譬如“:1”表示第二个流。
  • 流类型。譬如“:a“表示音频流,流类型可以和流序号合并使用,譬如“:a:1”表示第二个音频流。
  • 节目。节目和流序号可以合并使用。
  • 流标识。流标识是一个内部标识号。

假如要设定第二个音频流为copy,则需要指定-codec:a:1 copy

音频选项

  • -aframes:等价于frames:a,输出选项,用于指定输出的音频帧数目。
  • -aq:等价于q:a,老版本为qscale:a,用于设定音频质量。
  • -atag:等价于tag:a,用于设定音频流的标签。
  • -af:等价于filter:a,用于设定一个声音的后处理过滤链,其参数为一个描述声音后处理链的字符串。

视频选项

  • -vframes:等价于frames:v,输出选项,用于指定输出的视频帧数目。
  • -aspect:设置宽高比,如4:3、16:9、1.3333、1.7777等。
  • -bits_per_raw_sample:设置每个像素点的比特数。
  • -vstats:产生video统计信息。
  • -vf:等价于filter:v,用于设定一个图像的后处理过滤链,其参数为一个描述图像后处理链的字符串。
  • -vtag:等价于tag:v,用于设定视频流的标签。
  • -force_fps:强制设定视频帧率。
  • -force_key_frames:显式控制关键帧的插入,参数为字符串,可以是一个时间戳,也可以是一个 “expr:”前缀的表达式。如“-force_key_frames 0:05:00”、“-force_key_frames expr:gte(t,n_forced*5)”

滤镜选项

-filter_simple 添加简单滤镜
-filter_complex FILTER 添加复杂滤镜

高级选项

  • -re:要求按照既定速率处理输入数据,这个速率即是输入文件的帧率。
  • -map:指定输出文件的流映射关系。例如 “-map 1:0 -map 1:1”要求将第二个输入文件的第一个流和第二个流写入到输出文件。如果没有-map选项,ffmpeg采用缺省的映射关系。

 

ffprobe:

ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion.

 

简单的说,ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。

  • -f format         强制使用某种格式
  • -sexagesimal      时间单元格式化 HOURS:MM:SS.MICROSECONDS
  • -pretty             格式美化
  • -print_format format  格式化(可选值: default, compact, csv, flat, ini, json, xml)
  • -of format         -print_format别名
  • -select_streams stream_specifier 选择指定流
  • -sections           打印节的结构和信息
  • -show_data          显示包数据
  • -show_data_hash     显示包数据哈希值
  • -show_error        显示文件探测/检测错误
  • -show_format       显示格式或者容器信息
  • -show_frames        显示帧信息
  • -show_format_entry entry  根据格式/容器信息显示指定entry
  • -show_packets       显示包信息
  • -show_programs      显示程序信息
  • -show_streams       显示流信息
  • -show_chapters      显示章节信息
  • -count_frames       统计每个流的帧数
  • -count_packets      统计每个流的包数
  • -show_program_version  显示ffprobe版本
  • -show_library_versions  show library versions
  • -show_versions      show program and library versions
  • -show_pixel_formats 显示像素格式
  • -show_private_data  show private data
  • -private            same as show_private_data
  • -bitexact           force bitexact output
  • -read_intervals read_intervals  set read intervals
  • -default            generic catch all option

ffplayer

FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a testbed for the various FFmpeg APIs.

  • -x 强制设置视频显示窗口的宽度
  • -y 强制设置视频显示窗口的高度
  • -S 设置视频显示的宽高
  • -fs 强制全屏显示
  • -an 屏蔽音频
  • -vn 屏蔽视频
  • -Sn 屏蔽字幕
  • -ss 根据设置的秒进行定位拖动
  • -t 设置播放视频/音频长度
  • -Bytes 设置定位拖动的策略,0为不可拖动,1为可拖动,-1为自动
  • -Nodisp 关闭图形化显示窗口
  • -f 强制使用设置的格式进行解析
  • -window_title 设置显示窗口的标题
  • -af 设置音频的滤镜
  • -Codec 强制使用设置的codec进行解码
  • -autorotate 自动旋转视频
  • -ast 设置将要播放的音频流
  • -vst 设置将要播放的视频流
  • -sst 设置将要播放的字幕流
  • -Stats 输出多媒体播放状态
  • -Fast 非标准化规范的多媒体兼容优化
  • -sync 音视频同步设置可设置根据音频视频进行参考,视频时间参考,或者外部扩展时间进行参考
  • -autoexit 多媒体播放完毕自动退出ffplay,ffplay默认播放完毕不退出播放器
  • -exitonkeydown 当有按键按下事件产生时退出ffplay
  • -exitonmousedown 当有鼠标按键事件产生时退出ffplay
  • -loop 设置多媒体文件循环播放次数
  • -framedrop 当CPU资 源占用过高时,自动丢帧
  • -infbuf 设置无极限的播放器buffer,这个选项常见于实时流媒体播放场景
  • -vf 视频滤镜设置
  • -acodec 强制使用设置的音频解码器
  • -vcodec 强制使用设置的视频解码器
  • -scodec 强制使用设置的字幕解码器

 

二:命令行使用示例

ffmpeg:

//在视频左上角添加文字

ffmpeg.exe -i test.flv -filter_complex drawtext="fontfile=corbel.ttf:text='Yeah text':fontsize=50:fontcolor=white" test_filter_text.flv

//在视频中间添加图片logo

ffmpeg.exe -i test.flv -i pic.png -filter_complex overlay=(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 test_filter.flv

//将视频每秒(帧率每秒一帧)截图并以frame-001.jpeg frame-002.jpg方式保存

ffmpeg.exe -i test.flv -r 1 -f image2 frame-%03d.jpeg

//将视频第5秒的图像截图并保存为screenshot.jpeg文件

ffmpeg.exe -i test.flv -r 1 -ss 5 -t 1 -f image2 screenshot.jpeg

//从视频第3秒开始剪切,持续4秒,并保存文件

ffmpeg.exe -ss 00:00:03 -t 00:00:04 -i test.flv -vcodec copy -acodec copy test_cut.flv

//以每秒1帧的帧率将frame-*.jpeg的序列图片合并成视频(windows下使用括号内的方式)

ffmpeg -f image2 -pattern_type glob -framerate 1 -i 'frame-*.jpeg' test_compose_image.flv

(  

ffmpeg.exe -f image2  -framerate 1 -i frame-%03d.jpeg test_compose_image.flv

 注:-pattern_type glob requires glob.h.  glob is defined in the POSIX standard and it's not available on Windows by default.

Create/rename your files using sequential file naming image###.jpg then use sequence wildcards like -i image%03d.jpg as input.

)

 

ffprobe:

//显示文件流中tag并以json格式输出

ffprobe -print_format json -show_entries stream_tags:format_tags test.flv

 

ffplay:

//以宽320高240的窗口大小打开视频

ffplay.exe -x 320 -y 240 test.flv

//打开视频,播放完后自动退出

ffplay.exe -autoexit test.flv

//以指定标题打开窗口播放视频,并循环播放2遍

ffplay.exe -window_title "我是标题" -loop 2 test.mp4

//播放 双通道 32K 的 PCM 音频数据

ffplay.exe -f s16le -ar 32000 -ac 2 test.pcm 

//将视频以音频波形可视化显示出来

ffplay.exe -i test.flv -showmode 1

//为视频添加字幕(通过滤镜方式)

ffplay.exe -i test.flv -vf subtitles=test.srt

你可能感兴趣的:(ffmpeg、ffprobe、ffplay 常用参数及命令行示例说明)