1、信息查询
命令 | 含义 |
-L | 显示许可证 |
-h topic | 显示帮助 |
-? topic | 显示帮助 |
help topic | 显示帮助 |
--help topic | 显示帮助 |
-version | 显示版本 |
-buildconf | 显示生成配置 |
-formats | 显示有效的格式 |
-muxers | 显示有效的复用器 |
-demuxers | 显示有用的解复用器 |
-devices | 显示有效的音视频输入输出设备 |
-codecs | 显示可用的编解码器 |
-decoders | 显示可用的解码器 |
-encoders | 显示可用的编码器 |
-bsfs | 显示可用的位流筛选器 |
-protocols | 显示支持的协议 |
-filters | 显示可用的筛选器 |
-pix_fmts | 显示可用的像素格式 |
-layouts | 显示标准通道布局 |
-sample_fmts | 显示可用的音频样本格式 |
-dispositions | 显示可用的流布置 |
-colors | 显示可用的颜色名称 |
-sources device | 列出输入设备的源 |
-sinks device | 列出输出设备的接收器 |
-hwaccels | 显示可用的硬件加速方法 |
2、公共操作命令
2.1 常规公共操作命令
-loglevel loglevel | 设置日志等级 |
-v loglevel | 设置日志等级 |
-report | 生成一个报告i |
-max_alloc bytes | 设置一个块的最大值 |
-y | 允许输出文件覆盖其他文件 |
-n | 不允许输出文件覆盖 |
-ignore_unknown | 忽略未知流类型 |
-filter_threads | 非复杂筛选器线程数 |
-filter_complex_threads | -filter_complex的线程数 |
-stats | 编码期间打印进度报告 |
-max_error_rate maximum error rate | 解码错误的比率(0.0:无错误,1.0:100%错误),超过该比率,ffmpeg将返回错误而不是成功。 |
-vol volume | 修改音量大小 |
2.1 高级公共命令
-cpuflags flags | 强制特定的cpu标志 |
-cpucount count | 强制特定cpu计数 |
-hide_banner hide_banner | 不显示节目横幅 |
-copy_unknown | 复制未知流类型 |
-recast_media | 允许重铸流类型,以便强制使用不同媒体类型的解码器 |
-benchmark | 添加基准测试的时间 |
-benchmark_all | 添加每个任务的时间 |
-progress url | 编写程序可读的进度信息 |
-stdin | 启用或禁用标准输入的交互 |
-timelimit limit | set max runtime in seconds in CPU user time |
-dump | 转储每个输入数据包 |
-hex | 转储数据包时,还要转储有效负载 |
-frame_drop_threshold | 帧下降阈值 |
-async | 音频同步方法 |
-adrift_threshold threshold | 音频漂移阈值 |
-copyts | 复制时间戳 |
-start_at_zero | 使用副本时,将输入时间戳移位为从0开始 |
-copytb mode | 复制流时复制输入流时基 |
-dts_delta_threshold threshold | 时间戳不连续性增量阈值 |
-dts_error_threshold threshold | 时间戳错误增量阈值 |
-xerror erro | 出错时退出 |
-abort_on flags | 在指定的条件标志上中止 |
-filter_complex graph_description | 创建复杂的筛选器图 |
-lavfi graph_description | 创建复杂的筛选器图 |
-filter_complex_script filename | 从文件中读取复杂的筛选器图描述 |
-auto_conversion_filters | 全局启用自动转换筛选器 |
-stats_period time | 设置ffmpeg更新统计数据和进度输出的时间段 |
-debug_ts | 打印时间戳调试信息 |
-psnr | 计算压缩帧的PSNR |
-vstats | 将视频编码统计信息转储到文件 |
-vstats_file file | 将视频编码统计信息转储到文件 |
-vstats_version | 要使用的vstats格式的版本。 |
-qphist | 显示QP直方图 |
-sdp_file file | 指定要在其中打印sdp信息的文件 |
-qsv_device device | set QSV hardware device (DirectX adapter index, DRM path or X11 display name) |
-init_hw_device args | 初始化硬件设备 |
-filter_hw_device device | 设置筛选时使用的硬件设备 |
3、文件操作命令
3.1 常规文件操作命令
-f fmt | 强制格式 |
ffmpeg -i 输入文件名 -s 300x800 -f flv -y 输出文件名 | |
-c codec | 编解码器名称 |
-codec codec | 编解码器名称 |
-pre preset | 预设名称 |
-map_metadata outfile[,metadata]:infile[,metadata] | 设置输出文件的元数据信息 |
-t duration | 录制或转码音频/视频的“持续时间”秒数 |
to time_stop | 记录或转码停止时间 |
-fs limit_size | 设置限制文件大小(以字节为单位) |
-ss time_off | 设置开始时间偏移 |
ffmpeg -i 输入文件名 -ss 10 输出文件名 | |
-sseof time_off | 设置相对于EOF的开始时间偏移 |
-seek_timestamp | enable/disable seeking by timestamp with -ss |
-timestamp time | 设置录制时间戳('now'可设置当前时间) |
-metadata string=string | 添加元数据 |
-program title=string:st=number... | 添加具有指定流的程序 |
-target type | 指定目标文件类型(带有可选前缀“pal-”、“ntsc-”或“film-”的“vcd”、“svcd”、”dvd“、”dv“或”dv50“) |
-apad | 音频垫 |
-frames number | 设置要输出的帧数 |
-filter filter_graph | 设置流的过滤图 |
-filter_script filename | 从一个文件中读取流的筛选器信息 |
-reinit_filter | 输入参数变化的reinit滤波器图 |
-discard | 丢弃 |
-disposition |
3.2 高级文件操作命令
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] | 设置输入流映射 |
-map_channel file.stream.channel[:syncfile.syncstream] | 将音频通道从一个流映射到另一个流 |
-map_chapters input_file_index | 设置章节映射 |
-accurate_seek | 使用-ss启用/禁用精确搜索 |
-isync sync ref | 指示同步引用的输入索引 |
-itsoffset time_off | 设置输入ts偏移 |
-itsscale scale | 设置输入ts刻度 |
-dframes number | 设置要输出的数据帧数 |
-re | 以本机帧速率读取输入;相当于-读取速率1 |
-readrate speed | 以指定速率读取输入 |
-shortest | finish encoding within shortest input |
-bitexact | 位精确模式 |
-copyinkf | 复制初始非关键帧 |
-copypriorss | 在开始时间之前复制或丢弃帧 |
-tag fourcc/tag | 强制编解码器标签/forcc |
-q q | 使用固定质量量表 |
-qscale q | 使用固定质量量表 |
-profile profile | 设置配置文件 |
-attach filename | 向输出文件添加附件 |
-dump_attachment filename | 将附件提取到文件中 |
-stream_loop loop count | 设置输入流循环的次数 |
-thread_queue_size | 设置来自解复用器的排队数据包的最大数量 |
-find_stream_info | 读取并解码流以用启发式方法填充缺失的信息 |
-bits_per_raw_sample number | 设置每个原始样本的位数 |
-autorotate | 自动插入正确的旋转过滤器 |
-autoscale | 在过滤器图形的末尾自动插入缩放过滤器 |
-muxdelay seconds | 设置最大解复用解码延迟 |
-muxpreload seconds | 设置初始解复用解码延迟 |
-time_base ratio | 为输出流设置所需的时基提示(1:24、1:48000或0.04166、2.0833e-5) |
-enc_time_base ratio | 为编码器设置所需的时基(1:24、1:48000或0.04166、2.0833e-5)。定义了两个特殊值-0=使用帧速率(视频)或采样率(音频),-1=匹配源时基 |
-enc_time_base ratio | set the desired time base for the encoder (1:24, 1:48000 or 0.04166, 2.0833e-5). two special values are defined - 0 = use frame rate (video) or sample rate (audio),-1 = match source time base |
-bsf bitstream_filters | 以逗号分隔的比特流筛选器列表 |
-fpre filename | 从指定的预设文件中设置选项 |
-max_muxing_queue_size packets | 等待所有流初始化时可以缓冲的最大数据包数 |
-muxing_queue_data_threshold bytes | 设置阈值,在此阈值之后考虑max_muxing_queue_size |
-dcodec codec | 强制数据编解码器(“复制”到复制流) |
4、视频操作命令
4.1 常规视频操作命令
-vframes number | 设置要输出的视频帧数 |
-r rate | 设置帧速率(Hz值、分数或缩写) |
ffmpeg -i 输入文件夹名 -fs 大小 -f 25 -y 输出文件名 | |
-fpsmax rate | 设置最大帧速率(Hz值、分数或缩写) |
-s size | 设置框架尺寸(WxH或缩写) |
ffmpeg -i 输入文件名 -s 300x800 -y 输出文件名 | |
-aspect aspect | 设置纵横比(4:3、16:9或1.3333、1.7777) |
ffmpeg -i C:\Users\admin\Desktop\123.mp4 -aspect 6:9 -y C:\Users\admin\Desktop\789.avi | |
-vn | 不要视频 |
-vcodec codec | 设置视频编解码器(拷贝或流拷贝的时候) |
-时间代码hh:mm:ss[:;.]ff | 设置初始TimeCode值。 |
-pass n | 选择通道编号(1到3) |
-vf filter_graph | 设置视频筛选器 |
-ab bitrate | 音频比特率(请使用-b:a) |
-b bitrate | video bitrate (please use -b:v) |
-dn | 禁用数据 |
4.2 高级视频操作命令
-pix_fmt format | 设置像素格式 |
-rc_override override | 特定间隔的速率控制超控 |
-passlogfile prefix | 选择两次通过的日志文件名前缀 |
-psnr | 计算压缩帧的PSNR |
-vstats | 将视频编码统计信息转储到文件 |
-vstats_file file | 将视频编码统计信息转储到文件 |
-vstats_version | 要使用的vstats格式的版本。 |
-intra_matrix matrix | 指定矩阵内系数 |
-chroma_intra_matrix matrix | 指定矩阵内系数 |
-top | top=1/bottom=0/auto=-1 field first |
-vtag fourcc/tag | 强制视频标签/forcc |
-qphist | 显示QP直方图 |
-fps_mode | 设置用于匹配视频流的帧速率模式;覆盖vsync |
-force_fps | 强制选定的帧速率,禁用支持的最佳帧速率选择 |
-streamid streamIndex:value | 设置出文件流id的值 |
-force_key_frames timestamps | 在指定的时间戳强制关键帧 |
-hwaccel hwaccel name | 使用硬件加速解码 |
-hwaccel_device devicename | 选择硬件加速设备 |
-hwaccel_output_format format | 选择用于硬件加速解码的输出格式 |
-vbsf video bitstream_filters | 对…表示极不赞成 |
-vpre preset | 将视频选项设置为指示的预设 |
5、音频操作命令
5.1 常规音频操作命令
-aframes number | 设置要输出的音频帧数 |
-aq quality | 设置音频质量(特定于编解码器) |
-ar rate | 设置音频采样率(Hz) |
-ac channels | 设置音频通道数 |
-an | 禁用音频 |
-acodec codec | 强制音频编解码器(“复制”到复制流) |
-vol volume | 更改音频音量(256=正常) |
-af filter_graph | 设置音频过滤器 |
5.2 高级音频操作命令
-atag fourcc/tag | 强制音频标签/forcc |
-sample_fmt format | 设置样本格式 |
-channel_layout layout | 设置通道布局 |
-ch_layout layout | 设置通道布局 |
-guess_layout_max | 设置尝试猜测频道布局的最大频道数 |
-absf audio bitstream_filters | 对…表示极不赞成 |
-apre preset | 将音频选项设置为指示的预设 |
6、字幕选项命令
-s size | 设置框架尺寸(WxH或缩写) |
-sn | 禁用字幕 |
-scodec codec | 强制字幕编解码器(“复制”到复制流) |
-stag fourcc/tag | 强制字幕tag/forcc |
-fix_sub_duration | 固定字幕持续时间 |
-canvas_size size | 设置画布大小(WxH或缩写) |
-spre preset | 将字幕选项设置为指示的预设 |
- 命令例程
例子 | 解释 |
ffmpeg -formats | 查询支持formats的格式 |
ffmpeg -h muxer=flv | 查看flv封装器的参数支持 |
ffmpeg -h demuxer=flv | 查看flv解封装器大的参数支持 |
ffmpeg -h encoder=h264 | 查看h264的编码支持 |
ffmpeg -h decoder=h264 | 查看h264的解码支持 |
Ffmpeg -h filter=colorkey | 查看colorkey滤镜的参数支持 |
- 封装格式和编码格式的关系
封装格式 | 编码格式 |
AVI | Xvid、Divx、MP3 |
WMV | |
MP4 | Xvid、H264 |
FLV | H264、Screen Video、Once VP6 |
RMVB | |
MKV | H264 |
3GP | |
ASF | |
TS | H264 |
HLS(M3U8) | H264 |
命令例程:
等待接收来自127.0.0.1:1234口的视频
ffmpeg -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv output.flv
发布视频于127.0.0.1:1234口的视频
ffmpeg -re -i C:\Users\admin\Desktop\ship\动画.flv -c copy -f flv tcp://127.0.0.1:1234/live/stream