0%

FFMPEG常见选项

官网:https://ffmpeg.org/ffmpeg.html

中文:https://www.longqi.cf/tools/2015/01/07/ffmpegdoc3/、https://www.longqi.cf/tools/2014/12/23/ffmpegdoc/、https://www.longqi.cf/tools/2014/12/26/ffmpegdoc2/

翻译手册:https://www.bookstack.cn/read/other-doc-cn-ffmpeg/README.md

定位:ffmpeg是一个的视频和音频转换器

ffmepg 常见选项

1
2
3
4
-h      -- print basic options
-h long -- print more options
-h full -- print all options (including all format and codec specific options, very long)
-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol,example:filter=scale

通用

输出覆盖

-y (global):默认自动覆盖输出文件,而不再询问确认。

-n (global):不覆盖输出文件,如果输出文件已经存在则立即退出

日志

-loglevel:设置日志级别、quiet关闭日志

-repor :输出日志到文件中,设置环境变量FFREPORT可以起到相同的效果:FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

转封装

-f fmt (input/output):强制指定输入或输出的文件格式。输入通常是自动检测,输出由扩展名猜测,大多数情况下不需要此选项。

转码

-c/codec[:stream_specifier] codec (input/output,per-stream)

-vcodec codec (output):设置视频编码器,这是-codec:v的一个别名。

-acodec codec (output)

指定编解码器,特殊值copy (仅输出),copy表示该流不是被重新编码。

起始和结束位置

  • 输入输出的结束时间点
    -t/to duration (input/output)

  • 输入输出的开始时间点
    -ss position (input/output)
    -sseof position (input) #反向

  • 限制文件大小
    -fs limit_size (output)

  • 限制帧数

    • -dframes number (output):设定指定number数据帧到输出文件,这是-frames:d的别名
    • -frames[:stream_specifier] framecount (output,per-stream):在指定计数帧后停止写入数据
  • 设置输入文件的时间偏移

-itsoffset offset (input)

设置元数据

-metadata[:metadata_specifier] key=value (output,per-metadata):指定元数据中的键值对。

输入速率

-readrate speed (input): 相对正常速率倍数

-re (input) = -readrate 1

丢弃数据

-discard (input)

  • none :不丢帧
  • default :丢弃无效帧
  • noref :丢弃所有非参考帧
  • bidir :丢弃所有双向帧
  • nokey :丢弃所有非关键帧
  • all :丢弃所有帧

码率

-b:a
-b:v
-bsf[:stream_specifier] bitstream_filters (output,per-stream)

帧率

-vsync parameter (*global*)

-fps_mode[:stream_specifier] parameter (*output,per-stream*)

  • 0,passthrough:按帧时间戳透传
  • 1,cfr:复制或者丢弃
  • 2,vfr:透传或者丢弃
  • drop:透传但是重新生成新的时间
  • -1,auto:根据混合器功能在1或者2中选择,这是默认值。

时间戳

-copyts:不处理输入的时间戳

-seek_timestamp (input):严格基于时间戳seek,不是采样后计算的估算值

循环input

-stream_loop number (input):number 循环次数,-1表示,无限循环

执行限时

-timelimit duration (global)

视频

分辨率

aspect:设置分辨率比例

-s[:stream_specifier] size (input/output,per-stream):设置帧的尺寸。

帧率

-r[:stream_specifier] fps (input/output,per-stream):设置帧率(一种Hz值,缩写或者分数值)
-fpsmax[:stream_specifier] fps (output,per-stream)

画质

qscale[:stream_specifier] q:0.01-255,越小质量越好

filter

  • -filter_threads:filter线程数

  • -filter[:stream_specifier] filtergraph (output,per-stream)

    -vf filtergraph (output) = -filter:v

    -filter_script[:stream_specifier] filename (output,per-stream):参数是文件名,文件内容将被读取用于构建滤镜链图

  • -filter_complex filtergraph (global)

    -filter_complex_script

    -lavfi: = -filter_complex