网站翻译由林建有提供支持
目录
- 1 概要
- 2 描述
- 3 选项
- 4 写入器
- 5 时码
- 6 语法
- 7 表达式计算
- 8 编解码器选项
- 9 解码器
- 10 视频解码器
- 11 音频解码器
- 12 字幕解码器
- 13 位流过滤器
- 13.1 aac_adtstoasc
- 13.2 av1_metadata
- 13.3 chomp
- 13.4 dca_core
- 13.5 dovi_rpu
- 13.6 dump_extra
- 13.7 dv_error_marker
- 13.8 eac3_core
- 13.9 extract_extradata
- 13.10 filter_units
- 13.11 hapqa_extract
- 13.12 h264_metadata
- 13.13 h264_mp4toannexb
- 13.14 h264_redundant_pps
- 13.15 hevc_metadata
- 13.16 hevc_mp4toannexb
- 13.17 imxdump
- 13.18 mjpeg2jpeg
- 13.19 mjpegadump
- 13.20 mov2textsub
- 13.21 mpeg2_metadata
- 13.22 mpeg4_unpack_bframes
- 13.23 噪声
- 13.24 空
- 13.25 pcm_rechunk
- 13.26 pgs_frame_merge
- 13.27 prores_metadata
- 13.28 remove_extra
- 13.29 setts
- 13.30 showinfo
- 13.31 text2movsub
- 13.32 trace_headers
- 13.33 truehd_core
- 13.34 vp9_metadata
- 13.35 vp9_superframe
- 13.36 vp9_superframe_split
- 13.37 vp9_raw_reorder
- 14 格式选项
- 15 解复用器
- 15.1 aa
- 15.2 aac
- 15.3 apng
- 15.4 asf
- 15.5 合并
- 15.6 dash
- 15.7 dvdvideo
- 15.8 ea
- 15.9 imf
- 15.10 flv, live_flv, kux
- 15.11 gif
- 15.12 hls
- 15.13 image2
- 15.14 libgme
- 15.15 libmodplug
- 15.16 libopenmpt
- 15.17 mov/mp4/3gp
- 15.18 mpegts
- 15.19 mpjpeg
- 15.20 rawvideo
- 15.21 rcwt
- 15.22 sbg
- 15.23 tedcaptions
- 15.24 vapoursynth
- 15.25 w64
- 15.26 wav
- 16 元数据
- 17 协议选项
- 18 协议
- 18.1 amqp
- 18.2 async
- 18.3 bluray
- 18.4 cache
- 18.5 合并concat
- 18.6 concatf
- 18.7 crypto
- 18.8 data
- 18.9 fd
- 18.10 file
- 18.11 ftp
- 18.12 gopher
- 18.13 gophers
- 18.14 hls
- 18.15 http
- 18.16 Icecast
- 18.17 ipfs
- 18.18 mmst
- 18.19 mmsh
- 18.20 md5
- 18.21 pipe
- 18.22 prompeg
- 18.23 rist
- 18.24 rtmp
- 18.25 rtmpe
- 18.26 rtmps
- 18.27 rtmpt
- 18.28 rtmpte
- 18.29 rtmpts
- 18.30 libsmbclient
- 18.31 libssh
- 18.32 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte
- 18.33 rtp
- 18.34 rtsp
- 18.35 sap
- 18.36 sctp
- 18.37 srt
- 18.38 srtp
- 18.39 subfile
- 18.40 tee
- 18.41 tcp
- 18.42 tls
- 18.43 udp
- 18.44 unix
- 18.45 zmq
- 19 Device Options
- 20 Input Devices
- 21 Resampler Options
- 22 Scaler Options
- 23 Filtering Introduction
- 24 graph2dot
- 25 Filtergraph description
- 26 Timeline editing
- 27 Changing options at runtime with a command
- 28 Options for filters with several inputs (framesync)
- 29 Audio Filters
- 29.1 aap
- 29.2 acompressor
- 29.3 acontrast
- 29.4 acopy
- 29.5 acrossfade
- 29.6 acrossover
- 29.7 acrusher
- 29.8 acue
- 29.9 adeclick
- 29.10 adeclip
- 29.11 adecorrelate
- 29.12 adelay
- 29.13 adenorm
- 29.14 aderivative, aintegral
- 29.15 adrc
- 29.16 adynamicequalizer
- 29.17 adynamicsmooth
- 29.18 aecho
- 29.19 aemphasis
- 29.20 aeval
- 29.21 aexciter
- 29.22 afade
- 29.23 afftdn
- 29.24 afftfilt
- 29.25 afir
- 29.26 aformat
- 29.27 afreqshift
- 29.28 afwtdn
- 29.29 agate
- 29.30 aiir
- 29.31 alimiter
- 29.32 allpass
- 29.33 aloop
- 29.34 amerge
- 29.35 amix
- 29.36 amultiply
- 29.37 anequalizer
- 29.38 anlmdn
- 29.39 anlmf, anlms
- 29.40 anull
- 29.41 apad
- 29.42 aphaser
- 29.43 aphaseshift
- 29.44 apsnr
- 29.45 apsyclip
- 29.46 apulsator
- 29.47 aresample
- 29.48 areverse
- 29.49 arls
- 29.50 arnndn
- 29.51 asdr
- 29.52 asetnsamples
- 29.53 asetrate
- 29.54 ashowinfo
- 29.55 asisdr
- 29.56 asoftclip
- 29.57 aspectralstats
- 29.58 asr
- 29.59 astats
- 29.60 asubboost
- 29.61 asubcut
- 29.62 asupercut
- 29.63 asuperpass
- 29.64 asuperstop
- 29.65 atempo
- 29.66 atilt
- 29.67 atrim
- 29.68 axcorrelate
- 29.69 bandpass
- 29.70 bandreject
- 29.71 bass, lowshelf
- 29.72 biquad
- 29.73 bs2b
- 29.74 channelmap
- 29.75 channelsplit
- 29.76 chorus
- 29.77 compand
- 29.78 compensationdelay
- 29.79 crossfeed
- 29.80 crystalizer
- 29.81 dcshift
- 29.82 deesser
- 29.83 dialoguenhance
- 29.84 drmeter
- 29.85 dynaudnorm
- 29.86 earwax
- 29.87 equalizer
- 29.88 extrastereo
- 29.89 firequalizer
- 29.90 flanger
- 29.91 haas
- 29.92 hdcd
- 29.93 headphone
- 29.94 highpass
- 29.95 join
- 29.96 ladspa
- 29.97 loudnorm
- 29.98 lowpass
- 29.99 lv2
- 29.100 mcompand
- 29.101 pan
- 29.102 replaygain
- 29.103 resample
- 29.104 rubberband
- 29.105 sidechaincompress
- 29.106 sidechaingate
- 29.107 silencedetect
- 29.108 silenceremove
- 29.109 sofalizer
- 29.110 speechnorm
- 29.111 stereotools
- 29.112 stereowiden
- 29.113 superequalizer
- 29.114 surround
- 29.115 tiltshelf
- 29.116 treble, highshelf
- 29.117 tremolo
- 29.118 vibrato
- 29.119 virtualbass
- 29.120 volume
- 29.121 volumedetect
- 30 Audio Sources
- 31 Audio Sinks
- 32 Video Filters
- 32.1 addroi
- 32.2 alphaextract
- 32.3 alphamerge
- 32.4 amplify
- 32.5 ass
- 32.6 atadenoise
- 32.7 avgblur
- 32.8 backgroundkey
- 32.9 bbox
- 32.10 bilateral
- 32.11 bilateral_cuda
- 32.12 bitplanenoise
- 32.13 blackdetect
- 32.14 blackframe
- 32.15 blend
- 32.16 blockdetect
- 32.17 blurdetect
- 32.18 bm3d
- 32.19 boxblur
- 32.20 bwdif
- 32.21 bwdif_cuda
- 32.22 ccrepack
- 32.23 cas
- 32.24 chromahold
- 32.25 chromakey
- 32.26 chromakey_cuda
- 32.27 chromanr
- 32.28 chromashift
- 32.29 ciescope
- 32.30 codecview
- 32.31 colorbalance
- 32.32 colorcontrast
- 32.33 colorcorrect
- 32.34 colorchannelmixer
- 32.35 colorize
- 32.36 colorkey
- 32.37 colorhold
- 32.38 colorlevels
- 32.39 colormap
- 32.40 colormatrix
- 32.41 colorspace
- 32.42 colorspace_cuda
- 32.43 colortemperature
- 32.44 convolution
- 32.45 convolve
- 32.46 copy
- 32.47 coreimage
- 32.48 corr
- 32.49 cover_rect
- 32.50 crop
- 32.51 cropdetect
- 32.52 cue
- 32.53 curves
- 32.54 datascope
- 32.55 dblur
- 32.56 dctdnoiz
- 32.57 deband
- 32.58 deblock
- 32.59 decimate
- 32.60 deconvolve
- 32.61 dedot
- 32.62 deflate
- 32.63 deflicker
- 32.64 dejudder
- 32.65 delogo
- 32.66 derain
- 32.67 deshake
- 32.68 despill
- 32.69 detelecine
- 32.70 dilation
- 32.71 displace
- 32.72 dnn_classify
- 32.73 dnn_detect
- 32.74 dnn_processing
- 32.75 drawbox
- 32.76 drawgraph
- 32.77 drawgrid
- 32.78 drawtext
- 32.79 边缘检测
- 32.80 elbg
- 32.81 熵
- 32.82 epx
- 32.83 相等
- 32.84 侵蚀
- 32.85 估计差异
- 32.86 曝光
- 32.87 提取平面
- 32.88 淡入淡出
- 32.89 反馈
- 32.90 fft去噪
- 32.91 fft滤波
- 32.92 场
- 32.93 场提示
- 32.94 场匹配
- 32.95 场顺序
- 32.96 填充边界
- 32.97 找矩形
- 32.98 滴灌填充
- 32.99 格式
- 32.100 帧率
- 32.101 帧打包
- 32.102 帧率
- 32.103 步进帧
- 32.104 冻结检测
- 32.105 冻结帧
- 32.106 frei0r
- 32.107 fspp
- 32.108 fsync
- 32.109 模糊
- 32.110 geq
- 32.111 gradfun
- 32.112 图形监控
- 32.113 灰色世界
- 32.114 灰边
- 32.115 引导
- 32.116 hald校准查找表
- 32.117 水平翻转
- 32.118 直方图均衡化
- 32.119 直方图
- 32.120 hqdn3d
- 32.121 hwdownload
- 32.122 hwmap
- 32.123 hwupload
- 32.124 hwupload_cuda
- 32.125 hqx
- 32.126 hstack
- 32.127 hsvhold
- 32.128 hsvkey
- 32.129 hue
- 32.130 huesaturation
- 32.131 hysteresis
- 32.132 iccdetect
- 32.133 iccgen
- 32.134 identity
- 32.135 idet
- 32.136 il
- 32.137 inflate
- 32.138 interlace
- 32.139 kerndeint
- 32.140 kirsch
- 32.141 lagfun
- 32.142 lenscorrection
- 32.143 lensfun
- 32.144 libplacebo
- 32.145 libvmaf
- 32.146 libvmaf_cuda
- 32.147 limitdiff
- 32.148 limiter
- 32.149 loop
- 32.150 lut1d
- 32.151 lut3d
- 32.152 lumakey
- 32.153 lut, lutrgb, lutyuv
- 32.154 lut2, tlut2
- 32.155 maskedclamp
- 32.156 maskedmax
- 32.157 maskedmerge
- 32.158 maskedmin
- 32.159 maskedthreshold
- 32.160 maskfun
- 32.161 mcdeint
- 32.162 median
- 32.163 mergeplanes
- 32.164 mestimate
- 32.165 midequalizer
- 32.166 minterpolate
- 32.167 mix
- 32.168 monochrome
- 32.169 morpho
- 32.170 mpdecimate
- 32.171 msad
- 32.172 multiply
- 32.173 negate
- 32.174 nlmeans
- 32.175 nnedi
- 32.176 noformat
- 32.177 noise
- 32.178 normalize
- 32.179 null
- 32.180 ocr
- 32.181 ocv
- 32.182 oscilloscope
- 32.183 overlay
- 32.184 overlay_cuda
- 32.185 owdenoise
- 32.186 pad
- 32.187 palettegen
- 32.188 paletteuse
- 32.189 perspective
- 32.190 phase
- 32.191 photosensitivity
- 32.192 pixdesctest
- 32.193 pixelize
- 32.194 pixscope
- 32.195 pp
- 32.196 pp7
- 32.197 premultiply
- 32.198 prewitt
- 32.199 pseudocolor
- 32.200 psnr
- 32.201 pullup
- 32.202 qp
- 32.203 qrencode
- 32.204 quirc
- 32.205 random
- 32.206 readeia608
- 32.207 readvitc
- 32.208 remap
- 32.209 removegrain
- 32.210 removelogo
- 32.211 repeatfields
- 32.212 reverse
- 32.213 rgbashift
- 32.214 roberts
- 32.215 rotate
- 32.216 sab
- 32.217 scale
- 32.218 scale_cuda
- 32.219 scale_npp
- 32.220 scale2ref_npp
- 32.221 scale_vt
- 32.222 scharr
- 32.223 scroll
- 32.224 scdet
- 32.225 selectivecolor
- 32.226 separatefields
- 32.227 setdar, setsar
- 32.228 setfield
- 32.229 setparams
- 32.230 sharpen_npp
- 32.231 shear
- 32.232 showinfo
- 32.233 showpalette
- 32.234 shuffleframes
- 32.235 shufflepixels
- 32.236 shuffleplanes
- 32.237 signalstats
- 32.238 signature
- 32.239 siti
- 32.240 smartblur
- 32.241 sobel
- 32.242 spp
- 32.243 sr
- 32.244 ssim
- 32.245 stereo3d
- 32.246 streamselect, astreamselect
- 32.247 subtitles
- 32.248 super2xsai
- 32.249 swaprect
- 32.250 swapuv
- 32.251 tblend
- 32.252 telecine
- 32.253 thistogram
- 32.254 threshold
- 32.255 thumbnail
- 32.256 tile
- 32.257 tiltandshift
- 32.258 tinterlace
- 32.259 tmedian
- 32.260 tmidequalizer
- 32.261 tmix
- 32.262 tonemap
- 32.263 tpad
- 32.264 transpose
- 32.265 transpose_npp
- 32.266 trim
- 32.267 unpremultiply
- 32.268 unsharp
- 32.269 untile
- 32.270 uspp
- 32.271 v360
- 32.272 vaguedenoiser
- 32.273 varblur
- 32.274 vectorscope
- 32.275 vidstabdetect
- 32.276 vidstabtransform
- 32.277 vflip
- 32.278 vfrdet
- 32.279 vibrance
- 32.280 vif
- 32.281 vignette
- 32.282 vmafmotion
- 32.283 vstack
- 32.284 w3fdif
- 32.285 waveform
- 32.286 weave, doubleweave
- 32.287 xbr
- 32.288 xcorrelate
- 32.289 xfade
- 32.290 xmedian
- 32.291 xpsnr
- 32.292 xstack
- 32.293 yadif
- 32.294 yadif_cuda
- 32.295 yaepblur
- 32.296 zoompan
- 32.297 zscale
- 33 OpenCL Video Filters
- 33.1 avgblur_opencl
- 33.2 boxblur_opencl
- 33.3 colorkey_opencl
- 33.4 convolution_opencl
- 33.5 erosion_opencl
- 33.6 deshake_opencl
- 33.7 dilation_opencl
- 33.8 nlmeans_opencl
- 33.9 overlay_opencl
- 33.10 pad_opencl
- 33.11 prewitt_opencl
- 33.12 program_opencl
- 33.13 remap_opencl
- 33.14 roberts_opencl
- 33.15 sobel_opencl
- 33.16 tonemap_opencl
- 33.17 unsharp_opencl
- 33.18 xfade_opencl
- 34 VAAPI Video Filters
- 35 Vulkan Video Filters
- 36 QSV Video Filters
- 37 Video Sources
- 37.1 buffer
- 37.2 cellauto
- 37.3 coreimagesrc
- 37.4 ddagrab
- 37.5 gradients
- 37.6 mandelbrot
- 37.7 mptestsrc
- 37.8 frei0r_src
- 37.9 life
- 37.10 perlin
- 37.11 qrencodesrc
- 37.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
- 37.13 openclsrc
- 37.14 sierpinski
- 37.15 zoneplate
- 38 Video Sinks
- 39 Multimedia Filters
- 39.1 a3dscope
- 39.2 abitscope
- 39.3 adrawgraph
- 39.4 agraphmonitor
- 39.5 ahistogram
- 39.6 aphasemeter
- 39.7 avectorscope
- 39.8 bench, abench
- 39.9 concat
- 39.10 ebur128
- 39.11 interleave, ainterleave
- 39.12 latency, alatency
- 39.13 metadata, ametadata
- 39.14 perms, aperms
- 39.15 realtime, arealtime
- 39.16 segment, asegment
- 39.17 select, aselect
- 39.18 sendcmd, asendcmd
- 39.19 setpts, asetpts
- 39.20 setrange
- 39.21 settb, asettb
- 39.22 showcqt
- 39.23 showcwt
- 39.24 showfreqs
- 39.25 showspatial
- 39.26 showspectrum
- 39.27 showspectrumpic
- 39.28 showvolume
- 39.29 showwaves
- 39.30 showwavespic
- 39.31 sidedata, asidedata
- 39.32 spectrumsynth
- 39.33 split, asplit
- 39.34 zmq, azmq
- 40 Multimedia Sources
- 41 External libraries
- 41.1 Alliance for Open Media (AOM)
- 41.2 AMD AMF/VCE
- 41.3 AviSynth
- 41.4 Chromaprint
- 41.5 codec2
- 41.6 dav1d
- 41.7 davs2
- 41.8 uavs3d
- 41.9 Game Music Emu
- 41.10 Intel QuickSync Video
- 41.11 Kvazaar
- 41.12 LAME
- 41.13 LCEVCdec
- 41.14 libilbc
- 41.15 libjxl
- 41.16 libvpx
- 41.17 ModPlug
- 41.18 OpenCORE, VisualOn, and Fraunhofer libraries
- 41.19 OpenH264
- 41.20 OpenJPEG
- 41.21 rav1e
- 41.22 SVT-AV1
- 41.23 TwoLAME
- 41.24 VapourSynth
- 41.25 x264
- 41.26 x265
- 41.27 xavs
- 41.28 xavs2
- 41.29 eXtra-fast Essential Video Encoder (XEVE)
- 41.30 eXtra-fast Essential Video Decoder (XEVD)
- 41.31 ZVBI
- 42 Supported File Formats, Codecs or Features
- 43 See Also
- 44 Authors
1 Synopsis
ffprobe [options] input_url
2 Description
ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion.
For example it can be used to check the format of the container used by a multimedia stream and the format and type of each media stream contained in it.
如果在输入中指定了一个 URL,ffprobe 将尝试打开并探测该 URL 的内容。如果无法打开 URL 或无法将其识别为多媒体文件,则返回一个正退出代码。
如果没有指定输出为offprobe 将写入 stdout。
ffprobe 既可以作为独立应用程序使用,也可以与文本过滤器结合使用,例如进行更复杂的处理,如统计处理或绘图。
选项用于列出 ffprobe 支持的一些格式,或指定显示哪些信息,并设置 ffprobe 将如何显示它。
ffprobe 的输出设计为易于被文本过滤器解析,由一种由所选写入器定义的格式组成,该写入器通过output_format选项指定。
部分可能包含其他嵌套部分,并通过名称(可能与其他部分共享)和一个唯一名称标识。参见sections.
容器或流中存储的元数据标签在相应的 "FORMAT"、"STREAM"、"STREAM_GROUP_STREAM" 或 "PROGRAM_STREAM" 部分中被识别并打印。
3 选项
所有数值选项,除非另有明确说明,接受表示数字的字符串作为输入,并且该字符串后可以跟随一个 SI 单位前缀,例如:'K'、'M' 或 'G'。
如果 SI 单位前缀后附加 'i',则完整前缀将被解释为基于 1024 的二进制倍数单位前缀,而不是基于 1000 的倍数。在 SI 单位前缀后附加 'B' 会将值乘以 8。例如,可以使用像 'KB'、'MiB'、'G' 和 'B' 作为数字后缀。
不接受参数的选项是布尔选项,并将相应的值设置为真。可以通过在选项名称前加前缀 "no" 将其设置为假。例如,使用 "-nofoo" 将布尔选项名称为 "foo" 的值设置为假。
接受参数的选项支持一种特殊语法,其中命令行上给定的参数被解释为文件的路径,实际的参数值将从该文件加载。要使用此功能,请在选项名称前立即添加一个正斜杠 '/'(在前导破折号之后)。例如:
ffmpeg -i INPUT -/filter:v filter.script OUTPUT
将从名为的文件加载过滤图描述filter.script.
3.1 流说明符
某些选项是按流应用的,例如比特率或编解码器。流说明符用于精确指定某个选项属于的流。
流说明符通常是附加到选项名称,并以冒号与其分隔的字符串。例如:-codec:a:1 ac3
包含a:1
流说明符,匹配第二个音频流。因此,它会为第二个音频流选择 ac3 编解码器。
一个流说明符可以匹配多个流,从而使该选项应用于所有匹配的流。例如,其中的流说明符-b:a 128k
匹配所有音频流。
空的流说明符匹配所有流。例如:-codec copy
或-codec: copy
将复制所有流而不重新编码。
流说明符可能的形式包括:
- stream_index
匹配具有该索引的流。例如:
-threads:1 4
将为第二个流设置线程数为 4。如果stream_index用作附加流说明符(参见下文),则它选择stream_index匹配流中的流编号。流编号基于 libavformat 检测到的流顺序,除非还指定了流组说明符或节目 ID。在这种情况下,它基于组或节目中的流顺序。- stream_type[:additional_stream_specifier]
stream_type是以下之一:'v' 或 'V' 表示视频,'a' 表示音频,'s' 表示字幕,'d' 表示数据,以及 't' 表示附件。'v' 匹配所有视频流,'V' 仅匹配不是附加图片、视频缩略图或封面艺术的视频流。如果additional_stream_specifier被使用,则它匹配同时具有该类型并匹配additional_stream_specifier的流。否则,它匹配指定类型的所有流。
- g:group_specifier[:additional_stream_specifier]
匹配属于说明符group_specifier所在组的流。如果additional_stream_specifier被使用,则它匹配同时属于该组并匹配additional_stream_specifier. group_specifier可以是以下之一:
- group_index
匹配具有该组索引的流。
- #group_id or i:group_id
匹配具有该组 ID 的流。
- p:program_id[:additional_stream_specifier]
匹配属于节目 IDprogram_id的流。如果additional_stream_specifier被使用,则它匹配同时属于该节目并匹配additional_stream_specifier.
- #stream_id or i:stream_id
通过流 ID(例如 MPEG-TS 容器中的 PID)匹配流。
- m:key[:value]
匹配具有元数据标签key包含指定值的流。如果value未给出,则匹配包含给定标签且具有任何值的流。
- disp:dispositions[:additional_stream_specifier]
匹配具有给定配置(disposition)的流。dispositions是一个或多个配置(dispositions)列表(如通过-dispositions选项打印)用 '+' 连接。
- u
匹配具有可用配置的流,编解码器必须已定义,且诸如视频尺寸或音频采样率等关键信息必须已存在。
注意,在
ffmpeg
中,仅对元数据进行匹配时会正常适用输入文件。
3.2 通用选项
这些选项在 ff* 工具中是共享的。
- -L
显示许可证。
- -h, -?, -help, --help [arg]
显示帮助信息。可以指定一个可选参数以打印有关特定条目的帮助。如果未指定参数,仅显示基本(非高级)工具选项。
可能的arg值为:
- long
打印高级工具选项,以及基本工具选项。
- full
打印完整的选项列表,包括编码器、解码器、解复用器、复用器、过滤器等的共享和私有选项。
- decoder=decoder_name
打印有关名为decoder_name的解码器的详细信息。使用-decoders选项获取所有解码器的列表。
- encoder=encoder_name
打印有关名为encoder_name的编码器的详细信息。使用-encoders选项获取所有编码器的列表。
- demuxer=demuxer_name
打印有关名为demuxer_name的解复用器的详细信息。使用-formats选项获取所有解复用器和复用器的列表。
- muxer=muxer_name
打印有关名为muxer_name的复用器的详细信息。使用-formats选项获取所有复用器和解复用器的列表。
- filter=filter_name
打印有关名为filter_name的过滤器的详细信息。使用-filters选项获取所有过滤器的列表。
- bsf=bitstream_filter_name
打印有关名为bitstream_filter_name的比特流过滤器的详细信息。使用-bsfs选项获取所有比特流过滤器的列表。
- protocol=protocol_name
打印有关名为protocol_name的协议的详细信息。使用-protocols选项获取所有协议的列表。
- -version
显示版本。
- -buildconf
显示构建配置,每行一个选项。
- -formats
显示可用的格式(包括设备)。
- -demuxers
显示可用的解复用器。
- -muxers
显示可用的复用器。
- -devices
显示可用的设备。
- -codecs
显示 libavcodec 所知的所有编解码器。
注意,在本文件中,“编解码器”一词作为表示媒体比特流格式的缩略词加以使用。
- -decoders
显示可用的解码器。
- -encoders
显示所有可用的编码器。
- -bsfs
显示可用的比特流过滤器。
- -protocols
显示可用的协议。
- -filters
显示可用的 libavfilter 过滤器。
- -pix_fmts
显示可用的像素格式。
- -sample_fmts
显示可用的采样格式。
- -layouts
显示通道名称和标准通道布局。
- -dispositions
显示流的 dispositions。
- -colors
显示可识别的颜色名称。
- -sources device[,opt1=val1[,opt2=val2]...]
显示输入设备的自动检测源。 某些设备可能提供无法自动检测的系统相关源名称。 返回的列表不能保证始终完整。
ffmpeg -sources pulse,server=192.168.0.4
- -sinks device[,opt1=val1[,opt2=val2]...]
显示输出设备的自动检测接收端。 某些设备可能提供无法自动检测的系统相关接收端名称。 返回的列表不能保证始终完整。
ffmpeg -sinks pulse,server=192.168.0.4
- -loglevel [flags+]loglevel | -v [flags+]loglevel
设置库使用的日志记录级别和标志。
可选的flags前缀可以包含以下值:
- ‘repeat’
表示不要将重复的日志输出压缩为第一行,“上次消息重复 n 次”这行将被省略。
- ‘level’
表示日志输出应在每条消息行前加上
[level]
前缀。这可以作为日志上色的替代方法,例如,将日志转储到文件时。
标志也可以单独使用,通过在其前加上 '+' 或 '-' 前缀以设置/重置单个标志,而不影响其他flags或更改loglevel。在设置flags和loglevel时,最后一个flags值和loglevel.
loglevel是一个字符串或包含以下值之一的数字:
- ‘quiet, -8’
什么也不显示;保持安静。
- ‘panic, 0’
仅显示可能导致程序崩溃的致命错误,例如断言失败。目前未用于任何情况。
- ‘fatal, 8’
仅显示致命错误。这些是进程绝对无法继续的错误。
- ‘error, 16’
显示所有错误,包括可以恢复的错误。
- ‘warning, 24’
显示所有警告和错误。任何与可能不正确或意外事件有关的消息都会显示。
- ‘info, 32’
在处理过程中显示信息消息。这是警告和错误的补充信息。这是默认值。
- ‘verbose, 40’
与
info
相同,但更加详细。- ‘debug, 48’
显示所有内容,包括调试信息。
- ‘trace, 56’
例如,要启用重复日志输出,添加
level
前缀,并将loglevel设置为verbose
:ffmpeg -loglevel repeat+level+verbose -i input output
另一个示例,启用重复日志输出而不影响当前
level
前缀标志或loglevel:ffmpeg [...] -loglevel +repeat
默认情况下,程序日志记录到 stderr。如果终端支持颜色,错误和警告会使用颜色标志。日志着色可通过设置环境变量
AV_LOG_FORCE_NOCOLOR
禁用,或者设置环境变量AV_LOG_FORCE_COLOR
.- -report
将完整的命令行和日志记录输出转储到名为
program-YYYYMMDD-HHMMSS.log
的文件中。 此文件可以用于错误报告。 它还意味着-loglevel debug
.设置环境变量
FFREPORT
为任何值都会产生同样的效果。如果值是一个以 ':' 分隔的键=值序列,这些选项会影响报告;如果值包含特殊字符或分隔符 ':'(参见 ffmpeg-utils 手册中的“引用和转义”部分),选项值必须进行转义。以下选项被识别:
- file
设置要用于报告的文件名;
%p
被扩展为程序的名称,%t
被扩展为时间戳,%%
被扩展为纯%
- level
使用数值设置日志冗长级别(参见
-loglevel
).
例如,输出报告到名为ffreport.log使用日志级别
32
(日志级别的别名info
):FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
解析环境变量中的错误不会致命,并且不会出现在报告中。
- -hide_banner
禁止打印横幅。
所有 FFmpeg 工具通常会显示版权声明、构建选项和库版本。此选项可用于禁止打印这些信息。
- -cpuflags flags (全局)
允许设置和清除 CPU 标志。此选项仅供测试使用。除非您确切了解自己在做什么,否则不要使用它。
ffmpeg -cpuflags -sse+mmx ... ffmpeg -cpuflags mmx ... ffmpeg -cpuflags 0 ...
此选项的可能标志为:
- ‘x86’
- ‘mmx’
- ‘mmxext’
- ‘sse’
- ‘sse2’
- ‘sse2slow’
- ‘sse3’
- ‘sse3slow’
- ‘ssse3’
- ‘atom’
- ‘sse4.1’
- ‘sse4.2’
- ‘avx’
- ‘avx2’
- ‘xop’
- ‘fma3’
- ‘fma4’
- ‘3dnow’
- ‘3dnowext’
- ‘bmi1’
- ‘bmi2’
- ‘cmov’
- ‘ARM’
- ‘armv5te’
- ‘armv6’
- ‘armv6t2’
- ‘vfp’
- ‘vfpv3’
- ‘neon’
- ‘setend’
- ‘AArch64’
- ‘armv8’
- ‘vfp’
- ‘neon’
- ‘PowerPC’
- ‘altivec’
- ‘Specific Processors’
- ‘pentium2’
- ‘pentium3’
- ‘pentium4’
- ‘k6’
- ‘k62’
- ‘athlon’
- ‘athlonxp’
- ‘k8’
- -cpucount 计数 (全局)
覆盖 CPU 数量检测。此选项仅供测试使用。除非您确切了解自己在做什么,否则不要使用它。
ffmpeg -cpucount 2
- -max_alloc 字节
设置 FFmpeg 的分配函数在堆上分配块的最大大小限制。在使用此选项时务必小心。如果您不了解这样做的后果,请不要使用默认值(INT_MAX)。
3.3 AVOptions
这些选项直接由 libavformat、libavdevice 和 libavcodec 库提供。要查看可用 AVOptions 的列表,请使用-help选项。它们分为两类:
- generic
这些选项可以针对任何容器、编解码器或设备进行设置。通用选项列在容器/设备的 AVFormatContext 选项下以及编解码器的 AVCodecContext 选项下。
- private
这些选项特定于给定的容器、设备或编解码器。私有选项列在其对应的容器/设备/编解码器下。
例如,要在 MP3 文件中写入 ID3v2.3 头而不是默认的 ID3v2.4,请使用id3v2_versionMP3 混合器的私有选项:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有编解码器 AVOptions 都是每个流的,因此它们应附有流说明符:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
在上述示例中,多声道音频流被两次映射到输出。第一实例使用编解码器 ac3 和比特率 640k 进行编码。第二实例混合为 2 声道并使用编解码器 aac 进行编码。为其指定的比特率为 128k,使用输出流的绝对索引。
注意:-nooption语法不能用于布尔型 AVOptions,使用-option 0/-option 1.
注意:通过在选项名称前加上 v/a/s 指定每流 AVOptions 的旧的未公开方法现已过时,即将被移除。
3.4 主选项
- -f 格式
强制使用指定格式。
- -unit
显示值的单位。
- -prefix
为显示的值使用 SI 前缀。 除非使用 "-byte_binary_prefix" 选项,否则所有前缀均为十进制。
- -byte_binary_prefix
强制为字节值使用二进制前缀。
- -sexagesimal
为时间值使用性进制格式 HH:MM:SS.MICROSECONDS。
- -pretty
美化显示值的格式,相当于选项 "-unit -prefix -byte_binary_prefix -sexagesimal"。
- -output_format, -of, -print_format writer_name[=writer_options]
设置输出打印格式。
writer_name指定编写器名称,而writer_options指定要传递给编写器的选项。
例如要以 JSON 格式打印输出,请指定:
-output_format json
有关可用输出打印格式的更多详细信息,请参阅以下的 Writers 部分。
- -sections
打印 section 结构和 section 信息,然后退出。输出 并不是为了机器解析。
- -select_streams stream_specifier
仅选择由stream_specifier指定的流。 此选项仅影响与流相关的选项 (例如
show_streams
,show_packets
等)。例如,仅显示音频流,可以使用命令:
ffprobe -show_streams -select_streams a INPUT
仅显示索引为 1 的视频流所属的视频数据包:
ffprobe -show_packets -select_streams v:1 INPUT
- -show_data
显示载荷数据,例如十六进制和 ASCII 转储。与-show_packets结合使用时,将转储数据包的数据。与-show_streams结合使用时,将转储编解码器的额外数据。
转储内容以 "data" 字段形式打印。可能包含换行符。
- -show_data_hash 算法
显示载荷数据的哈希,在-show_packets的数据包和在-show_streams.
- -show_error
中显示编解码器额外数据的哈希。
错误信息打印在名称为"ERROR"的区域中。
- -show_format
展示输入多媒体流的容器格式信息。
所有容器格式信息打印在名为"FORMAT"的区域中。
- -show_format_entry 名称
像-show_format, 但只打印容器格式信息中预计条目
被多次指定。这种情况下 所有指定区域都将展示。
show_entries
用- -show_entries 显示的注册条目
显示的条目需要如下格式
Entries are specified according to the following syntax. section_entries contains a list of section entries separated by
:
. Each section entry is composed by a section name (or unique name), optionally followed by a list of entries local to that section, separated by,
.If section name is specified but is followed by no
=
, all entries are printed to output, together with all the contained sections. Otherwise only the entries specified in the local section entries list are printed. In particular, if=
is specified but the list of local entries is empty, then no entries will be shown for that section.Note that the order of specification of the local section entries is not honored in the output, and the usual display order will be retained.
The formal syntax is given by:
LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES] SECTION_ENTRY ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]] SECTION_ENTRIES ::= SECTION_ENTRY[:SECTION_ENTRIES]
For example, to show only the index and type of each stream, and the PTS time, duration time, and stream index of the packets, you can specify the argument:
packet=pts_time,duration_time,stream_index : stream=index,codec_type
To show all the entries in the section "format", but only the codec type in the section "stream", specify the argument:
format : stream=codec_type
To show all the tags in the stream and format sections:
stream_tags : format_tags
To show only the
title
tag (if available) in the stream sections:stream_tags=title
- -show_packets
Show information about each packet contained in the input multimedia stream.
The information for each single packet is printed within a dedicated section with name "PACKET".
- -show_frames
Show information about each frame and subtitle contained in the input multimedia stream.
The information for each single frame is printed within a dedicated section with name "FRAME" or "SUBTITLE".
- -show_log loglevel
Show logging information from the decoder about each frame according to the value set in loglevel, (see
-loglevel
). This option requires-show_frames
.The information for each log message is printed within a dedicated section with name "LOG".
- -show_streams
Show information about each media stream contained in the input multimedia stream.
Each media stream information is printed within a dedicated section with name "STREAM".
- -show_programs
Show information about programs and their streams contained in the input multimedia stream.
Each media stream information is printed within a dedicated section with name "PROGRAM_STREAM".
- -show_stream_groups
Show information about stream groups and their streams contained in the input multimedia stream.
Each media stream information is printed within a dedicated section with name "STREAM_GROUP_STREAM".
- -show_chapters
Show information about chapters stored in the format.
Each chapter is printed within a dedicated section with name "CHAPTER".
- -count_frames
Count the number of frames per stream and report it in the corresponding stream section.
- -count_packets
Count the number of packets per stream and report it in the corresponding stream section.
- -read_intervals read_intervals
-
Read only the specified intervals. read_intervals must be a sequence of interval specifications separated by ",".
ffprobe
will seek to the interval starting point, and will continue reading from that.Each interval is specified by two optional parts, separated by "%".
The first part specifies the interval start position. It is interpreted as an absolute position, or as a relative offset from the current position if it is preceded by the "+" character. If this first part is not specified, no seeking will be performed when reading this interval.
The second part specifies the interval end position. It is interpreted as an absolute position, or as a relative offset from the current position if it is preceded by the "+" character. If the offset specification starts with "#", it is interpreted as the number of packets to read (not including the flushing packets) from the interval start. If no second part is specified, the program will read until the end of the input.
Note that seeking is not accurate, thus the actual interval start point may be different from the specified position. Also, when an interval duration is specified, the absolute end time will be computed by adding the duration to the interval start point found by seeking the file, rather than to the specified start value.
The formal syntax is given by:
INTERVAL ::= [START|+START_OFFSET][%[END|+END_OFFSET]] INTERVALS ::= INTERVAL[,INTERVALS]
A few examples follow.
- Seek to time 10, read packets until 20 seconds after the found seek
point, then seek to position
01:30
(1 minute and thirty seconds) and read packets until position01:45
.10%+20,01:30%01:45
- Read only 42 packets after seeking to position
01:23
:01:23%+#42
- Read only the first 20 seconds from the start:
%+20
- Read from the start until position
02:30
:%02:30
- Seek to time 10, read packets until 20 seconds after the found seek
point, then seek to position
- -show_private_data, -private
Show private data, that is data depending on the format of the particular shown element. This option is enabled by default, but you may need to disable it for specific uses, for example when creating XSD-compliant XML output.
- -show_program_version
Show information related to program version.
Version information is printed within a section with name "PROGRAM_VERSION".
- -show_library_versions
Show information related to library versions.
Version information for each library is printed within a section with name "LIBRARY_VERSION".
- -show_versions
Show information related to program and library versions. This is the equivalent of setting both -show_program_version and -show_library_versions options.
- -show_pixel_formats
Show information about all pixel formats supported by FFmpeg.
Pixel format information for each format is printed within a section with name "PIXEL_FORMAT".
- -show_optional_fields value
Some writers viz. JSON and XML, omit the printing of fields with invalid or non-applicable values, while other writers always print them. This option enables one to control this behaviour. Valid values are
always
/1
,never
/0
andauto
/-1
. Default is auto.- -bitexact
Force bitexact output, useful to produce output which is not dependent on the specific build.
- -i input_url
Read input_url.
- -o output_url
Write output to output_url. If not specified, the output is sent to stdout.
4 Writers
A writer defines the output format adopted by ffprobe
, and will be
used for printing all the parts of the output.
A writer may accept one or more arguments, which specify the options to adopt. The options are specified as a list of key=value pairs, separated by ":".
All writers support the following options:
- string_validation, sv
Set string validation mode.
The following values are accepted.
- ‘fail’
如果输入中发现无效的字符串 (UTF-8) 序列或代码点,写入器将立即失败。这对于验证输入元数据特别有用。
- ‘ignore’
任何验证错误都会被忽略。这可能会导致输出损坏,特别是使用 json 或 xml 写入器时。
- ‘replace’
写入器将用指定的字符串替代无效的 UTF-8 序列或代码点。string_validation_replacement.
默认值是 ‘replace’.
- string_validation_replacement, svr
设置替代字符串以备string_validation被设置为 ‘replace’.
如果未指定选项,写入器将假定空字符串,即它将从输入字符串中删除无效的序列。
下面描述了当前可用的写入器。
4.1 默认
默认格式。
以以下形式打印每个部分:
[SECTION] key1=val1 ... keyN=valN [/SECTION]
元数据标签以相应的 FORMAT、STREAM、STREAM_GROUP_STREAM 或 PROGRAM_STREAM 部分中的一行形式打印,并以字符串 "TAG:" 为前缀。
下面描述了接受的选项。
- nokey, nk
如果设置为 1,则不打印每个字段的键。默认值为 0。
- noprint_wrappers, nw
如果设置为 1,则不打印部分的页眉和页脚。默认值为 0。
4.2 紧凑型, csv
紧凑型和 CSV 格式。
该csv
写入器等同于compact
,但支持不同的默认值。
每个部分打印在一行中。如果未指定选项,输出格式为:
section|key1=val1| ... |keyN=valN
元数据标签打印在相应的 "format" 或 "stream" 部分。如果打印元数据标签键,则其前缀为字符串 "tag:"。
下面描述了接受的选项。
- item_sep, s
指定在输出行中用于分隔字段的字符。它必须是一个可以打印的字符,默认值是 "|" (对于
csv
写入器,默认值是 ",")。- nokey, nk
如果设置为 1,则不打印每个字段的键。默认值是 0(对于
csv
写入器,默认值是 1)。- escape, e
设置要使用的转义模式,默认为 "c"(对于
csv
写入器,默认为 "csv")。可以假定以下值之一:
- c
执行类似 C 的转义。包含换行符 (‘\n’)、回车符 (‘\r’)、制表符 (‘\t’)、换页符 (‘\f’)、转义字符 (‘\’) 或项目分隔符字符SEP的字符串将使用类似 C 的方式转义,因此换行符将被转换为序列 ‘\n’,回车符转换为 ‘\r’, ‘\’,制表符转换为 ‘\\’,分隔符SEP转换为 ‘\SEP’.
- csv
执行类似于 RFC4180 的 CSV 转义。包含换行符 (‘\n’)、回车符 (‘\r’)、双引号 (‘"’)、或SEP的字符串将用双引号括起来。
- none
不执行转义。
- print_section, p
如果值是
1
,在每行的开头打印部分名称;如果值是0
,则禁用它。默认值为1
.
4.3 平面格式
平板格式。
一种自由格式输出,每行包含明确的 key=value,例如 "streams.stream.3.tags.foo=bar"。输出经过 shell 转义,因此只要分隔符是字母数字字符或下划线(参见sep_char选项),就可以直接嵌入到 sh 脚本中。
下面描述了接受的选项。
- sep_char, s
用于分隔输出字段键中的章节、部分名称、ID 和潜在标签的分隔符字符。
默认值是 ‘.’.
- hierarchical, h
指定是否应该使用分层的部分名称规范。如果设置为 1,并且当前章节中有多个部分,则部分名称将以章节名称为前缀。值为 0 将禁用此行为。
默认值为 1。
4.4 ini
INI 格式输出。
以基于 INI 的格式打印输出。
采用以下约定:
- 所有键和值为 UTF-8
- ‘.’ 是子组分隔符
- 换行符、‘\t’, ‘\f’, ‘\b’ 以及下列字符已被转义
- ‘\’ 是转义字符
- ‘#’ 是注释指示符
- ‘=’ 是键/值分隔符
- ‘:’ 通常被解析为键/值分隔符,但不使用
此写入器接受以key=value键值对的列表形式设置选项,用 ‘:’.
分隔。
- hierarchical, h
指定是否应该使用分层的部分名称规范。如果设置为 1,并且当前章节中有多个部分,则部分名称将以章节名称为前缀。值为 0 将禁用此行为。
默认值为 1。
4.5 json
基于 JSON 格式。
每个部分都以 JSON 表示法打印。
下面描述了接受的选项。
- compact, c
如果设置为 1,启用紧凑输出,即每个部分将打印在一行中。默认值为 0。
有关 JSON 的更多信息,请参见http://www.json.org/.
4.6 xml
基于 XML 格式。
XML 输出在 XML 模式说明文件中描述ffprobe.xsd安装于 FFmpeg 数据目录中。
可以在以下网址获取最新版本的模式:http://www.ffmpeg.org/schema/ffprobe.xsd,这将重定向到提交到 FFmpeg 开发源代码树的最新模式。
注意,仅当未指定特殊的全局输出选项(ffprobe.xsd等)时,生成的输出将符合unit, prefix, byte_binary_prefix, sexagesimal模式。
下面描述了接受的选项。
- fully_qualified, q
如果设置为 1,则指定输出是否应完全限定。默认值为 0。这对于生成可以通过 XSD 文件验证的 XML 文件是必需的。
- xsd_strict, x
如果设置为 1,则执行更多检查以确保输出符合 XSD 标准。默认值为 0。此选项会自动将fully_qualified设置为 1。
有关 XML 格式的更多信息,请参见https://www.w3.org/XML/.
5 时间码
ffprobe
支持时间码提取:
- 从 GOP 中提取 MPEG1/2 时间码,并在视频流细节中可用(-show_streams,参见时间码).
- MOV 时间码从 tmcd 轨道中提取,因此在 tmcd 流元数据中可用(-show_streams,参见TAG:时间码).
- DV、GXF 和 AVI 时间码可在格式元数据中找到(-show_format,参见TAG:时间码).
6 语法
本节记录了 FFmpeg 库和工具采用的语法和格式。
6.1 引用和转义
除非明确指定,FFmpeg 采用以下引用和转义机制。应用以下规则:
- ‘'‘ 和 ‘\’ 是特殊字符(分别用于引用和转义)。此外,根据所用转义和引用的具体语法,还可能有其他特殊字符。
- 通过在特殊字符前加上 ‘\’.
- 将其转义。''被 ‘'’ 括起来的所有字符在解析字符串中都将被字面包含。引用字符 ‘
- ’ 本身不能被引用,因此可能需要关闭引用并转义它。
除非被转义或引用,解析字符串中会移除开头和结尾的空格。
使用命令行或脚本时,根据采用的 shell 语言的语法,可能需要增加第二层转义。av_get_token
函数libavutil/avstring.h中定义
可用于解析根据上述规则引用或转义的标记。tools/ffescapeFFmpeg 源代码树中的工具
6.1.1 例子
- 转义字符串
Crime d'Amour
包含'
特殊字符:Crime d\'Amour
- 上述字符串包含一个引用,因此
'
在引用时需要对其进行转义:'Crime d'\''Amour'
- 使用引用包含前导或尾随空格:
' this string starts and ends with whitespaces '
- 可以混合使用转义和引用:
' The string '\'string\'' is a string '
- 要包含一个字面上的 ‘\’,可以使用转义或引用:
'c:\foo' can be written as c:\\foo
6.2 日期
接受的语法是:
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] now
如果值为 "now",则取当前时间。
时间是本地时间,除非附加了 Z,这种情况视为 UTC。 如果未指定年-月-日部分,则采用当前的年-月-日。
6.3 持续时间
有两种接受的语法来表示时间持续时间。
[-][小时::]分钟::秒:[.小数位:...]
小时表示小时数,分钟最多 2 位,用于表示分钟数,秒最多 2 位,用于表示秒数。小数位表示秒的小数部分。秒:.
或
[-]S+[.小数位:...][s|ms|us]
秒:表示秒数,并带有可选的小数部分小数位。 可选的文字后缀 ‘s’, ‘ms’ 或 ‘us’ 表示将值解释为秒、毫秒或微秒。
在两种表达形式中,可选的 ‘-’ 表示负持续时间。
6.3.1 例子
以下示例都是有效的时间持续时间:
- ‘55’
55 秒
- ‘0.2’
0.2 秒
- ‘200ms’
200 毫秒,即 0.2 秒
- ‘200000us’
200000 微秒,即 0.2 秒
- ‘12:03:45’
12 小时、03 分钟和 45 秒
- ‘23.189’
23.189 秒
6.4 视频大小
指定源视频的大小,可以是形式为宽度x高度的字符串,或者是一个尺寸缩写名。
以下缩写名可识别:
- ‘ntsc’
720x480
- ‘pal’
720x576
- ‘qntsc’
352x240
- ‘qpal’
352x288
- ‘sntsc’
640x480
- ‘spal’
768x576
- ‘film’
352x240
- ‘ntsc-film’
352x240
- ‘sqcif’
128x96
- ‘qcif’
176x144
- ‘cif’
352x288
- ‘4cif’
704x576
- ‘16cif’
1408x1152
- ‘qqvga’
160x120
- ‘qvga’
320x240
- ‘vga’
640x480
- ‘svga’
800x600
- ‘xga’
1024x768
- ‘uxga’
1600x1200
- ‘qxga’
2048x1536
- ‘sxga’
1280x1024
- ‘qsxga’
2560x2048
- ‘hsxga’
5120x4096
- ‘wvga’
852x480
- ‘wxga’
1366x768
- ‘wsxga’
1600x1024
- ‘wuxga’
1920x1200
- ‘woxga’
2560x1600
- ‘wqsxga’
3200x2048
- ‘wquxga’
3840x2400
- ‘whsxga’
6400x4096
- ‘whuxga’
7680x4800
- ‘cga’
320x200
- ‘ega’
640x350
- ‘hd480’
852x480
- ‘hd720’
1280x720
- ‘hd1080’
1920x1080
- ‘2k’
2048x1080
- ‘2kflat’
1998x1080
- ‘2kscope’
2048x858
- ‘4k’
4096x2160
- ‘4kflat’
3996x2160
- ‘4kscope’
4096x1716
- ‘nhd’
640x360
- ‘hqvga’
240x160
- ‘wqvga’
400x240
- ‘fwqvga’
432x240
- ‘hvga’
480x320
- ‘qhd’
960x540
- ‘2kdci’
2048x1080
- ‘4kdci’
4096x2160
- ‘uhd2160’
3840x2160
- ‘uhd4320’
7680x4320
6.5 视频速率
指定视频的帧速率,以每秒生成的帧数表示。必须是以下格式的字符串帧速率_分子/帧速率_分母,整数,浮点数或有效视频帧速率缩写。
以下缩写名称可被识别:
- ‘ntsc’
30000/1001
- ‘pal’
25/1
- ‘qntsc’
30000/1001
- ‘qpal’
25/1
- ‘sntsc’
30000/1001
- ‘spal’
25/1
- ‘film’
24/1
- ‘ntsc-film’
24000/1001
6.6 比率
比率可以表现为一个表达式,或形式为分子:分母.
的字符串。 请注意,具有无限值(如 1/0)或负值的比率被认为是有效的,因此如果您希望排除这些值,需要对返回值进行检查。
未定义的值可以用字符串 "0:0" 表示。
6.7 颜色
它可以是不区分大小写的定义在下表中的颜色名,或者[0x|#]RRGGBB[AA]
RGB 序列后可能带有 @ 和表示透明度组成成分的字符串。
透明度组成字符串可以由 "0x" 开头的十六进制数或介于 0.0 和 1.0 之间的十进制数字组成,表示不透明度(‘0x00’ 或 ‘0.0’ 表示完全透明,‘0xff’ 或 ‘1.0’ 表示完全不透明)。如果未指定透明度部分,则假定为 ‘0xff’。
字符串 ‘random’ 将导致生成随机颜色。
以下颜色名称被识别:
- ‘AliceBlue’
0xF0F8FF
- ‘AntiqueWhite’
0xFAEBD7
- ‘Aqua’
0x00FFFF
- ‘Aquamarine’
0x7FFFD4
- ‘Azure’
0xF0FFFF
- ‘Beige’
0xF5F5DC
- ‘Bisque’
0xFFE4C4
- ‘Black’
0x000000
- ‘BlanchedAlmond’
0xFFEBCD
- ‘Blue’
0x0000FF
- ‘BlueViolet’
0x8A2BE2
- ‘Brown’
0xA52A2A
- ‘BurlyWood’
0xDEB887
- ‘CadetBlue’
0x5F9EA0
- ‘Chartreuse’
0x7FFF00
- ‘Chocolate’
0xD2691E
- ‘Coral’
0xFF7F50
- ‘CornflowerBlue’
0x6495ED
- ‘Cornsilk’
0xFFF8DC
- ‘Crimson’
0xDC143C
- ‘Cyan’
0x00FFFF
- ‘DarkBlue’
0x00008B
- ‘DarkCyan’
0x008B8B
- ‘DarkGoldenRod’
0xB8860B
- ‘DarkGray’
0xA9A9A9
- ‘DarkGreen’
0x006400
- ‘DarkKhaki’
0xBDB76B
- ‘DarkMagenta’
0x8B008B
- ‘DarkOliveGreen’
0x556B2F
- ‘Darkorange’
0xFF8C00
- ‘DarkOrchid’
0x9932CC
- ‘DarkRed’
0x8B0000
- ‘DarkSalmon’
0xE9967A
- ‘DarkSeaGreen’
0x8FBC8F
- ‘DarkSlateBlue’
0x483D8B
- ‘DarkSlateGray’
0x2F4F4F
- ‘DarkTurquoise’
0x00CED1
- ‘DarkViolet’
0x9400D3
- ‘DeepPink’
0xFF1493
- ‘DeepSkyBlue’
0x00BFFF
- ‘DimGray’
0x696969
- ‘DodgerBlue’
0x1E90FF
- ‘FireBrick’
0xB22222
- ‘FloralWhite’
0xFFFAF0
- ‘ForestGreen’
0x228B22
- ‘Fuchsia’
0xFF00FF
- ‘Gainsboro’
0xDCDCDC
- ‘GhostWhite’
0xF8F8FF
- ‘Gold’
0xFFD700
- ‘GoldenRod’
0xDAA520
- ‘Gray’
0x808080
- ‘Green’
0x008000
- ‘GreenYellow’
0xADFF2F
- ‘HoneyDew’
0xF0FFF0
- ‘HotPink’
0xFF69B4
- ‘IndianRed’
0xCD5C5C
- ‘Indigo’
0x4B0082
- ‘Ivory’
0xFFFFF0
- ‘Khaki’
0xF0E68C
- ‘Lavender’
0xE6E6FA
- ‘LavenderBlush’
0xFFF0F5
- ‘LawnGreen’
0x7CFC00
- ‘LemonChiffon’
0xFFFACD
- ‘LightBlue’
0xADD8E6
- ‘LightCoral’
0xF08080
- ‘LightCyan’
0xE0FFFF
- ‘LightGoldenRodYellow’
0xFAFAD2
- ‘LightGreen’
0x90EE90
- ‘LightGrey’
0xD3D3D3
- ‘LightPink’
0xFFB6C1
- ‘LightSalmon’
0xFFA07A
- ‘LightSeaGreen’
0x20B2AA
- ‘LightSkyBlue’
0x87CEFA
- ‘LightSlateGray’
0x778899
- ‘LightSteelBlue’
0xB0C4DE
- ‘LightYellow’
0xFFFFE0
- ‘Lime’
0x00FF00
- ‘LimeGreen’
0x32CD32
- ‘Linen’
0xFAF0E6
- ‘Magenta’
0xFF00FF
- ‘Maroon’
0x800000
- ‘MediumAquaMarine’
0x66CDAA
- ‘MediumBlue’
0x0000CD
- ‘MediumOrchid’
0xBA55D3
- ‘MediumPurple’
0x9370D8
- ‘MediumSeaGreen’
0x3CB371
- ‘MediumSlateBlue’
0x7B68EE
- ‘MediumSpringGreen’
0x00FA9A
- ‘MediumTurquoise’
0x48D1CC
- ‘MediumVioletRed’
0xC71585
- ‘MidnightBlue’
0x191970
- ‘MintCream’
0xF5FFFA
- ‘MistyRose’
0xFFE4E1
- ‘Moccasin’
0xFFE4B5
- ‘NavajoWhite’
0xFFDEAD
- ‘Navy’
0x000080
- ‘OldLace’
0xFDF5E6
- ‘Olive’
0x808000
- ‘OliveDrab’
0x6B8E23
- ‘Orange’
0xFFA500
- ‘OrangeRed’
0xFF4500
- ‘Orchid’
0xDA70D6
- ‘PaleGoldenRod’
0xEEE8AA
- ‘PaleGreen’
0x98FB98
- ‘PaleTurquoise’
0xAFEEEE
- ‘PaleVioletRed’
0xD87093
- ‘PapayaWhip’
0xFFEFD5
- ‘PeachPuff’
0xFFDAB9
- ‘Peru’
0xCD853F
- ‘Pink’
0xFFC0CB
- ‘Plum’
0xDDA0DD
- ‘PowderBlue’
0xB0E0E6
- ‘Purple’
0x800080
- ‘Red’
0xFF0000
- ‘RosyBrown’
0xBC8F8F
- ‘RoyalBlue’
0x4169E1
- ‘SaddleBrown’
0x8B4513
- ‘Salmon’
0xFA8072
- ‘SandyBrown’
0xF4A460
- ‘SeaGreen’
0x2E8B57
- ‘SeaShell’
0xFFF5EE
- ‘Sienna’
0xA0522D
- ‘Silver’
0xC0C0C0
- ‘SkyBlue’
0x87CEEB
- ‘SlateBlue’
0x6A5ACD
- ‘SlateGray’
0x708090
- ‘Snow’
0xFFFAFA
- ‘SpringGreen’
0x00FF7F
- ‘SteelBlue’
0x4682B4
- ‘Tan’
0xD2B48C
- ‘Teal’
0x008080
- ‘Thistle’
0xD8BFD8
- ‘Tomato’
0xFF6347
- ‘Turquoise’
0x40E0D0
- ‘Violet’
0xEE82EE
- ‘Wheat’
0xF5DEB3
- ‘White’
0xFFFFFF
- ‘WhiteSmoke’
0xF5F5F5
- ‘Yellow’
0xFFFF00
- ‘YellowGreen’
0x9ACD32
6.8声道布局
声道布局指定了多声道音频流中各声道的空间分布。为了指定声道布局,FFmpeg使用了一种特殊的语法。
各个声道由下表给出的id标识:
- ‘FL’
前左
- ‘FR’
前右
- ‘FC’
前中
- ‘LFE’
低频
- ‘BL’
后左
- ‘BR’
后右
- ‘FLC’
前左-中
- ‘FRC’
前右-中
- ‘BC’
后中
- ‘SL’
侧左
- ‘SR’
侧右
- ‘TC’
顶部中
- ‘TFL’
顶部前左
- ‘TFC’
顶部前中
- ‘TFR’
顶部前右
- ‘TBL’
顶部后左
- ‘TBC’
顶部后中
- ‘TBR’
顶部后右
- ‘DL’
下混合左
- ‘DR’
下混合右
- ‘WL’
宽左
- ‘WR’
宽右
- ‘SDL’
环绕直接左
- ‘SDR’
环绕直接右
- ‘LFE2’
低频2
标准声道布局组合可以通过使用以下标识符来指定:
- ‘mono’
FC
- ‘stereo’
FL+FR
- ‘2.1’
FL+FR+LFE
- ‘3.0’
FL+FR+FC
- ‘3.0(back)’
FL+FR+BC
- ‘4.0’
FL+FR+FC+BC
- ‘quad’
FL+FR+BL+BR
- ‘quad(side)’
FL+FR+SL+SR
- ‘3.1’
FL+FR+FC+LFE
- ‘5.0’
FL+FR+FC+BL+BR
- ‘5.0(side)’
FL+FR+FC+SL+SR
- ‘4.1’
FL+FR+FC+LFE+BC
- ‘5.1’
FL+FR+FC+LFE+BL+BR
- ‘5.1(side)’
FL+FR+FC+LFE+SL+SR
- ‘6.0’
FL+FR+FC+BC+SL+SR
- ‘6.0(front)’
FL+FR+FLC+FRC+SL+SR
- ‘3.1.2’
FL+FR+FC+LFE+TFL+TFR
- ‘hexagonal’
FL+FR+FC+BL+BR+BC
- ‘6.1’
FL+FR+FC+LFE+BC+SL+SR
- ‘6.1’
FL+FR+FC+LFE+BL+BR+BC
- ‘6.1(front)’
FL+FR+LFE+FLC+FRC+SL+SR
- ‘7.0’
FL+FR+FC+BL+BR+SL+SR
- ‘7.0(front)’
FL+FR+FC+FLC+FRC+SL+SR
- ‘7.1’
FL+FR+FC+LFE+BL+BR+SL+SR
- ‘7.1(wide)’
FL+FR+FC+LFE+BL+BR+FLC+FRC
- ‘7.1(wide-side)’
FL+FR+FC+LFE+FLC+FRC+SL+SR
- ‘5.1.2’
FL+FR+FC+LFE+BL+BR+TFL+TFR
- ‘octagonal’
FL+FR+FC+BL+BR+BC+SL+SR
- ‘cube’
FL+FR+BL+BR+TFL+TFR+TBL+TBR
- ‘5.1.4’
FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR
- ‘7.1.2’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR
- ‘7.1.4’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR
- ‘7.2.3’
FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2
- ‘9.1.4’
FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR
- ‘hexadecagonal’
FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
- ‘downmix’
DL+DR
- ‘22.2’
FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
可以通过“+”分隔的术语序列来指定自定义声道布局。每个术语可以是:
- 单个声道的名称(例如‘FL’, ‘FR’, ‘FC’, ‘LFE’等),每个术语可以包含一个’@’后的自定义名称(例如‘FL@Left’, ‘FR@Right’, ‘FC@Center’, ‘LFE@Low_Frequency’等)
可以通过以下方式指定标准声道布局:
- 单个声道的名称(例如‘FL’, ‘FR’, ‘FC’, ‘LFE’等)
- 标准声道布局的名称(例如‘mono’, ‘stereo’, ‘4.0’, ‘quad’, ‘5.0’等)
- 一个以十进制表示的声道数量,后面加上“c”,产生该声道数量的默认布局(参见该函数
av_channel_layout_default
)。注意,并非所有声道数量都有默认布局。 - 一个以十进制表示的声道数量,后面加上“C”,表示具有指定声道数量的未知声道布局。注意,并非所有声道布局字符串支持未知声道布局。
- 以十六进制“0x”开始的声道布局掩码(参见
AV_CH_*
中的宏。libavutil/channel_layout.h.
在libavutil版本53之前,指定声道数量的尾随字符“c”是可选的,但现在是必需的。同时,声道布局掩码也可以表示为十进制数字(如果且仅如果未后接“c” 或“C”)。
另见函数av_channel_layout_from_string
定义于libavutil/channel_layout.h.
7 表达式求值
在评估算术表达式时,FFmpeg通过一个实现于libavutil/eval.h接口的内部公式求值器实现。
表达式可以包含一元、二元运算符、常量和函数。
两个表达式表达式1和表达式2可以组合形成另一个表达式“表达式1;表达式2". 表达式1和表达式2依次求值,新的表达式的求值结果为表达式2.
以下是可用的二元运算符:+
, -
,
*
, /
, ^
.
以下是一元运算符:+
, -
.
可以用一些内部变量存储和加载中间结果。它们可以通过ld
和st
函数访问,带有索引参数,范围从0到9,用于指定访问的内部变量。
以下是可用的函数:
- abs(x)
计算的进制值x.
- acos(x)
Compute arccosine of x.
- asin(x)
Compute arcsine of x.
- atan(x)
Compute arctangent of x.
- atan2(y, x)
Compute principal value of the arc tangent of y/x.
- between(x, min, max)
Return 1 if x is greater than or equal to min and lesser than or equal to max, 0 otherwise.
- bitand(x, y)
- bitor(x, y)
Compute bitwise and/or operation on x and y.
The results of the evaluation of x and y are converted to integers before executing the bitwise operation.
Note that both the conversion to integer and the conversion back to floating point can lose precision. Beware of unexpected results for large numbers (usually 2^53 and larger).
- ceil(expr)
Round the value of expression expr upwards to the nearest integer. For example, "ceil(1.5)" is "2.0".
- clip(x, min, max)
Return the value of x clipped between min and max.
- cos(x)
Compute cosine of x.
- cosh(x)
Compute hyperbolic cosine of x.
- eq(x, y)
Return 1 if x and y are equivalent, 0 otherwise.
- exp(x)
Compute exponential of x (with base
e
, the Euler’s number).- floor(expr)
Round the value of expression expr downwards to the nearest integer. For example, "floor(-1.5)" is "-2.0".
- gauss(x)
Compute Gauss function of x, corresponding to
exp(-x*x/2) / sqrt(2*PI)
.- gcd(x, y)
Return the greatest common divisor of x and y. If both x and y are 0 or either or both are less than zero then behavior is undefined.
- gt(x, y)
Return 1 if x is greater than y, 0 otherwise.
- gte(x, y)
Return 1 if x is greater than or equal to y, 0 otherwise.
- hypot(x, y)
This function is similar to the C function with the same name; it returns "sqrt(x*x + y*y)", the length of the hypotenuse of a right triangle with sides of length x and y, or the distance of the point (x, y) from the origin.
- if(x, y)
Evaluate x, and if the result is non-zero return the result of the evaluation of y, return 0 otherwise.
- if(x, y, z)
Evaluate x, and if the result is non-zero return the evaluation result of y, otherwise the evaluation result of z.
- ifnot(x, y)
Evaluate x, and if the result is zero return the result of the evaluation of y, return 0 otherwise.
- ifnot(x, y, z)
Evaluate x, and if the result is zero return the evaluation result of y, otherwise the evaluation result of z.
- isinf(x)
Return 1.0 if x is +/-INFINITY, 0.0 otherwise.
- isnan(x)
Return 1.0 if x is NAN, 0.0 otherwise.
- ld(idx)
Load the value of the internal variable with index idx, which was previously stored with st(idx, expr). The function returns the loaded value.
- lerp(x, y, z)
Return linear interpolation between x and y by amount of z.
- log(x)
Compute natural logarithm of x.
- lt(x, y)
Return 1 if x is lesser than y, 0 otherwise.
- lte(x, y)
Return 1 if x is lesser than or equal to y, 0 otherwise.
- max(x, y)
Return the maximum between x and y.
- min(x, y)
Return the minimum between x and y.
- mod(x, y)
Compute the remainder of division of x by y.
- not(expr)
Return 1.0 if expr is zero, 0.0 otherwise.
- pow(x, y)
Compute the power of x elevated y, it is equivalent to "(x)^(y)".
- print(t)
- print(t, l)
Print the value of expression t with loglevel l. If l is not specified then a default log level is used. Return the value of the expression printed.
- random(idx)
Return a pseudo random value between 0.0 and 1.0. idx is the index of the internal variable used to save the seed/state, which can be previously stored with
st(idx)
.To initialize the seed, you need to store the seed value as a 64-bit unsigned integer in the internal variable with index idx.
For example, to store the seed with value
42
in the internal variable with index0
and print a few random values:st(0,42); print(random(0)); print(random(0)); print(random(0))
- randomi(idx, min, max)
Return a pseudo random value in the interval between min and max. idx is the index of the internal variable which will be used to save the seed/state, which can be previously stored with
st(idx)
.To initialize the seed, you need to store the seed value as a 64-bit unsigned integer in the internal variable with index idx.
- root(expr, max)
Find an input value for which the function represented by expr with argument ld(0) is 0 in the interval 0..max.
The expression in expr must denote a continuous function or the result is undefined.
ld(0) is used to represent the function input value, which means that the given expression will be evaluated multiple times with various input values that the expression can access through
ld(0)
. When the expression evaluates to 0 then the corresponding input value will be returned.- round(expr)
Round the value of expression expr to the nearest integer. For example, "round(1.5)" is "2.0".
- sgn(x)
Compute sign of x.
- sin(x)
Compute sine of x.
- sinh(x)
Compute hyperbolic sine of x.
- sqrt(expr)
Compute the square root of expr. This is equivalent to "(expr)^.5".
- squish(x)
Compute expression
1/(1 + exp(4*x))
.- st(idx, expr)
Store the value of the expression expr in an internal variable. idx specifies the index of the variable where to store the value, and it is a value ranging from 0 to 9. The function returns the value stored in the internal variable.
The stored value can be retrieved with
ld(var)
.Note: variables are currently not shared between expressions.
- tan(x)
Compute tangent of x.
- tanh(x)
Compute hyperbolic tangent of x.
- taylor(expr, x)
- taylor(expr, x, idx)
Evaluate a Taylor series at x, given an expression representing the
ld(idx)
-th derivative of a function at 0.When the series does not converge the result is undefined.
ld(idx) is used to represent the derivative order in expr, which means that the given expression will be evaluated multiple times with various input values that the expression can access through
ld(idx)
. If idx is not specified then 0 is assumed.Note, when you have the derivatives at y instead of 0,
taylor(expr, x-y)
can be used.- time(0)
Return the current (wallclock) time in seconds.
- trunc(expr)
Round the value of expression expr towards zero to the nearest integer. For example, "trunc(-1.5)" is "-1.0".
- while(cond, expr)
Evaluate expression expr while the expression cond is non-zero, and returns the value of the last expr evaluation, or NAN if cond was always false.
The following constants are available:
- PI
area of the unit disc, approximately 3.14
- E
exp(1) (Euler’s number), approximately 2.718
- PHI
golden ratio (1+sqrt(5))/2, approximately 1.618
Assuming that an expression is considered "true" if it has a non-zero value, note that:
*
works like AND
+
works like OR
For example the construct:
if (A AND B) then C
is equivalent to:
if(A*B, C)
In your C code, you can extend the list of unary and binary functions, and define recognized constants, so that they are available for your expressions.
The evaluator also recognizes the International System unit prefixes. If ’i’ is appended after the prefix, binary prefixes are used, which are based on powers of 1024 instead of powers of 1000. The ’B’ postfix multiplies the value by 8, and can be appended after a unit prefix or used alone. This allows using for example ’KB’, ’MiB’, ’G’ and ’B’ as number postfix.
The list of available International System prefixes follows, with indication of the corresponding powers of 10 and of 2.
- y
10^-24 / 2^-80
- z
10^-21 / 2^-70
- a
10^-18 / 2^-60
- f
10^-15 / 2^-50
- p
10^-12 / 2^-40
- n
10^-9 / 2^-30
- u
10^-6 / 2^-20
- m
10^-3 / 2^-10
- c
10^-2
- d
10^-1
- h
10^2
- k
10^3 / 2^10
- K
10^3 / 2^10
- M
10^6 / 2^20
- G
10^9 / 2^30
- T
10^12 / 2^40
- P
10^15 / 2^50
- E
10^18 / 2^60
- Z
10^21 / 2^70
- Y
10^24 / 2^80
8 Codec Options
libavcodec 提供一些通用的全局选项,可以在所有编码器和解码器上设置。此外,每个编码器可能支持所谓的私有选项,这些选项是特定于某个编码器的。
有时候,全局选项可能仅影响某一类编码器,而对其他编码器可能无意义或被忽略,因此需要了解所指定选项的含义。此外,有些选项仅用于解码或编码。
可以通过指定 -选项 值在 FFmpeg 工具中设置,也可以在AVCodecContext
选项中显式设置值,或通过libavutil/opt.hAPI 进行程序化使用。
支持选项列表如下:
- b 整数 (编码,音频,视频)
设置比特率(单位:位/秒)。默认值为 200K。
- ab 整数 (编码,音频)
设置音频比特率(单位:位/秒)。默认值为 128K。
- bt 整数 (编码,视频)
设置视频比特率容忍度(单位:位/秒)。在单次编码模式下,比特率容忍度指定了速率控制能偏离目标平均比特率值的范围。这与最小/最大比特率无关。过低的容忍度会对质量产生不利影响。
- flags 标志 (解码/编码,音频,视频,字幕)
设置通用标志。
可能的值:
- ‘mv4’
每个宏块使用 4 个运动矢量(mpeg4)。
- ‘qpel’
使用 1/4 像素运动补偿。
- ‘loop’
使用循环滤波器。
- ‘qscale’
使用固定质量因子。
- ‘pass1’
在第一阶段模式中使用内部两次速率控制。
- ‘pass2’
在第二阶段模式中使用内部两次速率控制。
- ‘gray’
仅解码/编码灰度图像。
- ‘psnr’
在编码过程中设置错误[?]变量。
- ‘truncated’
输入比特流可能被随机截断。
- ‘drop_changed’
不要输出参数与流中第一个解码帧不同的帧。当帧丢弃时,会返回错误 AVERROR_INPUT_CHANGED。
- ‘ildct’
使用隔行扫描 DCT。
- ‘low_delay’
强制低延迟。
- ‘global_header’
将全局标题放置在额外数据中,而不是每个关键帧。
- ‘bitexact’
仅写入与平台、构建和时间无关的数据(除 (I)DCT)。这确保文件和数据校验和在不同平台之间是可重现的并且匹配。其主要用途是用于回归测试。
- ‘aic’
应用 H263 的高级帧内编码/mpeg4 AC 预测。
- ‘ilme’
应用隔行扫描运动估计。
- ‘cgop’
使用闭合 GOP。
- ‘output_corrupt’
输出甚至可能损坏的帧。
- time_base 有理数
设置编解码器时间基。
它是时间的基本单位(以秒为单位),用于表示帧时间戳。对于固定帧率内容,时间基应为
1 / frame_rate
时间戳增量应相同为 1。- g 整数 (编码,视频)
设置图片组 (GOP) 的大小。默认值为 12。
- ar 整数 (解码/编码,音频)
设置音频采样率(单位:Hz)。
- ac 整数 (解码/编码,音频)
设置音频通道数。
- cutoff 整数 (编码,音频)
设置截止带宽。(仅支持选定编码器,请参阅它们各自的文档部分。)
- frame_size 整数 (编码,音频)
设置音频帧大小。
除最后一帧外,每个提交的帧必须包含每通道正好 frame_size 个采样。在解码器设置了 CODEC_CAP_VARIABLE_FRAME_SIZE 的情况下,帧大小不受限制。一些解码器会设置常量帧大小来指示帧大小。
- frame_number 整数
设置帧号。
- delay 整数
- qcomp 浮点数 (编码,视频)
设置视频量化参数缩放压缩(可变比特率 VBR)。它作为速率控制方程中的常数。推荐范围为默认 rc_eq 的 0.0-1.0。
- qblur 浮点数 (编码,视频)
设置视频量化参数缩放模糊(VBR)。
- qmin 整数 (编码,视频)
设置视频量化参数的最小值(VBR)。必须在 -1 到 69 之间,默认值为 2。
- qmax 整数 (编码,视频)
设置视频量化参数的最大值(VBR)。必须在 -1 到 1024 之间,默认值为 31。
- qdiff 整数 (编码,视频)
设置量化参数缩放之间的最大差异(VBR)。
- bf 整数 (编码,视频)
设置非 B 帧之间的最大 B 帧数量。
必须是 -1 到 16 之间的整数。0 表示禁用 B 帧。如果使用值 -1,它将根据编码器自动选择一个值。
默认值为 0。
- b_qfactor 浮点数 (编码,视频)
设置 P 帧和 B 帧之间的 qp 因子。
- codec_tag 整数
- bug 标志 (解码,视频)
解决未自动检测到的编码器错误。
可能的值:
- ‘autodetect’
- ‘xvid_ilace’
Xvid 隔行扫描错误(如果 fourcc==XVIX 自动检测)
- ‘ump4’
(如果 fourcc==UMP4 自动检测)
- ‘no_padding’
填充错误(自动检测)
- ‘amv’
- ‘qpel_chroma’
- ‘std_qpel’
旧标准 qpel(根据 fourcc/版本自动检测)
- ‘qpel_chroma2’
- ‘direct_blocksize’
direct-qpel-blocksize 错误(根据 fourcc/版本自动检测)
- ‘edge’
边缘填充错误(根据 fourcc/版本自动检测)
- ‘hpel_chroma’
- ‘dc_clip’
- ‘ms’
解决微软损坏解码器的各种错误。
- ‘trunc’
截断帧
- strict 整数 (解码/编码,音频,视频)
指定严格遵循标准的程度。
可能的值:
- ‘very’
严格遵守更旧更严格的规格版本或参考软件
- ‘strict’
严格遵守规格中的所有内容,不管后果如何
- ‘normal’
- ‘unofficial’
允许非官方扩展
- ‘experimental’
允许非标准化的实验性内容,实验性(未完成/正在进行/尚未测试完全)解码器和编码器。 注意:实验性解码器可能带来安全风险,请勿用它解码不可信输入。
- b_qoffset 浮点数 (编码,视频)
设置 P 帧和 B 帧之间的 QP 偏移。
- err_detect 标志 (解码,音频,视频)
设置错误检测标志。
可能的值:
- ‘crccheck’
验证嵌入的 CRC
- ‘bitstream’
检测比特流规范偏差
- ‘buffer’
检测不正确的比特流长度
- ‘explode’
在检测到小错误时停止解码
- ‘ignore_err’
忽略解码错误并继续解码。 如果想分析视频内容并希望无论如何都解码所有数据,这个选项非常有用。然而,在有错误的情况下,该选项不会生成令人愉悦的视频。
- ‘careful’
将违反规范但尚未在实际应用中看到的内容视为错误
- ‘compliant’
将所有不符合规范的内容视为错误
- ‘aggressive’
将理智编码器不应做的事情视为错误
- has_b_frames 整数
- block_align 整数
- rc_override_count 整数
- maxrate 整数 (编码,音频,视频)
设置最大比特率容忍度(单位:位/秒)。需要设置 bufsize。
- minrate 整数 (编码,音频,视频)
设置最小比特率容忍度(单位:位/秒)。主要用于设置 CBR 编码。除此之外用处不大。
- bufsize 整数 (编码,音频,视频)
设置速率控制缓冲区大小(单位:位)。
- i_qfactor 浮点数 (编码,视频)
设置 P 帧和 I 帧之间的 QP 因子。
- i_qoffset 浮点数 (编码,视频)
设置 P 帧和 I 帧之间的 QP 偏移。
- dct 整数 (编码,视频)
设置 DCT 算法。
可能的值:
- ‘auto’
自动选择一个好的算法(默认)
- ‘fastint’
快速整数
- ‘int’
精确整数
- ‘mmx’
- ‘altivec’
- ‘faan’
浮点数 AAN DCT
- lumi_mask 浮点数 (编码,视频)
对亮区压缩强于中等区域。
- tcplx_mask 浮点数 (编码,视频)
设置时间复杂性掩码。
- scplx_mask 浮点数 (编码,视频)
设置空间复杂性掩码。
- p_mask 浮点数 (编码,视频)
设置交错掩码。
- dark_mask 浮点数 (编码,视频)
对暗区压缩强于中等区域。
- idct 整数 (解码/编码,视频)
选择 IDCT 实现方案。
可能的值:
- ‘auto’
- ‘int’
- ‘simple’
- ‘simplemmx’
- ‘simpleauto’
自动选择一种与简单方案兼容的 IDCT
- ‘arm’
- ‘altivec’
- ‘sh4’
- ‘simplearm’
- ‘simplearmv5te’
- ‘simplearmv6’
- ‘simpleneon’
- ‘xvid’
- ‘faani’
浮点数 AAN IDCT
- slice_count 整数
- ec 标志 (解码,视频)
设置错误隐藏策略。
可能的值:
- ‘guess_mvs’
迭代运动矢量(MV)搜索(慢)
- ‘deblock’
对损坏的宏块使用强去块滤波
- ‘favor_inter’
偏向于预测上一帧而非当前帧
- bits_per_coded_sample 整数
- aspect 有理数 (编码,视频)
设置采样长宽比(SAR)。
- sar 有理数 (编码,视频)
设置采样长宽比(SAR)。别名为长宽比.
- debug 标志 (解码/编码,音频,视频,字幕)
打印特定的调试信息。
可能的值:
- ‘pict’
图像信息
- ‘rc’
速率控制
- ‘bitstream’
- ‘mb_type’
宏块(MB)类型
- ‘qp’
逐块量化参数(QP)
- ‘dct_coeff’
- ‘green_metadata’
显示即将来临的帧、GOP 或特定时长的复杂度元数据。
- ‘skip’
- ‘startcode’
- ‘er’
错误识别
- ‘mmco’
内存管理控制操作(H.264)
- ‘bugs’
- ‘buffers’
图片缓冲区分配
- ‘thread_ops’
线程操作
- ‘nomc’
跳过运动补偿
- cmp 整数 (编码,视频)
设置全像素运动估计比较函数。
可能的值:
- ‘sad’
绝对差值之和,快速(默认)
- ‘sse’
平方误差之和
- ‘satd’
绝对 Hadamard 变换差值之和
- ‘dct’
绝对 DCT 变换差值之和
- ‘psnr’
量化误差平方和(避免,低质量)
- ‘bit’
块所需比特数
- ‘rd’
速率失真优化,慢
- ‘zero’
0
- ‘vsad’
绝对纵向差值之和
- ‘vsse’
纵向平方差值之和
- ‘nsse’
噪声保持平方差值
- ‘w53’
5/3 小波,仅用于 snow
- ‘w97’
9/7 小波,仅用于 snow
- ‘dctmax’
- ‘chroma’
- subcmp 整数 (编码,视频)
设置亚像素运动估计比较函数。
可能的值:
- ‘sad’
绝对差值之和,快速(默认)
- ‘sse’
平方误差之和
- ‘satd’
绝对 Hadamard 变换差值之和
- ‘dct’
绝对 DCT 变换差值之和
- ‘psnr’
量化误差平方和(避免,低质量)
- ‘bit’
块所需比特数
- ‘rd’
速率失真优化,慢
- ‘zero’
0
- ‘vsad’
绝对纵向差值之和
- ‘vsse’
纵向平方差值之和
- ‘nsse’
噪声保持平方差值
- ‘w53’
5/3 小波,仅用于 snow
- ‘w97’
9/7 小波,仅用于 snow
- ‘dctmax’
- ‘chroma’
- mbcmp 整数 (编码,视频)
设置宏块比较函数。
可能的值:
- ‘sad’
绝对差值之和,快速(默认)
- ‘sse’
平方误差之和
- ‘satd’
绝对 Hadamard 变换差值之和
- ‘dct’
绝对 DCT 变换差值之和
- ‘psnr’
量化误差平方和(避免,低质量)
- ‘bit’
块所需比特数
- ‘rd’
速率失真优化,慢
- ‘zero’
0
- ‘vsad’
绝对纵向差值之和
- ‘vsse’
纵向平方差值之和
- ‘nsse’
噪声保持平方差值
- ‘w53’
5/3 小波,仅用于 snow
- ‘w97’
9/7 小波,仅用于 snow
- ‘dctmax’
- ‘chroma’
- ildctcmp 整数 (编码,视频)
设置隔行扫描 DCT 比较函数。
可能的值:
- ‘sad’
绝对差值之和,快速(默认)
- ‘sse’
平方误差之和
- ‘satd’
绝对 Hadamard 变换差值之和
- ‘dct’
绝对 DCT 变换差值之和
- ‘psnr’
量化误差平方和(避免,低质量)
- ‘bit’
块所需比特数
- ‘rd’
速率失真优化,慢
- ‘zero’
0
- ‘vsad’
绝对纵向差值之和
- ‘vsse’
纵向平方差值之和
- ‘nsse’
噪声保持平方差值
- ‘w53’
5/3 小波,仅用于 snow
- ‘w97’
9/7 小波,仅用于 snow
- ‘dctmax’
- ‘chroma’
- dia_size 整数 (编码,视频)
设置用于运动估计的菱形类型和大小。
- ‘(1024, INT_MAX)’
全运动估计(最慢)
- ‘(768, 1024]’
umh 运动估计
- ‘(512, 768]’
hex 运动估计
- ‘(256, 512]’
l2s 菱形运动估计
- ‘[2,256]’
var 菱形运动估计
- ‘(-1, 2)’
小菱形运动估计
- ‘-1’
搞笑菱形运动估计
- ‘(INT_MIN, -1)’
sab 菱形运动估计
- last_pred 整数 (编码,视频)
设置来自上一帧的运动预测器数量。
- precmp 整数 (编码,视频)
设置预运动估计比较函数。
可能的值:
- ‘sad’
绝对差值之和,快速(默认)
- ‘sse’
平方误差之和
- ‘satd’
绝对 Hadamard 变换差值之和
- ‘dct’
绝对 DCT 变换差值之和
- ‘psnr’
量化误差平方和(避免,低质量)
- ‘bit’
块所需比特数
- ‘rd’
速率失真优化,慢
- ‘zero’
0
- ‘vsad’
绝对纵向差值之和
- ‘vsse’
纵向平方差值之和
- ‘nsse’
噪声保持平方差值
- ‘w53’
5/3 小波,仅用于 snow
- ‘w97’
9/7 小波,仅用于 snow
- ‘dctmax’
- ‘chroma’
- pre_dia_size 整数 (编码,视频)
为运动估计预处理设置菱形类型和大小。
- subq 整数 (编码,视频)
设置亚像素运动估计质量。
- me_range 整数 (编码,视频)
设置运动矢量范围限制(1023用于DivX播放器)。
- global_quality 整数 (编码,音频,视频)
- slice_flags 整数
- mbd 整数 (编码,视频)
设置宏块决策算法(高质量模式)。
可能的值:
- ‘simple’
使用mbcmp(默认)
- ‘bits’
使用最少的位
- ‘rd’
使用最佳速率失真
- rc_init_occupancy 整数 (编码,视频)
设置在开始解码之前加载到RC缓冲区中的位数。
- flags2 标志 (解码/编码,音频,视频,字幕)
-
可能的值:
- ‘fast’
允许非规范兼容的加速技巧。
- ‘noout’
跳过比特流编码。
- ‘ignorecrop’
忽略SPS中的裁剪信息。
- ‘local_header’
将全局标题放在每个关键帧而不是额外数据中。
- ‘chunks’
帧数据可能被拆分为多个块。
- ‘showall’
在第一个关键帧之前显示所有帧。
- ‘export_mvs’
将运动矢量导出到帧侧数据中(参见
AV_FRAME_DATA_MOTION_VECTORS
),对于支持的编解码器。另请参见doc/examples/export_mvs.c.- ‘skip_manual’
不要跳过样本,并将跳过信息导出为帧侧数据。
- ‘ass_ro_flush_noop’
不要在刷新时重置ASS的ReadOrder字段。
- ‘icc_profiles’
从色彩信息标签生成/解析嵌入式ICC配置文件。
- export_side_data 标志 (解码/编码,音频,视频,字幕)
-
可能的值:
- ‘mvs’
将运动矢量导出到帧侧数据中(参见
AV_FRAME_DATA_MOTION_VECTORS
),对于支持的编解码器。另请参见doc/examples/export_mvs.c.- ‘prft’
将编码器生产者参考时间导出到数据包侧数据中(参见
AV_PKT_DATA_PRFT
),对于支持的编解码器。- ‘venc_params’
通过帧侧数据导出视频编码参数(参见
AV_FRAME_DATA_VIDEO_ENC_PARAMS
)。目前支持H.264和VP9。- ‘film_grain’
通过帧侧数据导出电影颗粒参数(参见
AV_FRAME_DATA_FILM_GRAIN_PARAMS
)。目前由AV1解码器支持。
- threads 整数 (解码/编码,视频)
设置使用的线程数量,前提是选定的编解码器实现支持多线程。
可能的值:
- ‘auto, 0’
自动选择线程的数量
默认值是 ‘auto’.
- dc 整数 (编码,视频)
设置intra_dc_precision。
- nssew 整数 (编码,视频)
设置NSSE权重。
- skip_top 整数 (解码,视频)
设置顶部跳过的宏块行数。
- skip_bottom 整数 (解码,视频)
设置底部跳过的宏块行数。
- profile 整数 (编码,音频,视频)
-
设置编码器编解码器配置文件。默认值是 ‘unknown’。编码器特定配置文件记录在相关编码器文档中。
- level 整数 (编码,音频,视频)
-
设置编码器级别。此级别取决于特定的编解码器,可能与配置文件级别对应。默认值设置为 ‘unknown’.
可能的值:
- ‘unknown’
- lowres 整数 (解码,音频,视频)
以1= 1/2, 2=1/4, 3=1/8分辨率进行解码。
- mblmin 整数 (编码,视频)
设置宏块拉格朗日因子的最小值(VBR)。
- mblmax 整数 (编码,视频)
设置宏块拉格朗日因子的最大值(VBR)。
- skip_loop_filter 整数 (解码,视频)
- skip_idct 整数 (解码,视频)
- skip_frame 整数 (解码,视频)
-
根据选项值选择的帧类型,使解码器跳过处理。
skip_loop_filter跳过帧环过滤,skip_idct跳过帧IDCT/反量化,skip_frame跳过解码。
可能的值:
- ‘none’
不丢弃任何帧。
- ‘default’
丢弃无用的帧,例如大小为0的帧。
- ‘noref’
丢弃所有非参考帧。
- ‘bidir’
丢弃所有双向帧。
- ‘nokey’
丢弃除关键帧以外的所有帧。
- ‘nointra’
丢弃除I帧以外的所有帧。
- ‘all’
丢弃所有帧。
默认值是 ‘default’.
- bidir_refine 整数 (编码,视频)
优化双向宏块使用的两个运动矢量。
- keyint_min 整数 (编码,视频)
设置IDR帧之间的最小间隔。
- refs 整数 (编码,视频)
设置用于运动补偿的参考帧。
- trellis 整数 (编码,音频,视频)
设置率失真优化量化。
- mv0_threshold 整数 (编码,视频)
- compression_level 整数 (编码,音频,视频)
- bits_per_raw_sample 整数
- channel_layout 整数 (解码/编码,音频)
- rc_max_vbv_use 浮点数 (编码,视频)
- rc_min_vbv_use 浮点数 (编码,视频)
- color_primaries 整数 (解码/编码,视频)
可能的值:
- ‘bt709’
BT.709
- ‘bt470m’
BT.470 M
- ‘bt470bg’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘film’
电影
- ‘bt2020’
BT.2020
- ‘smpte428’
- ‘smpte428_1’
SMPTE ST 428-1
- ‘smpte431’
SMPTE 431-2
- ‘smpte432’
SMPTE 432-1
- ‘jedec-p22’
JEDEC P22
- color_trc 整数 (解码/编码,视频)
可能的值:
- ‘bt709’
BT.709
- ‘gamma22’
BT.470 M
- ‘gamma28’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘linear’
线性
- ‘log’
- ‘log100’
对数
- ‘log_sqrt’
- ‘log316’
对数平方根
- ‘iec61966_2_4’
- ‘iec61966-2-4’
IEC 61966-2-4
- ‘bt1361’
- ‘bt1361e’
BT.1361
- ‘iec61966_2_1’
- ‘iec61966-2-1’
IEC 61966-2-1
- ‘bt2020_10’
- ‘bt2020_10bit’
BT.2020 - 10 位
- ‘bt2020_12’
- ‘bt2020_12bit’
BT.2020 - 12 位
- ‘smpte2084’
SMPTE ST 2084
- ‘smpte428’
- ‘smpte428_1’
SMPTE ST 428-1
- ‘arib-std-b67’
ARIB STD-B67
- colorspace 整数 (解码/编码,视频)
可能的值:
- ‘rgb’
RGB
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘ycocg’
YCOCG
- ‘bt2020nc’
- ‘bt2020_ncl’
BT.2020 非线性
- ‘bt2020c’
- ‘bt2020_cl’
BT.2020 线性
- ‘smpte2085’
SMPTE 2085
- ‘chroma-derived-nc’
色度派生非线性
- ‘chroma-derived-c’
色度派生线性
- ‘ictcp’
ICtCp
- color_range 整数 (解码/编码,视频)
如果用作输入参数,它是解码器的提示,用来说明输入的色彩范围。 可能的值:
- ‘tv’
- ‘mpeg’
- ‘limited’
MPEG (219*2^(n-8))
- ‘pc’
- ‘jpeg’
- ‘full’
JPEG (2^n-1)
- chroma_sample_location 整数 (解码/编码,视频)
可能的值:
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
- log_level_offset 整数
设置日志等级偏移。
- slices 整数 (编码,视频)
切片数量,用于并行编码。
- thread_type 标志 (解码/编码,视频)
选择使用哪种多线程方法。
使用‘frame’将增加每个线程的解码延迟一帧,因此无法提供未来帧的客户端不应使用。
可能的值:
- ‘slice’
同时解码单帧的多个部分。
使用切片进行多线程仅在视频已用切片编码时有效。
- ‘frame’
同时解码多帧。
默认值是‘slice+frame’.
- audio_service_type 整数 (编码,音频)
设置音频服务类型。
可能的值:
- ‘ma’
主要音频服务
- ‘ef’
效果
- ‘vi’
视障人士
- ‘hi’
听障人士
- ‘di’
对话
- ‘co’
评论
- ‘em’
紧急
- ‘vo’
旁白
- ‘ka’
卡拉OK
- request_sample_fmt 采样格式 (解码,音频)
设置音频解码器首选的采样格式。默认值是
none
.- pkt_timebase 有理数
- sub_charenc 编码 (解码,字幕)
设置输入字幕的字符编码。
- field_order 场序 (视频)
设置/覆盖视频的场序。 可能的值:
- ‘progressive’
逐行扫描视频
- ‘tt’
隔行视频,顶部场先编码并显示
- ‘bb’
隔行视频,底部场先编码并显示
- ‘tb’
隔行视频,顶部先编码,底部先显示
- ‘bt’
隔行视频,底部先编码,顶部先显示
- skip_alpha 布尔值 (解码,视频)
设置为1以禁用处理Alpha(透明)。这类似‘gray’标志在flags选项中跳过色度信息,而不是Alpha信息。默认值是0。
- codec_whitelist 列表 (输入)
以","分隔的允许解码器列表。默认情况下允许所有解码器。
- dump_separator 字符串 (输入)
用于分隔有关流参数在命令行中打印的字段的分隔符。 例如,用换行符和缩进分隔字段:
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg
- max_pixels 整数 (解码/编码,视频)
每图像的最大像素数量。此值可用于避免因大图像导致的内存不足错误。
- apply_cropping 布尔值 (解码,视频)
启用裁剪,如果裁剪参数是所需对齐的左和顶部参数的倍数。如果未达到对齐要求,裁剪将部分应用以保持对齐。 默认值是 1(启用)。 注意:所需的对齐取决于
AV_CODEC_FLAG_UNALIGNED
是否设置以及CPU。AV_CODEC_FLAG_UNALIGNED
不能通过命令行更改。此外,硬件解码器将不会应用左/顶部裁剪。
9 解码器
解码器是FFmpeg中经过配置的元素,允许多媒体流的解码。
配置FFmpeg构建时,所有支持的本地解码器默认启用。需要外部库的解码器必须通过相应的--enable-lib
选项手动启用。您可以使用配置选项列出所有可用解码器--list-decoders
.
您可以使用配置选项禁用所有解码器--disable-decoders
并选择性启用/禁用单个解码器
通过选项--enable-decoder=解码器
/
--disable-decoder=解码器
.
选项-decoders
在ff*工具中将显示启用的解码器列表。
10 视频解码器
以下是当前可用的视频解码器的一些描述。
10.1 AV1
AOMedia Video 1(AV1)解码器。
10.1.1 选项
- operating_point
选择可扩展AV1比特流的操作点(0 - 31)。默认为0。
10.2 HEVC
HEVC(亦称ITU-T H.265或ISO/IEC 23008-2)解码器。
解码器支持MV-HEVC多视图流,最多两个视图。要输出的视图通过向解码器提供视图ID列表来选择(view_ids选项)。此选项可以在解码器初始化之前静态设置,也可以通过get_format()
回调动态设置——适用于视图数量或ID在解码期间动态更改的情况。
默认情况下仅解码基本层。
注意,如果您使用ffmpeg
CLI工具,您应该使用其手册中记录的视图说明符,而非本文档中的选项。
10.2.1 选项
- view_ids (MV-HEVC)
指定要输出的视图ID列表。此选项也可以设置为‘-1’,这样所有在VPS中定义的视图都会被解码和输出。
- view_ids_available (MV-HEVC)
调用者可以通过此选项读取活动VPS中可用的视图ID数组。对于单层视频,该数组为空。
从
get_format()
回调中读取时此选项的值保证准确。它在其他时间也可以被设置(例如打开解码器之后),但此值仅供参考可能不正确(例如流包含多个不同的VPS NALUs)。- view_pos_available (MV-HEVC)
调用者可以通过此选项读取活动VPS中可用的视图位置(左、右或未指定),作为
AVStereo3DView
值。当数组可用时,其元素适用于view_ids_available的对应元素,即view_pos_available[i]
包含ID为view_ids_available[i]
.视图的位置。view_ids_available与
10.3 rawvideo
原始视频解码器。
此解码器解码rawvideo流。
10.3.1 选项
- top 顶部场优先
指定输入视频的假设场类型。
- -1
视频假设为渐进(默认)
- 0
假设底部场优先
- 1
假设顶部场优先
10.4 libdav1d
dav1d AV1解码器。
libdav1d允许libavcodec解码AOMedia Video 1(AV1)编解码器。
配置期间需要libdav1d头文件和库的存在。
显式配置构建时需要--enable-libdav1d
.
10.4.1 选项
libdav1d包装器支持以下选项。
- framethreads
设置解码期间使用的帧线程数量。默认值是0(自动检测)。 对于libdav1d >= 1.0,此选项已弃用将来会被移除。使用
max_frame_delay
选项以及全局选项threads
替代。- tilethreads
设置解码期间使用的切片线程数量。默认值是0(自动检测)。 对于libdav1d >= 1.0,此选项已弃用将来会被移除。使用全局选项
threads
替代。- max_frame_delay
设置解码器可内部缓存的最大帧数量。默认值是0(自动检测)。
- filmgrain
如果位流中有电影颗粒信息,则应用到解码的视频。默认为库的内部默认值。 此选项已弃用,将来会被移除。请参阅全局选项
export_side_data
以导出电影颗粒参数,而不是应用颗粒。- oppoint
选择可扩展AV1比特流的操作点(0 - 31)。默认为库的内部默认值。
- alllayers
输出可扩展AV1比特流的所有空间层。默认值为false。
10.5 libdavs2
AVS2-P2/IEEE1857.4视频解码器封装。
这个解码器允许libavcodec通过davs2库解码AVS2流。
10.6 libuavs3d
AVS3-P2/IEEE1857.10视频解码器。
libuavs3d允许libavcodec解码AVS3流。
在配置过程中需要有libuavs3d的头文件和库。
您需要显式地用以下参数配置构建--enable-libuavs3d
.
10.6.1 选项
libuavs3d封装支持以下选项。
- frame_threads
设置解码过程中使用的帧线程数量。默认值为0(自动检测)。
10.7 libxevd
eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC解码器封装。
这个解码器在配置过程中需要libxevd的头文件和库。 您需要显式地用以下参数配置构建--enable-libxevd.
xevd项目网站地址为https://github.com/mpeg5/xevd.
10.7.1 选项
libxevd封装支持以下选项。 xevd等效选项或值已列出,便于迁移。
要获得更准确和更全面的libxevd选项文档,请执行命令xevd_app --help
或参考libxevd文档。
- threads (threads)
强制使用指定数量的线程
10.8 QSV 解码器
Intel QuickSync视频解码器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。
10.8.1 通用选项
所有qsv解码器支持以下选项。
- async_depth
内部并行深度值,值越高,延迟越高。
- gpu_copy
GPU加速的视频和系统内存之间的复制
- ‘default’
- ‘on’
- ‘off’
10.8.2 HEVC选项
hevc_qsv的额外选项。
- load_plugin
在内部会话中加载的用户插件
- ‘none’
- ‘hevc_sw’
- ‘hevc_hw’
- load_plugins
以冒号分隔的十六进制插件UID列表,用于在内部会话中加载
10.9 v210
未压缩的4:2:2 10位解码器。
10.9.1 选项
- custom_stride
设置v210数据的行大小(字节)。默认值为0(自动检测)。对于无行距的v210(如在BOXX文件中可见)可以使用特殊的-1值。
11 音频解码器
以下是一些当前可用音频解码器的描述。
11.1 ac3
AC-3音频解码器。
此解码器实现了ATSC A/52:2010和ETSI TS 102 366的一部分,以及未公开的RealAudio 3(又称dnet)。
11.1.1 AC-3解码器选项
- -drc_scale value
动态范围缩放因子。应用于AC-3流中的动态范围值的因子。此因子以指数方式应用。默认值为1。 以下是3个值得注意的缩放因子范围:
- drc_scale == 0
禁用DRC。生成全动态范围音频。
- 0 < drc_scale <= 1
启用DRC。应用流DRC值的一部分。 音频重现介于全动态范围和完全压缩之间。
- drc_scale > 1
启用DRC。非对称地应用drc_scale。 响亮的声音完全压缩。弱声音被增强。
11.2 flac
FLAC音频解码器。
此解码器旨在实现Xiph的完整FLAC规范。
11.2.1 FLAC解码器选项
- -use_buggy_lpc
lavc FLAC编码器曾用于生成带有高lpc值的错误流(如默认值)。此选项可以通过使用lavc的旧错误lpc逻辑正确解码这些流。
11.3 ffwavesynth
内部波形合成器。
此解码器根据预定义序列生成波形图案。其用途纯属内部,其接受的数据格式未公开文档化。
11.4 libcelt
libcelt解码器封装。
libcelt允许libavcodec解码Xiph CELT超低延迟音频编解码器。
在配置过程中需要libcelt的头文件和库。
您需要显式地用以下参数配置构建--enable-libcelt
.
11.5 libgsm
libgsm解码器封装。
libgsm允许libavcodec解码GSM全速音频编解码器。
在配置过程中需要libgsm的头文件和库。
您需要显式地用以下参数配置构建--enable-libgsm
.
此解码器支持普通GSM和Microsoft变体。
11.6 libilbc
libilbc解码器封装。
libilbc允许libavcodec解码互联网低比特率编解码器(iLBC)音频编解码器。
在配置过程中需要libilbc的头文件和库。
您需要显式地用以下参数配置构建--enable-libilbc
.
11.6.1 选项
libilbc封装支持以下选项。
- enhance
-
当设置为1时,启用对解码音频的增强。默认值为0(禁用)。
11.7 libopencore-amrnb
libopencore-amrnb解码器封装。
libopencore-amrnb允许libavcodec解码自适应多速窄带音频编解码器。
这要求在配置过程中存在libopencore-amrnb头文件和库。
您需要显式地用以下参数配置构建--enable-libopencore-amrnb
.
FFmpeg有一个AMR-NB的原生解码器,因此用户可以在没有此库的情况下解码AMR-NB。
11.8 libopencore-amrwb
libopencore-amrwb解码器封装。
libopencore-amrwb允许libavcodec解码自适应多速宽带音频编解码器。
这要求在配置过程中存在libopencore-amrwb头文件和库。
您需要显式地用以下参数配置构建--enable-libopencore-amrwb
.
FFmpeg有一个AMR-WB的原生解码器,因此用户可以在没有此库的情况下解码AMR-WB。
11.9 libopus
libopus解码器封装。
libopus允许libavcodec解码Opus交互式音频编解码器。
在配置过程中需要libopus的头文件和库。
您需要显式地用以下参数配置构建--enable-libopus
.
FFmpeg有一个Opus的原生解码器,因此用户可以在没有此库的情况下解码Opus。
12 字幕解码器
12.1 libaribb24
ARIB STD-B24字幕解码器。
实现ARIB STD-B24标准的A和C配置文件。
12.1.1 libaribb24解码器选项
- -aribb24-base-path path
设置libaribb24库的基路径。这用于读取配置文件(用于自定义Unicode转换)以及将非文本符号作为图片转储到该位置。默认未设置。
Unset by default.
- -aribb24-skip-ruby-text boolean
告诉解码器封装跳过包含半高ruby字体的文本块。
默认启用。
12.2 libaribcaption
使用外部libaribcaption库的另一个ARIB STD-B24字幕解码器。libaribcaption库。
实现了日本的ARIB STD-B24标准、巴西ABNT NBR 15606-1以及菲律宾的ISDB-T版本。
在配置过程中需要libaribcaption头文件和库
(https://github.com/xqq/libaribcaption)。
您需要显式地用以下参数配置构建--enable-libaribcaption
。
如果同时启用了libaribb24和libaribcaption,libaribcaption解码器优先。
12.2.1 libaribcaption解码器选项
- -sub_type subtitle_type
指定解码字幕的格式。
- ‘bitmap’
图形图像。
- ‘ass’
ASS格式的文本。
- ‘text’
不带格式的简单文本输出。
默认值为ass与libaribb24解码器相同。 某些当前的播放器(例如mpv)需要ARIB字幕的ASS格式。
- -caption_encoding encoding_scheme
指定输入字幕文本的编码方式。
- ‘auto’
自动检测文本编码(默认)。
- ‘jis’
ARIB STD-B24标准中定义的8位字符JIS编码。 此编码在日本用于ISDB字幕。
- ‘utf8’
ARIB STD-B24标准中定义的UTF-8编码。 此编码在菲律宾用于ISDB-T字幕。
- ‘latin’
ABNT NBR 15606-1中定义的拉丁字符编码。 此编码在南美洲用于SBTVD / ISDB-Tb字幕。
- -font font_name[,font_name2,...]
指定用于字幕渲染的字体族名称列表(用逗号分隔)。bitmap或ass类型的字幕渲染。 仅在ass类型的字幕中使用第一个字体名。
如果未指定,将使用内部定义的默认字体族。
- -ass_single_rect boolean
ARIB STD-B24规范指出,有些字幕可能会同时显示在不同位置(多矩形字幕)。 由于某些播放器(例如旧版mpv)无法正确处理带有多个ASS矩形的单个AV字幕,或者拥有同一开始时间戳下不确定持续时间的多个ASS矩形,您可以通过此选项更改行为,使所有文本显示在单个ASS矩形中。
默认值为false.
如果您的播放器不能正确处理带有多个ASS矩形的AV字幕,请将此选项设置为true或在编译时定义
ASS_SINGLE_RECT=1
以更改默认行为。- -force_outline_text boolean
指定是否始终为所有字符渲染轮廓文本,而不管字符样式的指示。
默认值为false.
- -outline_width number (0.0 - 3.0)
指定轮廓文本的宽度,以相对点为单位。
默认值为1.5.
- -ignore_background boolean
指定是否忽略背景色渲染。
默认值为false.
- -ignore_ruby boolean
指定是否忽略渲染类似ruby的字符(振假名)。
默认值为false.
- -replace_drcs boolean
指定是否将替换的DRCS字符渲染为Unicode字符。
默认值为true.
- -replace_msz_ascii boolean
指定是否将MSZ(中等大小;半宽)全宽的字母数字替换为半宽的字母数字。
默认值为true.
- -replace_msz_japanese boolean
指定是否将某些MSZ(中等大小;半宽)的全宽日语特殊字符替换为半宽字符。
默认值为true.
- -replace_msz_glyph boolean
指定是否在字体支持的情况下将MSZ(中等大小;半宽)字符替换为半宽字形。 此选项适用于使用Adobe-Japan1兼容字体的FreeType或DirectWrite渲染器。 例如:IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、 游哥特体、游明朝体以及明瞭体。
默认值为true.
- -canvas_size image_size
指定渲染字幕的画布分辨率;通常应为输入视频帧的大小。 这仅适用于
-subtitle_type
设置为bitmap.libaribcaption解码器假设以下条件下进行的位图渲染的输入帧大小:
- PROFILE_A :1440 x 1080,SAR(像素宽高比)为4:3
- PROFILE_C :320 x 180,SAR(像素宽高比)为1:1
如果输入视频的实际帧大小与上述假设不匹配,则渲染的字幕可能会失真。 为了避免字幕失真,请添加
-canvas_size
选项以指定实际输入视频大小。请注意,
-canvas_size
选项在视频具有不同的大小但相同的宽高比时不是必需的。 在这种情况下,如果未指定-canvas_size
选项,字幕将根据实际视频大小拉伸或缩放。 如果指定了-canvas_size
选项但大小不同,字幕将按指定大小进行拉伸或缩放,并通过计算得到的SAR进行调整。
12.2.2 libaribcaption解码器使用示例
通过工具显示带有ARIB字幕的MPEG-TS文件:ffplay
工具:
ffplay -sub_type bitmap MPEG.TS
通过工具显示帧大小为1920x1080的MPEG-TS文件:ffplay
工具:
ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS
在转码视频中嵌入ARIB字幕:
ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4
12.3 dvbsub
12.3.1 选项
- compute_clut
- -2
如果流中没有匹配的CLUT,则计算一次clut。
- -1
如果流中没有匹配的CLUT,则计算clut。
- 0
从不计算CLUT
- 1
始终计算CLUT并覆盖流中提供的CLUT。
- dvb_substream
选择dvb子流,如果为-1,则选择所有子流(默认证)。
12.4 dvdsub
此编解码器用于解码DVD中的位图字幕;同样的字幕也可以在VobSub文件对以及一些Matroska文件中找到。
12.4.1 选项
- palette
指定位图使用的全局调色板。当存储在VobSub时,调色板通常在索引文件中指定;在Matroska中,调色板以与VobSub中相同的格式存储在编解码器额外数据中。在DVD中,调色板存储在IFO文件中,因此在从转储的VOB文件读取时不可用。
此选项的格式为包含16个24位十六进制数字(无0x前缀)并以逗号分隔的字符串,例如
0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b
.- ifo_palette
指定用于获取全局调色板的IFO文件。(实验性)
- forced_subs_only
仅解码标记为强制显示的字幕条目。一些标题在同一轨道中同时包含强制和非强制字幕。设置此标志为
1
将仅保留强制字幕。默认值为0
.
12.5 libzvbi-teletext
Libzvbi允许libavcodec解码DVB文本页和DVB字幕。需要在配置期间存在libzvbi头文件和库。您需要显式地配置构建--enable-libzvbi
.
12.5.1 选项
- txt_page
指定解码的文本页号码列表。不符合指定列表的页将被丢弃。您可以使用特殊
*
字符串匹配所有页面,或者subtitle
匹配所有字幕页面。默认值为*。- txt_default_region
设置用于解码的默认字符集,值在0到87之间(请参见ETS 300 706第15节,第32表)。默认值为-1,不覆盖libzvbi默认值。此选项适用于一些不能信号正确字符集的旧版本1.0传输。
- txt_chop_top
丢弃文本页顶部的行。默认值为1。
- txt_format
指定解码字幕的格式。
- bitmap
默认格式,应该用于文本页,因为某些图形和颜色无法在简单文本甚至ASS中表达。
- text
简单基于文本的输出,不带格式。
- ass
经过格式化的ASS输出,字幕页和文本页将以不同风格返回,字幕页被简化为文本,但会尽量保留文本对齐和格式。
- txt_left
生成位图的X偏移量,默认为0。
- txt_top
生成位图的Y偏移量,默认为0。
- txt_chop_spaces
裁剪生成文本中的首尾空格并删除空行。此选项适用于基于文本的字幕,其中可能在行首或行末存在空格,或由于双倍大小的文本字符,在字幕行之间可能出现空行。默认值为1。
- txt_duration
设置解码文本页或字幕的显示持续时间,以毫秒为单位。默认值为-1,表示无限期或直至下一个字幕事件出现。
- txt_transparent
强制生成的文本位图背景透明。默认值为0,表示不透明背景。
- txt_opacity
设置文本背景的透明度(0-255)。如果txt_transparent未设置,它仅影响起始框和结束框之间的字符,通常为字幕。默认值为0,如果txt_transparent已设置,否则为255。
13 比特流过滤器
当您配置FFmpeg构建时,所有支持的比特流过滤器默认情况下会被启用。您可以使用配置选项列出所有可用的过滤器--list-bsfs
.
您可以使用配置选项禁用所有比特流过滤器--disable-bsfs
,并使用选项选择性启用任何比特流过滤器--enable-bsf=BSF
,或者您可以使用选项禁用特定的比特流过滤器--disable-bsf=BSF
.
选项-bsfs
对于ff*工具,将展示当前构建中支持的所有比特流过滤器的列表。
ff*工具具有一个-bsf选项,每个流应用,采用逗号分隔的过滤器列表,其参数在过滤器名称之后以'='连接。
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
以下是当前可用的比特流过滤器及其参数的描述。
13.1 aac_adtstoasc
将MPEG-2/4 AAC ADTS转换为MPEG-4音频特定配置比特流。
此过滤器从MPEG-2/4 ADTS头创建MPEG-4 AudioSpecificConfig并移除ADTS头。
例如,当从原始ADTS AAC或MPEG-TS容器复制AAC流到MP4A-LATM、FLV文件或MOV/MP4文件及相关格式如3GP或M4A时,该过滤器是必需的。请注意,它已自动插入至MP4A-LATM和MOV/MP4及相关格式。
13.2 av1_metadata
修改嵌入到AV1流中的元数据。
- td
在流的所有时间单元中插入或移除时间分隔符OBUs。
- ‘insert’
在每个TU的开头插入一个TD,该TU尚未包含TD。
- ‘remove’
移除每个TU开头的TD(已包含)。
- color_primaries
- transfer_characteristics
- matrix_coefficients
在流中设置颜色描述字段(参见AV1第6.4.2节)。
- color_range
在流中设置颜色范围(参见AV1第6.4.2节;注意,对于使用BT.709主色、sRGB传输特性和恒等(RGB)矩阵系数的流,这无法设置)。
- ‘tv’
有限范围。
- ‘pc’
全范围。
- chroma_sample_position
在流中设置色度采样位置(参见AV1第6.4.2节)。这仅适用于4:2:0流。
- ‘vertical’
左侧位置(与MPEG-2和H.264中的默认值相符)。
- ‘colocated’
左上角位置。
- tick_rate
设置计时信息中的滴答率(time_scale / num_units_in_display_tick)在序列头。
- num_ticks_per_picture
设置每帧图片中的滴答数,以指示流具有固定帧率。 如果tick_rate未设置,则忽略。
- delete_padding
删除Padding OBUs。
13.3 chomp
移除数据包末尾的零填充。
13.4 dca_core
从DCA/DTS流中提取核心,删除扩展部分如DTS-HD。
13.5 dovi_rpu
操纵HEVC/AV1流中的Dolby Vision元数据,可选地启用元数据压缩。
- strip
如果启用,移除流中的所有Dolby Vision元数据(配置记录+RPU数据块)。
- compression
启用的压缩级别。
- ‘none’
没有元数据压缩。
- ‘limited’
有限的元数据压缩方案。应与大多数设备兼容。这是默认值。
- ‘extended’
扩展元数据压缩。设备不必支持该压缩级别。注意当前情况下此级别与“limited”在libavcodec中行为一致。
13.6 dump_extra
将额外数据添加到过滤数据包的开头,除非数据包已以恰当的方式开始并包含尝试添加的额外数据。
- freq
附加参数指定需要过滤的数据包。它接受以下值:
- ‘k’
- ‘keyframe’
将额外数据添加到所有关键数据包
- ‘e’
- ‘all’
将额外数据添加到所有数据包
如果未指定,则假定为“k’.
例如以下ffmpeg
命令强制生成H.264数据包中的全局标题(从而禁用个别数据包标题),但通过向关键数据包添加存储在额外数据中的 header 修正它们:libx264
encoder, but corrects them by adding
the header stored in extradata to the key packets:
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
13.7 dv_error_marker
DV中标记为损坏的块将用指定颜色块替换。
- color
用指定颜色替换损坏块
- sta
一个16位掩码,指定16种可能的错误状态值中的哪些将被替换为彩色块。默认值为0xFFFE,替换所有非0错误状态值。
- ‘ok’
无错误,无掩盖
- ‘err’
错误,无掩盖
- ‘res’
保留
- ‘notok’
错误或掩盖
- ‘notres’
未保留
- ‘Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru’
具体错误状态代码
参见第44-46页或第5.5节http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf
13.8 eac3_core
从E-AC-3流中提取核心,删除额外通道。
13.9 extract_extradata
提取带内的额外数据。
某些编解码器允许长期标题(例如MPEG-2序列标题或H.264/HEVC(VPS/SPS/PPS))通过"带内"传输(即,作为包含编码帧的比特流的一部分)或"带外"传输(例如,在容器层级)。后一种形式在FFmpeg术语中称为"额外数据"。
此比特流过滤器检测带内标题,并使其作为额外数据可用。
- remove
启用此选项后,从比特流中提取的长期标题将被移除。
13.10 filter_units
从流中移除具有某些类型或不具有特定类型的单位。
- pass_types
通过移除所有其他单位来传递类型或类型范围的单位列表。这被指定为带有'|'分隔符的单位类型值或带有'-'范围值的列表。
- remove_types
与pass_types相同,但移除给定集合中的单位,并传递所有其他单位。
pass_types和remove_types使用的类型对应于H.264、HEVC和H.266中的NAL单位类型(nal_unit_type)(参见H.264和HEVC规范中的表7-1或H.266规范中的表5),对应JPEG的标记值(无0xFF前缀)以及MPEG-2的无起始码前缀的起始码(即0x000001后跟的字节)。VP8和VP9中的每个单位都有类型0。
额外数据通过此转换保持不变,但请注意,如果流中包含内联参数集,则输出可能不可用,如果这些内容被移除。
例如,从H.264流中移除所有非VCL NAL单位:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
从H.265流中移除所有AUD、SEI和填充数据:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
从MPEG-2流中移除所有用户数据,包括闭字幕:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
从H264流中移除所有SEI,包括闭字幕:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
从HEVC流中移除所有前缀和后缀SEI,包括闭字幕和动态HDR:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
13.11 hapqa_extract
提取HAPQA文件中的RGB或Alpha部分,无需重新压缩,以便创建HAPQ或HAPAlphaOnly文件。
- texture
指定保留的纹理。
- color
- alpha
将HAPQA转换为HAPQ
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
将HAPQA转换为HAPAlphaOnly
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
13.12 h264_metadata
修改嵌入在H.264流中的元数据。
- aud
在流的所有访问单元中插入或移除AUD NAL单位。
- ‘pass’
- ‘insert’
- ‘remove’
默认值为通过。
- sample_aspect_ratio
在VUI参数中设置流的样本宽高比。参见H.264表E-1。
- overscan_appropriate_flag
设置流是否适合使用过扫描显示(参见H.264第E.2.1节)。
- video_format
- video_full_range_flag
设置流中的视频格式(参见H.264第E.2.1节和表E-2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(参见H.264第E.2.1节以及表E-3、E-4和E-5)。
- chroma_sample_loc_type
在流中设置色度样本位置(参见H.264第E.2.1节以及图E-1)。
- tick_rate
在VUI参数中设置滴答率(time_scale / num_units_in_tick)。这是流中可表示的最小时间单位,大多数情况下代表流的场率(帧率的两倍)。
- fixed_frame_rate_flag
设置流是否具有固定帧率 - 通常这表明帧率正好是滴答率的一半,但确切含义取决于隔行和图片结构(参见H.264第E.2.1节和表E-6)。
- zero_new_constraint_set_flags
在SPS中将constraint_set4_flag和constraint_set5_flag设置为零。这些位在H.264规范的先前版本中是保留的,因此某些硬件解码器要求这些位为零。将它们设置为零的结果仍是有效比特流。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中设置帧裁剪偏移。这些值将在流已经裁剪的情况下替换当前值。
这些字段以像素为单位设置。注意,如果色度被二次采样或流是隔行扫描的(参见 H.264 第 7.4.2.1.1 节),某些尺寸可能无法表示。
- sei_user_data
插入字符串作为 SEI 未注册用户数据。参数必须采用格式UUID+字符串,其中 UUID 是可能用连字符分隔的十六进制数字,字符串可以是任意内容。
例如,‘086f3693-b7b3-4f2c-9653-21492feee5b8+hello’将插入与给定 UUID 关联的字符串“hello”。
- delete_filler
删除填充 NAL 单元和填充 SEI 消息。
- display_orientation
插入、提取或删除显示方向 SEI 消息。 有关语法和语义,请参见 H.264 第 D.1.27 和 D.2.27 节。
- ‘pass’
- ‘insert’
- ‘remove’
- ‘extract’
默认是保留。
插入模式与
rotate
和flip
选项结合使用。任何已有显示方向消息将在插入或移除模式下被删除。 提取模式将显示矩阵作为附加数据添加到数据包。- rotate
设置显示方向 SEI 中的旋转(以逆时针角度表示的度数)。范围是 -360 到 +360。默认值为 NaN。
- flip
设置显示方向 SEI 中的翻转。
- ‘horizontal’
- ‘vertical’
默认是未设置。
- level
在 SPS 中设置级别。参见 H.264 第 A.3 节以及表 A-1 到 A-5。
参数必须是级别名称(例如,‘4.2’), 一个级别 ID 值(例如,‘42’),或者是特殊名称‘auto’, 表示过滤器应尝试从输入流属性猜测级别。
13.13 h264_mp4toannexb
将 H.264 位流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.264 规范的附录 B 中定义的)。
这在某些流格式中是必需的,通常是 MPEG-2 传输流格式(复用器mpegts
).
例如,要将包含 H.264 流的 MP4 文件重新复用到 mpegts 格式,使用ffmpeg
,可以使用命令:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
请注意,该过滤器会自动插入到 MPEG-TS(复用器mpegts
)和原始 H.264(复用器h264
)输出格式。
13.14 h264_redundant_pps
这对某些 Blu-ray 流执行特定修复,这些流包含冗余 PPS,修改了流无关的参数,导致需要正确额外数据的其他转换出现混乱。
13.15 hevc_metadata
修改嵌入 HEVC 流中的元数据。
- aud
在流的所有访问单元中插入或移除 AUD NAL 单元。
- ‘insert’
- ‘remove’
- sample_aspect_ratio
在 VUI 参数中设置流的样本纵横比。
- video_format
- video_full_range_flag
设置流中的视频格式(参见 H.265 第 E.3.1 节和表 E.2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(参见 H.265 第 E.3.1 节和表 E.3、E.4 和 E.5)。
- chroma_sample_loc_type
设置流中的色度样本位置(参见 H.265 第 E.3.1 节和图 E.1)。
- tick_rate
在 VPS 和 VUI 参数中设置时钟频率(time_scale / num_units_in_tick)。与num_ticks_poc_diff_one结合使用,可以设置流中的恒定帧率。注意,当流位于容器中时,可能会被容器参数覆盖。
- num_ticks_poc_diff_one
在 VPS 和 VUI 中设置 poc_proportional_to_timing_flag,并使用此值设置 num_ticks_poc_diff_one_minus1(参见 H.265 第 7.4.3.1 节和 E.3.1 节)。如果未同时设置tick_rate则忽略。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中设置一致性窗口裁剪偏移。这些值将在流已经裁剪的情况下替换当前值。
这些字段以像素为单位设置。注意,如果色度被二次采样(参见 H.265 第 7.4.3.2.1 节),某些尺寸可能无法表示。
- width
- height
设置裁剪后的宽度和高度。
- level
在 VPS 和 SPS 中设置级别。请参见 H.265 第 A.4 节和表 A.6、A.7。
参数必须是级别名称(例如,‘5.1’),一个general_level_idc值(例如,‘153’表示级别 5.1), 或者是特殊名称‘auto’,表示过滤器应尝试从输入流属性中猜测级别。
13.16 hevc_mp4toannexb
将 HEVC/H.265 位流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.265 规范的附录 B 中定义)。
这在某些流格式中是必需的,通常是 MPEG-2 传输流格式(复用器mpegts
).
例如,将包含 HEVC 流的 MP4 文件重新复用到 mpegts 格式,使用ffmpeg
,可以使用命令:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
请注意,该过滤器会自动插入到 MPEG-TS(复用器mpegts
)、原始 HEVC/H.265(复用器h265
或者hevc
)输出格式。
13.17 imxdump
修改比特流以适合 MOV 并可被 Final Cut Pro 解码器使用。此过滤器仅适用于 mpeg2video 编解码器,并可能不适用 Final Cut Pro 7 及更新版本,提供了适当的-tag:v.
例如,要将 30 MB/秒 NTSC IMX 重新混合到 MOV:
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
13.18 mjpeg2jpeg
将 MJPEG/AVI1 数据包转换为完整的 JPEG/JFIF 数据包。
MJPEG 是一种视频编解码器,其中每个视频帧本质上是一个 JPEG 图像。可以无损地提取单个帧,例如通过
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
不幸的是,这些块是不完整的 JPEG 图像,因为它们缺少解码所需的 DHT 段。引用自http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:
Avery Lee 在 2001 年 rec.video.desktop 新闻组中评论说:“MJPEG,或者至少在带有 MJPG 四字符码的 AVI 文件中的 MJPEG,是受限的 JPEG,具有固定的——且被*省略*的——霍夫曼表。JPEG 必须是 YCbCr 色彩空间,必须是 4:2:2,而且必须使用基本的霍夫曼编码,而不是算术或渐进编码……确实可以提取 MJPEG 帧,并使用常规 JPEG 解码器解码它们,但必须在它们前面加上 DHT 段,否则解码器将无法知道如何解压缩数据。所需的确切表在 OpenDML 规范中给出。”
此比特流过滤器修补从 MJPEG 流中提取的帧(携带 AVI1 头 ID 并缺少 DHT 段)的头,以生成完全符合条件的 JPEG 图像。
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg exiftran -i -9 frame*.jpg ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
13.19 mjpegadump
向比特流添加 MJPEG A 头,以启用 Quicktime 的解码。
13.20 mov2textsub
从 MOV 字幕中提取可表示的文本文件,删除每个字幕数据包中的元数据头。
另见text2movsub过滤器。
13.21 mpeg2_metadata
修改嵌入 MPEG-2 流中的元数据。
- display_aspect_ratio
设置流中的显示纵横比。
支持以下固定值:
- 4/3
- 16/9
- 221/100
任何其他值将导致信号为方形像素(参见 H.262 第 6.3.3 节和表 6-3)。
- frame_rate
设置流中的帧速率。这是通过已知值的表结合小的乘数和除数构造的——如果提供的值无法完全表示,将使用最接近的表示值(参见 H.262 第 6.3.3 节和表 6-4)。
- video_format
设置流中的视频格式(参见 H.262 第 6.3.6 节和表 6-6)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(参见 H.262 第 6.3.6 节和表 6-7、6-8 和 6-9)。
13.22 mpeg4_unpack_bframes
解包 DivX 风格的打包 B 帧。
DivX 风格的打包 B 帧不是有效的 MPEG-4,仅是为了解决一个破坏的 Video for Windows 子系统的临时方法。 它们占用更多空间,可能导致轻微的 AV 同步问题,解码需要更多的 CPU 能力(除非播放器有一些解码图片队列来补偿 2,0,2,0 帧每数据包样式)并且如果复制到一个标准容器如 mp4 或 mpeg-ps/ts,可能造成问题,因为 MPEG-4 解码器可能无法解码它们,因为它们不是有效的 MPEG-4。
例如,使用ffmpeg
修复包含 DivX 风格打包 B 帧的 MPEG-4 数据流的 AVI 文件,可以使用命令:
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
13.23 noise
破坏数据包内容或者简单地丢弃数据包而不会损坏容器。可以用于模糊测试或测试误差恢复/隐蔽功能。
参数:
- amount
接受一个表达式,该表达式每个数据包评估以确定该数据包中的字节将被修改的频率。值低于 0 将导致不固定的频率。 默认值为 0,即不进行修改。但是,如果既未指定 amount 又未指定 drop,则 amount 将设置为-1。有关接受的变量,请参见下文。
- drop
接受一个每数据包评估的表达式,其值确定该数据包是否被丢弃。 评估为正值则导致数据包被丢弃。评估为负值则造成它被丢弃的机会变化,约与该值的大小成反比。默认值为 0,即不丢弃。有关接受的变量,请参见下文。
- dropamount
接受一个非负整数,该值分配一个变化的丢弃机会,约与该值成反比。默认值为 0,即不丢弃。此选项保留用于向后兼容,相当于将 drop 设置为具有相同大小的负值,即
dropamount=4
与drop=-4
相同。如果同时指定 drop,则忽略。
两者amount
和drop
接受包含以下变量的表达式:
- ‘n’
数据包的索引,从零开始。
- ‘tb’
数据包时间戳的时间基。
- ‘pts’
数据包的展示时间戳。
- ‘dts’
数据包的解码时间戳。
- ‘nopts’
表示 AV_NOPTS_VALUE 的常量。
- ‘startpts’
流中首次见到的非 AV_NOPTS_VALUE PTS。
- ‘startdts’
流中首次见到的非 AV_NOPTS_VALUE DTS。
- ‘duration’
- ‘d’
数据包持续时间,单位为时间基。
- ‘pos’
输入中的数据包位置;可能为 -1,如果未知或未设置。
- ‘size’
数据包大小,以字节为单位。
- ‘key’
数据包是否被标记为关键帧。
- ‘state’
一个伪随机整数,主要来源于数据包有效载荷的内容。
13.23.1 示例
对每个字节应用修改,但不丢弃任何数据包。
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
丢弃时间戳超过 30s 的非关键帧视频数据包,但不修改其他数据包。
ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
每隔 10 秒丢弃一秒音频,并向其余部分添加一些随机噪声。
ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
13.24 null
此比特流过滤器不进行任何修改地传递数据包。
13.25 pcm_rechunk
重新打包 PCM 音频,使每个数据包包含固定数量的样本或保持固定的每秒数据包速率。这类似于(ffmpeg-filters)asetnsamples 音频过滤器但作用于音频数据包而非音频帧。
- nb_out_samples, n
设置每个输出音频数据包的样本数量。该数量表示每个通道的样本数。默认值为 1024。
- pad, p
如果设置为 1,过滤器将用静默填充最后一个音频数据包,使其与之前数据包含有相同数量的样本(或者大致等于数量,参见frame_rate)。默认值为 1。
- frame_rate, r
此选项使过滤器输出固定每秒数据包数量而不是固定每包样本数量。如果音频采样率不能被帧速率整除,则样本数量不会固定,而是会略有调整,以使每个数据包尽可能靠近帧边界开始。使用此选项优先于nb_out_samples.
您可以通过生成 NTSC 帧速率对应的 48kHz 音频 1602-1601-1602-1601-1602 模式frame_rate选项.
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
13.26 pgs_frame_merge
将以"end of display set"段结束的PGS字幕片段序列合并为单个数据包。
这是某些支持PGS字幕的容器所要求的操作
(复用器matroska
).
13.27 prores_metadata
修改嵌入在prores流中的颜色属性元数据。
- color_primaries
设置颜色原点。 可用值为:
- ‘auto’
保持相同的颜色原点属性(默认)。
- ‘unknown’
- ‘bt709’
- ‘bt470bg’
BT601 625
- ‘smpte170m’
BT601 525
- ‘bt2020’
- ‘smpte431’
DCI P3
- ‘smpte432’
P3 D65
- transfer_characteristics
设置颜色传输。 可用值为:
- ‘auto’
保持相同的传输特性属性(默认)。
- ‘unknown’
- ‘bt709’
BT 601, BT 709, BT 2020
- ‘smpte2084’
SMPTE ST 2084
- ‘arib-std-b67’
ARIB STD-B67
- matrix_coefficients
设置矩阵系数。 可用值为:
- ‘auto’
保持相同的色彩空间属性(默认)。
- ‘unknown’
- ‘bt709’
- ‘smpte170m’
BT 601
- ‘bt2020nc’
为文件的每帧设置Rec709色彩空间
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
为文件的每帧设置混合对数伽马(Hybrid Log-Gamma)参数
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
13.28 remove_extra
从数据包中移除额外数据。
接受以下参数:
- freq
设置要从哪些帧类型移除额外数据。
- ‘k’
仅从非关键帧移除额外数据。
- ‘keyframe’
仅从关键帧移除额外数据。
- ‘e, all’
从所有帧移除额外数据。
13.29 setts
设置数据包中的PTS和DTS。
接受以下参数:
- ts
- pts
- dts
设置PTS、DTS或两者的表达式。
- duration
设置持续时间的表达式。
- time_base
设置输出时间基。
通过eval API评估表达式,并可包含以下常量:
- N
输入数据包的计数。从0开始。
- TS
输入中的解复用时间戳(如果使用
ts
或dts
选项,在使用pts
选项时为显示时间戳)。- POS
数据包在文件中的原始位置;如果当前数据包未定义,则为未定义
- DTS
输入中的解复用时间戳。
- PTS
输入中的显示时间戳。
- DURATION
输入中的持续时间。
- STARTDTS
第一数据包的DTS。
- STARTPTS
第一数据包的PTS。
- PREV_INDTS
前一个输入DTS。
- PREV_INPTS
前一个输入PTS。
- PREV_INDURATION
前一个输入持续时间。
- PREV_OUTDTS
前一个输出DTS。
- PREV_OUTPTS
前一个输出PTS。
- PREV_OUTDURATION
前一个输出持续时间。
- NEXT_DTS
下一个输入DTS。
- NEXT_PTS
下一个输入PTS。
- NEXT_DURATION
下一个输入持续时间。
- TB
流数据包所属的时间基。
- TB_OUT
输出时间基。
- SR
流数据包所属的采样率。
- NOPTS
AV_NOPTS_VALUE常量。
例如,将PTS设为DTS(如果涉及B帧不推荐):
ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv
13.30 showinfo
记录基本数据包信息。主要用于测试、调试和开发。
13.31 text2movsub
将文本字幕转换为MOV字幕(如mov_text
编解码器使用的)并添加元数据头。
另见mov2textsub滤镜。
13.32 trace_headers
记录包含编码流标题(所有高于独立编码块级别的部分)语法元素的跟踪输出。 这对于调试底层流问题非常有用。
支持AV1, H.264, H.265, (M)JPEG, MPEG-2 和VP9,但具体支持的可能会因构建而有所不同。
13.33 truehd_core
从TrueHD流中提取核心数据,去除ATMOS数据。
13.34 vp9_metadata
修改嵌入在VP9流中的元数据。
- color_space
设置帧头中的颜色空间值。请注意,任何设置为RGB的帧都会被隐式地设置为PC范围,并且RGB与配置文件0和2不兼容。
- ‘unknown’
- ‘bt601’
- ‘bt709’
- ‘smpte170’
- ‘smpte240’
- ‘bt2020’
- ‘rgb’
- color_range
设置帧头中的颜色范围值。请注意,颜色空间强加的任何值将优先于此值。
- ‘tv’
- ‘pc’
13.35 vp9_superframe
将VP9不可见(alt-ref)帧重新合并到VP9超级帧中。 修复了分割/分段VP9流的合并问题,其中alt-ref帧与其可见对应部分分离。
13.36 vp9_superframe_split
将VP9超级帧拆分为单独的帧。
13.37 vp9_raw_reorder
给定一个时间戳正确但可能无序的VP9流,插入额外的现有帧显示数据包以校正排序。
14 格式选项
libavformat库提供了一些通用的全局选项,可在所有复用器和解复用器上设置。 此外,每个复用器或解复用器可能支持所谓的私有选项,这些选项是该组件特有的。
选项可以通过选项 设置值FFmpeg工具中进行设置,或者通过具体在AVFormatContext
选项或使用libavutil/opt.hAPI进行编程使用。
以下是支持选项的列表:
- avioflags 标志 (输入/输出)
可能的值:
- ‘direct’
减少缓冲。
- probesize 整数 (输入)
设置探测大小(以字节为单位),即分析数据以获取流信息的大小。 更高的值将允许检测更多信息(如果分散在流中),但会增加延迟。 必须是一个大于或等于32的整数。默认值为5000000。
- max_probe_packets 整数 (输入)
设置探测编解码器时允许缓冲的数据包的最大数量。 默认值为2500个数据包。
- packetsize 整数 (输出)
设置数据包大小。
- fflags 标志
设置格式标志。某些仅适用于有限数量的格式。
输入文件的可能值:
- ‘discardcorrupt’
丢弃损坏的数据包。
- ‘fastseek’
为某些格式启用快速但不准确的搜寻。
- ‘genpts’
如果设置了DTS则生成缺失的PTS。
- ‘igndts’
如果也设置了PTS,则忽略DTS。在PTS设置的情况下,DTS 值被设置为NOPTS。当启用
nofillin
标志时会被忽略。- ‘ignidx’
忽略索引。
- ‘nobuffer’
降低初始输入流分析时缓冲引入的延迟。
- ‘nofillin’
不要填充可以通过严格计算得到的数据包字段中缺失的值。
- ‘noparse’
禁用AVParsers,这需要
+nofillin
支持。- ‘sortdts’
尝试通过DTS对输出数据包进行交织。当前仅对带有索引的AVI格式可用。
输出文件的可能值:
- ‘autobsf’
根据输出格式的需要自动应用比特流过滤器。默认启用。
- ‘bitexact’
仅写入与平台、构建和时间无关的数据。 这确保了文件和数据校验和在不同平台之间可重复并匹配。 主要用于回归测试。
- ‘flush_packets’
立即写出数据包。
- ‘shortest’
在最短流结束时停止复用。 可能需要增加max_interleave_delta以避免在EOF之前冲洗较长的流。
- seek2any 整数 (输入)
在解复用器级别允许定位到非关键帧(如果支持)时,设置为1。 默认值为0。
- analyzeduration 整数 (输入)
指定分析输入的微秒数。 更高的值将使得检测到更精确的信息,但会增加延迟。 默认值为5000000微秒=5秒。
- cryptokey 十六进制字符串 (输入)
设置解密密钥。
- indexmem 整数 (输入)
设置时间戳索引使用的最大内存(每流)。
- rtbufsize 整数 (输入)
设置用于缓冲实时帧的最大内存。
- fdebug 标志 (输入/输出)
打印特定的调试信息。
可能的值:
- ‘ts’
- max_delay 整数 (输入/输出)
设置最大复用或解复用延迟(以微秒为单位)。
- fpsprobesize 整数 (输入)
设置用于探测fps的帧数量。
- audio_preload 整数 (输出)
设置音频数据包应该被提前交错的微秒数。
- chunk_duration 整数 (输出)
为每个块设置微秒数。
- chunk_size 整数 (输出)
为每个块设置字节数。
- err_detect, f_err_detect 标志 (输入)
设置错误检测标志。
f_err_detect
已被弃用,仅应通过ffmpeg
工具使用。可能的值:
- ‘crccheck’
验证嵌入的CRC。
- ‘bitstream’
检测比特流规范偏差。
- ‘buffer’
检测不适当的比特流长度。
- ‘explode’
在检测到轻微错误时中止解码。
- ‘careful’
将违反规范但在实际中未见过的行为视为错误。
- ‘compliant’
将所有规范不合规行为视为错误。
- ‘aggressive’
将一个理智的编码器不应做的事情视为错误。
- max_interleave_delta 整数 (输出)
设置交错的最大缓冲持续时间。 持续这以微秒为单位表示,默认为10000000(10秒)。
为确保所有流都正确交错,libavformat将在实际写入任何数据包之前至少等待每个流具有一个数据包。 当某些流是"稀疏"的(即连续数据包之间存在较大间隔),这可能会导致过多缓冲。
此字段指定复用队列中第一个和最后一个数据包时间戳之间的最大差值, 超过此值,libavformat将输出一个数据包,无论是否为所有流排队了一个数据包。
如果设置为0,libavformat将继续缓冲数据包,直到每个流都有一个数据包为止,无论缓冲数据包间的最大时间戳差是多少。
- use_wallclock_as_timestamps 整数 (输入)
如果设置为1,则使用挂钟作为时间戳。 默认值为0。
- avoid_negative_ts 整数 (输出)
-
可能的值:
- ‘make_non_negative’
调整时间戳以使其为非负值。 另请注意,这仅影响前置负时间戳,而不包括非单调负时间戳。
- ‘make_zero’
调整时间戳以使第一个时间戳为0。
- ‘auto (default)’
在目标格式需要的情况下启用调整。
- ‘disabled’
禁用时间戳调整。
启用调整后,所有输出时间戳都将按相同的量进行调整。 音频、视频和字幕的不同步和相对时间戳差异将保留,与未调整时相比保持一致。
- skip_initial_bytes 整数 (输入)
设置读取头文件和帧之前要跳过的字节数(如果设置为1)。 默认值为0。
- correct_ts_overflow 整数 (输入)
如果设置为1,则纠正单次时间戳溢出。 默认值为1。
- flush_packets 整数 (输出)
在每个数据包之后刷新底层I/O流。 默认值为-1(自动),表示底层协议将自行决定。 1启用,并会降低延迟;0禁用,在某些情况下可能提高I/O吞吐量。
- output_ts_offset 偏移量 (输出)
设置输出时间偏移量。
偏移量必须是时间持续时间规范,详见ffmpeg-utils手册中时间持续时间部分。.
偏移量由复用器添加到输出时间戳。
指定正偏移意味着相应的流毫秒延迟于偏移量中指定的时间持续时间。 默认值为
0
(意味着未应用偏移)。- format_whitelist 列表 (输入)
","分隔的允许解复用器列表。 默认情况下允许所有。
- dump_separator 字符串 (输入)
用于分隔命令行中有关流参数信息字段的分隔符。 例如,用换行符和缩进分隔字段:
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg
- max_streams 整数 (输入)
指定最大流数量。 这可用于拒绝由于流数量过多而需要太多资源的文件。
- skip_estimate_duration_from_pts 布尔值 (输入)
如果需要为文件末尾pts的额外探测,跳过输入持续时间估计。 目前,适用于MPEG-PS和MPEG-TS。
- duration_probesize 整数 (输入)
设置探测输入持续时间时的探测大小(以字节为单位), 当它实际上需要探测文件结尾的PTS时(目前适用于:MPEG-PS和MPEG-TS)。 用于对本身或间接使用更精确的持续时间探测,或通过诸如concat解复用器之类的方式。 典型使用场景为高比特率、大缓冲和音视频内容PTS相同的清洁结尾的MPEG-TSCBR:在此时最后一包视频和音频之间存在较大数据间隔, 需要从中读取大量字节才能获取视频流持续时间。 另一个用例如:默认探测行为只能探测到一个并非流最后一帧的单个视频帧(由于帧重新排序),因此时间持续时间不准确。 设置该选项会对小文件也产生性能影响,因探测碰撞是固定值。 默认行为为广泛适配,不损全时探测流时间,而不以任何代价达到探测目标。
- strict, f_strict 整数 (输入/输出)
指定遵循标准的严格程度。
f_strict
已弃用,仅应通过以下方式使用ffmpeg
工具。可能的值:
- ‘very’
严格遵守较旧、更严格版本的规范或参考软件
- ‘strict’
严格遵守规范中的所有内容,无论后果如何
- ‘normal’
- ‘unofficial’
允许非正式扩展
- ‘experimental’
允许非标准化的实验性功能,包括实验性(未完成/进行中的/未经充分测试的)解码器和编码器。 注意:实验性解码器可能存在安全风险,不要用于解码不受信任的输入。
14.1 格式流说明符
格式流说明符允许选择符合特定属性的一个或多个流。
流说明符的确切语义由以下部分定义avformat_match_stream_specifier()
功能,声明在libavformat/avformat.h头文件中并记录在(ffmpeg)流说明符章节中,位于ffmpeg(1)手册中.
15 解复用器
解复用器是FFmpeg中的可配置元素,可以从特定类型的文件中读取多媒体流。
配置FFmpeg构建时,支持的所有解复用器默认都已启用。可以使用以下配置选项列出所有可用解复用器:--list-demuxers
.
可以使用以下配置选项禁用所有解复用器:--disable-demuxers
,并通过选项有选择地启用单个解复用器--enable-demuxer=DEMUXER
,或通过以下选项禁用--disable-demuxer=DEMUXER
.
选项-demuxers
FF*工具将显示已启用的解复用器列表。使用-formats
查看已启用的解复用器和复用器的组合列表。
以下是一些当前可用解复用器的说明。
15.1 aa
Audible Format 2、3和4解复用器。
此解复用器用于解复用Audible Format 2、3和4 (.aa)文件。
15.2 aac
原始音频数据传输流AAC解复用器。
此解复用器用于解复用包含单个AAC流的ADTS输入以及其中的任何ID3v1/2或APE标签。
15.3 apng
动画便携网络图形解复用器。
此解复用器用于解复用APNG文件。 所有标头除PNG签名外,直到第一个fcTL块为止(但不包括)作为额外数据传输。 帧随后分割为两fcTL块之间或最后一个fcTL与IEND块之间的所有块。
- -ignore_loop bool
如果设置,忽略文件中的循环变量。默认启用。
- -max_fps int
每秒最大帧速率。默认值为0,不限制。
- -default_fps int
文件中未指定时的默认每秒帧速率(0表示尽可能快)。默认值为15。
15.4 asf
高级系统格式解复用器。
此解复用器用于解复用ASF文件和MMS网络流。
- -no_resync_search bool
不要尝试通过寻找某个可选的开始代码来重新同步。
15.5 concat
虚拟连接脚本解复用器。
此解复用器从文本文件中读取文件列表和其他指令,并将它们一个接一个地解复用,就好像它们的所有数据包已经被复用在一起。
文件中的时间戳会调整为第一个文件从0开始,每个后续文件从上一个文件结束的位置开始。请注意,这是在全局范围内完成的,可能会在所有流长度不完全相同时产生间隙。
所有文件必须具有相同的流(相同的编解码器,相同的时间基等)。
每个文件的持续时间用于调整下一个文件的时间戳:如果文件持续时间计算错误(例如,由于使用比特率计算或文件被截断),可能会导致伪影。使用duration
指令可覆盖每个文件中存储的持续时间。
15.5.1 语法
脚本是扩展ASCII文本文件,每行一个指令。 空行、前导空格以及以‘#’开头的行会被忽略。 识别以下指令:
file path
要读取的文件路径;特殊字符和空格必须用反斜杠或单引号进行转义。
之后的所有与文件相关的指令都适用于该文件。
ffconcat version 1.0
识别脚本类型和版本。
为了使 FFmpeg 能自动识别格式,此指令必须完全如实(无额外空格或字节序标记)出现在脚本的第一行。
duration dur
文件的持续时间。 此信息可以从文件中指定;如果文件中的信息不可用或不准确,在此处指定可能更高效或有助于解决问题。
如果为所有文件设置持续时间,则可以在整个连接视频中进行寻找。
inpoint timestamp
文件的进入点。解复用器打开文件时会立即跳转到指定时间戳。 搜索是为了确保所有流在进入点可以成功呈现。
此指令在帧内编码器中效果最佳,因为对非帧内编码器,通常会在实际进入点之前得到额外数据包,并且解码内容很可能包含进入点之前的帧。
对于每个文件,在文件进入点之前的数据包的时间戳将小于文件的计算开始时间戳(第一个文件的时间戳为负),而文件的持续时间(如果未通过
duration
指令指定)将根据其指定的进入点减少。由于可能存在进入点之前的数据包,数据包时间戳在两个连接的文件之间可能会重叠。
outpoint timestamp
文件的结束点。当解复用器在任何流中达到指定的解码时间戳时,它会将其视为文件结束条件,并跳过当前及所有剩余的数据包。
结束点是排他性的;这意味着解复用器不会输出具有解码时间戳大于或等于结束点的数据包。
此指令在帧内编码器和所有流紧密交错的格式中效果最佳。 对于非帧内编码器,通常会得到呈现时间戳晚于结束点的额外数据包,因此解码内容很可能包含结束点之后的帧内容。 如果你的流未紧密交错,你可能未能获得结束点之前所有流的所有数据包,并可能只能解码最早的流直到结束点。
文件的持续时间(如果未通过
duration
指令指定)将根据其指定的结束点减少。file_packet_metadata key=value
文件数据包的元数据。 指定的元数据将应用于每个文件数据包。 可以多次指定此指令以添加多个元数据条目。 此指令已弃用,请使用
file_packet_meta
代替。file_packet_meta key value
文件数据包的元数据。 指定的元数据将应用于每个文件数据包。 可以多次指定此指令以添加多个元数据条目。
option key value
访问、打开和探测文件的选项。 可以多次出现。
stream
在虚拟文件中引入一个流。 随后的所有与流相关的指令都适用于最近引入的流。 必须设置一些流属性以便能够识别子文件中的匹配流。 如果脚本中没有定义流,则会复制第一个文件中的流。
exact_stream_id id
设置流的ID。 如果提供了此指令,将使用子文件中对应ID的字符串。 这对于MPEG-PS (VOB)文件特别有用,因为流的顺序不可靠。
stream_meta key value
流的元数据。 可以多次出现。
stream_codec value
流的编解码器。
stream_extradata hex_string
流的额外数据,以十六进制编码。
chapter id start end
添加一个章节。id是一个唯一标识符,可能是小的和连续的。
15.5.2 选项
此解复用器接受以下选项:
- safe
如果设置为1,拒绝不安全的文件路径和指令。 文件路径被认为安全,如果它不包含协议规范且为相对路径,且所有组件仅包含可移植字符集中的字符(字母、数字、句点、下划线和连字符),且组件开头没有句点。
如果设置为0,则接受任何文件名。
默认值为1。
- auto_convert
如果设置为1,尝试对数据包数据进行自动转换以使流可连接。 默认值为1。
目前,唯一的转换是为MP4格式的H.264流添加 h264_mp4toannexb比特流过滤器。 如果有分辨率变化,这是特别需要的。
- segment_time_metadata
如果设置为1,每个数据包将包含lavf.concat.start_time和lavf.concat.duration数据包元数据值,这些值分别是连接输出中相应文件段的起始时间和持续时间,单位为微秒。只有当根据连接文件已知时,才会设置持续时间元数据。 默认值为0。
15.5.3 示例
- 使用绝对文件名并包含一些注释:
# my first filename file /mnt/share/file-1.wav # my second filename including whitespace file '/mnt/share/file 2.wav' # my third filename including whitespace plus single quote file '/mnt/share/file 3'\''.wav'
- 允许输入格式自动探测,使用安全文件名并设置第一个文件的持续时间:
ffconcat version 1.0 file file-1.wav duration 20.0 file subdir/file-2.wav
15.6 dash
动态自适应流HTTP解复用器。
此解复用器会呈现清单中的所有AVStreams。
通过设置AVStreams的丢弃标志,调用者可以决定
要实际接收哪些流。
每个流以元数据键"id"和"variant_bitrate"
分别镜像id
and bandwidth
中的<Representation>
as metadata keys named "id" and "variant_bitrate" respectively.
15.6.1 选项
此解复用器接受以下选项:
- cenc_decryption_key
16字节密钥,以十六进制形式,用于解密使用ISO通用加密技术加密的文件(CENC/AES-128 CTR;ISO/IEC 23001-7)。
15.7 dvdvideo
DVD视频解复用器,由libdvdnav和libdvdread驱动。
可以直接将DVD标题(具体为顺序PGC)引入转换管道中。 菜单资源,如背景视频或音频, 也可以利用菜单坐标进行解复用(尽力尝试)。 目前不支持搜索功能。
支持块设备(DVD驱动器)、ISO文件和目录结构。
使用-f dvdvideo
激活这些输入中的一种。
此解复用器不包含任何类型的解密代码。 处理加密DVD时需自行解决,不应期望在此事上获得支持。
底层播放由libdvdnav处理,结构解析由libdvdread处理。
FFmpeg必须构建为同时支持GPL库并具有以下配置开关--enable-libdvdnav
和--enable-libdvdread
.
需提供所需的"标题号"或确切PGC/PG坐标信息。 许多开源DVD播放器和工具可以帮助提供此信息。 如果未指定,解复用器会默认为标题1,这适用于许多光盘。 然而,由于格式的灵活性,建议手动检查。 许多光盘采用奇怪的方式进行编制或存在无效标题。
如果输入为真实DVD驱动器,请注意,有些驱动器可能会悄无声息地因读取光盘上的坏扇区失败而返回随机位,这在事实上是损坏的数据。 尤其在老化或损坏的光盘中较为明显。 需要进行第二次传递和完整性检查来检测损坏。 这不是FFmpeg的问题。
15.7.1 背景
DVD-Video 不是传统意义直接可访问的线性容器格式。相反,它允许复杂的程序化播放存储在无头 VOB 文件中的经过精细混合的 MPEG-PS 流。对终端用户而言,这些流被简单地称为“标题”,但实际的逻辑播放顺序由标题内的一个或多个“PGC”(节目组链)定义。PGC 又由多个“PG”(节目)组成,它们是真正的视频片段(对于典型的电影特性来说是按顺序排列的)。PGC 结构、流布局及元数据存储在需要解析的 IFO 文件中。从简单术语来看,PGC 可以看作播放列表。
实际的 DVD 播放器依赖用户通过菜单的 GUI 交互和内部虚拟机驱动解复用方向。通常,用户会通过导航(通过菜单)或自动重定向到他们选择的 PGC。在此过程中以及随后的播放过程中,DVD 播放器的内部虚拟机还会维护状态并执行指令,这些指令可以在播放期间跳转到不同的扇区。这就是为什么需要 libdvdnav,因为简单读取光盘(VOBs)上的 MPEG-PS 数据块在许多情况下不足以生成正确的播放顺序。
许多其他 DVD 结构(一个漫长的主题)在此不会讨论。导航包(NAV packets)尤其由该解复用器处理以建立准确的时间,但不会作为流发出。一个良好的高级理解,请参阅:https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures
15.7.2 选项
此解复用器接受以下选项:
- title 整数
要播放的标题编号。如果pgc和pg未设置,则必须设置。不适用于菜单。默认值是 0(自动),当前仅选择第一个可用标题(标题 1)并通知用户其相关含义。
- chapter_start 整数
要开始的章节或 PTT(标题的一部分)编号。不适用于菜单。默认值是 1。
- chapter_end 整数
要结束的章节或 PTT(标题的一部分)编号。不适用于菜单。默认值是 0,这是一个特殊值,表示在最后一个可能的章节结束。
- angle 整数
视频角度编号,指的是基本上由 VOB 中交织的交替帧组成的额外视频流。不适用于菜单。默认值是 1。
- region 整数
用于播放的区域代码。有些光盘可能使用此代码在不同区域默认播放特定角度。此选项不会影响实际 DVD 驱动器的区域代码(如果用作输入)。不适用于菜单。默认值是 0,“全球”。
- menu 布尔值
解复用菜单资源而不是导航标题。需要菜单的确切坐标(menu_lu, menu_vts, pgc, pg)。默认值是 false。
- menu_lu 整数
要解复用的菜单语言。在 DVD 中,菜单按语言分组。默认值是 0,第一个语言单元。
- menu_vts 整数
菜单所在的 VTS,或者如果是 VMG 菜单(根级),则为 0。默认值是 0,VMG 菜单。
- pgc 整数
与pg一起开始播放的入口 PGC。title的替代设置。title.
- pg 整数
与pgc一起开始播放的入口 PG。title. Chapter markers are not supported at this time. Default is 0, automatically resolve from value of title或从菜单的开头(PG 1)开始。
- preindex 布尔值
启用此选项以获得准确的章节(PTT)标记和时长测量,这需要二次缓慢读取以便从导航包(NAV packets)中索引章节标记时间戳。这对实际光驱而言是额外的非理想工作。建议与存储在硬盘上的 DVD 结构备份一起使用,速度更快。与pgc和pg不兼容。不适用于菜单。默认值是 0 即 false。
- trim 布尔值
跳过开头的填充单元(即长度不足 1 秒的单元)。许多光盘在 PGC 的开头存在填充片段,通常含有用于控制实际 DVD 播放器缓冲速度的垃圾数据,没有其它材料值。不适用于菜单。默认值是 1,即 true。
15.7.3 示例
- 打开来自指定 DVD 结构的标题 3:
ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
- 从指定 DVD 结构的标题 1 打开章节 3-6:
ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
- 从指定 DVD 结构的标题 1 仅打开章节 5:
ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
- 从 VTS 1 的菜单、语言 1、PGC 1 开始在 PG 1 解复用菜单:
ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
15.8 ea
电子艺界多媒体格式解复器。
此格式被多款电子艺界游戏使用。
15.8.1 选项
- merge_alpha 布尔值
-
通常 VP6 透明度通道(若存在)作为第二个视频流返回,通过设置此选项可以使解复器返回包含透明度通道在内的单一视频流。
15.9 imf
互操作主格式解复器。
此解复器呈现 IMF 组合中发现的音频和视频流,如SMPTE ST 2067-2.
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
如果-assetmaps
未指定,解复器将在 CPL 同一个目录中查找名为ASSETMAP.xml的文件。
15.10 flv, live_flv, kux
Adobe Flash 视频格式解复器。
此解复器用于解复 FLV 文件和 RTMP 网络流。如果是实时网络流,强制格式时可以使用 live_flv 选项而不是 flv,以应对时间戳中断。 kux 是用在优酷平台上的 flv 变种。
ffmpeg -f flv -i myfile.flv ... ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
- -flv_metadata 布尔值
根据 onMetaData 数组内容分配流。
- -flv_ignore_prevtag 布尔值
忽略前一个标签值的大小。
- -flv_full_metadata 布尔值
输出整个 OnMetaData 内容。
15.11 gif
动画 GIF 解复器。
它接受以下选项:
- min_delay
设置帧之间的最小有效延迟(以百分之一秒为单位)。范围为 0 至 6000。默认值是 2。
- max_gif_delay
设置帧之间的最大有效延迟(以百分之一秒为单位)。范围为 0 至 65535。默认值是 65535(将近十一分钟),指定的最大允许值。
- default_delay
设置帧之间的默认延迟(以百分之一秒为单位)。范围为 0 至 6000。默认值是 10。
- ignore_loop
GIF 文件可以包含循环特定次数(或无限)的信息。如果ignore_loop设置为 1,则忽略输入的循环设置,不会发生循环。如果设置为 0,则会发生循环,循环次数根据 GIF 设置。默认值是 1。
例如,使用叠加滤镜,将一个无限循环 GIF 覆盖在另一个视频上:
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
注意在以上示例中,叠加过滤器使用的 shortest 选项用于将输出视频的长度限制在最短输入文件的长度上,这种情况下为input.mp4,GIF 在此示例中无限循环。
15.12 hls
HLS 解复器
Apple HTTP Live Streaming 解复器。
此解复器呈现所有变体流中的所有 AVStreams。 id 字段设置为比特率变体索引号。通过设置 AVStreams 的丢弃标志(在 ffplay 中按 “a” 或 “v”),调用者可以决定实际接收哪些变体流。变体所属的总比特率在名为 "variant_bitrate" 的元数据键中提供。
它接受以下选项:
- live_start_index
开始实时流的片段索引(负值来自末尾)。
- prefer_x_start
如果播放列表中存在 #EXT-X-START,则优先使用它而不是 live_start_index。
- allowed_extensions
‘,’ 分隔的文件扩展名列表,hls 可以访问它们。
- max_reload
尝试重新加载不足列表的最大次数。默认值是 1000。
- m3u8_hold_counters
当 m3u8 刷新但没有新片段时重新加载的最大次数。默认值是 1000。
- http_persistent
使用持久的 HTTP 连接。仅适用于 HTTP 流。默认启用。
- http_multiple
使用多个 HTTP 连接下载 HTTP 片段。默认对 HTTP/1.1 服务器启用。
- http_seekable
使用 HTTP 部分请求下载 HTTP 片段。 0 = 禁用, 1 = 启用, -1 = 自动, 默认值为自动。
- seg_format_options
使用键值对列表设置媒体片段解复用器的选项,用
:
.- seg_max_retry
出现错误时重新加载片段的最大次数,当网络错误时不希望跳过片段时有用。默认值是 0。
15.13 image2
图像文件解复器。
此解复器从指定图案的图像文件列表中读取。 图案的语法和含义由pattern_type.
选项定义。
图像的大小、像素格式和格式在文件序列中必须一致。
此解复器接受以下选项:
- framerate
设置视频流的帧速率。默认值为 25。
- loop
如果设置为 1,则对输入进行循环。默认值为 0。
- pattern_type
选择用于解释提供的文件名的图案类型。
pattern_type接受以下值之一。
- none
禁用图案匹配,因此视频将只包含指定的图像。如果不希望从多个图像创建序列并且文件名可能包含特殊图案字符,请使用此选项。
- sequence
选择序列图案类型,用于指定由连续数字索引的文件序列。
序列图案可能包含字符串 “%d” 或 "%0Nd,它指定文件名中数字位置。d" 的形式使用,文件名中的数字字符串是 0 填充的,“N” 是代表数字的总的填充位数。图案中的文字字符 ‘%’ 可以通过字符串 "%%" 来指定。d" is used, the string representing the number in each filename is 0-padded and N is the total number of 0-padded digits representing the number. The literal character ’%’ can be specified in the pattern with the string "%%".
如果序列图案包含 "%d" 或 "%0Nd,则文件列表的第一个文件名必须包含一个数字,包含范围在start_number和start_number+start_number_range-1 内,并且所有后续数字必须是连续的。
例如,图案 “img-%03d.bmp” 将匹配形式为img-001.bmp, img-002.bmp, ..., img-010.bmp的文件名序列;图案 “i%%m%%g-%d.jpg” 将匹配形式为i%m%g-1.jpg, i%m%g-2.jpg, ..., i%m%g-10.jpg的文件名序列。
注意图案不必要包含 "%d" 或 "%0Nd,例如转换单个图像文件img.jpeg可以使用命令:
ffmpeg -i img.jpeg img.png
- glob
选择 global 通配符图案类型。
图案被解释为类似于
glob()
的图案。这只有在 libavformat 以 globbing 支持编译时才可选择。- glob_sequence (已弃用,将被移除)
选择混合 global 通配符/序列图案类型。
如果你的 libavformat 版本以 globbing 支持编译,并且提供的图案包含至少一个 glob 元字符在其间
%*?[]{}
在未转义的“%”之前,该模式被解释为类似glob()
的模式,否则它将被解释为类似序列模式。所有的通配符特殊字符
%*?[]{}
必须以“%”作为前缀。要转义字面的“%”,需要使用“%%”。例如,此模式
foo-%*.jpeg
会匹配所有以“foo-”为前缀并以“.jpeg”结尾的文件名,而foo-%?%?%?.jpeg
会匹配所有以“foo-”为前缀、后跟三个字符的序列并以“.jpeg”结尾的文件名。这种模式类型已废弃,推荐使用通配符和序列.
默认值为glob_sequence.
- pixel_format
设置读取图像的像素格式。如果未指定,将从序列中的第一张图像文件中猜测像素格式。
- start_number
设置从匹配图像文件模式的文件索引开始读取。默认值为0。
- start_number_range
设置搜索序列中第一张图像文件时的索引间隔范围,从start_number开始。默认值为5。
- ts_from_file
如果设置为1,将把帧时间戳设置为图像文件的修改时间。请注意,时间戳单调性无法保障:图像的顺序与未使用此选项的顺序相同。默认值为0。如果设置为2,将把帧时间戳设为图像文件的修改时间,并精确到纳秒。
- video_size
设置读取图像的视视频尺寸。如果未指定,将从序列中的第一张图像文件中猜测视频尺寸。
- export_path_metadata
如果设置为1,将为输入中找到的元数据添加两个额外字段,使它们也可用于其他滤镜(请参见drawtext过滤器作为示例)。默认值为0。下述是额外字段的说明:
- lavf.image2dec.source_path
对应正在读取的输入文件的完整路径。
- lavf.image2dec.source_basename
对应正在读取的文件名称。
15.13.1 示例
- 使用
ffmpeg
从文件序列中的图像创建视频img-001.jpeg, img-002.jpeg, ..., 假设输入帧速率为每秒10帧:ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
- 如上,但从序列中索引为100的文件开始读取:
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
- 读取匹配“*.png”通配符模式的图像,即所有以“.png”结尾的文件:
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
15.14 libgme
Game Music Emu库是一个视频游戏音乐文件仿真器的集合。
请参阅https://bitbucket.org/mpyne/game-music-emu/overview了解更多信息。
它接受以下选项:
- track_index
设置要解复用的曲目索引。解复用器只能导出一个曲目。曲目索引从0开始。默认是选择第一条曲目。曲目数量作为tracks元数据条目导出。
- sample_rate
设置导出曲目的采样率。范围为1000至999999。默认是44100。
- max_size (字节)
解复用器会将整个文件缓冲到内存中。调整该值来设置最大缓冲区大小,进而限制可读取的文件大小。默认是50 MiB。
15.15 libmodplug
基于ModPlug的模块解复用器
请参阅https://github.com/Konstanty/libmodplug
它将导出一个双声道、16位、44.1 kHz的音频流。可选,pal8
可以导出一个16色视频流,带或不带元数据打印。
它接受以下选项:
- noise_reduction
应用一个简单的低通滤波器。可以为1(开启)或0(关闭)。默认是0。
- reverb_depth
设置混响量。范围0-100,默认是0。
- reverb_delay
设置延迟时间(以毫秒为单位),范围为40-250毫秒,默认是0。
- bass_amount
应用低音扩展功能(又称XBass或megabass)。范围为0(安静)到100(响亮),默认是0。
- bass_range
设置低音频率的截止上限。范围为10-100 Hz,默认是0。
- surround_depth
应用Dolby Pro-Logic环绕效果。范围为0(安静)到100(强烈)。默认是0。
- surround_delay
设置环绕延迟时间,以毫秒为单位,范围限制为5-40毫秒。默认是0。
- max_size
解复用器会将整个文件缓冲到内存中。调整该值来设置最大缓冲大小,从而限制可读取的文件大小。范围为0到100 MiB。值为0将移除缓冲大小限制(不推荐)。默认是5 MiB。
- video_stream_expr
使用eval API评估的字符串,通过它为生成的视频流分配颜色。可用于的变量是
x
,y
,w
,h
,t
,speed
,tempo
,order
,pattern
和row
.- video_stream
生成视频流。可以为1(开启)或0(关闭)。默认是0。
- video_stream_w
设置视频帧宽度(以字符为单位),每个字符表示8个像素。范围为20-512。默认是30。
- video_stream_h
设置视频帧高度(以字符为单位),每个字符表示8个像素。范围为20-512。默认是30。
- video_stream_ptxt
在视频流中打印元数据。包括
speed
,tempo
,order
,pattern
,row
和ts
(以毫秒为单位的时间)。可以为1(开启)或0(关闭)。默认是1。
15.16 libopenmpt
基于libopenmpt的模块解复用器
请参阅https://lib.openmpt.org/libopenmpt/了解更多信息。
一些文件有多个子曲(轨道),它们可以通过subsong选项设置。
它接受以下选项:
- subsong
设置子曲索引。这可以是 “all”、“auto”,或者是子曲的索引值。子曲的索引从0开始。默认是“auto”。
默认值是让libopenmpt自行选择。
- layout
设置声道布局。有效值是1,2和4。默认值是STEREO。
- sample_rate
设置libopenmpt输出的采样率。范围是从1000到INT_MAX。默认值为48000。
15.17 mov/mp4/3gp
Quicktime文件格式和ISO/IEC基本媒体文件格式的解复用器 (ISO/IEC 14496-12 或 MPEG-4 部分12, ISO/IEC 15444-12 或 JPEG 2000部分12)。
已注册的扩展名:mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v
15.17.1 选项
此解复用器接受以下选项:
- enable_drefs
启用外部轨道加载,默认禁用。启用此功能在某些使用情况下理论上可能造成信息泄露。
- use_absolute_path
允许通过绝对路径加载外部轨道,默认禁用。启用此功能存在安全风险。仅在确定源不含恶意内容时启用。
- seek_streams_individually
在寻求时,单独识别每个流中最近的点,并从该流的标识点开始解复用包。这可能导致与从头线性解复用相比,不同的包序列。默认值为true。
- ignore_editlist
忽略任何编辑列表原子。默认情况下,解复用器会修改流索引以反映编辑列表描述的时间线。默认值是false。
- advanced_editlist
修改流索引以反映编辑列表描述的时间线。当
ignore_editlist
被设置为 false 时,此选项方有效。如果ignore_editlist
和此选项均设置为false,则只有流索引的开始处会被修改,以反映编辑列表中描述的初始驻留时间或起始时间戳。默认值为true。- ignore_chapters
不要解析章节内容。这包括GoPro的“HiLight”标签/时刻。请注意,章节内容仅在输入可寻址时进行解析。默认值为false。
- use_mfra_for
对于可寻址的分段输入,根据媒体片段随机访问箱(如存在)设置片段的起始时间戳。
以下选项可用:
- ‘auto’
自动检测是将mfra时间戳设置为PTS还是DTS(默认值)
- ‘dts’
将mfra时间戳设置为DTS
- ‘pts’
将mfra时间戳设置为PTS
- ‘0’
不使用mfra箱设置时间戳
- use_tfdt
对于分段输入,将片段起始时间戳设置为
baseMediaDecodeTime
,来源于tfdt
箱。默认启用,该设置更倾向于使用tfdt
箱设置DTS。禁用时将使用earliest_presentation_time
来源于sidx
箱。然而,如果mfra
箱提供了时间戳,并且use_mfra_for
被设置为PTS或DTS,则时间戳从- export_all
箱中提取。udta箱作为元数据条目导出未识别的箱。箱类型的前四个字符用作键。默认值为false。
- export_xmp
以字符串形式导出XMP_箱和uuid箱中的全部内容,键为
xmp
。请注意,如果设置了export_all
而此选项未启用,内容将被导出,键为XMP_,内容仍然会使用键XMP_
导出。默认值是false。- activation_bytes
用于解密Audible AAX和AAX+文件的4字节密钥。请参阅下面的Audible AAX子部分。
- audible_fixed_key
用于处理Audible AAX/AAX+文件的固定密钥。这已预设,因此通常无需指定。
- decryption_key
用于解密使用ISO通用加密(CENC/AES-128 CTR;ISO/IEC 23001-7)加密的文件的16字节十六进制密钥。
- max_stts_delta
trak的stts箱中写入的极高采样增量可能在某些情况下是预期的,但通常是由于错误写入或在解释为带符号的32位整数时用于存储负值以进行dts校正。此选项允许用户设置一个上限,超出该范围的增量值会被限制为1。如果负值在限制范围内,将用于调整后续的dts。
单位是轨道时间比例。范围为0到 UINT_MAX。默认是
UINT_MAX - 48000*10
,允许48 kHz音频流的10秒dts校正,同时适应99.9%的uint32
范围。- interleaved_read
在解复用器级别将来自多个轨道的数据包交错。对于交错不佳的文件,这可以防止不同轨道之间数据包大间隙引起的播放问题,因为MOV/MP4未要求数据包放置。然而,对于交错非常糟糕的文件,这可能需要频繁在轨道之间寻求,禁用此功能可以避免I/O问题,但会影响播放。
15.17.2 Audible AAX
Audible AAX文件是已加密的M4B文件,可以通过特定的4字节激活密钥解密。
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
15.18 mpegts
MPEG-2传输流解复用器。
该解复用器接受以下选项:
- resync_size
设置查找新同步时的大小限制。默认值为65536。
- skip_unknown_pmt
跳过不在PAT中定义的程序的PMT。默认值为0。
- fix_teletext_pts
用PCR计算的时间戳覆盖teletext数据包的PTS和DTS值。默认值为1。如果要保持teletext数据包PTS和DTS值不变,请将此选项设置为0。
- ts_packetsize
输出选项,显示原始数据包的字节大小。无法由用户设置,仅用于显示检测到的原始数据包大小。
- scan_all_pmts
扫描并组合所有PMT。此值为整数,可取值范围为-1到1(-1表示自动设置,1表示启用,0表示禁用)。默认值是-1。
- merge_pmt_versions
当PMT版本更新且基本流移至不同PIDs时,重用现有流。默认值是0。
- max_packet_size
设置解复用器发出的数据包的最大大小(以字节为单位)。超过此大小的有效负载将拆分成多个数据包。范围为1到INT_MAX/2。默认值为204800字节。
15.19 mpjpeg
多部分MIME封装的MJPEG解复用器。
此解复用器允许读取MJPEG,其中每帧表示为多部分x/mixed-replace流的一部分。
- strict_mime_boundary
默认实现对多部分MIME边界检测应用宽松标准,以避免破坏生成非标准MIME MJPEG流的众多现有端点。通过将此选项设为1可启用对边界值更严格的检查。
15.20 rawvideo
原始视频解复用器。
此解复用器允许读取原始视频数据。由于没有指定视频参数的头信息,用户必须指定这些参数以正确解码数据。
此解复用器接受以下选项:
- framerate
设置输入视频帧率。默认值为25。
- pixel_format
设置输入视频像素格式。默认值为
yuv420p
.- video_size
设置输入视频尺寸。该值必须显式指定。
例如,读取一个原始视频文件input.raw带有ffplay
,假设像素格式为rgb24
,视频尺寸为320x240
,帧率为每秒10帧时,可以使用以下命令:
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
15.21 rcwt
RCWT(带时间的原始字幕)是一种ccExtractor特有的格式,这是一个常用的开源工具,用于处理608/708闭合字幕(CC)源。有关格式的更多信息,请参见(ffmpeg-formats)rcwtenc.
此解复用器实现了截至2024年3月稳定且自2014年4月起未更改的规格。
15.21.1 示例
- 使用内置解码器将CC渲染为ASS:
ffmpeg -i CC.rcwt.bin CC.ass
注意,如果输出为空,可能需要手动设置解码器的data_field选项以选择所需的CC子流。
- 将RCWT备份转换为Scenarist(SCC)格式:
ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
注意,SCC格式不支持在RCWT中存储的所有可能的CC扩展(例如EIA-708)。
15.22 sbg
SBaGen脚本解复用器。
此解复用器读取SBaGen使用的脚本语言http://uazu.net/sbagen/以生成双声节拍会话。一个SBG脚本看起来像这样:
-SE a: 300-2.5/3 440+4.5/0 b: 300-2.5/0 440+4.5/3 off: - NOW == a +0:07:00 == b +0:14:00 == a +0:21:00 == b +0:30:00 off
一个SBG脚本可以同时使用绝对和相对时间戳。如果脚本仅使用绝对时间戳(包括脚本启动时间)或仅使用相对时间戳,则其布局固定,转换是直接的。另一方面,如果脚本混合使用两种时间戳,则为相对时间戳的NOW参考时间将取自读取脚本时的当天时间,并根据该参考将脚本布局冻结。这意味着如果直接播放脚本,实际时间将与绝对时间戳匹配(受声音控制器时钟精度限制),但如果用户暂停播放或搜索,所有时间将相应地偏移。
15.23 tedcaptions
用于TED演讲.
的JSON字幕tools/bookmarklets.htmlFFmpeg源代码树中的文件包含一个书签小工具,用于显示它们。
此解复用器接受以下选项:
- start_time
设置TED演讲的开始时间,以毫秒为单位。默认值为15000(15秒)。它用于将字幕与可下载视频同步,因为它们包括一个15秒的简介。
示例:将字幕转换为大多数播放器可以理解的格式:
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
15.24 vapoursynth
Vapoursynth封装。
由于安全原因,Vapoursynth脚本不会自动检测,因此需要强制设置输入格式。对于ff* CLI工具,添加-f vapoursynth
到输入之前-i yourscript.vpy
.
此解复用器接受以下选项:
- max_script_size
解复用器将整个脚本缓冲到内存中。调整该值以设置最大缓冲区大小,它同时充当可读取脚本大小的上限。默认值为1 MiB。
15.25 w64
Sony Wave64音频解复用器。
此解复用器接受以下选项:
- max_size
参阅wav解复用器的相同选项。
15.26 wav
RIFF Wave音频解复用器。
此解复用器接受以下选项:
- max_size
指定解复用数据包的最大数据包大小(以字节为单位)。默认设置为0,这意味着根据输入格式选择一个合理的值。
16 元数据
FFmpeg能够将媒体文件中的元数据导出到简单的UTF-8编码的INI样式文本文件中,并使用元数据复用器/解复用器加载它。
文件格式如下:
- 一个文件由标题和若干元数据标签组成,分为几个段,每行一个。
- 标题是一个‘;FFMETADATA’字符串,加上一个版本号(目前为1)。
- 元数据标签的格式是‘key=value’
- 标题后紧跟全局元数据
- 全局元数据之后可能有包含每流/每章节元数据的段。
- 一个段以段名称开头,段名称为大写格式(即STREAM或CHAPTER),使用括号‘[’, ‘]’括起,结束于下一个段或文件结尾处。
- 章节段开头可能有一个可选时间基,用于开始/结束值。格式必须为‘TIMEBASE=num/den’,其中num和den是整数。如果缺少时间基,则默认开始/结束时间以纳秒计算。
接下来章节段必须以‘START=num’, ‘END=num’形式包含章节开始和结束时间,其中num是一个正整数。
- 空行和以‘;’或‘#’开头的行将被忽略。
- 包含特殊字符(‘=’, ‘;’, ‘#’, ‘\’和换行符)的元数据键或值必须使用反斜杠‘\’.
- 注意元数据中的空格(例如‘foo = bar’)视为标签的一部分(以上示例中键为‘foo ’,值为‘ bar’).
一个ffmetadata文件可能如下所示:
;FFMETADATA1 title=bike\\shed ;this is a comment artist=FFmpeg troll team [CHAPTER] TIMEBASE=1/1000 START=0 #chapter ends at 0:01:00 END=60000 title=chapter \#1 [STREAM] title=multi\ line
通过使用ffmetadata复用器和解复用器,可以从输入文件中提取元数据到ffmetadata文件,然后将文件转码为带有编辑后的ffmetadata文件的输出文件。
提取一个ffmetadata文件的方式如下:ffmpeg重新插入从FFMETADATAFILE文件编辑的元数据信息的方法是:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
Reinserting edited metadata information from the FFMETADATAFILE file can be done as:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
17 协议选项
libavformat库提供了一些通用的全局选项,可以针对所有协议设置。此外,每个协议可能支持所谓的专有选项,这些选项是该组件特有的。
可以通过在FFmpeg工具中指定-选项 值来设置选项,或者显式设置AVFormatContext
选项值,也可以使用libavutil/opt.hAPI用于编程用途。
支持选项的列表如下:
- protocol_whitelist 列表 (输入)
设置一个逗号分隔的允许协议列表。“ALL”表示匹配所有协议。前缀带“-”的协议将被禁用。默认情况下允许所有协议,但由另一协议使用的协议(嵌套协议)将限制为每协议的子集。
18 协议
协议是FFmpeg中配置的元素,允许访问需要特定协议的资源。
配置FFmpeg编译时,默认启用所有支持的协议。可以使用配置选项“–list-protocols”列出所有可用协议。
可以使用配置选项“–disable-protocols”禁用所有协议,并可以使用选项“–enable-protocol=PROTOCOL”有选择地启用某个协议,或者可以使用选项“–disable-protocol=PROTOCOL".
禁用特定协议。
ff*工具的选项“-protocols”将显示支持的协议列表。
- rw_timeout
等待(网络)读/写操作完成的最大时间,以微秒为单位。
以下是当前可用协议的描述。
18.1 amqp
高级消息队列协议(AMQP)0-9-1版本是一种基于代理的发布订阅通信协议。
必须使用–enable-librabbitmq编译FFmpeg以支持AMQP。此外,还必须运行一个独立的AMQP代理。一个示例开源AMQP代理是RabbitMQ。
启动代理后,FFmpeg客户端可以使用以下命令向代理流式传输数据:
ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]
其中hostname和port(默认值为5672)是代理的地址。客户端还可以设置用户/密码进行认证。两个字段的默认值为“guest”。可以用vhost设置代理上的虚拟主机名称。默认值为“/”。
多个订阅方可以使用以下命令从代理流式传输数据:
ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]
在RabbitMQ中,发布到代理的所有数据都会通过一个特定的交换机流转,每个订阅客户端都有一个分配的队列/缓冲区。当数据包到达交换机时,根据交换机和routing_key字段可能会复制到客户端的队列。
支持以下选项:
- exchange
设置代理上的交换机。RabbitMQ有几个预定义的交换机:“amq.direct”是默认交换机,发布方和订阅方必须有匹配的routing_key;“amq.fanout”类似于广播操作(即数据会独立于routing_key转发到fanout交换机上的所有队列);“amq.topic”类似于“amq.direct”,但允许更复杂的模式匹配(参见RabbitMQ文档)。
- routing_key
设置路由键。默认值为“amqp”。在“amq.direct”和“amq.topic”交换机中使用路由键决定是否将数据包写入订阅者的队列。
- pkt_size
设置发送/接收至代理的每个数据包的最大大小。默认值为131072。最小值为4096,最大值为任何大值(可由一个int表示)。接收数据包时,这会设置FFmpeg中的内部缓冲区大小。它应该等于或大于发布至代理的数据包大小,否则接收到的消息可能会被截断,导致解码错误。
- connection_timeout
在初始连接到代理期间的超时时间,以秒为单位。默认值为rw_timeout,如果未设置rw_timeout,则默认为5秒。
- delivery_mode 模式
设置发送到代理的每条消息的交付模式。接受以下值:
- ‘persistent’
交付模式设置为“持久化”(2)。这是默认值。消息可能会写入代理的磁盘,具体取决于其设置。
- ‘non-persistent’
交付模式设置为“非持久化”(1)。消息将保存在代理的内存中,除非代理内存压力较大。
18.2 async
用于输入流的异步数据填充封装。
在后台线程中填充数据,以将I/O操作与解复用线程分离。
async:URL async:http://host/resource async:cache:http://host/resource
18.3 bluray
读取蓝光播放列表。
接受的选项为:
- angle
蓝光角度
- chapter
开始章节(1...N)
- playlist
要读取的播放列表(BDMV/PLAYLIST/?????.mpls)
示例:
从挂载到/mnt/bluray的蓝光读取最长的播放列表:
bluray:/mnt/bluray
从挂载到/mnt/bluray的蓝光读取播放列表4的角度2,从章节2开始:
-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
18.4 cache
用于输入流的缓存封装。
将输入流缓存到临时文件。为实时流带来寻求能力。
接受的选项为:
- read_ahead_limit
在不支持寻求时可以提前读取的字节数。范围为-1到INT_MAX。-1表示无限制。默认值为65536。
URL语法为
cache:URL
18.5 concat
物理连接协议。
按顺序从多个资源读取和寻求,就像它们是唯一资源一样。
此协议接受的URL语法为:
concat:URL1|URL2|...|URLN
其中URL1, URL2, ..., URLN是要连接的资源的URL,每个URL可能指定一个独特的协议。
例如读取文件序列split1.mpeg,
split2.mpeg, split3.mpeg使用ffplay
使用以下命令:
ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
注意,您可能需要转义字符 "|",因其对于许多 shell 是特殊字符。
18.6 concatf
使用换行符分隔的资源列表进行物理拼接协议。
从多个资源中依次读取和定位,就像它们是一个独特资源一样。
此协议接受的 URL 具有以下语法:
concatf:URL
其中URL是包含资源列表的 URL,列表以换行符分隔以便拼接,每个资源可能指定一种不同的协议。特殊字符必须用反斜杠或单引号转义。详见(ffmpeg-utils)ffmpeg-utils(1)手册中的“引用和转义”部分.
例如,要读取一组文件split1.mpeg,
split2.mpeg, split3.mpeg列表位于文件中的独立行split.txt使用ffplay
使用以下命令:
ffplay concatf:split.txt
其中split.txt包含以下行:
split1.mpeg split2.mpeg split3.mpeg
18.7 crypto
AES 加密流读取协议。
可用的选项如下:
- key
从给定的十六进制表示中设置 AES 解密密钥二进制块。
- iv
从给定的十六进制表示中设置 AES 解密初始化向量二进制块。
接受的 URL 格式:
crypto:URL crypto+URL
18.8 data
URI 内嵌数据。详见http://en.wikipedia.org/wiki/Data_URI_scheme.
例如,要转换一个嵌入的 GIF 文件ffmpeg
:
ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
18.9 fd
文件描述符访问协议。
接受的语法如下:
fd: -fd 文件描述符
如果fd未指定,写操作默认使用 stdout 的文件描述符,读取操作使用 stdin 的文件描述符。与管道协议不同,fd 协议如果对应普通文件则支持定位操作。fd 协议不支持通过 URL 传递文件描述符以确保安全性。
此协议接受以下选项:
- blocksize
设置 I/O 操作的最大块大小(单位:字节)。默认值为
INT_MAX
,表示不限制请求的块大小。将此值设置得比较低可以提高用户终止请求的反应时间,对于传输速度较慢的数据非常重要。- fd
设置文件描述符。
18.10 file
文件访问协议。
读取或写入文件。
文件 URL 可采用以下格式:
file:文件名
其中文件名是要读取的文件路径。
没有协议前缀的 URL 将被假定为文件 URL。根据构建方式,开头像 Windows 路径的 URL (带有驱动器字母)通常也被假定为文件 URL (通常在 Unix 类系统构建中不会出现此情况)。
例如,从文件读取input.mpeg使用ffmpeg
使用以下命令:
ffmpeg -i file:input.mpeg output.mpeg
此协议接受以下选项:
- truncate
如果设置为 1,在写入时截断已存在的文件。如果值为 0 则不截断。默认值为 1。
- blocksize
设置 I/O 操作的最大块大小(单位:字节)。默认值为
INT_MAX
,表示不限制请求的块大小。将此值设置得比较低可以提高用户终止请求的反应时间,对于慢速介质上的文件非常重要。- follow
如果设置为 1,则协议将尝试在文件末尾重新读取,以便读取仍在被写入的文件。为使此操作终止,您需要使用 rw_timeout 选项,或者使用中断回调(API 用户)。
- seekable
控制文件是否可寻址。0 表示不可寻址,-1 表示自动(正常文件可寻址,命名管道不可寻址)。
许多解复用器对可寻址和不可寻址资源处理方式不同,修改此设置可能会加快某些文件的打开速度,但会损失一些功能(例如精确定位)。
18.11 ftp
FTP(文件传输协议)。
使用 FTP 协议从远程资源读取或写入。
需要遵循以下语法。
ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
此协议接受以下选项。
- timeout
设置用于底层低级操作的套接字 I/O 操作超时时间(单位:微秒)。默认值为 -1,表示未指定超时时间。
- ftp-user
设置用于 FTP 服务器认证的用户。此值会被 FTP URL 中的用户覆盖。
- ftp-password
设置用于 FTP 服务器认证的密码。此值会被 FTP URL 中的密码覆盖,或者被ftp-anonymous-password替代,如果未设置用户。
- ftp-anonymous-password
匿名登录时使用的密码。通常应使用电子邮件地址。
- ftp-write-seekable
在编码期间控制连接是否为可寻址。设置为 1 时资源被认为可寻址,设置为 0 时资源被认为不可寻址。默认值为 0。
注意:此协议可用作输出,但建议谨慎使用(需要测试、定制的服务器配置等)。不同的 FTP 服务器在定位操作中的行为不同。FF* 工具可能因服务器限制而产生不完整的内容。
18.12 gopher
Gopher协议。
18.13 gophers
Gophers协议。
带有TLS封装的Gopher协议。
18.14 hls
读取符合Apple HTTP Live Streaming规范的分段流作为一个统一流。描述分段的M3U8播放列表可以是远程HTTP资源,也可以是本地文件,通过标准文件协议访问。嵌套协议通过在hls URI方案名称后指定"+协议"来声明,其中协议可以是"file"或者"http"。
hls+http://host/path/to/remote/resource.m3u8 hls+file://path/to/local/resource.m3u8
不推荐使用此协议——hls解复用器应能正常工作(如果不能,请报告问题),而且更完整。要使用hls解复用器,请直接使用指向m3u8文件的URLs。
18.15 http
HTTP(超文本传输协议)。
此协议接受以下选项:
- seekable
控制连接的可寻址性。如果设置为 1,资源被认为是可寻址的;如果设置为 0,资源被认为是不可寻址的;如果设置为 -1,将尝试自动检测资源是否可寻址。默认值为-1。
- chunked_post
如果设置为 1,则使用分块传输编码进行发布操作。默认值为1。
- http_proxy
设置HTTP代理进行隧道操作,例如 http://example.com:1234
- headers
设置自定义HTTP头,可以覆盖内置默认头。值必须是编码头的字符串。
- content_type
为POST消息或监听模式设置特定内容类型。
- user_agent
覆盖User-Agent头。如果未指定,协议将使用描述libavformat版本的字符串("Lavf/<version>")。
- referer
设置Referer头。在HTTP请求中包含`Referer: URL`头。
- multiple_requests
如果设置为1使用持久化连接,默认值为0。
- post_data
设置自定义HTTP发布数据。
- mime_type
导出MIME类型。
- http_version
导出HTTP响应版本号。通常为"1.0"或"1.1"。
- cookies
设置将在未来请求中发送的cookies。每个cookie的格式与Set-Cookie HTTP响应字段的值相同。多个cookies可以通过换行符分隔。
- icy
如果设置为1,则向服务器请求ICY(SHOUTcast)元数据。如果服务器支持,应用程序必须通过读取icy_metadata_headers和icy_metadata_packet选项,来检索元数据。默认值为1。
- icy_metadata_headers
如果服务器支持ICY元数据,此选项包含ICY特定的HTTP回复头,用换行符分隔。
- icy_metadata_packet
如果服务器支持ICY元数据,并且icy设置为1,此选项包含服务器发送的最后一个非空的元数据包。应用程序需定期轮询此选项以更新流中的元数据。
- metadata
设置从数据流中导出的字典,包含Icecast元数据(如果存在)。仅对C API有用。
- auth_type
-
设置HTTP认证类型。不支持Digest选项,因为该方法需要先从服务器获取随机数参数,无法像Basic认证那样直接使用。
- none
自动选择HTTP认证类型。这是默认设置。
- basic
-
选择HTTP基本认证。
基本认证发送的是Base64编码字符串,其中包含客户端的用户名和密码。Base64不是一种加密形式,其实质等同于以明文方式发送用户名和密码(Base64是可逆的编码)。如果需要保护资源,请考虑使用除基本认证外的其他认证方案。如果使用基本认证,应当启用HTTPS/TLS。在没有这些额外的安全措施的情况下,基本认证不应用于保护敏感或有价值的信息。
- send_expect_100
为POST操作发送`Expect: 100-continue`头。如果设置为1,则发送;如果设置为0,则不发送;如果设置为-1,则尝试在适用时发送。默认值为-1。
- location
导入字典,包含内容的位置信息。仅对C API有用。
- offset
设置初始字节偏移。
- end_offset
尝试限制请求至该偏移前的字节。
- method
当用作客户端选项时,设置请求的HTTP方法。
当用作服务器选项时,设置期望的HTTP方法,该方法将用于客户端连接检查。如果期望的HTTP方法与接收到的HTTP方法不匹配,客户端将收到错误420请求错误响应。在未设置时,HTTP方法目前未检查。未来将以自动检测代替。
- reconnect
在到达EOF之前自动重新连接。
- reconnect_at_eof
如果设置了此选项,则EOF会被当作错误并触发重新连接。这对于实时/无限流很有用。
- reconnect_on_network_error
在发生TCP/TLS连接错误时自动重新连接。
- reconnect_on_http_error
设置希望重新连接的HTTP状态码(以逗号分隔)。可以是具体的状态码(例如'503')或字符串'4xx'/'5xx'。
- reconnect_streamed
如果设置,即使是流式/不可定位的流,也将在发生错误时重新连接。
- reconnect_delay_max
设置最大延迟时间(单位:秒),超过此时间后停止重新连接。
- reconnect_max_retries
设置最大重连次数。默认未设置。
- reconnect_delay_total_max
设置最大总延迟时间(单位:秒),超过此时间后停止重新连接。
- respect_retry_after
如果启用,并且收到 Retry-After 头,则按要求的重新连接延迟操作,而不是使用指数回退。这对于429和503错误很有用。默认启用。
- listen
如果设置为1,则启用实验性HTTP服务器。这可用于作为输出选项发送数据,也可用于作为输入选项处理来自客户端的HTTP POST数据。如果设置为2,则启用多客户端实验HTTP服务器。当前未在ffmpeg.c中实施,因此不可用于命令行选项。
# Server side (sending): ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://服务器:端口 # Client side (receiving): ffmpeg -i http://服务器:端口 -c copy somefile.ogg # Client can also be done with wget: wget http://服务器:端口 -O somefile.ogg # Server side (receiving): ffmpeg -listen 1 -i http://服务器:端口 -c copy somefile.ogg # Client side (sending): ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://服务器:端口 # Client can also be done with wget: wget --post-file=somefile.ogg http://服务器:端口
- resource
客户端请求的资源(在使用实验性HTTP服务器时)。
- reply_code
返回给客户端的HTTP代码(在使用实验性HTTP服务器时)。
- short_seek_size
设置阈值(单位:字节),用于决定是否优先选择预读取而不是定位和新的HTTP请求。这对于确保同一连接读取包含较大视频包且夹杂小音频包的情况很有帮助。
18.15.1 HTTP Cookies
某些 HTTP 请求将被拒绝,除非请求携带了 cookie 的值。cookies选项允许指定这些 cookie。 每个 cookie 至少需要指定值以及路径和域名。 HTTP 请求会自动在 HTTP Cookie 头字段中包含符合域名和路径的 cookie 值。多个 cookie 可通过换行符分隔。
指定 cookie 播放流所需的语法为:
ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
18.16 Icecast
Icecast 协议(流向 Icecast 服务器)
此协议接受以下选项:
- ice_genre
设置流派。
- ice_name
设置流名称。
- ice_description
设置流描述。
- ice_url
设置流网站 URL。
- ice_public
设置流是否公开。 默认值为 0(非公开)。
- user_agent
覆盖 User-Agent 头。如果未指定,将使用类似于 "Lavf/<版本>" 的字符串。
- password
设置 Icecast 挂载点的密码。
- content_type
设置流内容类型。如果与音频/mpeg 不同,则必须设置。
- legacy_icecast
启用 Icecast 版本 < 2.4.0 的支持,这些版本使用 SOURCE 方法而非 HTTP PUT 方法。
- tls
与 Icecast 建立 TLS (HTTPS) 连接。
icecast://[用户名[:密码]@]服务器:端口/挂载点
18.17 ipfs
星际文件系统(IPFS)协议支持。 可以通过所谓的网关访问存储在 IPFS 网络上的文件。 这些都是 http(s) 端点。 此协议将 IPFS 原生协议 (ipfs:// 和 ipns://) 发送到这样的网关。 用户可以(而且应该)托管自己的节点,这意味着此协议将使用其本地网关访问 IPFS 网络上的文件。
此协议接受以下选项:
- gateway
定义要使用的网关。 如果未设置,协议将首先尝试通过查看以下内容来找到本地网关:
$IPFS_GATEWAY
,$IPFS_PATH
和$HOME/.ipfs/
,按顺序。
可以通过两种方式使用此协议。 使用 IPFS:
ffplay ipfs://<hash>
或者使用 IPNS 协议(IPNS 是可变的 IPFS):
ffplay ipns://<hash>
18.18 mmst
通过 TCP 的微软媒体服务器(MMS)协议。
18.19 mmsh
通过 HTTP 的微软媒体服务器(MMS)协议。
所需的语法为:
mmsh://服务器[:端口][/应用程序][/播放路径]
18.20 md5
MD5 输出协议。
计算要写入数据的 MD5 哈希值,并在关闭时将其写入指定输出或 stdout(如果未指定)。 它可以用于测试复用器而无需实际写入文件。
以下是一些示例。
# Write the MD5 hash of the encoded AVI file to the file output.avi.md5. ffmpeg -i input.flv -f avi -y md5:output.avi.md5 # Write the MD5 hash of the encoded AVI file to stdout. ffmpeg -i input.flv -f avi -y md5:
注意某些格式(通常是 MOV 文件)要求输出协议支持可寻址,因此会与 MD5 输出协议失败。
18.21 pipe
UNIX 管道访问协议。
从 UNIX 管道中读取和写入数据。
接受的语法为:
pipe:[编号]
如果fd未指定,编号是与管道文件描述符对应的编号(例如,0 表示 stdin,1 表示 stdout,2 表示 stderr)。如果编号未指定,默认情况下将使用 stdout 文件描述符进行写入,使用 stdin 进行读取。
例如,从 stdin 读取:ffmpeg
:
cat test.wav | ffmpeg -i pipe:0 # ...this is the same as... cat test.wav | ffmpeg -i pipe:
写入到 stdout:ffmpeg
:
ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi # ...this is the same as... ffmpeg -i test.wav -f avi pipe: | cat > test.avi
此协议接受以下选项:
- blocksize
设置 I/O 操作的最大块大小(单位:字节)。默认值为
INT_MAX
,表示不限制请求的块大小。 如果将该值设置得较低,可以改善用户终止请求的反应时间,这在数据传输速度较慢时很有价值。- fd
设置文件描述符。
请注意某些格式(通常是 MOV 文件)要求输出协议支持可寻址,因此会与管道输出协议失败。
18.22 prompeg
Pro-MPEG 实践代码#3,版本2 FEC协议。
Pro-MPEG CoP#3 FEC 是一种用于通过 RTP 发送的 MPEG-2 传输流的二维奇偶校验前向错误校正机制。
此协议必须与rtp_mpegts
复用器和rtp
协议一起使用。
所需的语法为:
-f rtp_mpegts -fec prompeg=选项=值... rtp://主机名:端口
目标 UDP 端口为port + 2
(用于列 FEC 流)和port + 4
(用于行 FEC 流)。
此协议接受以下选项:
- l=列数量(4-20,LxD <= 100)
n
- d=行数量(4-20,LxD <= 100)
n
使用示例:
-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://主机名:端口
18.23 rist
可靠互联网流传输协议
接受的选项包括:
- rist_profile
支持的值:
- ‘simple’
- ‘main’
这一个是默认值。
- ‘advanced’
- buffer_size
设置内部 RIST 缓冲区大小(单位:毫秒)用于数据重传。 默认值为 0,表示使用 librist 默认值(1 秒)。最大值为 30 秒。
- fifo_size
设置 librist 接收器输出 fifo 大小(以数据包数量计)。 此值必须是 2 的幂。 默认值为 8192(vs librist 默认值为 1024)。
- overrun_nonfatal=1|0
在 librist fifo 缓冲区溢出的情况下继续工作。默认值为 0。
- pkt_size
设置发送数据的最大数据包大小。默认值为 1316。
- log_level
设置 RIST 日志消息的日志级别。您仅需要设置此选项以显式启用调试级消息或数据包丢失模拟, 否则会遵循常规日志级别。
- secret
设置加密密钥覆盖,默认未设置。
- encryption
设置加密类型,默认禁用。 可接受的值为 128 和 256。
18.24 rtmp
实时消息传输协议。
实时消息传输协议 (RTMP) 用于通过 TCP/IP 网络流式传输多媒体内容。
所需的语法为:
rtmp://[用户名:密码@]服务器[:端口][/应用程序][/实例][/播放路径]
接受的参数包括:
- username
可选的用户名(主要用于发布)。
- password
可选的密码(主要用于发布)。
- server
RTMP 服务器的地址。
- port
使用的 TCP 端口号(默认值为 1935)。
- app
访问的应用程序名称。通常对应 RTMP 服务器上的应用程序安装路径 (例如/ondemand/, /flash/live/等)。也可以通过
rtmp_app
选项覆盖从 URI 中解析的值。- playpath
引用 apps 指定的应用程序播放的资源路径或名称应用程序,可能以 "mp4:" 为前缀。您也可以通过
rtmp_playpath
选项覆盖从 URI 中解析的值。- listen
作为服务器,等待连接到来。
- timeout
等待传入连接的最大时间。包含 listen。
此外,还可以通过命令行选项设置以下参数
(或通过代码使用AVOption
s):
- rtmp_app
连接 RTMP 服务器上的应用程序名称。 此选项会覆盖 URI 中指定的参数。
- rtmp_buffer
设置客户端缓冲时间,以毫秒为单位。默认值是 3000。
- rtmp_conn
额外的任意 AMF 连接参数,从字符串解析,例如
B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0
。 每个值都由单个字符前缀表示类型: B 表示布尔值,N 表示数字,S 表示字符串,O 表示对象,或者 Z 表示 null, 后跟一个冒号。 对于布尔值,数据必须是 0 或 1 分别表示 FALSE 或 TRUE。 对于对象,数据必须是 0 或 1 分别表示结束或开始一个对象。 项在子对象中可以命名, 通过以 ‘N’ 前缀类型并在值前指定名称(例如NB:myFlag:1
此选项可以多次使用构建任意 AMF 序列。- rtmp_enhanced_codecs
指定客户端宣布支持增强 RTMP 流中编码器的列表。 此选项应设定为逗号分隔的四cc值列表,例如
hvc1,av01,vp09
用于多个编码器 或hvc1
仅有一个编码器。 指定列表将在连接命令消息的"fourCcLive"属性中显示。- rtmp_flashver
用于运行 SWF 播放器的 Flash 插件版本。 默认是 LNX 9,0,124,2。(发布时,默认是 FMLE/3.0(兼容;<libavformat 版本>)。
- rtmp_flush_interval
在相同请求中刷新包数量 (RTMPT 专用)。默认值为 10。
- rtmp_live
指定媒体是否为流直播。 直播流中不支持恢复或寻找。默认值是
any
订阅者优先尝试播放指定的直播流。 如果未找到指定名称的直播流,它将播放录制的流。 其他可能的值为live
和recorded
.- rtmp_pageurl
嵌入媒体的网页 URL。 默认情况下不会发送任何值。
- rtmp_playpath
用于播放或发布的流标识符。 此选项会覆盖 URI 中指定的参数。
- rtmp_subscribe
要订阅的直播流名称。 默认情况下不会发送任何值。 仅在该选项或 rtmp_live 设置为 live 时发送。
- rtmp_swfhash
解压缩 SWF 文件的 SHA256 哈希值 (32字节)。
- rtmp_swfsize
解压缩 SWF 文件的大小,SWFVerification 所需。
- rtmp_swfurl
媒体对应的 SWF 播放器 URL。 默认情况下不会发送任何值。
- rtmp_swfverify
播放器 swf 文件的 URL,自动计算哈希值/大小。
- rtmp_tcurl
目标流的 URL。默认值为 proto://host[:port]/app。
- tcp_nodelay=1|0
设置 TCP_NODELAY 禁用 Nagle 算法。默认值为 0。
备注:写入套接字当前未优化以最小化系统调用,同时降低 TCP_NODELAY 的效率/效果。
例如读取资源ffplay
名为 "样例" 的多媒体资源
来自应用程序 "vod" 位于 RTMP 服务器 "myserver" 上:
ffplay rtmp://myserver/vod/sample
用指定密码保护的服务器上发布内容,分别传递播放路径和 应用程序名称:
ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
18.25 rtmpe
加密实时消息传输协议。
加密实时消息传输协议 (RTMPE) 在标准加密技术基础上使用, 包括 Diffie-Hellman 密钥交换和 HMACSHA256,生成一对 RC4 密钥。
18.26 rtmps
通过安全 SSL 连接的实时消息传输协议。
实时消息传输协议 (RTMPS) 用于通过加密连接流式传输多媒体内容。
18.27 rtmpt
通过 HTTP 的实时消息传输协议。
实时消息传输协议通过 HTTP (RTMPT) 在 HTTP 请求内发送, 用于流式传输多媒体内容以穿越防火墙。
18.28 rtmpte
通过 HTTP 的加密实时消息传输协议。
加密实时消息传输协议通过 HTTP (RTMPTE) 在其 HTTP 请求内发送, 用于流式传输多媒体内容以穿越防火墙。
18.29 rtmpts
通过 HTTPS 的实时消息传输协议。
实时消息传输协议通过 HTTPS (RTMPTS) 在其 HTTPS 请求内发送, 用于流式传输多媒体内容以穿越防火墙。
18.30 libsmbclient
libsmbclient 允许操作 CIFS/SMB 网络资源。
所需语法如下。
smb://[[domain:]user[:password@]]server[/share[/path[/file]]]
此协议接受以下选项。
- timeout
设置用于基础高级操作中的套接字 I/O 操作的超时时间(以毫秒为单位)。 默认设置为 -1,表示未指定超时。
- truncate
现有文件写入时是否截断,如果设置为 1 则为截断。值为 0 表示避免截断。 默认值为 1。
- workgroup
设置用于建立连接的工作组。 默认情况下未指定工作组。
如需更多信息,请查看:http://www.samba.org/.
18.31 libssh
通过 libssh 的安全文件传输协议
使用 SFTP 协议读取或写入远程资源。
所需的语法如下。
sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
此协议接受以下选项。
- timeout
设置底层低级操作所使用的套接字I/O操作的超时时间。默认设置为-1,表示未指定超时时间。
- truncate
在写入时截断现有文件,如果设置为1。值为0则防止截断。默认值为1。
- private_key
指定在授权期间使用的私钥文件路径。 默认情况下,libssh会在~/.ssh/目录中搜索密钥。
示例:播放存储在远程服务器上的文件。
ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
18.32 librtmp rtmp、rtmpe、rtmps、rtmpt、rtmpte
通过librtmp支持的实时消息传输协议及其变体。
配置过程中需要存在librtmp的头文件和库。您需要明确使用"–enable-librtmp"进行构建配置。如果启用,它将替代本机RTMP协议。
此协议提供了大多数客户端功能以及支持RTMP、HTTP通道中的RTMP(RTMPT)、加密RTMP(RTMPE)、SSL/TLS上的RTMP(RTMPS)和这些加密类型的通道变体(RTMPTE、RTMPTS)所需的少数服务器功能。
所需的语法为:
rtmp_proto://服务器[:端口][/应用程序][/播放路径] 选项
其中rtmp_proto是字符串"rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts"中的一个,分别对应每种RTMP变体,而服务器, 端口, 应用程序和播放路径含义与RTMP本机协议中规定的一样。选项包含形式为键=值.
的以空格分开的选项列表。
参见librtmp手册页(手册3 librtmp)以获取更多信息。ffmpeg
:
ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
使用以下方式播放相同的流:ffplay
:
ffplay "rtmp://myserver/live/mystream live=1"
18.33 rtp
实时传输协议。
RTP URL的所需语法为: rpt://主机名[:端口][?选项=值...]
端口指定要使用的RTP端口。
支持以下URL选项:
- ttl=n
设置TTL(生存时间)值(仅用于多播)。
- rtcpport=n
将远程RTCP端口设置为n。.
- localrtpport=n
将本地RTP端口设置为n。.
- localrtcpport=n'
将本地RTCP端口设置为n。.
- pkt_size=n
将最大数据包大小(以字节为单位)设置为n。.
- buffer_size=大小
以字节为单位设置最大UDP套接字缓冲区大小。
- connect=0|1
对
connect()
执行操作(如果设置为1)或不执行(如果设置为0)。- sources=IP[,IP]
列出允许的源IP地址。
- block=IP[,IP]
列出不允许(被阻止)的源IP地址。
- write_to_source=0|1
将数据包发送至最近接收到数据包的来源地址(如果设置为1)或默认的远程地址(如果设置为0)。
- localport=n
将本地RTP端口设置为n。.
- localaddr=地址
用于发送数据包或加入多播组的网络接口的本地IP地址。
- timeout=n
将套接字I/O操作的超时时间(以微秒为单位)设置为n。.
这是一个已弃用的选项。相反,localrtpport应被使用。
重要注意事项:
- 如果rtcpport未设置,则RTCP端口会被设置为RTP端口值加1。
- 如果localrtpport(本地RTP端口)未设置,则会使用任何可用的端口作为本地RTP和RTCP端口。
- 如果localrtcpport(本地RTCP端口)未设置,则会被设置为本地RTP端口值加1。
18.34 rtsp
实时流传输协议。
RTSP在libavformat中技术上不是一个协议处理器,它是一个解复用器和复用器。解复用器支持普通RTSP(通过RTP传输数据;这被例如苹果和微软使用)以及Real-RTSP(通过RDT传输数据)。
复用器可以用来通过RTSP ANNOUNCE将流发送到支持它的服务器(目前支持Darwin Streaming Server和Mischa Spiegelmock的RTSP服务器).
RTSP URL的必需语法为:
rtsp://主机名[:端口]/路径
选项可以设置在ffmpeg
/ffplay
命令行,或者通过AVOption
s或在代码中进行设置。avformat_open_input
.
18.34.1 复用器
支持以下选项。
- rtsp_transport
设置RTSP传输协议。
它接受以下值:
- ‘udp’
使用UDP作为底层传输协议。
- ‘tcp’
使用TCP(RTSP控制通道内的交错)作为底层传输协议。
默认值为‘0’.
- rtsp_flags
设置RTSP标志。
接受以下值:
- ‘latm’
对AAC使用MP4A-LATM数据包化而不是MPEG4-GENERIC。
- ‘rfc2190’
对H.263使用RFC 2190数据包化而不是RFC 4629。
- ‘skip_rtcp’
不发送RTCP发送者报告。
- ‘h264_mode0’
对RTP中的H.264使用模式0。
- ‘send_bye’
结束时发送RTCP BYE数据包。
默认值为‘0’.
- min_port
设置最低本地UDP端口。默认值为5000。
- max_port
设置最高本地UDP端口。默认值为65000。
- buffer_size
以字节为单位设置最大套接字缓冲区大小。
- pkt_size
设置最大发送数据包大小(以字节为单位)。默认值为1472。
18.34.2 解复用器
支持以下选项。
- initial_pause
如果设置为1,则不立即开始播放流。默认值为0。
- rtsp_transport
设置RTSP传输协议。
它接受以下值:
- ‘udp’
使用UDP作为底层传输协议。
- ‘tcp’
使用TCP(RTSP控制通道内的交错)作为底层传输协议。
- ‘udp_multicast’
使用UDP多播作为底层传输协议。
- ‘http’
使用HTTP隧道作为底层传输协议,这对于通过代理非常有用。
- ‘https’
使用HTTPs隧道作为底层传输协议,这在安全性考虑中非常广泛使用。
可以指定多个底层传输协议,在这种情况下,它们会依次尝试(如果一个设置失败,会尝试下一个)。对于复用器,仅支持‘tcp’ 和 ‘udp’ 选项。
- rtsp_flags
设置RTSP标志。
接受以下值:
- ‘filter_src’
仅接受来自协商对等地址和端口的数据包。
- ‘listen’
作为服务器,监听传入连接。
- ‘prefer_tcp’
如果TCP可用作为RTSP RTP传输,则首先尝试TCP。
- ‘satip_raw’
导出原始的MPEG-TS流而不是解复用。该标志将简单地写出原始流,带有原始PAT/PMT/PID。
默认值为‘none’.
- allowed_media_types
设置从服务器接受的媒体类型。
接受以下标志:
- ‘video’
- ‘audio’
- ‘data’
- ‘subtitle’
默认情况下它接受所有媒体类型。
- min_port
设置最低本地UDP端口。默认值为5000。
- max_port
设置最高本地UDP端口。默认值为65000。
- listen_timeout
设置建立初始连接的最大超时时间(以秒为单位)。设置listen_timeout> 0 设置rtsp_flags为‘listen’。默认值为-1,这表示在设置‘listen’模式时没有无限超时。
- reorder_queue_size
设置数据包缓冲数量以处理重新排序数据包。
- timeout
以微秒为单位设置套接字TCP I/O超时。
- user_agent
覆盖用户代理头。如果未指定,它默认使用libavformat标识符字符串。
- buffer_size
以字节为单位设置最大套接字缓冲区大小。
当通过UDP接收数据时,解复用器尝试重新排序接收到的数据包(由于它们可能无序到达,或者数据包可能完全丢失)。可以通过将最大解复用延迟设置为零来禁用(通过 AVFormatContext 的max_delay
字段)。
观看多个比特率Real-RTSP流时,使用ffplay
, 可选择要显示的流。-vst
n和-ast
n分别用于视频和音频,并可以通过按v
和a
.
18.34.3 示例
以下所有示例都使用ffplay
和ffmpeg
工具。
- 通过UDP观看流,最大重排序延迟为0.5秒:
ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
- 观看通过HTTP隧道的流:
ffplay -rtsp_transport http rtsp://server/video.mp4
- 以实时方式将流发送到RTSP服务器供他人观看:
ffmpeg -re -i 输入 -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
- 实时接收流:
ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp 输出
18.35 sap
会话公告协议(RFC 2974)。此协议技术上不是libavformat中的协议处理器,它是一个复用器和解复用器。 它用于信号传输RTP流,通过定期在单独端口上公告流的SDP。
18.35.1 复用器
给复用器指定SAP URL的语法为:
sap://目的地[:端口][?选项]
RTP数据包发送到目的地的端口端口,
或如果未指定端口,则发送到端口5004。选项是一个通过&
-分隔的列表。支持以下选项:
- announce_addr=地址
指定发送公告的目的IP地址。 如果省略,则公告发送到常用的SAP公告组播地址224.2.127.254(sap.mcast.net), 或者如果目的地是IPv6地址,则发送到ff0e::2:7ffe。
- announce_port=端口
指定发送公告的端口,默认值如果未指定,则为9875。
- ttl=TTL
指定公告和RTP数据包的生存时间值,默认值为255。
- same_port=0|1
如果设置为1,所有RTP流将发送到相同的端口对。如果为零(默认值),所有流将发送到独特的端口,每个流发送到比上一个流高两个数字的端口。 VLC/Live555要求设置为1,以便能够接收流。 libavformat中的RTP接收堆栈要求所有流发送到独特的端口。
以下是示例命令行。
在本地子网中广播流以供VLC观看:
ffmpeg -re -i 输入 -f sap sap://224.0.0.255?same_port=1
同样地,用于在ffplay
:
ffmpeg -re -i 中观看: -f sap sap://224.0.0.255
输入ffplay
中,使用IPv6:
ffmpeg -re -i 输入 -f sap sap://[ff0e::1:2:3:4]
18.35.2 解复用器
给解复用器指定SAP URL的语法为:
sap://[地址][:端口]
地址是侦听公告的组播地址, 如果省略,则默认使用224.2.127.254(sap.mcast.net)。端口是侦听的端口,如果省略,则为9875。
解复用器侦听给定地址和端口的公告。 一旦接收到公告,它尝试接收特定流。
以下是示例命令行。
在普通SAP组播地址上播放第一个公告的流:
ffplay sap://
在默认IPv6 SAP组播地址上播放第一个公告的流:
ffplay sap://[ff0e::2:7ffe]
18.36 sctp
流控制传输协议。
接受的URL语法为:
sctp://主机:端口[?选项]
协议接受以下选项:
- listen
如果设置为任何值,则侦听传入连接。默认情况下完成外向连接。
- max_streams
设置流的最大数量。默认情况下未设置限制。
18.37 srt
通过libsrt的Haivision安全可靠传输协议。
支持的SRT URL语法为:
srt://主机名:端口[?选项]
选项包含形式为键=值.
或
选项 srt://主机名:端口
选项包含形式为‘-键 值’ 的选项。
此协议接受以下选项。
- connect_timeout=毫秒
连接超时;当默认连接超时为3秒时,RTT > 1500毫秒(2次握手交换)时SRT无法连接。 此选项适用于呼叫方和随机交汇连接模式。对于随机交汇模式,连接超时是值设置的10倍(此值可用于解决早期版本的连接问题)。
- ffs=字节
飞行标志大小(窗口大小),以字节为单位。FFS实际上是一个内部参数,您应该设置它不低于recv_buffer_size和mss。默认值相对较大,除非您设置一个非常大的接收缓冲区,否则不需要更改此选项。默认值为25600。
- inputbw=字节/秒
发送方标称输入速率,以字节每秒计。与oheadbw结合使用,当maxbw设置为相对(0)时,用于计算发送速率最大值,当恢复包与主媒体流一起发送时:inputbw * (100 + oheadbw) / 100 如果inputbw未设置,而maxbw设置为相对(0),实际输入速率在库内评估。默认值为0。
- iptos=tos
IP 服务类型。仅适用于发送方。默认值是 0xB8。
- ipttl=ttl
IP 生存时间(TTL)。仅适用于发送方。默认值是 64。
- latency=微秒
基于时间戳的包传递延迟。 用于吸收丢包重传时的突发。此标志同时设置rcvlatency和peerlatency为相同值。注意,在版本 1.3.0 之前,这是唯一设置延迟的标志,但是实际上等效于设置peerlatency,当方是发送方时,以及rcvlatency当方为接收方时启用,并且不支持双向流发送。
- listen_timeout=微秒
设置套接字监听超时时间。
- maxbw=字节/秒
最大发送带宽,单位为字节每秒。 -1 无限(CSRTCC 限制为 30Mbps) 0 相对于输入速率(参见inputbw) >0 绝对限制值 默认值是 0(相对)
- mode=caller|listener|rendezvous
连接模式。caller开启客户端连接。listener启动服务器以监听传入连接。rendezvous使用会合(Rendez-Vous)连接模式。 默认值是 caller。
- mss=字节
最大段大小,单位为字节。用于缓冲分配和通过包计数进行速率计算,假设包已满。 使用对等方中最小的 MSS。默认情况下,整个互联网中的值是 1500。 这是 UDP 数据包的最大大小,仅能减小,除非您有一些特殊的专用网络设置。默认值是 1500。
- nakreport=1|0
如果设置为 1,接收方将定期发送 ‘UMSG_LOSSREPORT’ 消息,直到丢失数据包被重新传输或故意丢弃。默认值是 1。
- oheadbw=百分比
输入速率之上的恢复带宽开销,单位为百分比。 参见inputbw。默认值是 25%。
- passphrase=字符串
HaiCrypt 加密/解密密码字符串,长度为 10 到 79 个字符。 密码是发送方和接收方之间的共享密钥。 它用于通过 PBKDF2(基于密码的密钥派生函数)生成密钥加密密钥。 仅在pbkeylen非零的情况下使用。仅当接收到的数据经过加密时,接收方才会使用此密码。 配置的密码无法被恢复(只可写)。
- enforced_encryption=1|0
如果为 true,则双方必须设置相同的密码(包括为空,即无加密)。 如果密码不匹配或仅一方未加密,连接将被拒绝。默认值是 true。
- kmrefreshrate=数据包
传输固定数量的数据包后,将切换到新的加密密钥的数量。默认为 -1。 值 -1 表示自动(在 SRT 库中为 0x1000000)。该选项范围为 0 到
INT_MAX
.- kmpreannounce=数据包
从发送新加密密钥到切换发生之间的时间间隔。 该值还适用于切换发生后到旧加密密钥停用之间的后续时间间隔。 默认值为 -1。 -1 表示自动(在 SRT 库中为 0x1000)。该选项范围为 0 到
INT_MAX
.- snddropdelay=微秒
发送方在丢弃数据包之前的额外延迟。此延迟将添加到默认的丢弃延迟时间间隔值。
特殊值 -1:发送方根本不丢弃数据包。
- payload_size=字节
设置在实时模式下的单次发送函数调用中传输的数据包声明的最大大小。 如果此值未使用,请使用 0(文件模式下的默认值)。 默认值是 -1(自动),通常意味着 MPEG-TS; 如果您计划 使用 SRT 发送任何其他类型的有效载荷(例如非常小的帧封装实时流), 则可以使用更大的最大帧大小,但不能超过 1456 字节。
- pkt_size=字节
别名‘payload_size’.
- peerlatency=微秒
由发送方设置的延迟值(如描述于rcvlatency)作为接收方的最小值。
- pbkeylen=字节
发送方加密密钥长度,以字节为单位。 只能设置为 0、16、24 或 32。 如果不为 0,则启用发送方加密。 接收方不需要(设置为 0), 密钥大小从发送方在 HaiCrypt 握手中获得。 默认值是 0。
- rcvlatency=微秒
应从数据包发送到传递到接收器应用程序的时间经过的时间。 此时间应为足够大的缓冲时间以覆盖发送时、意外延长的 RTT 时间 和重传丢失 UDP 数据包所需的时间。 实际延迟值将是该选项的值与peerlatency由对等方设置的值。 在版本 1.3.0 之前,此选项仅作为latency.
- recv_buffer_size=字节
设置 UDP 接收缓冲区大小,单位为字节。
- send_buffer_size=字节
设置 UDP 发送缓冲区大小,单位为字节。
- timeout=微秒
为读取、写入和连接操作设置触发错误的超时时间。 注意,SRT 库有可单独控制的内部超时时间, 此处设置的值仅限于这些时间。
- tlpktdrop=1|0
延迟过晚数据包丢弃。当在接收方启用时,它会跳过未及时到达的丢失数据包, 并在随后的数据包到达播放时间时将其传递给应用程序。 它还向发送方发送一个伪 ACK。 当在发送方启用并且接收对等方也启用时, 发送方会丢弃那些无法及时传递的旧数据包。 如果接收方支持此功能,发送方会自动启用此功能。
- sndbuf=字节
设置发送缓冲区大小,单位为字节。
- rcvbuf=字节
设置接收缓冲区大小,单位为字节。
接收缓冲区不得大于ffs.
- lossmaxttl=数据包
重新排序容忍值最大可增长到的值。 当 Reorder Tolerance > 0 时,数据包丢失报告被延迟 直到达到该值的数量的数据包到达。 如果 UDP 数据包倾向于无序到达,Reorder Tolerance 会在非重传情况下(即非序列丢失),增加至该选项的值。 默认值是 0,即关闭此机制,丢失报告总是在检测到序列间隙时立即发送。
- minversion
对等方所需的最低 SRT 版本。 如果对等方不满足最低版本要求,连接将被拒绝。
版本格式使用十六进制表示,形式为 0xXXYYZZ,对应 .x.y.z 的人类可读表达。
- streamid=字符串
在连接前设置在套接字上的字符串,长度限制为 512 个字符。 监听方可以通过从连接的套接字中检索此 Stream ID, 套接字通过 srt_accept 返回。 Stream ID 的内容没有强制解释规则。 此选项在会合连接模式下无意义;可能导致某一方覆盖另一方的值。
- srt_streamid=字符串
别名‘streamid’,避免与 FFMPEG 命令行选项冲突。
- smoother=live|file
用于该套接字传输的 Smoother 使用类型,负责传输和拥塞控制。 两个连接的端必须使用完全相同的 Smoother 类型, 否则连接将被拒绝。
- messageapi=1|0
当设定时,此套接字使用 Message API,否则使用 Buffer API。 注意在实时模式(参见transtype)中,仅支持消息 API。 在文件模式中可以选择两种模式:
流模式(默认,当此选项为 false)。 在此模式下,可以通过一个发送指令发送任意数据, 或者使用专门的函数直接从一个文件读取数据。 内部设施将处理任何速度和拥堵控制。 在接收时,也可接收任意数据,未提取的数据会等待下次调用。 在 Stream 模式中,数据间没有边界。
消息模式。在此模式中,单个发送指令传递恰好一个边界明确定义的一段数据(即消息)。 与实时模式相比,该消息可能跨越多个 UDP 数据包, 且唯一的大小限制为发送缓冲区能够完全容纳。 接收方应使用足够大的缓冲区接收消息,否则消息将不会交付。 如果消息不完整(未接收到所有数据包或出现丢包),则不会交付。
- transtype=live|file
设置套接字的传输类型,特别是,设定此选项会根据需要 为特定传输类型设置多个其他参数的默认值。
实时:以实时传输的设置选项。 此模式下发送数据对于单次发送指令应限于适合单一 UDP 数据包, 且不超过payload_size(默认为 1316)。此模式中没有速度控制,仅当配置时以 限制带宽控制(包括重传与控制数据包传输开销)。
文件:非实时传输的设置选项。messageapi参见详细设置说明。
- linger=秒
套接字在关闭时等待未发送数据的时间,以秒为单位。 默认值是-1。 -1 表示自动(实时模式为关闭,时间为 0 秒;文件模式为开启,时间为180秒)。 该选项范围为 0 到
INT_MAX
.- tsbpd=1|0
当为 true 时,使用基于时间戳的数据包传递模式。 默认行为取决于传输类型:实时模式下启用,文件模式下禁用。
更多信息见:https://github.com/Haivision/srt.
18.38 srtp
安全实时传输协议(SRTP)。
接受的选项是:
- srtp_in_suite
- srtp_out_suite
选择输入和输出的编码套件。
支持的值:
- ‘AES_CM_128_HMAC_SHA1_80’
- ‘SRTP_AES128_CM_HMAC_SHA1_80’
- ‘AES_CM_128_HMAC_SHA1_32’
- ‘SRTP_AES128_CM_HMAC_SHA1_32’
- srtp_in_params
- srtp_out_params
设置输入与输出编码参数, 以 base64 编码表示的二进制块形式表达。 该二进制块的前 16 字节用作主密钥, 后续 14 字节用作主要盐值。
18.39 subfile
虚拟提取文件或其他流的片段。 基础流必须支持定位。
接受的选项:
- start
提取片段的起始偏移量,单位为字节。
- end
提取片段的结束偏移量,单位为字节。 如果设置为 0,则提取到文件末尾。
示例:
从 DVD VOB 文件中提取章节(起始与结束扇区需外部提供并乘以 2048):
subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB
直接从 TAR 档案播放 AVI 文件:
subfile,,start,183241728,end,366490624,,:archive.tar
从起始偏移量播放 MPEG-TS 文件直到结束:
subfile,,start,32815239,end,0,,:video.ts
18.40 tee
同时将输出写入多个协议。单个输出间通过 | 分隔。
tee:file://path/to/local/this.avi|file://path/to/local/that.avi
18.41 tcp
传输控制协议(TCP)。
TCP URL 的必需语法是:
tcp://主机名:端口[?选项]
选项包含列表,其中选项形式以 & 分隔键=值.
支持的选项列表如下。
- listen=2|1|0
监听入站连接。0 禁用监听,1 启用单客户端模式下的监听,2 启用多客户端模式下的监听。默认值为 0。
- local_addr=地址
用于 TCP 套接字连接的网络接口的本地 IP 地址。
- local_port=端口
用于 TCP 套接字连接的本地端口。
- timeout=微秒
设置超时错误触发点,以微秒为单位。
该选项仅在读取模式下相关:如果在所设定的时间间隔内未收到数据,则触发错误。
- listen_timeout=毫秒
设置监听超时时间,以毫秒为单位。
- recv_buffer_size=字节
设置接收缓冲区大小,以字节为单位。
- send_buffer_size=字节
设置发送缓冲区大小,以字节为单位。
- tcp_nodelay=1|0
设置 TCP_NODELAY 禁用 Nagle 算法。默认值为 0。
备注:当前写入套接字未优化以最小化系统调用,从而降低了 TCP_NODELAY 的效率/效果。
- tcp_mss=字节
设置 TCP 数据包的最大段大小,以字节为单位。
以下示例展示了如何使用以下方式设置监听的 TCP 连接ffmpeg
,然后通过以下方式访问ffplay
:
ffmpeg -i 输入 -f 格式 tcp://主机名:端口?listen ffplay tcp://主机名:端口
18.42 TLS
传输层安全 (TLS) / 安全套接字层 (SSL)
TLS/SSL URL 的必要语法是:
tls://主机名:端口[?选项]
以下参数可以通过命令行选项设置
(或在代码中通过AVOption
调用):
- ca_file, cafile=文件名
存储证书颁发机构 (CA) 根证书文件,被视为可信。如果链接的 TLS 库包含默认配置,则可能不需要为验证指定此参数,但并非所有库和设置都有内置默认配置。 文件必须为 OpenSSL PEM 格式。
- tls_verify=1|0
如果启用,将尝试验证正在通信的对端。 注意,如果使用 OpenSSL,目前只会确保对端证书是由 CA 数据库中的根证书之一签名,而不会验证该证书是否真的与我们尝试连接的主机名匹配。(使用其他后端时,主机名也是经过验证的。)
默认情况下该功能是禁用的,因为在许多情况下需要调用方提供 CA 数据库。
- cert_file, cert=文件名
包含证书的文件,用于与对端进行握手。 (当以服务器模式操作时,监听模式下通常需要对端提供证书,而客户端证书仅在某些设置中需要。)
- key_file, key=文件名
包含证书私钥的文件。
- listen=1|0
如果启用,在提供的端口监听连接,并假定在握手中是服务器角色,而不是客户端角色。
- http_proxy
通过 HTTP 代理进行隧道连接,例如
http://example.com:1234
。 代理必须支持 CONNECT 方法。
示例命令行:
创建一个 TLS/SSL 服务器来服务于一个输入流。
ffmpeg -i 输入 -f 格式 tls://主机名:端口?listen&cert=server.crt&key=server.key
使用以下方式从 TLS/SSL 服务器回放一个流ffplay
:
ffplay tls://主机名:端口
18.43 UDP
用户数据报协议。
UDP URL 的必要语法是:
udp://主机名:端口[?选项]
选项包含列表,其中选项形式以 & 分隔键=值.
如果系统启用了线程功能,将使用循环缓冲区存储入站数据,这可以减少由于 UDP 套接字缓冲区溢出导致的数据丢失。fifo_size和overrun_nonfatal选项与此缓冲区相关。
支持的选项列表如下。
- buffer_size=大小
设置 UDP 最大套接字缓冲区大小,以字节为单位。用于设置接收或发送缓冲区大小,具体取决于套接字的用途。 默认值为输出 32 KB,输入 384 KB。另外请参见fifo_size.
- bitrate=比特率
如果设置为非零,输出将拥有指定的恒定比特率,前提是输入拥有足够的包以维持它。
- burst_bits=位
使用时比特率指定数据包突发的最大位数。
- localport=端口
覆盖绑定的本地 UDP 端口。
- localaddr=地址
用于发送数据包或加入多播组的网络接口的本地 IP 地址。
- pkt_size=大小
设置 UDP 数据包大小,以字节为单位。
- reuse=1|0
显式允许或禁止复用 UDP 套接字。
- ttl=TTL
设置生存时间的值(仅适用于多播)。
- connect=1|0
用
connect()
初始化 UDP 套接字。在这种情况下,目标地址不能通过 ff_udp_set_remote_url 更改。 如果起初不知道目标地址,此选项也可以在 ff_udp_set_remote_url 中指定。 这样设置可以通过 getsockname 找出数据包的源地址,写入时如果收到 "目标不可达" 错误,将返回 AVERROR(ECONNREFUSED)。 在接收数据时,这一设置仅接收来自指定对端地址/端口的数据包。- sources=地址[,地址]
仅接收来自指定地址发送的数据包。在使用多播时,也仅订阅来自这些地址的多播流量。
- block=地址[,地址]
忽略来自指定地址发送的数据包。在使用多播时,也将这些源地址排除在多播订阅中。
- fifo_size=单位
设置 UDP 接收环形缓冲区的大小,表示数据包数,每个数据包大小为 188 字节。如果未指定,默认大小为 7*4096。
- overrun_nonfatal=1|0
在 UDP 接收环形缓冲区溢出的情况下保持生存。默认值为 0。
- timeout=微秒
设置超时错误触发点,以微秒为单位。
该选项仅在读取模式下相关:如果在所设定的时间间隔内未收到数据,则触发错误。
- broadcast=1|0
显式允许或禁止 UDP 广播。
请注意,广播可能在具有广播风暴保护的网络中无法正常工作。
18.43.1 示例
- 使用
ffmpeg
通过 UDP 流式传输到远程终端:ffmpeg -i 输入 -f 格式 udp://主机名:端口
- 使用
ffmpeg
在 MPEG-TS 格式下通过 UDP 流式传输,使用 188 字节大小的数据包,并使用较大的输入缓冲区:ffmpeg -i 输入 -f mpegts udp://主机名:端口?pkt_size=188&buffer_size=65535
- 使用
ffmpeg
从远程终端通过 UDP 接收数据:ffmpeg -i udp://[多播地址]:端口 ...
18.44 Unix
Unix 本地套接字
Unix 套接字 URL 的必要语法是:
unix://文件路径
以下参数可以通过命令行选项设置
(或在代码中通过AVOption
调用):
- timeout
超时时间,以毫秒为单位。
- listen
以监听模式创建 Unix 套接字。
18.45 ZMQ
基于 libzmq 库的 ZeroMQ 异步消息传递。
此库支持多客户端单播流式传输,无需依赖外部服务器。
流式传输或连接到流的必要语法是:
zmq:tcp://ip-address:port
示例: 在端口 5555 上创建一个本地主机流:
ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555
多个客户端可以通过以下方式连接到流:
ffplay zmq:tcp://127.0.0.1:5555
通过 ZeroMQ 发布-订阅模式实现对多个客户端的流式传输。 服务器端绑定到端口并发布数据。客户端连接到服务器(通过 IP 地址/端口)并订阅流。 通常情况下,服务器和客户端启动的顺序无关紧要。
要支持此协议,ffmpeg 必须编译时使用 –enable-libzmq 选项。
选项可以在ffmpeg
/ffplay
命令行中设置。支持以下选项:
- pkt_size
强制发送/接收数据包的最大大小。默认值为 131,072 字节。 在服务器端,这设置经 ZeroMQ 发送的最大数据包大小。 在客户端,设置接收数据包的内部缓冲区大小。 注意,客户端上的 pkt_size 应该等于或大于服务器上的 pkt_size。 否则接收到的消息可能会被截断,导致解码错误。
19 设备选项
libavdevice 提供与 libavformat 相同的接口。 具体来说,输入设备被视为解复用器,输出设备被视为复用器,接口和泛型设备选项与 libavformat 提供的一致(参见 ffmpeg 格式手册)。
此外,每个输入或输出设备可能支持所谓的私有选项,这些选项特定于该组件。
选项可以通过指定 -option value在 FFmpeg 工具中设置,或通过设备显式设置值AVFormatContext
选项或使用libavutil/opt.hAPI 编程使用。
20 输入设备
输入设备是 FFmpeg 中配置的元素,它使您可以访问系统附加的多媒体设备中的数据。
配置 FFmpeg 构建时,默认情况下会启用所有支持的输入设备。 您可以使用 "–list-indevs" 选项列出所有可用的输入设备。
您可以使用 "–disable-indevs" 配置选项禁用所有输入设备, 并使用 "–enable-indev=" 选项选择性启用某个输入设备INDEV", 或使用 "–disable-indev=" 选项禁用特定输入设备INDEV".
ff* 工具的 "-devices" 选项将显示支持的输入设备列表。
以下是当前可用输入设备的描述。
20.1 ALSA
ALSA(高级 Linux 声音架构)输入设备。
要在配置期间启用此输入设备,您需要在系统上安装 libasound。
此设备允许从 ALSA 设备捕获。捕获设备的名称必须是 ALSA 卡标识符。
ALSA 标识符的语法为:
hw:卡[,设备[,子设备]]
其中设备和子设备组件是可选的。
三个参数(依次为卡,设备,子设备) 指定卡号或标识符、设备号和子设备号(-1 表示任意)。
要查看系统当前识别的卡列表,请检查文件/proc/asound/cards和/proc/asound/devices.
例如,使用以下配置从卡 ID 为 0 的 ALSA 设备捕获:ffmpeg
运行以下命令:
ffmpeg -f alsa -i hw:0 alsaout.wav
更多信息请参阅:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
20.1.1 选项
- sample_rate
以 Hz 为单位设置采样率。默认值为 48000。
- channels
设置通道数。默认值为 2。
20.2 android_camera
Android 摄像头输入设备。
此输入设备使用 Android Camera2 NDK API,该 API 在支持 API 级别 24+ 的设备上可用。 配置期间会自动检测 android_camera 的可用性。
此设备允许从集成到 Camera2 NDK API 的所有 Android 摄像头捕获数据。
可用摄像头在内部枚举,可通过camera_index参数选择。输入文件字符串将被忽略。
通常后置摄像头的索引为 0,而前置摄像头的索引为 1。
20.2.1 选项
- video_size
设置视频大小,格式如 640x480 或 hd720。如果请求的视频大小不可用或默认值不会成功,则会回退到 Android 报告的第一个可用配置。
- framerate
设置视频帧率。如果请求的帧率不可用或默认值不会成功,则会回退到 Android 报告的第一个可用配置(默认值为 -1)。
- camera_index
设置要使用的摄像头索引。默认值为 0。
- input_queue_size
设置最大缓冲帧数。默认值为 5。
20.3 avfoundation
AVFoundation 输入设备。
AVFoundation 是 Apple 推荐的框架,用于 OSX >= 10.7 以及 iOS 上的流媒体抓取。
输入文件名需要使用以下语法提供:
-i "[[VIDEO]:[AUDIO]]"
第一个条目选择视频输入,而后者选择音频输入。 流必须通过设备名称或设备索引按照设备列表指定。 或者,可以使用 -video_device_index <INDEX> 和/或 -audio_device_index <INDEX> 选择视频和/或音频输入设备,覆盖输入文件名中提供的设备名称或索引。
所有可用设备可以通过使用-list_devices true来枚举,列出所有设备名称和对应的索引。
有两个设备名称别名:
default
选择对应类型的 AVFoundation 默认设备。
none
不要录制对应的媒体类型。 这等同于指定空设备名称或索引。
20.3.1 选项
AVFoundation 支持以下选项:
- -list_devices <TRUE|FALSE>
如果设置为 true,则会显示所有可用输入设备的列表,展示所有设备名称和索引。
- -video_device_index <INDEX>
通过其索引指定视频设备。覆盖输入文件名中提供的任何内容。
- -audio_device_index <INDEX>
通过其索引指定音频设备。覆盖输入文件名中提供的任何内容。
- -pixel_format <FORMAT>
请求视频设备使用特定的像素格式。 如果指定的格式不被支持,会显示可用格式列表 并使用该列表中的第一个格式。可用的像素格式有:
monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray
- -framerate
设置抓取的帧率。默认值是
ntsc
,对应的帧率为30000/1001
.- -video_size
设置视频帧的大小。
- -capture_cursor
捕获鼠标指针。默认值为 0。
- -capture_mouse_clicks
捕获屏幕鼠标点击。默认值为 0。
- -capture_raw_data
捕获原始设备数据。默认值为 0。 使用此选项可能会接收到传递给 AVFoundation 框架的底层数据。例如,对于发送原始 DV 数据到框架的多路设备(如磁带式摄像机),将此选项设置为 false 会导致仅捕获以指定像素格式提取的视频帧。将此选项设置为 true 则会接收到未加工的 DV 流。
20.3.2 示例
- 打印支持的 AVFoundation 设备列表并退出:
$ ffmpeg -f avfoundation -list_devices true -i ""
- 从视频设备 0 和音频设备 0 录制视频到 out.avi:
$ ffmpeg -f avfoundation -i "0:0" out.avi
- 从视频设备 2 和音频设备 1 录制视频到 out.avi:
$ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
- 使用像素格式 bgr0 从系统默认视频设备录制视频,并不录制任何音频到 out.avi:
$ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
- 从适合的输入设备录制原始 DV 数据并将输出写入 out.dv:
$ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
20.4 bktr
BSD 视频输入设备。不推荐使用并将移除 - 如果您有兴趣维护此设备,请联系开发人员。
20.4.1 选项
- framerate
设置帧率。
- video_size
设置视频帧的大小。默认值为
vga
.- standard
-
可用值有:
- ‘pal’
- ‘ntsc’
- ‘secam’
- ‘paln’
- ‘palm’
- ‘ntscj’
20.5 decklink
decklink 输入设备为 Blackmagic DeckLink 设备提供捕获功能。
要启用此输入设备,需要 Blackmagic DeckLink SDK 并需要进行适当的配置--extra-cflags
和--extra-ldflags
。
在 Windows 上,需要将 IDL 文件通过widl
.
DeckLink 对于其支持的格式非常严格。可以使用raw_format设置输入的像素格式。
帧率和视频大小必须通过-list_formats 1
来为您的设备确定。音频采样率总是 48 kHz,通道数量可以是 2、8 或 16。请注意,所有音频通道都包含在一个音轨中。
20.5.1 选项
- list_devices
如果设置为true,打印设备列表并退出。 默认值为false。此选项已弃用,请使用 ffmpeg 的
-sources
选项列出可用输入设备。- list_formats
如果设置为true,打印支持的格式列表并退出。 默认值为false.
- format_code <FourCC>
此选项将输入视频格式设置为由 FourCC 提供的格式。要查看您的设备支持的值,请使用list_formats。 注意,有一个 FourCC'pal '也可以被用作pal(3 个字母)。 默认行为是自动检测输入视频格式,如果硬件支持这种方式。
- raw_format
设置捕获视频的像素格式。 可用值有:
- ‘auto’
-
这是默认值,表示使用 8-bit YUV 422 或 8-bit ARGB(如果使用格式自动检测),否则为 8-bit YUV 422。
- ‘uyvy422’
-
8-bit YUV 422。
- ‘yuv422p10’
-
10-bit YUV 422。
- ‘argb’
-
8-bit RGB。
- ‘bgra’
-
8-bit RGB。
- ‘rgb10’
-
10-bit RGB。
- teletext_lines
如果设置为非零值,将会从垂直辅助数据捕获一个额外的字幕数据流。支持 SD PAL(576i)和 HD(1080i 或 1080p)来源。在 HD 来源的情况下,会解码 OP47 数据包。
此选项是一个位掩码,可以捕获 SD PAL VBI 行,具体包括行 6 至 22 和行 318 至 335。行 6 是掩码中的最低有效位。选定行中没有字幕信息的行将被忽略。可以使用特殊值all来选择所有可能的行,或者使用standard跳过行 6、318 和 319,这些行与所有接收器不兼容。
对于 SD 来源,ffmpeg 需要编译带有
--enable-libzvbi
。对于 HD 来源,在较旧的(4K 以前)DeckLink 卡模型上,需要以 10 位模式捕获。- channels
定义捕获的音频通道数量。必须为 ‘2’, ‘8’ 或 ‘16’。 默认值为 ‘2’.
- duplex_mode
设置 decklink 设备的双工/配置文件模式。必须为 ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’ 默认值为 ‘unset’.
注意:DeckLink SDK 11.0 已经将双工属性替换为配置文件属性。 对于 DeckLink Duo 2 和 DeckLink Quad 2,配置文件在使用相同接口的任何两个子设备之间共享。对于 DeckLink 8K Pro,配置文件在所有 4 个子设备之间共享。因此,DeckLink 8K Pro 支持四个配置文件。
DeckLink 8K Pro 的有效配置文件模式(使用 DeckLink SDK >= 11.0): ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’
DeckLink Quad 2 和 DeckLink Duo 2 的有效配置文件模式: ‘half’, ‘full’
- timecode_format
需要在帧和视频流元数据里包含的时间码类型。必须为 ‘none’, ‘rp188vitc’, ‘rp188vitc2’, ‘rp188ltc’, ‘rp188hfr’, ‘rp188any’, ‘vitc’, ‘vitc2’,或 ‘serial’。 默认值为 ‘none’(未包含)。
为了正确支持 50/60 fps 的时间码,对于时间码类型 ‘rp188any’ 的查询优先级是 HFR, VITC1, VITC2 和 LTC(大于 30 fps 的内容)。注意这与 DeckLink API 的查询优先级略有不同,它的方法是 HFR, VITC1, LTC, VITC2。
- video_input
设置视频输入源。必须为 ‘unset’, ‘sdi’, ‘hdmi’, ‘optical_sdi’, ‘component’, ‘composite’ 或 ‘s_video’。 默认值为 ‘unset’.
- audio_input
设置音频输入源。必须为 ‘unset’, ‘embedded’, ‘aes_ebu’, ‘analog’, ‘analog_xlr’, ‘analog_rca’ 或 ‘microphone’。默认值为 ‘unset’.
- video_pts
设置视频包时间戳来源。必须为 ‘video’, ‘audio’, ‘reference’, ‘wallclock’ 或 ‘abs_wallclock’。 默认值为 ‘video’.
- audio_pts
设置音频包时间戳来源。必须为 ‘video’, ‘audio’, ‘reference’, ‘wallclock’ 或 ‘abs_wallclock’。 默认值为 ‘audio’.
- draw_bars
如果设置为 ‘true’,在信号丢失的情况下绘制彩条。 默认值为 ‘true’。 此选项已弃用,请使用
signal_loss_action
选项。- signal_loss_action
在信号丢失的情况下采取的动作。接受以下值之一:
- 1, none
信号丢失时不采取任何动作。这通常会导致黑屏。
- 2, bars
在信号丢失时绘制彩条。仅支持 8-bit 输入信号。
- 3, repeat
在信号丢失时重复最后的视频帧。
默认值为 ‘bars’.
- queue_size
设置最大输入缓冲区大小(以字节为单位)。如果缓冲达到此值,输入帧将会被丢弃。 默认值为 ‘1073741824’.
- audio_depth
设置音频采样的位深度。必须为 ‘16’ 或 ‘32’。 默认值为 ‘16’.
- decklink_copyts
如果设置为true,时间戳将原样转发,不移除初始偏移。 默认值为false.
- timestamp_align
捕获开始时间对齐(以秒为单位)。如果设置为非零值,将丢弃输入帧直到系统时间戳与配置的值对齐。 最多容忍一个帧持续时间的对齐差异。 此方法用于保持在部署于多路硬件设备的情况下的输入同步。不同硬件设备的系统时间应通过 NTP 或 PTP 等协议进行同步后再使用此选项。 请注意,此方法并非完全可靠。在某些边界情况下,输入同步可能不会发生,因为操作系统中的线程调度抖动。 同步可能出错一帧,或者较少情况下为timestamp_align秒。 默认值为 ‘0’.
- wait_for_tc (bool)
丢弃帧直到收到带有时间码的帧。有时,在接收到的第一输入帧时不会收到串行时间码。如果发生这种情况,存储的流时间码将会不准确。如果此选项设置为true,输入帧将会丢弃直到收到带有时间码的帧。 选项timecode_format必须指定。 默认值为false.
- enable_klv(bool)
如果设置为true,将从 VANC 提取 KLV 数据并输出 KLV 包。 KLV VANC 包将根据 MID 和 PSC 字段进行连接并聚合到一个 KLV 包中。 默认值为false.
20.5.2 示例
- 列出输入设备:
ffmpeg -sources decklink
- 列出支持的格式:
ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
- 捕获 1080i50 的视频剪辑:
ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
- 捕获 1080i50 10 位视频剪辑:
ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
- 捕获 1080i50 并包含 16 音频通道的视频剪辑:
ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
20.6 dshow
Windows DirectShow 输入设备。
当使用 mingw-w64 项目构建 FFmpeg 时,启用 DirectShow 支持。 当前仅支持音频和视频设备。
可以作为单独的输入打开多个设备,但它们也可以在同一输入上打开,从而改善它们之间的同步。
输入名称格式应为:
类型=名称[:类型=名称]
其中类型可以是音频或视频, 而名称则是设备的名称或别名。
20.6.1 选项
如果未指定任何选项,则使用设备的默认设置。 如果设备不支持所请求的选项,则打开失败。
- video_size
在捕获的视频中设置视频尺寸。
- framerate
在捕获的视频中设置帧率。
- sample_rate
设置捕获音频的采样率(以 Hz 为单位)。
- sample_size
设置捕获音频的样本大小(以位为单位)。
- channels
设置捕获音频的通道数。
- list_devices
如果设置为true,打印设备列表并退出。
- list_options
如果设置为true,打印所选设备的选项列表并退出。
- video_device_number
为名称相同的设备设置视频设备编号(从 0 开始,默认为 0)。
- audio_device_number
为名称相同的设备设置音频设备编号(从 0 开始,默认为 0)。
- pixel_format
选择 DirectShow 使用的像素格式。这只能在未设置视频编解码器或设置为 rawvideo 时设置。
- audio_buffer_size
设置音频设备缓冲区大小(以毫秒为单位,可以直接影响延迟,具体取决于设备)。 默认情况下使用音频设备的默认缓冲区大小(通常是 500 毫秒的倍数)。 将此值设置过低可能会降低性能。 详见http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx
- video_pin_name
选择视频捕获引脚使用名称或别名。
- audio_pin_name
选择音频捕获引脚使用名称或别名。
- crossbar_video_input_pin_number
为交叉网络设备选择视频输入引脚编号。这将被路由到交叉网络设备的视频解码器输出引脚。 注意,改变此值可能会影响未来的调用(设置新默认值),直到系统重新启动。
- crossbar_audio_input_pin_number
为交叉网络设备选择音频输入引脚编号。这将被路由到交叉网络设备的音频解码器输出引脚。 注意,改变此值可能会影响未来的调用(设置新默认值),直到系统重新启动。
- show_video_device_dialog
如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动更改视频过滤器的属性和配置。注意,对于交叉开关设备,有时可能需要在此对话框中调整值,以切换PAL(25 fps)和NTSC(29.97 fps)输入帧率、尺寸、隔行扫描等内容。更改这些值可以启用不同的扫描率/帧率,并避免底部出现绿条、闪烁的扫描线等问题。需要注意的是,对于某些设备,更改这些属性可能会影响未来的调用(设置新的默认值),直到系统重新启动后才恢复。
- show_audio_device_dialog
如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动更改音频过滤器的属性和配置。
- show_video_crossbar_connection_dialog
如果设置为true在开始捕获之前,当打开视频设备时,弹出一个显示对话框给最终用户,允许他们手动修改交叉开关针脚路由。
- show_audio_crossbar_connection_dialog
如果设置为true在开始捕获之前,当打开音频设备时,弹出一个显示对话框给最终用户,允许他们手动修改交叉开关针脚路由。
- show_analog_tv_tuner_dialog
如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动修改电视频道和频率。
- show_analog_tv_tuner_audio_dialog
如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动修改电视音频(如单声道与立体声、语言A、B或C)。
- audio_device_load
从文件加载一个音频捕获过滤设备,而不是通过名字搜索它。如果过滤器支持其属性的序列化,还可以加载其他参数。为了使用此功能,必须指定音频捕获源,但它可以是任何内容,甚至是虚假的。
- audio_device_save
将当前使用的音频捕获过滤设备及其参数(如果过滤器支持)保存到文件。如果文件名已存在,则将被覆盖。
- video_device_load
从文件加载一个视频捕获过滤设备,而不是通过名字搜索它。如果过滤器支持其属性的序列化,还可以加载其他参数。为了使用此功能,必须指定视频捕获源,但它可以是任何内容,甚至是虚假的。
- video_device_save
将当前使用的视频捕获过滤设备及其参数(如果过滤器支持)保存到文件。如果文件名已存在,则将被覆盖。
- use_video_device_timestamps
如果设置为false视频帧的时间戳将从实时时钟派生,而不是从捕获设备提供的时间戳。这可以解决由设备提供的时间戳不可靠的问题。
20.6.2 示例
- 列出DirectShow支持的设备并退出:
$ ffmpeg -list_devices true -f dshow -i dummy
- 打开视频设备摄像头:
$ ffmpeg -f dshow -i video="Camera"
- 通过名称打开第二个视频设备摄像头:
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
- 打开视频设备摄像头并打开音频设备麦克风:
$ ffmpeg -f dshow -i video="Camera":audio="Microphone"
- 列出选定设备中支持的选项并退出:
$ ffmpeg -list_options true -f dshow -i video="Camera"
- 指定针脚名称以通过名称或备用名称捕获,指定备用设备名称:
$ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
- 配置一个交叉开关设备,指定交叉开关针脚,在启动时允许用户调整视频捕获属性:
$ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0 -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
20.7 fbdev
Linux帧缓冲输入设备。
Linux帧缓冲是一个与硬件独立的抽象层,用于在计算机显示器上显示图形,通常是在控制台上。可以通过一个文件设备节点访问,通常是/dev/fb0.
要了解更多详细信息,请阅读Linux源代码树中包含的Documentation/fb/framebuffer.txt文件。
另见http://linux-fbdev.sourceforge.net/和fbset(1)。
从帧缓冲设备录制/dev/fb0使用ffmpeg
:
ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi
您可以使用以下命令拍摄单张截图:
ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg
20.7.1 选项
- framerate
设置帧率。默认为25。
20.8 gdigrab
基于Win32 GDI的屏幕捕获设备。
此设备允许您捕获Windows上的显示区域。
输入文件名的选项中包括以下元素:
desktop
或
title=窗口标题
或
hwnd=窗口句柄
第一个选项将捕获整个桌面或桌面的固定区域。第二个和第三个选项将捕获单个窗口的内容,无论其在屏幕上的位置。
例如,使用以下命令捕获整个桌面:ffmpeg
:
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
在位置捕获640x480区域10,20
:
ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg
捕获名为“计算器”的窗口内容
ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg
20.8.1 选项
- draw_mouse
指定是否绘制鼠标指针。使用值
0
不绘制指针。默认值为1
.- framerate
设置捕获帧率。默认值为
ntsc
,对应的帧率为30000/1001
.- show_region
在屏幕上显示捕获区域。
如果show_region与
1
一起指定,则屏幕上将指示捕获区域。使用此选项时,如果仅捕获屏幕的一部分,很容易知道正在捕获的内容。注意,show_region与捕获单个窗口的内容不兼容。
例如:
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
- video_size
设置视频帧大小。如果选择了desktop,则默认捕获全屏;如果选择了title=窗口标题,则默认捕获窗口的全部大小。
- offset_x
在使用video_size捕获区域时,设置距离屏幕或桌面左边缘的距离。
注意,此偏移量是从Windows主显示器的左上角计算的。如果显示器位于主显示器左侧,则需要使用负offset_x值来将区域移动到该显示器上。
- offset_y
在使用video_size捕获区域时,设置距离屏幕或桌面顶部边缘的距离。
注意,此偏移量是从Windows主显示器的左上角计算的。如果显示器位于主显示器上方,则需要使用负offset_y值来将区域移动到该显示器上。
20.9 iec61883
使用libiec61883的FireWire DV/HDV输入设备。
要启用此输入设备,您需要在系统上安装libiec61883、libraw1394和libavc1394。使用配置选项--enable-libiec61883
以启用此设备的编译。
iec61883捕获设备支持从通过IEEE1394(FireWire)连接的视频设备捕获,使用libiec61883和新的Linux FireWire堆栈(juju)。这是Linux内核2.6.37及更高版本中的默认DV/HDV输入方法,因为旧的FireWire堆栈已被移除。
指定要用作输入文件的FireWire端口,或使用“auto”选择第一个连接的端口。
20.9.1 选项
- dvtype
覆盖DV/HDV的自动检测。仅当自动检测不起作用或应禁止使用其他设备类型时使用。如果将DV设备视为HDV(或反之),将不起作用并导致未定义的行为。支持的值为auto, dv和hdv。
- dvbuffer
设置传入数据缓冲区的最大大小(以帧为单位)。对于DV,这是一个精确值。对于HDV,由于HDV没有固定的帧大小,因此不是帧精确的。
- dvguid
通过指定其GUID来选择捕获设备。仅从指定的设备执行捕获,如果未找到具有给定GUID的设备,则操作失败。这对于同时连接多个设备时选择输入非常有用。查看/sys/bus/firewire/devices以找到GUID。
20.9.2 示例
- 抓取并显示FireWire DV/HDV设备的输入。
ffplay -f iec61883 -i auto
- 抓取并记录FireWire DV/HDV设备的输入,如果源是HDV,使用100000个数据包的包缓冲区。
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
20.10 jack
JACK输入设备。
在配置期间启用此输入设备需要在系统上安装libjack。
JACK输入设备为每个音频通道创建一个或多个JACK可写客户端,每个客户端以client_name:input_N命名,其中client_name是应用程序提供的名称,N是标识通道的数字。每个可写客户端都会将获取的数据发送到FFmpeg输入设备。
创建一个或多个JACK可读客户端后,您需要将它们连接到一个或多个JACK可写客户端。
要连接或断开JACK客户端,您可以使用jack_connect
和jack_disconnect
程序,或者通过图形界面,例如使用qjackctl
.
要列出JACK客户端及其属性,您可以调用以下命令jack_lsp
.
以下是一个示例,展示如何使用JACK音频服务器捕获一个JACK可读客户端:ffmpeg
.
# Create a JACK writable client with name "ffmpeg". $ ffmpeg -f jack -i ffmpeg -y out.wav # Start the sample jack_metro readable client. $ jack_metro -b 120 -d 0.2 -f 4000 # List the current JACK clients. $ jack_lsp -c system:capture_1 system:capture_2 system:playback_1 system:playback_2 ffmpeg:input_1 metro:120_bpm # Connect metro to the ffmpeg writable client. $ jack_connect metro:120_bpm ffmpeg:input_1
更多信息请阅读:http://jackaudio.org/
20.10.1 选项
- channels
设置通道数。默认为2。
20.11 kmsgrab
KMS视频输入设备。
捕获与指定CRTC或平面相关联的KMS扫描输出帧缓冲区,作为一个可以传递到其他硬件功能的DRM对象。
运行时需要有DRM主权限或CAP_SYS_ADMIN权限。
如果您不明白这些术语的意思,那么您可能不需要这个设备。请参阅x11grab以获得更多信息。
20.11.1 选项
- device
要捕获的DRM设备。默认值为/dev/dri/card0.
- format
帧缓冲区的像素格式。如果您运行的是Linux 5.7或更高版本,可以自动检测,但在更早版本中需要提供此信息。默认值为bgr0,这是Linux控制台和Xorg X服务器最常用的格式。
- format_modifier
用于信号输出帧的格式修饰符。这在将帧导入某些API时是必要的。如果运行Linux 5.7或更高版本,可以自动检测,但在更早版本中需要明确提供。有关可能的值,请参阅libdrm文档。
- crtc_id
用于定义捕获源的KMS CRTC ID。将使用给定CRTC上的第一个活动平面。
- plane_id
用于定义捕获源的KMS平面ID。如果未指定crtc_id或plane_id,则默认使用找到的第一个活动平面。
- framerate
捕获的帧率。这并不同步于任何页面翻转或帧缓冲区更改,只定义了帧缓冲区的采样间隔。如果采样速率快于帧缓冲区的更新速率,将生成具有相同内容的独立帧。默认值为
30
.
20.11.2 示例
- 从第一个活动平面捕获,将结果下载为普通帧并编码。仅当帧缓冲区既是线性的又是可映射的时,这才会有效;否则,结果可能会被随机化或下载失败。
ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
- 以60fps的速率从CRTC ID 42捕获,将结果映射到VAAPI,将其转换为NV12并编码为H.264。
ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
- 为了仅捕获平面的一部分,可以对输出进行裁剪——只要拥有已知的绝对位置和大小,这可以用于捕获单个窗口。例如,为了捕获和编码1920x1080平面中央的四分之一区域:
ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
20.12 lavfi
Libavfilter输入虚拟设备。
此输入设备从libavfilter过滤图的打开输出端读取数据。
对于每个过滤图打开的输出,输入设备将创建一个相应的流,该流映射到生成的输出。graph.
20.12.1 选项
- graph
指定用作输入的过滤图。每个视频打开输出必须由形式为"out"的唯一字符串标记。否", 其中否是从0开始的数字,对应于设备生成的映射输入流。 第一个未标记的输出会自动分配为"out0"标签,但其他所有的都需要显式指定。
输出标签可以附加后缀"+subcc"以创建一个附带关闭字幕数据包的额外流(实验性;目前仅适用于EIA-608 / CEA-708)。 subcc流是在所有普通流之后按相应流的顺序创建的。 例如,如果有"out19+subcc","out7+subcc"以及最高到"out42",那么流#43是流#7的subcc,而流#44是流#19的subcc。
如果未指定,默认为输入设备指定的文件名。
- graph_file
设置要读取并传送到其他过滤器的过滤器图的文件名。过滤器图的语法与通过选项指定的语法相同。图.
- dumpgraph
将图形转储到标准错误输出。
20.12.2 示例
- 创建一个彩色视频流并使用播放它
ffplay
:ffplay -f lavfi -graph "color=c=pink [out0]" dummy
- 与前一个示例类似,但使用带文件名的过滤器图描述,并省略"out0"标签:
ffplay -f lavfi color=c=pink
- 创建三个不同的视频测试过滤器源并播放它们:
ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
- 使用amovie源从文件中读取音频流并用播放它
ffplay
:ffplay -f lavfi "amovie=test.wav"
- 读取音频流和视频流并用播放它
ffplay
:ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
- 将解码的帧转储为图像,并将闭路字幕转储为RCWT备份:
ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
20.13 libcdio
基于libcdio的音频CD输入设备。
要在配置期间启用此输入设备,您需要在系统上安装libcdio。需要使用配置选项--enable-libcdio
.
此设备允许从音频CD进行播放和抓取。
例如,用ffmpeg
复制整个音频CD,/dev/sr0,您可以运行以下命令:
ffmpeg -f libcdio -i /dev/sr0 cd.wav
20.13.1 选项
- speed
设置驱动器读取速度。默认值为0。
速度以CD-ROM速度单位指定。速度是通过libcdio
cdio_cddap_speed_set
函数设置的。在许多CD-ROM驱动器上,指定过大的值会导致使用最快速度。- paranoia_mode
设置偏执恢复模式标志。可以接受以下值之一:
- ‘disable’
- ‘verify’
- ‘overlap’
- ‘neverskip’
- ‘full’
默认值为‘disable’.
有关可用恢复模式的更多信息,请查阅paranoia项目文档。
20.14 libdc1394
基于libdc1394和libraw1394的IIDC1394输入设备。
需要使用配置选项--enable-libdc1394
.
20.14.1 选项
- framerate
设置帧速率。默认值为
ntsc
,对应于帧速率为30000/1001
.- pixel_format
选择像素格式。默认值为
uyvy422
.- video_size
设置视频大小,格式为字符串,如
640x480
或hd720
。 默认值为qvga
.
20.15 openal
OpenAL输入设备提供在具有运行OpenAL 1.1实现的所有系统上的音频捕获。
要在配置期间启用此输入设备,您需要在系统上安装OpenAL头文件和库,并需要使用配置FFmpeg--enable-openal
.
OpenAL头文件和库应作为您的OpenAL实现的一部分或作为额外下载(SDK)提供。根据您的安装,您可能需要通过--extra-cflags
和--extra-ldflags
指定附加标志,允许构建系统定位到OpenAL头文件和库。
以下是OpenAL实现的一个不完整列表:
- Creative
官方的Windows实现,提供具有支持设备的硬件加速和软件回退。 参见http://openal.org/.
- OpenAL Soft
便携的、开源的(LGPL)软件实现。包括Windows、Linux、Solaris和BSD操作系统上最常见的声音API的后端。 参见http://kcat.strangesoft.net/openal.html.
- Apple
OpenAL是Core Audio的一部分,这是Mac OS X官方音频接口。 参见http://developer.apple.com/technologies/mac/audio-and-video.html
此设备允许通过OpenAL捕获来自音频输入设备的音频。
您需要在提供的文件名中指定要捕获的设备名称。如果提供空字符串,将自动选择默认设备。您可以使用选项获取支持设备的列表list_devices.
20.15.1 选项
- channels
设置捕获音频中的声道数。目前仅支持以下值1(单声道)和2(立体声)。 默认值为2.
- sample_size
设置捕获音频的样本大小(以位为单位)。目前仅支持以下值8和16。默认值为16.
- sample_rate
设置捕获音频的采样率(以Hz为单位)。 默认值为44.1k.
- list_devices
如果设置为true,打印设备列表并退出。 默认值为false.
20.15.2 示例
打印支持的OpenAL设备列表并退出:
$ ffmpeg -list_devices true -f openal -i dummy out.ogg
从OpenAL设备捕获DR-BT101 via PulseAudio:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
从默认设备捕获(注意文件名为空字符串”):
$ ffmpeg -f openal -i '' out.ogg
同时从两个设备捕获,写入两个不同的文件,
在同一个ffmpeg
命令下:
$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
注意:并非所有OpenAL实现都支持多输入设备同时捕获——如果上述操作不起作用,请尝试最新的OpenAL Soft。
20.16 oss
Open Sound System输入设备。
提供给输入设备的文件名是表示OSS输入设备的设备节点,通常设置为/dev/dsp.
例如,从/dev/dsp抓取时,使用ffmpeg
用以下命令:
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
有关OSS的更多信息,请参见:http://manuals.opensound.com/usersguide/dsp.html
20.16.1 选项
- sample_rate
以Hz为单位设置采样率。默认值为48000。
- channels
设置声道数。默认值为2。
20.17 pulse
PulseAudio输入设备。
要启用此输出设备,您需要使用以下命令配置FFmpeg--enable-libpulse
.
提供给输入设备的文件名是源设备或字符串"default"。
您可以运行以下命令来列出PulseAudio源设备及其属性pactl list sources
.
有关PulseAudio的更多信息,请参见http://www.pulseaudio.org.
20.17.1 选项
- server
连接到通过IP地址指定的特定PulseAudio服务器。 当未提供时将使用默认服务器。
- name
指定PulseAudio在显示活跃客户端时使用的应用程序名称, 默认情况下为
LIBAVFORMAT_IDENT
字符串。- stream_name
指定PulseAudio在显示活跃流时使用的流名称, 默认情况下为"record"。
- sample_rate
以Hz为单位指定采样率,默认使用48kHz。
- channels
指定使用的声道,默认设置为2(立体声)。
- frame_size
此选项不起作用,已被弃用。
- fragment_size
指定缓冲区中最小缓冲片段的大小(以字节为单位), 它会影响音频延迟。默认设置为50毫秒的数据量。
- wallclock
使用当前时间设置初始PTS。默认值为1。
20.17.2 示例
从默认设备录制流:
ffmpeg -f pulse -i default /tmp/pulse.wav
20.18 sndio
sndio输入设备。
要在配置期间启用此输入设备,您需要在系统上安装libsndio。
提供给输入设备的文件名是表示sndio输入设备的设备节点,通常设置为/dev/audio0.
例如,从/dev/audio0抓取时,使用ffmpeg
用以下命令:
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
20.18.1 选项
- sample_rate
以Hz为单位设置采样率。默认值为48000。
- channels
设置声道数。默认值为2。
20.19 video4linux2, v4l2
Video4Linux2输入视频设备。
"v4l2"可用作"video4linux2"的别名。
如果FFmpeg是通过v4l-utils支持(使用以下命令)构建的--enable-libv4l2
配置选项,它可以与-use_libv4l2
输入设备选项一起使用。
要抓取的设备名称是一个设备节点文件,通常Linux系统会在设备(如USB网络摄像头)连接到系统时自动创建该节点,其名称类似于/dev/videoN,其中N是与设备相关联的一个数字。
Video4Linux2设备通常支持一组有限的宽度x高度的尺寸和帧速率。您可以使用以下命令检查支持的内容-list_formats all
获取Video4Linux2设备的支持信息。
某些设备,例如电视卡,支持一个或多个标准。可以使用以下命令列出所有支持的标准-list_standards all
.
时间戳的时间基是1微秒。根据内核版本和配置,时间戳可能来源于实时时钟(起点为Unix Epoch)或单调时钟(起点通常为开机时间,不受NTP或手动更改时钟的影响)。-timestamps abs或-ts abs选项可用于强制转换为实时时钟。
以下是video4linux2设备的一些使用示例,与ffmpeg
和ffplay
:
- 列出Video4Linux2设备的支持格式:
ffplay -f video4linux2 -list_formats all /dev/video0
- 抓取并显示Video4Linux2设备的输入:
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
- 抓取并记录Video4Linux2设备的输入,同时保持帧速率和尺寸与之前设置相同:
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
有关Video4Linux的更多信息,请查看http://linuxtv.org/.
20.19.1 选项
- standard
设置标准。必须是支持的标准的名称。要获取支持的标准列表,请使用list_standards选项。
- channel
设置输入通道号。默认值为-1,这表示使用先前选择的通道。
- video_size
设置视频帧尺寸。参数必须是形式为宽度x高度或有效的尺寸缩写的字符串。
- pixel_format
选择像素格式(仅对原始视频输入有效)。
- input_format
设置首选像素格式(用于原始视频)或编解码器名称。 此选项允许选择输入格式(当有多个可用时)。
- framerate
设置首选视频帧速率。
- list_formats
列出可用格式(支持的像素格式、编解码器和帧尺寸)并退出。
可用值为:
- ‘all’
显示所有可用的(压缩和未压缩的)格式。
- ‘raw’
仅显示原始视频(未压缩的)格式。
- ‘compressed’
仅显示压缩格式。
- list_standards
列出支持的标准并退出。
可用值为:
- ‘all’
显示所有支持的标准。
- timestamps, ts
设置抓取帧的时间戳类型。
可用值为:
- ‘default’
使用内核提供的时间戳。
- ‘abs’
使用绝对时间戳(挂钟时间)。
- ‘mono2abs’
强制从单调时间戳转换为绝对时间戳。
默认值为
default
.- use_libv4l2
使用libv4l2(v4l-utils)转换功能。默认值为0。
20.20 vfwcap
VfW(Windows视频)捕获输入设备。
作为输入传递的文件名是捕获驱动程序编号,从0到9。不带用作文件名时将打印驱动程序列表。 其他任何文件名都会被解释为设备编号0。
20.20.1 选项
- video_size
设置视频帧大小。
- framerate
设置抓取帧速率。默认值为
ntsc
,对应的帧速率为30000/1001
.
20.21 x11grab
X11视频输入设备。
要在配置期间启用此输入设备,您需要在系统上安装libxcb。系统会在配置期间自动检测。
此设备允许抓取X11显示器的一个区域。
作为输入传递的文件名具有以下语法:
[主机名]:显示器编号.屏幕编号[+x偏移,y偏移]
主机名:显示器编号.屏幕编号指定要抓取的屏幕的X11显示器名称。主机名可以省略,默认值为"localhost"。环境变量DISPLAY
包含显示器名称的默认值。
x偏移和y偏移指定抓取区域相对于X11屏幕左上角边界的偏移值。默认值为0。
请查看X11文档(例如man X
)获取更多详细信息。
使用xdpyinfo
程序来获取有关您的 X11 显示器属性的基本信息(例如,可以用 grep 搜索“name”或“dimensions”)。
例如抓取自:0.0使用ffmpeg
:
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
在位置抓取10,20
:
ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
20.21.1 选项
- select_region
指定是否通过指针图形选择抓取区域。值为
1
将提示用户通过点击和拖动以图形方式选择抓取区域。单击且不拖动将选择整个屏幕。具有零宽度或高度的区域也将选择整个屏幕。此选项会覆盖video_size, grab_x和grab_y选项。默认值是0
.- draw_mouse
指定是否绘制鼠标指针。值为
0
指定不要绘制指针。默认值为1
.- follow_mouse
使抓取区域跟随鼠标。参数可以是
centered
或指定的像素数量PIXELS.当指定为“centered”时,抓取区域跟随鼠标指针并将指针保持在区域中心;否则,只有当鼠标指针接近区域边缘PIXELS(大于零)时,区域才会跟随。
例如:
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
仅在鼠标指针接近边缘100像素时跟随:
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
- framerate
设置抓取的帧率。默认值为
ntsc
对应的帧率为30000/1001
.- show_region
在屏幕上显示抓取的区域。
如果show_region指定为
1
,则抓取的区域将在屏幕上显示出来。使用此选项时,如果仅抓取了屏幕的一部分,很容易知道正在抓取的内容。- region_border
设置区域边框厚度,如果-show_region 1已使用。 范围是1到128,默认值是3(仅适用于基于 XCB 的 x11grab)。
例如:
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
使用follow_mouse:
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
- window_id
抓取此窗口,而不是整个屏幕。默认值为 0,表示映射到整个屏幕(根窗口)。
可以使用
xwininfo
程序找到窗口的 ID,可能需要使用 -tree 和 -root 选项。如果窗口后来扩大,新区域不会被记录。视频在窗口关闭、取消映射(即图标化)或缩小到比视频尺寸小的情况下结束(默认值为初始窗口尺寸)。
此选项禁用选项follow_mouse和select_region.
- video_size
设置视频帧的尺寸。默认值是桌面或窗口的全尺寸。
- grab_x
- grab_y
设置抓取区域的坐标。它们从 X11 窗口的左上角偏移,分别对应x_offset和y_offset参数在设备名称中。两个选项的默认值都是0。
21 重采样器选项
音频重采样器支持以下指定选项。
可以通过指定 -选项 值在 FFmpeg 工具中设置,选项=值用于 aresample 过滤器,
或通过在SwrContext
选项中显式设置值或使用libavutil/opt.hAPI
以编程方式使用。
- uchl, used_chlayout
设置输入通道布局。默认值未设置。此选项仅用于特殊重映射。
- isr, in_sample_rate
设置输入采样率。默认值为0。
- osr, out_sample_rate
设置输出采样率。默认值为0。
- isf, in_sample_fmt
指定输入采样格式。默认值为
none
.- osf, out_sample_fmt
指定输出采样格式。默认值为
none
.- tsf, internal_sample_fmt
设置内部采样格式。默认值为
none
。 未显式设置时,将自动选择。- ichl, in_chlayout
- ochl, out_chlayout
设置输入/输出通道布局。
请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的通道布局部分查看所需语法。
- clev, center_mix_level
设置中心混合级别。它是一个以分贝表达的值,必须在[-32,32]区间内。
- slev, surround_mix_level
设置环绕混合级别。它是一个以分贝表达的值,必须在[-32,32]区间内。
- lfe_mix_level
设置 LFE (超低音)混合进入非 LFE级别。当有 LFE 输入但无 LFE 输出时使用。它是一个以分贝表达的值,必须在[-32,32]区间内。
- rmvol, rematrix_volume
设置重矩阵音量。默认值为 1.0。
- rematrix_maxval
设置重矩阵的最大输出值。 可以用于防止裁剪或防止音量减少。 值为 1.0 可防止裁剪。
- flags, swr_flags
设置转换器使用的标志。默认值为 0。
它支持以下单个标志:
- res
强制重采样,即使输入和输出的采样率匹配,仍强制使用重采样。
- dither_scale
设置抖动比例。默认值为 1。
- dither_method
设置抖动方法。默认值为 0。
支持的值:
- ‘rectangular’
选择矩形抖动
- ‘triangular’
选择三角形抖动
- ‘triangular_hp’
选择高通过滤的三角形抖动
- ‘lipshitz’
选择 Lipshitz 噪声整形抖动。
- ‘shibata’
选择 Shibata 噪声整形抖动。
- ‘low_shibata’
选择低 Shibata 噪声整形抖动。
- ‘high_shibata’
选择高 Shibata 噪声整形抖动。
- ‘f_weighted’
选择 f 加权噪声整形抖动
- ‘modified_e_weighted’
选择修改后的 e 加权噪声整形抖动
- ‘improved_e_weighted’
选择改进的 e 加权噪声整形抖动
- resampler
设置重采样引擎。默认值为 swr。
支持的值:
- ‘swr’
选择本机 SW 重采样器;过滤器选项 precision 和 cheby 在这种情况下不适用。
- ‘soxr’
选择 SoX 重采样器(如适用);补偿,和过滤器选项 filter_size、phase_shift、exact_rational、filter_type 和 kaiser_beta 不适用。
- filter_size
仅用于 swr,设置重采样过滤器大小,默认值是32。
- phase_shift
仅用于 swr,设置重采样相移,默认值是10,范围必须在[0,30]内。
- linear_interp
启用时使用线性插值(默认)。禁用它如果您希望在 exact_rational 失败时保持速度而不是质量。
- exact_rational
仅用于 swr,启用时尝试根据输入和输出采样率使用准确的 phase_count。当 phase_count 大于
1 << phase_shift
时,phase_count 将回退为1 << phase_shift
。默认值为启用。- cutoff
设置截止频率比例(swr:6dB点;soxr:0dB点);必须是0到1之间的浮点值。默认值是 swr 为 0.97,而 soxr 为 0.91(使用采样率为 44100 时,可保持整个音频频带至 20kHz)。
- precision
仅用于 soxr,在高精度到位比特默认值为20的情况下,该重采样信号将被计算默认值为建设建议适合终点比深度。值为28时传输更为高质量,这是S
- cheby
仅用于 soxr,选择无通道卷积无(Chebyshev)&确切可以效果(十真)。过滤器选项精度无。
- async
仅用于 swr,通过拉伸、压缩、填充和修剪以简单方式进行1元音频同步至时间戳。设置为1时将启用填充和修剪,较大的值表示每秒数据可以拉伸或压缩的最大数量。 默认值为0,因此不应用补偿以使样本匹配音频时间戳。
- first_pts
仅用于 swr,假设第一个 pts 应该是此值。时间单位是1 / 采样率。 这允许在流开始时进行填充/修剪。默认情况下,不对第一帧的预期 pts 做任何假设,因此不会进行填充或修剪。 例如,如果音频流在视频流后开始,可以设置为0在开头填充静音或者是修剪由于编码器延迟产生负 pts 的样本。
- min_comp
仅用于 swr,设置时间戳与音频数据之间的最小时间差(秒)以触发数据的拉伸/压缩/填充或修剪,使其与时间戳匹配。默认值是min_comp =
FLT_MAX
).- min_hard_comp
仅用于 swr,设置时间戳与音频数据之间的最小时间差(秒)以触发添加/删除样本,使其与时间戳匹配。此选项实际上是选择硬(trim/fill)和软(squeeze/stretch)补偿之间的阈值。所有补偿默认通过min_comp禁用。 默认值是 0.1。
- comp_duration
仅用于 swr,设置拉伸/压缩数据以使其符合时间戳的持续时间(秒)。必须是非负浮点值,默认值是 1.0。
- max_soft_comp
仅用于 swr,设置数据拉伸/压缩以使其匹配时间戳的最大因子。必须是非负双精度浮点值,默认值是 0。
- matrix_encoding
选择矩阵化的立体声编码。
它接受以下值:
- ‘none’
选择无
- ‘dolby’
选择 Dolby
- ‘dplii’
选择 Dolby Pro Logic II
默认值是
none
.- filter_type
仅用于 swr,选择重采样滤波器类型。这只影响重采样操作。
它接受以下值:
- ‘cubic’
选择立方
- ‘blackman_nuttall’
选择 Blackman Nuttall 窗口化 sinc
- ‘kaiser’
选择 Kaiser 窗口化 sinc
- kaiser_beta
仅用于 swr,设置 Kaiser 窗口 beta 值。必须是在[2,16]区间内的双精度浮点值,默认值是 9。
- output_sample_bits
仅用于 swr,设置用于抖动的输出样本位数。必须是区间[0,64]内的整数,默认值是0,表示未使用。
22 缩放器选项
视频缩放器支持以下指定选项。
可以通过指定 -选项 值在FFmpeg工具中设置,并有一些仅限API的特殊情况例外。
对于编程用途,它们可以在SwsContext
选项中显式设置或通过libavutil/opt.hAPI来设置。
- sws_flags
设置缩放器标志。这也用于设置缩放算法。只能选择一种算法。默认值是 ‘bicubic’.
它接受以下值:
- ‘fast_bilinear’
选择快速双线性缩放算法。
- ‘bilinear’
选择双线性缩放算法。
- ‘bicubic’
选择双三次缩放算法。
- ‘experimental’
选择实验性缩放算法。
- ‘neighbor’
选择最近邻重缩放算法。
- ‘area’
选择平均区域重缩放算法。
- ‘bicublin’
选择用于亮度组件的双三次缩放算法,彩色度组件使用双线性方法。
- ‘gauss’
选择高斯重缩放算法。
- ‘sinc’
选择 sinc 重缩放算法。
- ‘lanczos’
选择 Lanczos 重缩放算法。默认宽度(alpha)是 3,可以通过设置
param0
.- ‘spline’
选择自然双三次样条重缩放算法。
- ‘print_info’
启用打印/调试日志。
- ‘accurate_rnd’
启用精确舍入。
- ‘full_chroma_int’
启用完整的色度插值。
- ‘full_chroma_inp’
选择完整的色度输入。
- ‘bitexact’
启用比特精确输出。
- srcw (仅限API)
设置源宽度。
- srch (仅限API)
设置源高度。
- dstw (仅限API)
设置目标宽度。
- dsth (仅限API)
设置目标高度。
- src_format (仅限API)
设置源像素格式(必须表示为整数)。
- dst_format (仅限API)
设置目标像素格式(必须表示为整数)。
- src_range (布尔值)
如果值设置为
1
,表示源为全范围。默认值为0
,表示源为限制范围。- dst_range (布尔值)
如果值设置为
1
,启用目标的全范围。默认值是0
,启用限制范围。- param0, param1
设置缩放算法参数。指定的值是一些缩放算法的特定值,其他算法会忽略。指定的值应为浮点数。
- sws_dither
设置抖动算法。接受以下值之一。 默认值是 ‘auto’.
- ‘auto’
自动选择
- ‘none’
无抖动
- ‘bayer’
拜耳抖动
- ‘ed’
误差扩散抖动
- ‘a_dither’
基于加法的数学抖动
- ‘x_dither’
算术抖动,基于异或操作(比a_dither更加随机/较少明显的图案)。
- alphablend
设置当输入具有透明度但输出不具有透明度时使用的Alpha混合方式。 默认值是‘none’.
- ‘uniform_color’
混合到统一背景颜色上
- ‘checkerboard’
混合到棋盘格上
- ‘none’
无混合
23 滤镜简介
FFmpeg中的滤镜通过libavfilter库启用。
在libavfilter中,一个滤镜可以有多个输入和多个输出。 为了说明可能实现哪些功能,我们考虑以下滤镜图。
[main] input --> split ---------------------> overlay --> output | ^ |[tmp] [flip]| +-----> crop --> vflip -------+
这个滤镜图将输入流分为两个流,然后将一个流通过裁剪滤镜和垂直翻转滤镜,最终在顶部将其与另一个流合并在一起。您可以使用以下命令实现:
ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
结果将是视频的上半部分镜像到输出视频的下半部分。
位于同一线性链中的滤镜由逗号分隔,而不同线性链的滤镜由分号分隔。在我们的示例中,crop,vflip在一个线性链中,split和overlay分别在另一个链中。线性链连接的点通过方括号标记。在示例中,分离滤镜生成的两个输出与标签[main]和[tmp].
相关联。发送到split的第二个输出,标签为[tmp]的流会经过crop滤镜(裁剪掉视频的下半部分),然后垂直翻转。overlay滤镜将来自分离滤镜的第一个未改变的输出(标记为[main]的输出)与crop,vflip滤镜链生成的输出叠加在它的下半部分。
一些滤镜需要输入参数列表:这些参数在滤镜名称后通过等号指定,并用冒号分隔。
还存在所谓的源滤镜不需要音频/视频输入,和汇滤镜不需要音频/视频输出。
24 graph2dot
FFmpeg中的graph2dot程序可以用于解析滤镜图描述并输出一个以dot语言表示的对应文本表示。tools directory can be used to parse a filtergraph description and issue a corresponding textual representation in the dot language.
运行以下命令:
graph2dot -h
来查看如何使用graph2dot.
然后可以将dot语言描述传递给dot程序(来自graphviz程序套件),以获取滤镜图的图形化表示。
例如以下命令序列:
echo GRAPH_DESCRIPTION | \ tools/graph2dot -o graph.tmp && \ dot -Tpng graph.tmp -o graph.png && \ display graph.png
可用来创建并显示由GRAPH_DESCRIPTION字符串描述的图像。注意该字符串必须是 一个完整的自包含图,其中明确定义了它的输入和输出。 例如,如果您的命令行是以下形式:
ffmpeg -i infile -vf scale=640:360 outfile
您的GRAPH_DESCRIPTION字符串需要是以下形式:
nullsrc,scale=640:360,nullsink
您可能还需要设置nullsrc参数并添加一个format滤镜以模拟一个特定的输入文件。
25 滤镜图描述
滤镜图是连接滤镜的有向图。它可以包含循环,并且可以在一对滤镜之间存在多条链接。每个链接的一侧连接到一个滤镜的输入插口,该链接从此滤镜获取输入;另一侧连接到一个接受其输出的滤镜的输出插口。
滤镜图中的每个滤镜是应用中注册的滤镜类的一个实例,该类定义了滤镜的功能,以及其输入和输出插口的数量。
一个没有输入插口的滤镜称为“源”,没有输出插口的滤镜称为“汇”。
25.1 滤镜图语法
滤镜图有一个文本形式的表示,该表示通过-filter/-vf/-af和-filter_complex选项在ffmpeg
和-vf/-af中被识别,ffplay
,并且通过定义在avfilter_graph_parse_ptr()
中的函数进行识别。libavfilter/avfilter.h.
滤镜链由一系列连接的滤镜组成,每个滤镜都连接到序列中前一个滤镜。滤镜链通过一个逗号分隔的滤镜描述列表表示。
滤镜图由一系列滤镜链组成。滤镜链序列由一个分号分隔的滤镜链描述列表表示。
一个滤镜由以下格式的字符串表示: [in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]
filter_name是描述的滤镜所属于的滤镜类的名称,必须是程序中注册的滤镜类之一的名称,之后可以可选地接上"@id"。 滤镜类的名称可以可选地后跟一个"=arguments".
arguments是一个字符串,包含初始化滤镜实例所需的参数。它可以具有以下两种形式之一:
- 一个由‘:’分隔的key=value键值对列表。
- 一个由‘:’分隔的value值列表。在这种情况下,键会被假设为按声明顺序的选项名称。例如
fade
滤镜按以下顺序声明了三个选项 –type, start_frame和nb_frames。那么参数列表in:0:30表示值in分配给选项type, 0,start_frame分配给30,nb_frames. - 分配给value and long key=value pairs. The direct value必须出现在key=value键值对之前,并遵循上一点的约束顺序。以下key=value键值对可以以任意顺序设置。
如果选项值本身是一个项目列表(例如format
滤镜接受像素格式列表),则列表中的项目通常用‘|’.
参数列表可以使用字符‘'’作为开始和结束标记,并使用字符‘\’对引用文本内的字符进行转义;否则,当遇到下一个特殊字符(属于集合‘[]=;,’)时,参数字符串被认为已结束。
在ffmpeg
CLI工具中实现的一种特殊语法允许从文件加载选项值。这是通过在选项名称之前添加斜杠’/‘来完成的,然后提供的值被解释为从中加载实际值的路径。例如
ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>
将从/tmp/some_text加载要绘制的文本。希望实现类似功能的API用户应使用avfilter_graph_segment_*()
函数与自定义IO代码一起使用。
滤镜的名称和参数可以选择性地出现在链接标签列表之前和之后。 链接标签允许用户命名一个链接并将其关联到滤镜的输出或输入插口。前面的标签in_link_1 ... in_link_N与滤镜的输入插口相关联,后续标签out_link_1 ... out_link_M与输出插口相关联。
当在滤镜图中发现两个具有相同名称的链接标签时,会在相应的输入和输出插口之间创建链接。
如果输出插口未标记,它会默认连接到滤镜链中下一个滤镜的第一个未标记输入插口。例如,在滤镜链
nullsrc, split[L1], [L2]overlay, nullsink
分离滤镜实例有两个输出插口,叠加滤镜实例有两个输入插口。分离滤镜的第一个输出插口标记为"L1",叠加滤镜的第一个输入插口标记为"L2",分离滤镜的第二个输出插口连接到叠加滤镜的第二个输入插口,两个插口都没有标记。
在滤镜描述中,如果第一个滤镜的输入标签未指定,则假定为"in";如果最后一个滤镜的输出标签未指定,则假定为"out"。
在完整滤镜链中,所有未标记的滤镜输入和输出插口必须连接。滤镜图被认为是有效的,如果所有滤镜链中的所有滤镜的输入和输出插口都被连接起来。
滤镜图规范中的分隔标记间的前后空格(空格、制表符或换行符)会被忽略。这意味着滤镜图可以使用空行和空格来改善可读性。
例如,滤镜图:
testsrc,split[L1],hflip[L2];[L1][L2] hstack
可以表示为:
testsrc, split [L1], hflip [L2]; [L1][L2] hstack
Libavfilter会在需要格式转换时自动插入scale滤镜。可以通过在滤镜图描述前添加sws_flags=flags;
来指定这些自动插入的缩放器的swscale标志。
以下是滤镜图语法的BNF描述:
NAME ::= sequence of alphanumeric characters and '_' FILTER_NAME ::= NAME["@"NAME] LINKLABEL ::= "[" NAME "]" LINKLABELS ::= LINKLABEL [LINKLABELS] FILTER_ARGUMENTS ::= sequence of chars (possibly quoted) FILTER ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS] FILTERCHAIN ::= FILTER [,FILTERCHAIN] FILTERGRAPH ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]
25.2 滤镜图转义注意事项
滤镜图描述组成涉及几个层次的转义。请参阅(ffmpeg-utils)的ffmpeg-utils(1)手册中“引用和转义”部分以了解所采用的转义过程的更多信息。
第一层转义影响每个滤镜选项值的内容,其中可能包含特殊字符:
用于分隔值,或一个转义字符\'
.
第二层转义影响整个滤镜描述,其中可能包含转义字符\'
或滤镜图描述使用的特殊字符[],;
。
最后,当在shell命令行中指定滤镜图时,需要为其中包含的shell特殊字符执行第三层转义。
例如,考虑以下嵌入在drawtext滤镜描述中的字符串text值:
this is a 'string': may contain one, or more, special characters
该字符串包含'
特殊转义字符,以及:
特殊字符,因此它需要按以下方式转义:
text=this is a \'string\'\: may contain one, or more, special characters
当在滤镜图描述中嵌入滤镜描述时,需要第二层转义来转义所有滤镜图的特殊字符。因此,上述示例变为:
drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
(注意,除了转义\'
特殊字符,还需要转义,
)。
最后,当在shell命令中写入滤镜图描述时,还需要额外的转义级别,这取决于所采用的shell的转义规则。例如,假设\
是特殊字符,需要通过另一个\
来转义,上述字符串最终结果为:
-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
为了在接受滤镜规范作为输入的命令行工具中避免繁琐的转义,建议避免在shell中直接包含滤镜或选项规范。
例如,在使用drawtext滤镜时,您可能更倾向于使用textfile选项代替text来指定要渲染的文本。
26 时间线编辑
一些滤镜支持通用的enable选项。对于支持时间线编辑的滤镜,该选项可以设置为一个表达式,并在将帧发送到滤镜之前进行评估。如果评估结果为非零,则滤镜将被启用,否则帧将保持不变地发送到滤镜图中的下一个滤镜。
该表达式接受以下值:
- ‘t’
时间戳,以秒为单位,如果输入时间戳未知,则为NAN
- ‘n’
输入帧的连续编号,从0开始
- ‘pos’
输入帧在文件中的位置,如果未知则为 NAN;已弃用,请勿使用
- ‘w’
- ‘h’
如果是视频,则为输入帧的宽度和高度
此外,这些滤镜支持一个enable可用于重新定义表达式的命令。
与任何其他过滤选项一样,enable选项遵循相同的规则。
例如,要从 10 秒到 3 分钟启用模糊滤镜(smartblur),以及从第 3 秒开始启动一个curves滤镜:
smartblur = enable='between(t,10,3*60)', curves = enable='gte(t,3)' : preset=cross_process
查看哪些滤镜支持时间线。ffmpeg -filters
to view which filters have timeline support.
27 通过命令在运行时更改选项
某些选项可以在滤镜操作期间通过命令更改。这些选项在输出中标记为“T”。ffmpeg
-h filter=<name of filter>命令的名称是选项的名称,参数是新的值。
28 对具有多个输入的滤镜的选项(帧同步)
一些具有多个输入的滤镜支持一组通用选项。这些选项只能通过名称设置,而不能使用简写格式。
- eof_action
遇到辅助输入 EOF 时采取的操作;它接受以下值之一:
- repeat
重复最后一帧(默认值)。
- endall
结束两个流。
- pass
通过主输入流。
- shortest
如果设置为 1,则当最短输入终止时,强制输出终止。默认值为 0。
- repeatlast
如果设置为 1,则强制滤镜将辅助流的最后一帧扩展到主流结束。设置为 0 时禁用此行为。默认值为 1。
- ts_sync_mode
根据辅助输入时间戳同步流的严格程度;它接受以下值之一:
- default
辅助输入中与主输入帧时间戳最近且小于或等于的帧。
- nearest
辅助输入中与主输入帧时间戳绝对最近的帧。
29 音频滤镜
配置 FFmpeg 构建时,可通过--disable-filters
禁用任何现有滤镜。
配置输出会显示构建中包含的音频滤镜。
以下是当前可用音频滤镜的描述。
29.1 aap
使用第二音频流对第一音频流应用仿射投影算法。
此自适应滤镜用于基于多个输入音频样本估算未知音频。 仿射投影算法能够在计算复杂性与收敛速度之间制造权衡。
以下是接受的选项描述。
- order
设置滤镜阶数。
- projection
设置投影阶数。
- mu
设置滤镜 mu。
- delta
设置内部分辨率矩阵初始化的系数。
- out_mode
设置滤镜输出样本。它接受以下值:
- i
通过第一个输入。
- d
通过第二个输入。
- o
通过目标音频、第二个输入与误差信号估算的差异。
- n
通过输入音频、第一音频与误差信号估算的差异。
- e
通过估算的误差信号样本。
默认值为o.
- precision
设置在处理样本时使用的精度。
- auto
根据其他滤镜自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
29.2 acompressor
压缩器主要用于减少信号的动态范围。 尤其是现代音乐大多以高比例压缩以提高整体响度。 这样可以引起听众的最大关注,增强声音并赋予曲目更多的“力量”。 但如果信号过度压缩,可能会显得沉闷或“死气沉沉”, 或者可能会开始“泵动”(这可以是强大的效果,但也可能完全破坏音轨)。 正确的压缩是实现专业声音的关键,也是混音和母带制作的高级艺术。 由于其复杂的设置,可能需要很长时间才能对这种效果获得正确的感觉。
压缩通过检测高于选定水平的音量来完成threshold
并用设置的因子进行分配ratio
。
例如,如果您将阈值设置为 -12dB,而信号达到 -6dB,
设置的比例为 2:1,结果信号为 -9dB。
由于对信号的精确操作会导致波形失真,因此可以随着时间调整减少量。
这是通过设置“攻击时间”和“释放时间”完成的。attack
确定在任何减少发生之前信号要高于阈值的时间长度,release
设置信号必须低于阈值的时间以减少再次减少时间。
短于攻击时间的信号将保持不变。
信号的总减少量可以通过makeup
设置之后进行补偿。
例如,将信号峰值压缩 6dB,并将补偿提高到此水平,
其结果是信号比源信号响度增加了一倍。
为使压缩的入口更加柔和,knee
可以在选定的分贝范围内平滑阈值的硬边界。
滤镜接受以下选项:
- level_in
设置输入增益。默认值为 1。范围在 0.015625 到 64 之间。
- mode
设置压缩器操作模式。可以是
upward
或downward
。 默认是downward
.- threshold
如果流的信号量高于此级别,它将对增益减少产生影响。 默认值为 0.125,范围在 0.00097563 与 1 之间。
- ratio
设置信号减少的比例。1:2 意味着如果水平上升到阈值以上 4dB, 减少后它将为空阈值以上 2dB。 默认值为 2,范围在 1 到 20 之间。
- attack
信号在开始增益减少之前需要上升到阈值以上的时长。 默认值为 20。范围是 0.01 到 2000 毫秒。
- release
信号在减少再次减少之前需要低于阈值的时间长度。 默认值为 250。范围是 0.01 到 9000 毫秒。
- makeup
设置处理后对信号的增强量。 默认值为 1。范围是 1 到 64。
- knee
弯曲阈值周围的锋利边缘以更柔和地进入增益减少。 默认值为 2.82843,范围是 1 到 8。
- link
选择是否
average
调整输入流的所有通道之间的平衡,或者通过更响亮的(maximum
)输入流的通道影响减少。 默认值为average
.- detection
在
peak
情况下是确切的信号还是在rms
情况下是 RMS 信号。 默认值为rms
通常较平滑。- mix
输出信号中使用压缩信号的比例。 默认值是 1,范围在 0 到 1。
29.2.1 命令
此滤镜支持以上所有选项作为命令.
29.3 acontrast
简单的音频动态范围压缩/扩展滤镜。
滤镜接受以下选项:
- contrast
设置对比度。默认值是 33。允许范围在 0 到 100 之间。
29.4 acopy
将输入音源原样复制到输出。这主要用于测试目的。
29.5 acrossfade
将一个输入音频流过渡到另一个输入音频流。 过渡发生在第一流的指定时长内。
滤镜接受以下选项:
- nb_samples, ns
指定交叉淡化效果持续的样本数。 在交叉淡化结束时,第一个输入音频将完全静音。 默认值是 44100。
- duration, d
指定交叉淡化效果的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1) 手册中的时间持续时间部分接受的语法。 默认情况下持续时间由nb_samples确定。 如果设置此选项,则使用此选项代替nb_samples.
- overlap, o
第一流结束时是否与第二流开始重叠。默认启用。
- curve1
设置第一流交叉淡化过渡的曲线。
- curve2
设置第二流交叉淡化过渡的曲线。
有关可用曲线类型的说明,请参阅afade过滤器说明。
29.5.1 示例
- 从一个输入过渡到另一个输入进行交叉淡化:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
- 从一个输入过渡到另一个输入进行交叉淡化,但没有重叠:
ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
29.6 acrossover
将音频流分成多个频段。
此滤镜将音频流分为两个或多个频率范围。 将所有流合并返回将恢复平坦输出。
滤镜接受以下选项:
- split
设置分割频率。这些频率必须是正值且递增。
- order
设置每个频带分割的滤镜阶数。这控制滤镜转移函数的滚降或陡度。 可用值为:
- ‘2nd’
每倍频程 12 dB。
- ‘4th’
每倍频程 24 dB。
- ‘6th’
每倍频程 36 dB。
- ‘8th’
每倍频程 48 dB。
- ‘10th’
每倍频程 60 dB。
- ‘12th’
每倍频程 72 dB。
- ‘14th’
每倍频程 84 dB。
- ‘16th’
每倍频程 96 dB。
- ‘18th’
每倍频程 108 dB。
- ‘20th’
每倍频程 120 dB。
默认值为第 4 阶.
- level
设置输入增益水平。允许范围是 0 到 1。默认值是 1。
- gains
设置每个频带的输出增益。默认值是所有频带的 1。
- precision
设置在处理样本时使用的精度。
- auto
根据其他滤镜选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
默认值是
auto
.
29.6.1 示例
- 将输入音频流分为两个频带(低频和高频),分割频率为 1500 Hz,每个频带将在单独的流中:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- 与上述相同,但滤镜阶数更高:
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- 与上述相同,但还添加了一个中频频带(1500Hz 和 8000Hz 之间的频率):
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
29.7 acrusher
减少音频位分辨率。
此滤镜是具有增强功能的位压缩器。位压缩器用于可听地减少音频信号的采样位数。 这不会改变位深度,只会产生效果。 被压缩为低位深度的材料的声音会变得更尖锐、更具“数字感”。 此滤镜甚至能够舍入为连续值而不是离散位深度。 此外,它具有一个 D/C 位移,能够在信号的下半部分和上半部分产生不同程度的压缩。 抗锯齿设置能够生成“更柔和”的压缩声音。
此滤镜的另一个特点是对数模式。 此设置将位之间的线性距离切换为对数距离。 结果是一种更“自然”的压缩器,不会例如对低信号进行门控。 人类耳朵具有对数感知,因此这种类型的压缩令人更加愉悦。 对数压缩还能够进行抗锯齿。
滤镜接受以下选项:
- level_in
设置输入音量。
- level_out
设置输出音量。
- bits
设置位数减少。
- mix
设置混音量。
- mode
可以是线性的:
lin
或对数的:log
.- dc
设置 DC 位移。
- aa
设置抗锯齿。
- samples
设置采样减少。
- lfo
启用低频振荡器 (LFO)。默认禁用。
- lforange
设置 LFO 范围。
- lforate
设置 LFO 速率。
29.7.1 命令
此滤镜支持以上所有选项作为命令.
29.8 acue
延迟音频过滤直到指定的墙上时间戳。参见cue滤镜。
29.9 adeclick
从输入音频中移除瞬时噪声。
检测为瞬时噪声的样本将通过使用自回归建模插值样本进行替换。
- window, w
设置窗口大小,以毫秒为单位。允许范围是
10
到100
。 默认值是55
毫秒。 这设置将一次处理的窗口大小。- overlap, o
设置窗口重叠,按窗口大小的百分比表示。允许范围为
50
到95
。默认值为75
百分比。 将此值设置为非常高会增加脉冲噪声的去除,但会显著降低处理速度。- arorder, a
设置自回归阶数,按窗口大小的百分比表示。允许范围为
0
到25
。默认值为2
百分比。此选项还控制使用邻近的良好样本进行插值样本的质量。- threshold, t
设置阈值。允许范围为
1
到100
。 默认值为2
。 此值控制要去除的脉冲噪声的强度。值越低,越多的样本会被检测为脉冲噪声。- burst, b
设置突发融合,按窗口大小的百分比表示。允许范围为
0
到10
。默认值为2
。 如果检测到的两个噪声样本之间的间隔小于此值,那么这两个样本之间的任何样本也将被检测为噪声。- method, m
设置重叠方法。
接受以下值:
- add, a
选择重叠-相加方法。即使是未插值的样本也会用此方法略微改变。
- save, s
选择重叠-保存方法。未插值的样本保持不变。
默认值为
a
.
29.10 adeclip
从输入音频中移除削波样本。
检测为削波的样本会被使用自回归建模插值的样本替换。
- window, w
设置窗口大小,以毫秒为单位。允许范围为
10
到100
。 默认值为55
毫秒。 此参数设置将一次处理的窗口大小。- overlap, o
设置窗口重叠,按窗口大小的百分比表示。允许范围为
50
到95
。默认值为75
百分比。- arorder, a
设置自回归阶数,按窗口大小的百分比表示。允许范围为
0
到25
。默认值为8
百分比。此选项还控制使用邻近的良好样本进行插值样本的质量。- threshold, t
设置阈值。允许范围为
1
到100
。 默认值为10
。值越高,削波检测越不激进。- hsize, n
设置用于检测剪裁的直方图大小。允许范围为
100
到9999
。 默认值为1000
。值越高,剪裁检测越不激进。- method, m
设置重叠方法。
接受以下值:
- add, a
选择重叠-相加方法。即使是未插值的样本也会用此方法略微改变。
- save, s
选择重叠-保存方法。未插值的样本保持不变。
默认值为
a
.
29.11 adecorrelate
对输入音频流应用装饰相关处理。
过滤器接受以下选项:
- stages
设置装饰相关过滤的阶段数。 允许范围为1到16。默认值为6。
- seed
设置跨通道的随机延迟采样种子。
29.12 adelay
对一个或多个音频通道延迟处理。
被延迟的通道样本用静音填充。
过滤器接受以下选项:
- delays
设置每个通道的延时时长(以毫秒为单位),用‘|’分隔。 未使用的延时将被静默忽略。如果提供的延时数量少于通道数量,所有 剩余通道将不延迟。如果要精确延迟一定数量的样本,请在数字后加‘S’。 如果想用秒为单位延迟,则在数字后加‘s’。
- all
对所有剩余通道使用最后设置的延时。默认情况下禁用。 此选项如果启用,将更改
delays
选项的解释方式。
29.12.1 示例
- 将第一个通道延迟1.5秒,第三个通道延迟0.5秒,保留
第二个通道(以及可能存在的任何其他通道)不变。
adelay=1500|0|500
- 将第二个通道延迟500个样本,第三个通道延迟700个样本,保留
第一个通道(以及可能存在的任何其他通道)不变。
adelay=0|500S|700S
- 所有通道延迟相同数量的样本:
adelay=delays=64S:all=1
29.13 adenorm
通过添加极低级别的噪声来修正音频中的反标准化。
此过滤器应放置在任何可能产生反标准化的过滤器之前。
接受参数的描述如下。
- level
设置添加噪声的水平(以分贝为单位)。默认值为
-351
。 允许范围为-451到-90。- type
设置添加噪声的类型。
- dc
添加直流信号。
- ac
添加交流信号。
- square
添加方波信号。
- pulse
添加脉冲信号。
默认值为
dc
.
29.13.1 命令
此过滤器支持以上所有选项作为命令.
29.14 aderivative, aintegral
计算音频流的导数/积分。
连续应用这两个过滤器后,将得到原始音频。
29.15 adrc
对输入音频流应用频谱动态范围控制过滤器。
接受选项的描述如下。
- transfer
设置转换表达式。
表达式可以包含以下常量:
- ch
当前通道号
- sn
当前样本号
- nb_channels
通道数
- t
时间戳(以秒为单位)
- sr
采样率
- p
当前频率功率值(以分贝为单位)
- f
当前频率(以赫兹为单位)
默认值为
p
.- attack
设置攻击时间(以毫秒为单位)。默认值为
50
毫秒。 允许范围为1到1000毫秒。- release
设置释放时间(以毫秒为单位)。默认值为
100
毫秒。 允许范围为5到2000毫秒。- channels
设置要过滤的通道。但是默认情况下,
all
音频流中的通道会被过滤。
29.15.1 命令
此过滤器支持以上所有选项作为命令.
29.15.2 示例
- 对所有频率应用分谱压缩,阈值为-50分贝,1:6比率:
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
- 与上述类似,但比率为1:2,仅过滤前置中间通道:
adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
- 对所有频率应用分谱噪声门控,阈值为-85分贝,并具有短攻击时间和短释放时间:
adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
- 对所有频率应用分谱扩展,阈值为-10分贝,1:2比率:
adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
- 对所有频率应用限制器,最大-60分贝,攻击时间2ms,释放时间10ms:
adrc=transfer='min(p,-60)':attack=2:release=10
29.16 adynamicequalizer
对输入音频流应用动态均衡。
接受选项的描述如下。
- threshold
设置用于触发均衡的检测阈值。 阈值检测使用检测过滤器。 默认值为0。允许范围为0到100。
- dfrequency
设置用于触发均衡的检测过滤器的检测频率(以赫兹为单位)。 默认值为1000赫兹。允许范围在2到1000000赫兹之间。
- dqfactor
设置检测过滤器用于触发均衡的检测共振因子。 默认值为1。允许范围从0.001到1000。
- tfrequency
设置均衡过滤器的目标频率。 默认值为1000赫兹。允许范围在2到1000000赫兹之间。
- tqfactor
设置目标均衡过滤器的目标共振因子。 默认值为1。允许范围从0.001到1000。
- attack
设置检测信号超出检测阈值后触发均衡所需的毫秒数。 默认值为20。允许范围为1到2000。
- release
设置检测信号低于检测阈值后结束均衡所需的毫秒数。 默认值为200。允许范围为1到2000。
- ratio
设置提高均衡增益的比率。 默认值为1。允许范围为0到30。
- makeup
设置以提高均衡增益的补偿偏移量。 默认值为0。允许范围为0到100。
- range
设置允许的最大降幅/提升量。默认值为50。 允许范围为1到200。
- mode
设置过滤器的操作模式,可以是以下值之一:
- ‘listen’
仅输出隔离检测信号。
- ‘cutbelow’
剪切低于检测阈值的频率。
- ‘cutabove’
剪切高于检测阈值的频率。
- ‘boostbelow’
提升低于检测阈值的频率。
- ‘boostabove’
提升高于检测阈值的频率。
默认模式为‘cutbelow’.
- dftype
设置检测过滤器的类型,可以是以下之一:
- ‘bandpass’
- ‘lowpass’
- ‘highpass’
- ‘peak’
默认类型为‘bandpass’.
- tftype
设置目标过滤器的类型,可以是以下之一:
- ‘bell’
- ‘lowshelf’
- ‘highshelf’
默认类型为‘bell’.
- auto
自动从检测过滤器收集阈值。默认值是‘disabled’。 此选项用于在输入音频流的特定时间帧中检测阈值,在这种情况下, 选项值会在运行时更改。
可用值:
- ‘disabled’
禁用自动收集的阈值。
- ‘off’
停止采集阈值。
- ‘on’
开始采集阈值。
- ‘adaptive’
通过计算滑动窗口熵自适应采集阈值。
- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单精度浮点精度样本格式。
- double
始终使用双精度浮点精度样本格式。
29.16.1 命令
此过滤器支持以上所有选项作为命令.
29.17 adynamicsmooth
对输入音频流应用动态平滑。
接受选项的描述如下。
- sensitivity
设置对频率波动敏感度的量。默认值为2。 允许范围为0到1e+06。
- basefreq
设置用于平滑的基频。默认值为22050。 允许范围为2到1e+06。
29.17.1 命令
此过滤器支持以上所有选项作为命令.
29.18 aecho
对输入音频应用回声。
回声是反射声音,可以自然地出现在山脉中
(有时还有大型建筑)当说话或喊叫时;数字回声
效果模拟了这种行为,通常用于帮助填充一个单一乐器或人声的
声音。原始信号与反射之间的时间差是delay
,而反射信号的响亮程度是decay
。
多个回声可以具有不同的延迟和衰减。
接受参数的描述如下。
- in_gain
设置反射信号的输入增益。默认值为
0.6
.- out_gain
设置反射信号的输出增益。默认值为
0.3
.- delays
设置原始信号与反射之间的时间间隔列表(以毫秒为单位),用‘|’分隔。 每个
delay
的允许范围为(0 - 90000.0]
。 默认值为1000
.- decays
设置反射信号响度的列表,用‘|’分隔。 每个
decay
的允许范围为(0 - 1.0]
。 默认值为0.5
.
29.18.1 示例
- 让它听起来好像有双倍的乐器在演奏:
aecho=0.8:0.88:60:0.4
- 如果延迟非常短,那么它听起来像一个(金属的)机器人在演奏音乐:
aecho=0.8:0.88:6:0.4
- 更长的延迟将听起来像山间的露天音乐会:
aecho=0.8:0.9:1000:0.3
- 与上面类似,但又多了一座山:
aecho=0.8:0.9:1000|1800:0.3|0.25
29.19 aemphasis
音频强调过滤器通过不同的过滤曲线创建或还原直接从LP或 强调CD中获取的材料。例如,为了在黑胶唱片上存储音乐, 信号必须首先通过过滤器进行调整,以弥补此记录介质的劣势。 播放材料后,必须应用反向过滤器以 恢复频率响应的失真。
过滤器接受以下选项:
- level_in
设置输入增益。
- level_out
设置输出增益。
- mode
设置过滤模式。要还原材料,使用
reproduction
模式,否则 使用production
模式。默认值为reproduction
模式。- type
设置过滤器类型。选择介质。可以是以下之一:
- col
选择哥伦比亚。
- emi
选择EMI。
- bsi
选择BSI(78RPM)。
- riaa
选择RIAA。
- cd
选择紧凑型光盘(CD)。
- 50fm
选择50µs(FM)。
- 75fm
选择75µs(FM)。
- 50kf
选择50µs(FM-KF)。
- 75kf
选择75µs(FM-KF)。
29.19.1 命令
此滤镜支持以上所有选项作为命令.
29.20 aeval
根据指定的表达式修改音频信号。
此滤镜接受一个或多个表达式(每个通道一个),这些表达式被评估并用于修改对应的音频信号。
它接受以下参数:
- exprs
为每个独立通道设置用 '|' 分隔的表达式列表。如果输入通道的数量大于表达式的数量,将对剩余的输出通道使用最后指定的表达式。
- channel_layout, c
设置输出通道布局。如果未指定,通道布局由表达式数量决定。如果设置为 'same',则默认使用相同的输入通道布局。
表达式中exprs可以包含以下常量和函数:
- ch
当前表达式的通道号
- n
从0开始的已评估样本数
- s
采样率
- t
已评估样本的时间(以秒为单位)
- nb_in_channels
- nb_out_channels
输入和输出的通道数量
- val(CH)
具有编号CH
的输入通道的值
29.20.1 示例
- 音量减半:
aeval=val(ch)/2:c=same
- 反相第二通道的相位:
aeval=val(0)|-val(1)
29.21 aexciter
激励器用于产生原始信号中不存在的高音。这是通过创建信号的谐波失真,并限制在一定范围内然后将其添加到原始信号来实现的。激励器提升音频信号的上端,而不仅仅是像均衡器那样简单地提升高频,从而创造出更“清晰”或“明亮”的声音。
该滤镜接受以下选项:
- level_in
设置信号处理前的输入电平。 允许范围为 0 到 64。 默认值为 1。
- level_out
设置信号处理后的输出电平。 允许范围为 0 到 64。 默认值为 1。
- amount
设置添加到原始信号中的谐波数量。 允许范围为 0 到 64。 默认值为 1。
- drive
设置新创建的谐波数量。 允许范围为 0.1 到 10。 默认值为 8.5。
- blend
设置新创建的谐波的倍频程。 允许范围为 -10 到 10。 默认值为 0。
- freq
设置产生谐波的最低频率限制(Hz)。 允许范围为 2000 到 12000 Hz。 默认值为 7500 Hz。
- ceil
设置产生谐波的最高频率限制。 允许范围为 9999 到 20000 Hz。 如果值低于 10000 Hz,则不应用限制。
- listen
静音原始信号,仅输出新增的谐波。 默认情况下禁用。
29.21.1 命令
此滤镜支持以上所有选项作为命令.
29.22 afade
对输入音频应用淡入/淡出效果。
以下是接受的参数描述。
- type, t
指定效果类型,可以是
in
用于淡入,或out
用于淡出效果。默认值为in
.- start_sample, ss
指定开始应用淡入/淡出效果的起始样本编号。默认值为 0。
- nb_samples, ns
指定淡入/淡出效果持续的样本数。淡入效果结束时,输出音频的音量将与输入音频相同;淡出过渡结束时,输出音频将是静音。默认值为 44100。
- start_time, st
指定淡入/淡出效果的开始时间,默认为 0。 值必须以时间持续值形式指定;请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续部分了解接受的语法。 如果设置了此选项,将代替start_sample.
- duration, d
指定淡入/淡出效果的持续时间。请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续部分了解接受的语法。 淡入效果结束时,输出音频的音量将与输入音频相同;淡出过渡结束时,输出音频将是静音。 默认情况下,持续时间由nb_samples决定。 如果设置了此选项,将代替nb_samples.
- curve
为淡入/淡出过渡设置曲线。
它接受以下值:
- tri
选择三角形,线性斜坡(默认)
- qsin
选择四分之一正弦波
- hsin
选择半正弦波
- esin
选择指数正弦波
- log
选择对数
- ipar
选择反抛物线
- qua
选择二次方
- cub
选择立方
- squ
选择平方根
- cbr
选择立方根
- par
选择抛物线
- exp
选择指数
- iqsin
选择四分之一反正弦波
- ihsin
选择二分之一反正弦波
- dese
选择双指数凹函数
- desi
选择双指数“S型”函数
- losi
选择逻辑“S型”函数
- sinc
选择正弦积分函数
- isinc
选择反正弦积分函数
- quat
选择四次方
- quatr
选择四次方根
- qsin2
选择平方的四分之一正弦波
- hsin2
选择平方的二分之一正弦波
- nofade
不应用淡入/淡出
- silence
设置淡入初始增益或淡出最终增益。 默认值为
0.0
.- unity
设置淡出初始增益或淡入最终增益。 默认值为
1.0
.
29.22.1 命令
此滤镜支持以上所有选项作为命令.
29.22.2 示例
- 为前15秒的音频应用淡入效果:
afade=t=in:ss=0:d=15
- 为一段900秒音频的最后25秒应用淡出效果:
afade=t=out:st=875:d=25
29.23 afftdn
使用 FFT 对音频样本进行降噪。
以下是接受的参数描述。
- noise_reduction, nr
设置降噪强度(单位为 dB),允许范围为 0.01 至 97。 默认值为 12 dB。
- noise_floor, nf
设置噪声底限(单位为 dB),允许范围为 -80 至 -20。 默认值为 -50 dB。
- noise_type, nt
设置噪声类型。
它接受以下值:
- white, w
选择白噪声。
- vinyl, v
选择唱片噪声。
- shellac, s
选择胶木噪声。
- custom, c
选择自定义噪声,定义于
bn
选项中。默认值为白噪声。
- band_noise, bn
为15个频带中的每个设置自定义频带噪声配置文件。 频带之间用 ' ' 或 '|' 分隔。
- residual_floor, rf
设置剩余值底限(单位为 dB),允许范围为 -80 到 -20。 默认值为 -38 dB。
- track_noise, tn
启用噪声底限跟踪。默认情况下禁用。 启用后,噪声底限会自动调整。
- track_residual, tr
启用剩余值跟踪。默认情况下禁用。
- output_mode, om
设置输出模式。
它接受以下值:
- input, i
不改变输入,直接通过。
- output, o
通过滤除后的噪声。
- noise, n
仅通过噪声。
默认值是output.
- adaptivity, ad
设置适应因子,用于控制每个频率条调整增益的速度。值0表示即时适应,而较高的值反应更慢。 允许范围是0到1。默认值是0.5.
- floor_offset, fo
设置噪声底限偏移因子。此选项用于调整测量噪声底限时应用的偏移。 仅在启用噪声底限跟踪时有效。 允许范围是-2.0到2.0。默认值是1.0.
- noise_link, nl
设置用于多通道音频的噪声链接。
它接受以下值:
- none
使用未更改通道的噪声底限。
- min
使用所有通道的最小测量噪声底限。
- max
使用所有通道的最大测量噪声底限。
- average
使用所有通道的平均测量噪声底限。
默认值是min.
- band_multiplier, bm
设置频率条扩展到频带的倍增因子。 允许范围是0.2到5。默认值是1.25.
- sample_noise, sn
切换从输入音频抓取和测量噪声配置文件。
它接受以下值:
- start, begin
开始采样噪声数据。
- stop, end
停止采样噪声并测量新的频带噪声配置文件。
默认值是
none
.
- gain_smooth, gs
为每个频率条设置增益平滑空间半径。 用于减少随机音乐噪声伪影。 较高值会增加增益的平滑度。 允许范围是
0
到50
。 默认值是0
.
29.23.1 命令
此滤镜支持某些上述提到的选项作为命令.
29.23.2 示例
- 将白噪声降低10dB,并使用先前测量的-40dB噪声底限:
afftdn=nr=10:nf=-40
- 将白噪声降低10dB,同时将初始噪声底限设置为-80dB并启用自动噪声底限跟踪,这样噪声底限将在处理期间逐渐变化:
afftdn=nr=10:nf=-80:tn=1
- 将噪声减少20dB,使用-40dB的噪声底限,并使用命令来获取输入音频前0.4秒的噪声配置文件:
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
29.24 afftfilt
对频域中的样本应用任意表达式。
- real
为各个独立通道设置频域实表达式,用 '|' 分隔。默认是 "re"。 如果输入通道的数量多于表达式的数量,最后指定的表达式将用于剩余的输出通道。
- imag
为各个独立通道分别设置频域虚表达式,用 '|' 分隔。默认是 "im"。
表达式中real和imag可以包含以下常量和函数:
- sr
采样率
- b
当前频率条编号
- nb
可用频率条数量
- ch
当前表达式的通道编号
- chs
通道数量
- pts
当前帧 pts
- re
当前通道频率条实部
- im
当前通道频率条虚部
- real(b, ch)
返回编号为 (bin,channel)
- imag(b, ch)
的频率条实部的值bin,channel)
- win_size
设置窗口大小。允许范围为16到131072。 默认值是
4096
- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann, hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hann
.- overlap
设置窗口重叠。如果设置为1,将选择推荐的窗口函数重叠。默认值是
0.75
.
29.24.1 示例
- 保留音频的低频部分为主:
afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
- 应用机器人效果:
afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
- 应用耳语效果:
afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
- 应用相移:
afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
29.25 afir
应用任意有限冲激响应滤波器。
此滤镜设计用于应用长 FIR 滤波器,最长可达 60 秒。
它可用作数字分频滤波器、房间均衡、串扰消除、波场合成、听觉化、环绕声和空间化的组件。
此滤镜使用第一个流之外的其他流作为 FIR 系数。 如果非首个流只有一个通道,则它将被用于第一个流中所有输入通道,否则非首个流中的通道数必须与第一个流的通道数量相同。
它接受以下参数:
- dry
设置干增益。这会设置输入增益。
- wet
设置湿增益。这会设置最终的输出增益。
- length
设置冲激响应滤波器长度。默认值为 1,意味着处理整个 IR。
- gtype
此选项已过时,且不起任何作用。
- irnorm
设置滤波之前应用于 IR 系数的标准化值。 允许范围是-1到2。 IR 系数将以由此选项设定的向量范数进行归一化。 对于负值,不计算标准化,并且 IR 系数完全不被修改。 默认值是1.
- irlink
对于多通道 IR,如果此选项设置为true,所有 IR 通道将使用所有 IR 通道系数测量的最大增益进行标准化,如
irnorm
选项设置的那样。 禁用此选项时,每个 IR 通道中的所有 IR 系数将独立进行标准化。 默认值是true.- irgain
设置滤波之前应用于 IR 系数的增益。 允许范围是 0 到 1。此增益在通过irnorm选项应用任何增益之后被应用。
- irfmt
设置IR流的格式。可以是
mono
或input
。 默认值是input
.- maxir
设置允许的最大脉冲响应滤波器持续时间(秒)。默认值是30秒。 允许范围是0.1到60秒。
- response
此选项已弃用,无任何作用。
- channel
此选项已弃用,无任何作用。
- size
此选项已弃用,无任何作用。
- rate
此选项已弃用,无任何作用。
- minp
设置用于卷积的最小分区大小。默认值是8192。 允许范围是从1到65536。 较低的值会降低延迟,但会增加CPU使用率。
- maxp
设置用于卷积的最大分区大小。默认值是8192。 允许范围是从8到65536。 较低的值可能会增加CPU使用率。
- nbirs
设置输入脉冲响应流的数量,这些流可以在运行时切换。 允许范围是从1到32。默认值是1.
- ir
设置将用于卷积的IR流,从0开始,始终应 低于由
nbirs
选项提供的值。默认值是0。 此选项可以通过命令在运行时更改.- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
默认值是自动。
- irload
设置何时加载IR流。可以是
init
或access
。 第一个选项在初始化时加载并准备所有IR,第二个选项 在首次访问特定IR时加载。 默认值是init
.
29.25.1 示例
- 使用单声道IR文件作为第二输入对流应用混响,完整命令使用ffmpeg:
ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
- 在给定输入立体声流以及用于左声道和右声道的两个立体声脉冲响应文件的情况下进行真实立体声处理,
脉冲响应文件的名称为l_ir.wav和r_ir.wav,并设置irnorm选项值:
"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
- 与上述示例类似,但
irgain
显式设置为估计值,并且irnorm
被禁用:"pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
29.26 aformat
为输入音频设置输出格式约束。框架将协商最合适的格式以尽量减少转换。
它接受以下参数:
- sample_fmts, f
以'|'分隔的所请求样本格式列表。
- sample_rates, r
以'|'分隔的所请求样本率列表。
- channel_layouts, cl
以'|'分隔的所请求声道布局列表。
参见(ffmpeg-utils)在ffmpeg-utils(1)手册中的声道布局部分以了解所需的语法。
如果未提供参数,则所有值均被允许。
强制将输出设置为无符号8位或有符号16位立体声
aformat=sample_fmts=u8|s16:channel_layouts=stereo
29.27 afreqshift
对输入音频样本应用频率偏移。
此过滤器接受以下选项:
- shift
指定频率偏移。允许范围是-INT_MAX到INT_MAX。 默认值是0.0。
- level
设置最终输出的增益。允许范围是从0.0到1.0。 默认值是1.0。
- order
设置用于过滤的滤波器顺序。允许范围是从1到16。 默认值是8。
29.27.1 命令
此过滤器支持上述所有选项作为命令.
29.28 afwtdn
使用小波从输入样本中降低宽带噪声。
以下是所接受选项的描述。
- sigma
设置噪声sigma,允许范围是从0到1。 默认值是0。 此选项控制应用于输入样本的降噪强度。 设置此选项最有用的方式是通过分贝,例如-45dB。
- levels
设置分解的小波层级数。 允许范围是从1到12。 默认值是10。 设置得太低会使降噪性能非常差。
- wavet
设置用于分解输入帧的小波类型。 它们按系数数量排序,从最低到最高。 更多的系数意味着较差的过滤速度,但总体质量更好。 可用的小波是:
- ‘sym2’
- ‘sym4’
- ‘rbior68’
- ‘deb10’
- ‘sym10’
- ‘coif5’
- ‘bl3’
- percent
设置完全降噪的百分比。允许范围是从0到100%。 默认值是85%或部分降噪。
- profile
如果启用,第一个输入帧将用作噪声配置文件。 如果第一个帧样本包含非噪声则性能将非常差。
- adaptive
如果启用,输入帧会分析噪声的存在。 如果检测到噪声的高可能性,则输入帧配置文件将用于处理随后帧,直到检测到新的噪声帧。
- samples
设置单个帧的大小(样本数)。允许范围是从512到 65536。默认帧大小是8192样本。
- softness
设置阈值函数内所应用的柔软度。允许范围是0到 10。默认柔软度是1。
29.28.1 命令
此过滤器支持上述所有选项作为命令.
29.29 agate
门限主要用于减少信号的较低部分。这种类型的信号 处理减少了有用信号之间的干扰噪声。
通过检测音量低于选定水平阈值并将其除以由比率设置的因子来完成门限操作。 噪声底部通过范围来设置。 由于对信号进行精确操作会导致波形失真, 可以通过时间来平滑减少。 这是通过设置攻击和释放时间.
攻击决定信号必须低于阈值的时间 之后才会发生减少,并且释放设定信号必须高于阈值的时间来减少减弱时间。 短于选定攻击时间的信号将保持不变。
- level_in
设置过滤前的输入级别。 默认值为1。允许范围是0.015625到64。
- mode
设置操作模式。可以是
upward
或downward
。 默认值为downward
。如果设置为upward
模式,较高的信号部分 将被放大,向上扩展动态范围。 否则,对于downward
模式,较低的信号部分将被减少。- range
设置信号低于阈值时的增益减少水平。 默认值为0.06125。允许范围是0到1。 将此值设为0将禁用减少,此时过滤器表现为扩展器。
- threshold
如果信号高于此水平,则增益减少将释放。 默认值为0.125。允许范围是0到1。
- ratio
设置信号减少的比率。 默认值为2。允许范围是从1到9000。
- attack
信号必须超过阈值才能停止减少的时间(毫秒)。 默认值为20毫秒。允许范围是从0.01到9000。
- release
信号必须低于阈值才能开始增加减少的时间(毫秒)。 默认值为250毫秒。允许范围是从0.01到9000。
- makeup
设置处理后的信号放大量。 默认值为1。允许范围是从1到64。
- knee
设置围绕阈值的圆滑膝形以更柔和地进入减少增益。 默认值为2.828427125。允许范围是从1到8。
- detection
选择检测使用精确信号或类似RMS信号。 默认值为
rms
。可以是peak
或rms
.- link
选择所有声道之间的平均级别或响亮声道是否影响减少。 默认值为
average
。可以是average
或maximum
.
29.29.1 命令
此过滤器支持上述所有选项作为命令.
29.30 aiir
应用任意无限脉冲响应过滤器。
它接受以下参数:
- zeros, z
设置B/分子/零点/反映系数。
- poles, p
设置A/分母/极点/梯系数。
- gains, k
设置声道增益。
- dry_gain
设置输入增益。
- wet_gain
设置输出增益。
- format, f
设置系数格式。
- ‘ll’
格子-梯子函数
- ‘sf’
模拟传递函数
- ‘tf’
数字传递函数
- ‘zp’
Z平面零点/极点,直角(默认)
- ‘pr’
Z平面零点/极点,极坐标(弧度)
- ‘pd’
Z平面零点/极点,极坐标(度数)
- ‘sp’
S平面零点/极点
- process, r
设置处理类型。
- ‘d’
直接处理
- ‘s’
串联处理
- ‘p’
并联处理
- precision, e
设置过滤精度。
- ‘dbl’
双精度浮点(默认)
- ‘flt’
单精度浮点
- ‘i32’
32位整数
- ‘i16’
16位整数
- normalize, n
归一化滤波器系数,默认启用。 启用它将归一化DC上的幅度响应为0dB。
- mix
设置输出中使用过滤信号的比例。默认值为1。 范围是0到1之间。
- response
显示脉冲响应频率响应,幅度(洋红色)、相位(绿色)和群延迟(黄色)在额外视频流中。 默认值是禁用。
- channel
设置用于显示频率响应的IR声道。默认显示第一声道。 此选项仅在响应启用时使用。
- size
设置视频流大小。此选项仅在响应启用时使用。
系数在tf
和sf
格式中以空格分隔,并按升序排列。
系数在zp
格式中以空格分隔,系数顺序无关紧要。系数在zp
格式中是复数,并带有i虚部单位。
可以为每个声道提供不同的系数和增益,在这种情况下 使用'|'分隔系数或增益。最后提供的系数将用于所有剩余声道。
29.30.1 示例
- 在48000 Hz采样率下应用2极椭圆形陷波过滤器,频率约为5000Hz:
aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
- 与上述类似但使用
zp
格式:aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
- 应用3阶模拟归一化巴特沃斯低通滤波器,使用模拟传递函数格式:
aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
29.31 alimiter
限幅器防止输入信号超过所需的阈值。 此限幅器使用前瞻技术来防止信号失真。 这意味着信号处理后会有一个小的延迟。 请记住,该延迟就是您设置的攻击时间。
过滤器接受以下选项:
- level_in
设置输入增益。默认值为1。
- level_out
设置输出增益。默认值为1。
- limit
不要让信号超过此水平通过限幅器。默认值为1。
- attack
限幅器将在此时间(毫秒)内达到衰减水平。 默认值为5毫秒。
- release
从限幅回到衰减1.0所需的时间,以毫秒为单位。 默认值为50毫秒。
- asc
当始终需要增益减少时,ASC会处理释放到一个 平均减弱级别,而不是在释放时间内达到减少0。
- asc_level
选择释放时间受到ASC影响的程度,0表示几乎没有变化 释放时间,而1则会产生更高的释放时间。
- level
自动对输出信号进行电平调整。默认启用。 如果启用,这会将音频归一化回0dB。
- latency
补偿使用攻击参数设置的前瞻缓冲区所引入的延迟。 当流到达EOF(文件结束)时,也会刷新前瞻缓冲区中的有效音频数据。
根据所选设置,建议在应用此过滤器之前将输入 上采样2倍或4倍使用aresample。
29.32 allpass
应用一个具有中心频率(单位:Hz)的两极全通滤波器频率,以及过滤宽度宽度。 全通滤波器改变音频的频率到相位关系, 而不改变其频率到幅度关系。
过滤器接受以下选项:
- frequency, f
设置频率(单位:Hz)。
- width_type, t
设置过滤器带宽的指定方法。
- h
赫兹
- q
品质因数
- o
八度
- s
斜率
- k
千赫兹
- width, w
以width_type单位指定过滤器的带宽。
- mix, m
设置输出中使用过滤信号的比例。默认值为1。 范围是0到1之间。
- channels, c
指定要过滤的通道,默认情况下会过滤所有可用的通道。
- normalize, n
归一化双二阶滤波器系数,默认禁用。 启用后,直流的幅值响应将归一化为0dB。
- order, o
设置滤波器阶数,可以是1或2。默认值是2。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤的精度。
- auto
根据环绕滤波器选择自动样本格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用浮点32位。
- f64
始终使用浮点64位。
29.32.1 命令
此滤镜支持以下命令:
- frequency, f
更改全通滤波器频率。 命令语法为:"频率"
- width_type, t
更改全通滤波器宽度类型。 命令语法为:"宽度类型"
- width, w
更改全通滤波器宽度。 命令语法为:"宽度"
- mix, m
更改全通滤波器混合。 命令语法为:"混合"
29.33 声音循环
循环音频样本。
滤镜接受以下选项:
- loop
设置循环次数。将此值设置为-1将产生无限循环。 默认值为0。
- size
设置最大样本数。默认值为0。
- start
设置循环的第一个样本。默认值为0。
- time
设置循环开始的时间(秒)。 仅在名为开始选项设置时使用
-1
.
29.34 音频合并
合并两个或多个音频流,生成一个多声道流。
滤镜接受以下选项:
- inputs
设置输入数量。默认值为2。
如果输入的声道布局是分开的并且兼容, 输出的声道布局将相应设置并且声道会被重新排列。如果输入的声道布局不分开, 输出将包含第一个输入的所有声道,然后是第二个输入的所有声道, 按此顺序排列,输出的声道布局将是对应于总声道数量的默认值。
例如,如果第一个输入是2.1(左前+右前+低频)模式, 第二个输入是中间+左后+右后模式,那么输出将为5.1模式,声道排列为:a1,a2,b1,a3,b2,b3(a1是第一个输入的第一个声道,b1是第二个输入的第一个声道)。
另一方面,如果两个输入都是立体声,输出声道将使用默认顺序:a1,a2,b1,b2, 输出的声道布局将被任意设置为4.0,这可能不是预期的值。
所有输入必须具有相同的采样率和格式。
如果输入的持续时间不同,输出将以最短的持续时间停止。
29.34.1 使用示例
- 将两个单声道文件合并为一个立体声流:
amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
- 假设1个视频流和6个音频流进行多次合并input.mkv:
ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
29.35 音频混合
将多个音频输入混合为单个输出。
注意此滤镜仅支持浮点样本(音频合并和声道音频滤镜支持多种格式)。如果 audio filters support many formats). If the 音频混合输入样本为整数类型,则音频重采样将自动插入以执行浮点样本的转换。
它接受以下参数:
- inputs
输入数量。如果未指定,默认为2。
- duration
确定流结束的方式。
- longest
最长输入的持续时间。(默认)
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
- dropout_transition
当一个输入流结束时,音量重新归一化的过渡时间,以秒为单位。 默认值为2秒。
- weights
指定每个输入音频流的权重,权重是以空格分隔的数字序列。 如果指定的权重数量少于输入数量, 最后一个权重将分配给剩余的输入。 每个输入默认的权重是1。
- normalize
始终按比例缩放输入,而不是仅执行样本的求和操作。 如果在过滤之前或之后未进行归一化,这种方式可能会导致严重的剪辑。 默认情况下启用。
29.35.1 使用示例
- 将3个输入音频流混合为一个输出,输出的持续时间与第一个输入相同,
且具有3秒的掉落过渡时间:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
- 将一个人声和一个音乐输入音频流混合为一个输出,
输出的持续时间与最长的输入相同。音乐的权重将为人声的四分之一,
输入未进行归一化处理:
ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
29.35.2 命令
此滤镜支持以下命令:
- weights
- normalize
语法与具有相同名称的选项一致。
29.36 音频相乘
第一音频流与第二音频流相乘,结果存储 在输出音频流中。通过将来自第一个音频流的每个样本 与第二个音频流中相同位置的样本相乘完成该操作。
通过此逐元素乘法,可以创建振幅渐变和振幅调制。
29.37 参数均衡器
对每个声道进行高阶参数化多段均衡。
它接受以下参数:
- params
-
该选项字符串的格式为: "c声道f=中央频率w=宽度g=增益t=滤波器类型| ..." 每个均衡器频段以’|’分隔。
- chn
设置要应用均衡的声道编号。 如果输入中没有该声道,则忽略该项。
- f
设置频段的中心频率。 如果输入中没有该频率,则忽略该项。
- w
设置频段宽度,以赫兹为单位。
- g
设置频段增益,以分贝为单位。
- t
设置频段的滤波器类型,可选,可以是:
- ‘0’
巴特沃斯滤波器,这是默认值。
- ‘1’
切比雪夫类型1。
- ‘2’
切比雪夫类型2。
- curves
启用此选项时,参数均衡器的频率响应将显示在视频流中。
- size
设置视频流大小。仅当曲线选项被激活时有用。
- mgain
设置最大显示增益值。仅当曲线选项被激活时有用。 将其设置为一个合理值使得能够显示由邻近频段产生的增益, 如果多个频段相互间隔太近而且都被激活时可能会出现更高的增益。
- fscale
设置用于在视频输出中绘制频率响应的频率比例。 可以是线性或对数。默认是对数。
- colors
为视频流中将要显示的每个声道曲线设置颜色。 这是颜色名称的列表,用空格或’|’分隔。 未识别或缺失的颜色将替换为白色。
29.37.1 使用示例
- 使用切比雪夫类型1滤波器,将中央频率200Hz和宽度100Hz的增益降低10,
应用于前两个声道:
anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
29.37.2 命令
此滤镜支持以下命令:
- change
更改现有的滤频参数。 命令语法为:"滤波编号|f=频率|w=宽度|g=增益"
滤波编号是现有滤波器的编号,从0开始,如果没有这样的滤波器, 将返回错误。频率设置新的频率参数。宽度以赫兹为单位设置新的宽度参数。增益以分贝为单位设置新的增益参数。
使用asendcmd完整调用滤波器可能如下: asendcmd=c=’4.0 参数均衡器 修改 0|f=200|w=50|g=1’,参数均衡器=...
29.38 非局域均值降噪
使用非局域均值算法减少音频样本中的宽带噪音。
通过查看具有相似上下文的其他样本来调整每个样本。 这种上下文相似性通过比较其周围补丁的大小来定义p。补丁将在一个区域内搜索r。
滤镜接受以下选项:
- strength, s
设置降噪强度。允许范围是0.00001到10000。默认值为0.00001。
- patch, p
设置补丁半径持续时间。允许范围是1到100毫秒。 默认值为2毫秒。
- research, r
设置研究半径持续时间。允许范围是2到300毫秒。 默认值为6毫秒。
- output, o
设置输出模式。
它接受以下值:
- i
通过输入不变。
- o
通过过滤的噪音。
- n
仅通过噪音。
默认值为o.
- smooth, m
设置平滑因子。默认值为11。允许范围是1到1000.
29.38.1 命令
此滤镜支持以上所有选项作为命令.
29.39 归一化最小均方误差与最小均方算法
将归一化最小均方(平方|第四)算法应用于第一个音频流,并使用第二个音频流进行操作。
该自适应滤波器用于模拟所需的滤波器,通过找到与产生实际信号(第一个输入音频流) 与目标信号(第二个输入音频流)之间的误差信号的最小均方相关的滤波器系数。
以下是接受的选项说明。
- order
设置滤波器阶数。
- mu
设置滤波器的步长。
- eps
设置滤波器的容差值。
- leakage
设置滤波器的泄漏。
- out_mode
它接受以下值:
- i
传递第一个输入。
- d
传递第二个输入。
- o
传递目标信号(第二输入)与误差信号估计的差值。
- n
传递输入信号(第一个输入)与误差信号估计的差值。
- e
传递误差信号估计的样本值。
默认值为o.
- precision
设置处理样本时使用的精度。
- auto
根据其它滤波器自动选择内部样本格式。
- float
始终使用单精度浮点样本格式。
- double
始终使用双精度浮点样本格式。
29.39.1 使用示例
- 该滤镜的众多用途之一是噪声抑制,输入音频使用与自己固定延迟量的样本进行滤波,
一个对立体声音频的例子是:
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
29.39.2 命令
此滤镜支持与选项相同的命令,但不包括选项order
.
29.40 音频通过
将音频源不变地传递到输出。
29.41 音频填充
用静音填充音频流的尾部。
这可以与ffmpeg
-shortest配合使用
将音频流扩展到与视频流的长度相同。
以下是接受选项的说明。
- packet_size
设置静音数据包的大小。默认值是4096。
- pad_len
设置要在尾部添加的静音样本数。在达到值后,将终止流。 此选项与whole_len.
- whole_len
设置输出音频流的最小总样本数。 如果值比输入音频长度还长, 则尾部会添加静音,直到达到该值。 此选项与pad_len.
- pad_dur
指定添加静音样本的持续时间。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。仅在设置为非负值时使用。
- whole_dur
指定输出音频流的最短总持续时间。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。如果值比输入音频长度还长, 则尾部会添加静音,直到达到该值。 此选项与pad_dur
如果未设置pad_len、whole_len、pad_dur或whole_dur选项,滤镜将无限地在输入流尾部添加静音。
注意,对于ffmpeg 4.4及以下版本,零pad_dur或whole_dur也会导致滤镜无限地添加静音。
29.41.1 使用示例
- 在输入尾部添加1024个静音样本:
apad=pad_len=1024
- 确保音频输出至少包含10000个样本,如需要会在输入尾部填充静音:
apad=whole_len=10000
- 使用
ffmpeg
填充音频输入尾部的静音,以便视频流始终是最短的, 在输出文件中转换到结尾时使用shortest选项:ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
29.42 相位器
为输入音频添加一个相位效果。
相位过滤器在频谱中创建一系列的峰和谷。 这些峰和谷的位置会被调制,使其随时间变化,从而产生扫过的效果。
以下是接受的参数的描述。
- in_gain
设置输入增益。默认值为0.4。
- out_gain
设置输出增益。默认值为0.74。
- delay
设置延迟时间(毫秒)。默认值为3.0。
- decay
设置衰减。默认值为0.4。
- speed
设置调制速度(赫兹)。默认值为0.5。
- type
设置调制类型。默认是三角形波。
它接受以下值:
- ‘triangular, t’
- ‘sinusoidal, s’
29.43 相移器
对输入音频样本应用相位偏移。
过滤器接受以下选项:
- shift
指定相位偏移。允许范围为-1.0到1.0。 默认值为0.0。
- level
设置应用于最终输出的输出增益。允许范围为0.0到1.0。 默认值为1.0。
- order
设置用于过滤的滤波器阶数。允许范围为1到16。 默认值为8。
29.43.1 命令
该过滤器支持上述所有选项作为命令.
29.44 apsnr
测量音频峰值信噪比。
此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。
29.45 apsyclip
对输入音频流应用心理声学剪辑器。
过滤器接受以下选项:
- level_in
设置输入增益。默认值为1。范围是[0.015625 - 64]。
- level_out
设置输出增益。默认值为1。范围是[0.015625 - 64]。
- clip
设置剪辑起始值。默认值为0dBFS或1。
- diff
仅输出差异样本,用于听到引入的失真。 默认情况下禁用。
- adaptive
设置适应性失真的强度。默认值为0.5。 允许范围是从0到1。
- iterations
设置心理声学剪辑器的迭代次数。 允许范围是从1到20。默认值为10。
- level
自动调整输出信号的电平。默认情况下禁用。 如果启用,它会将音频标准化为0dBFS。
29.45.1 命令
该过滤器支持上述所有选项作为命令.
29.46 apulsator
音频脉动器介于自动声像和颤音之间。 但它也可以产生有趣的立体声效果。脉动器基于低频振荡器(LFO) 使用不同的波形和相移改变左右声道的音量。 此过滤器能够定义左声道和右声道之间的偏移量。 偏移量为0意味着两个LFO形状彼此匹配。 左右声道均匀改变 - 传统的颤音效果。 偏移量为50%意味着右声道的形状完全相移 (或向后移动约半个频率) - 脉动器充当自动声像器。 偏移量为1时两个曲线再次匹配。任何中间的设置都会使 相移无缝连接在所有阶段之间,并产生一些带有 正弦和三角波形的“绕过”声音。 从0.5开始,偏移量越接近1,信号从左到右扬声器的速度越快。
过滤器接受以下选项:
- level_in
设置输入增益。默认值为1。范围是[0.015625 - 64]。
- level_out
设置输出增益。默认值为1。范围是[0.015625 - 64]。
- mode
设置LFO将使用的波形形状。可以是以下之一:正弦波、三角波、方波、 锯齿向上或锯齿向下。默认是正弦波。
- amount
设置调制强度。定义原始信号受到LFO影响的程度。
- offset_l
设置左声道偏移。默认值为0。允许范围是[0 - 1]。
- offset_r
设置右声道偏移。默认值为0.5。允许范围是[0 - 1]。
- width
设置脉宽。默认值为1。允许范围是[0 - 2]。
- timing
设置可能的计时模式。可以是以下之一:bpm、毫秒或赫兹。默认为赫兹。
- bpm
设置bpm(节拍每分钟)。默认值为120。允许范围是[30 - 300]。 仅在计时模式设置为bpm时使用。
- ms
设置毫秒值。默认值为500。允许范围是[10 - 2000]。 仅在计时模式设置为毫秒时使用。
- hz
设置赫兹频率。默认值为2。允许范围是[0.01 - 100]。 仅在计时模式设置为赫兹时使用。
29.47 aresample
使用libswresample库重新采样输入音频到指定参数。 如果未指定任何参数,则过滤器会自动在输入和输出之间转换。
此过滤器还能伸展/压缩音频数据以使其与时间戳匹配,或者注入静音/剪切音频, 以使其与时间戳匹配,可以同时进行这两种操作或都不做。
过滤器接受以下语法 [采样率:]重采样选项, 其中采样率表示采样率,重采样选项是一个键=值对列表,用":"分隔。参见(ffmpeg-resampler)“重采样选项”部分, 在ffmpeg-resampler(1)手册中查阅完整的支持选项列表。
29.47.1 示例
- 将输入音频重新采样为44100Hz:
aresample=44100
- 伸展/压缩样本到给定的时间戳,每秒最多补偿1000
样本:
aresample=async=1000
29.48 areverse
反转音频剪辑。
警告:此过滤器需要内存缓存整个剪辑,因此建议进行修剪。
29.48.1 示例
- 取剪辑的前5秒并反转它。
atrim=end=5,areverse
29.49 arls
使用第二个音频流对第一个音频流应用递归最小二乘算法。
此自适应过滤器用于通过递归找到与生成最小加权线性最小二乘误差信号(即期望的第2 输入音频流与实际信号,即第1输入音频流之间的差异)相关的滤波器系数来模仿目标滤波器。
以下是接受选项的描述。
- order
设置滤波器阶数。
- lambda
设置遗忘因子。
- delta
设置初始化内部协方差矩阵的系数。
- out_mode
设置过滤器输出样本。它接受以下值:
- i
通过第1个输入。
- d
通过第2个输入。
- o
通过期望信号估计和误差信号之间的差异。
- n
通过输入信号估计和误差信号之间的差异。
- e
传递估计的误差信号样本。
默认值为o.
- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单精度浮点样本格式。
- double
始终使用双精度浮点样本格式。
29.50 arnndn
使用循环神经网络减少语音中的噪音。
此过滤器接受以下选项:
- model, m
设置加载训练模型文件。此选项始终是必需的。
- mix
设置过滤样本混合到最终输出的比例。 允许范围为-1到1,默认值为1。 负值具有特殊含义,表示在最终过滤输出中保留过滤噪音的比例。 将此选项设为-1可以听到从输入信号中去除的实际噪音。
29.50.1 命令
该过滤器支持上述所有选项作为命令.
29.51 asdr
测量音频信号与失真比。
此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。
29.52 asetnsamples
设置每个输出音频帧的样本数。
最后一个输出包可能包含不同数量的样本,当输入音频 信号达到尾端时,过滤器将刷新所有剩余样本。
过滤器接受以下选项:
- nb_out_samples, n
设置每个输出音频帧的样本数。 数字表示每个声道的样本数。每个声道。 默认值为1024。
- pad, p
如果设置为1,过滤器会用零填充最后一个音频帧, 使最后一个帧包含与前一个帧相同数量的样本。默认值为1。
例如,设置每帧样本数为1234并禁用最后帧的填充,可使用:
asetnsamples=n=1234:p=0
29.53 asetrate
设置采样率而不改变PCM数据。 这将导致速度和音调的变化。
过滤器接受以下选项:
- sample_rate, r
设置输出采样率。默认值为44100赫兹。
29.54 ashowinfo
为每个输入音频帧显示包含各种信息的行。 输入音频不会被修改。
显示的行包含一系列形式为键/值对的信息,例如键:值.
以下值在输出中显示:
- n
输入帧的(顺序)编号,从0开始。
- pts
输入帧的呈现时间戳,以时间基单位表示;时间基 取决于过滤器输入端,并且通常为1/采样率.
- pts_time
以秒表示的输入帧的呈现时间戳。
- fmt
样本格式。
- chlayout
声道布局。
- rate
音频帧的采样率。
- nb_samples
每帧(每个声道)的样本数量。
- checksum
音频数据的Adler-32校验和(以十六进制打印)。对于平面 音频,数据被视为所有平面好像已连接在一起。
- plane_checksums
每个数据平面的Adler-32校验和列表。
29.55 asisdr
测量音频尺度不变信号与失真比。
此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。
29.56 asoftclip
应用音频软剪辑。
软剪辑是一种失真效果,其中信号的振幅沿平滑曲线饱和, 而不是硬剪辑的突兀形状。
此过滤器接受以下选项:
- type
设置软剪辑类型。
它接受以下值:
- hard
- tanh
- atan
- cubic
- exp
- alg
- quintic
- sin
- erf
- threshold
设置开始剪辑的阈值。默认值为0dB或1。
- output
设置应用于输出的增益。默认值为0dB或1。
- param
设置控制S型函数的额外参数。
- oversample
设置过采样因子。
29.56.1 命令
该过滤器支持上述所有选项作为命令.
29.57 aspectralstats
显示音频通道的频域统计信息。 统计信息会为每个音频通道和音频帧计算并存储为元数据。
它接受以下选项:
- win_size
设置窗口长度(样本数)。默认值为2048。 允许范围是32到65536。
- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann, hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认是
hann
.- overlap
设置窗口重叠。允许范围是
0
到1
。默认值为0.5
.- measure
选择要测量的参数。元数据键可以 作为标志使用,默认值是all测量所有参数。none禁用所有测量。
以下是每个元数据键的列表:
- mean
- variance
- centroid
- spread
- skewness
- kurtosis
- entropy
- flatness
- crest
- flux
- slope
- decrease
- rolloff
29.58 asr
自动语音识别
此过滤器使用PocketSphinx进行语音识别。要启用
此过滤器的编译,您需要使用以下选项配置FFmpeg。--enable-pocketsphinx
.
它接受以下选项:
- rate
设置输入音频的采样率。默认值为
16000
。 这需要与语音模型匹配,否则会获得较差的结果。- hmm
设置包含声学模型文件的字典。
- dict
设置发音词典。
- lm
设置语言模型文件。
- lmctl
设置语言模型集。
- lmname
设置要使用的语言模型。
- logfn
设置日志消息的输出。
过滤器将识别的语音导出为帧元数据。lavfi.asr.text
.
29.59 astats
显示音频通道的时域统计信息。统计信息针对每个音频通道计算和显示,并且在适用的情况下,还提供总体值。
它接受以下选项:
- length
短窗口长度(以秒为单位),用于峰值和谷值RMS测量。默认值是
0.05
(50毫秒)。允许范围是[0 - 10]
.- metadata
-
设置元数据注入。所有元数据键都以
lavfi.astats.X
为前缀,其中X
是从1开始的通道编号或字符串Overall
。默认情况下禁用。每个通道的可用键包括:位深 峰值因子 直流偏移 动态范围 熵值 平坦因子 最大差异 最大水平 平均差异 最小差异 最小水平 噪声基准 噪声基准计数 无穷值的数量 NaN值的数量 反常值的数量 峰值计数 绝对峰值计数 峰值水平 RMS差异 RMS峰值 RMS谷值 零交叉点 零交叉率
以及对于
Overall
: 位深 直流偏移 熵值 平坦因子 最大差异 最大水平 平均差异 最小差异 最小水平 噪声基准 噪声基准计数 无穷值的数量 NaN值的数量 反常值的数量 样本数量 峰值计数 绝对峰值计数 峰值水平 RMS差异 RMS水平 RMS峰值 RMS谷值例如,完整的键格式像
lavfi.astats.1.DC_offset
或lavfi.astats.Overall.Peak_count
.请参阅下方的键描述。
- reset
设置在重置之前累计统计数据所需的帧数。默认情况下禁用。
- measure_perchannel
选择每个通道测量的参数。元数据键可以用作标志,默认值为all,表示测量所有内容。none禁用所有每通道的测量。
- measure_overall
选择总体测量的参数。元数据键可以用作标志,默认值为all,表示测量所有内容。none禁用所有总体测量。
以下是测量键的说明:
- none
没有测量值
- all
所有测量值
- Bit_depth
整体音频位深,即每个样本使用的位数
- Crest_factor
峰值与RMS水平的标准比率(注意:不是dB)
- DC_offset
零值的平均幅度偏移
- Dynamic_range
以dB为单位测量的音频动态范围
- Entropy
整段音频的熵值,接近1.0的熵值通常为白噪声测量值
- Flat_factor
信号在其峰值水平处的平坦度(即连续样本具有相同值),例如最小水平或最大水平)
- Max_difference
两个连续样本之间的最大差异
- Max_level
最大采样值
- Mean_difference
两个连续样本之间的平均差异,即每两个连续样本差异的平均值
- Min_difference
两个连续样本之间的最小差异
- Min_level
最小采样值
- Noise_floor
通过短窗口在dBFS中测量的最小局部峰值
- Noise_floor_count
信号达到的次数(不是样本数)噪声基准
- Number_of_Infs
具有无穷值的样本数
- Number_of_NaNs
具有NaN (非数字)值的样本数
- Number_of_denormals
具有亚常值的样本数
- Number_of_samples
样本数
- Peak_count
信号达到的次数(不是样本数),无论是最小水平或最大水平
- Abs_Peak_count
信号中的绝对样本达到 最大绝对值的次数最小水平和最大水平
- Peak_level
标准峰值水平,以dBFS为单位测量
- RMS_difference
两个连续样本之间的均方根差
- RMS_level
标准RMS水平,以dBFS为单位测量
- RMS_peak
- RMS_trough
通过短窗口测量的RMS水平的峰值和谷值,以dBFS为单位测量。
- Zero crossings
波形穿过零轴的点数
- Zero crossings rate
零交叉点率和音频样本数
29.60 asubboost
增强低音频率。
过滤器接受以下选项:
- dry
设置干增益,表示保留多少原始信号。允许范围为0到1。 默认值为1.0。
- wet
设置湿增益,表示保留多少过滤信号。允许范围为0到1。 默认值为1.0。
- boost
设置最大增强因子。允许范围为1到12。默认值为2。
- decay
设置延迟线衰减增益值。允许范围为0到1。 默认值为0.0。
- feedback
设置延迟线反馈增益值。允许范围为0到1。 默认值为0.9。
- cutoff
设置截止频率(赫兹)。允许范围为50到900。 默认值为100。
- slope
设置截止频率的斜率值。允许范围为0.0001到1。 默认值为0.5。
- delay
设置延迟。允许范围为1到100。 默认值为20。
- channels
设置要处理的通道。默认值是所有可用通道。
29.60.1 命令
此过滤器支持以上所有选项作为命令.
29.61 asubcut
削减低音频率。
该过滤器允许设置自定义、陡峭的剪切,而不是高通滤波器,因此能够在停止带中更有效降低频率含量。
过滤器接受以下选项:
- cutoff
设置截止频率(赫兹)。允许范围为2到200。 默认值为20。
- order
设置滤波器阶数。可用值为3到20。 默认值为10。
- level
设置输入增益水平。允许范围为0到1。 默认值为1。
29.61.1 命令
此过滤器支持以上所有选项作为命令.
29.62 asupercut
削减高频率。
过滤器接受以下选项:
- cutoff
设置截止频率(赫兹)。允许范围为20000到192000。 默认值为20000。
- order
设置滤波器阶数。可用值为3到20。 默认值为10。
- level
设置输入增益水平。允许范围为0到1。 默认值为1。
29.62.1 命令
此过滤器支持以上所有选项作为命令.
29.63 asuperpass
应用高阶巴特沃斯带通滤波器。
过滤器接受以下选项:
- centerf
设置中心频率(赫兹)。允许范围为2到999999。 默认值为1000。
- order
设置滤波器阶数。可用值为4到20。 默认值为4。
- qfactor
设置Q因子。允许范围为0.01到100。 默认值为1。
- level
设置输入增益水平。允许范围为0到2。 默认值为1。
29.63.1 命令
此过滤器支持以上所有选项作为命令.
29.64 asuperstop
应用高阶巴特沃斯带阻滤波器。
过滤器接受以下选项:
- centerf
设置中心频率(赫兹)。允许范围为2到999999。 默认值为1000。
- order
设置滤波器阶数。可用值为4到20。 默认值为4。
- qfactor
设置Q因子。允许范围为0.01到100。 默认值为1。
- level
设置输入增益水平。允许范围为0到2。 默认值为1。
29.64.1 命令
此过滤器支持以上所有选项作为命令.
29.65 atempo
调整音频节奏。
过滤器接受一个参数,即音频节奏。如果未指定,过滤器将假定标准1.0节奏。节奏必须在[0.5, 100.0]范围内。
请注意,对于超过2的节奏值,将跳过一些样本而不是混合它们。如果出于任何原因对此感到担忧,可以连接多个atempo实例来达到所需的节奏乘积。
29.65.1 示例
- 将音频节奏减慢到80%:
atempo=0.8
- 将音频节奏加快到300%:
atempo=3
- 通过连接两个atempo实例将音频节奏加快到300%:
atempo=sqrt(3),atempo=sqrt(3)
29.65.2 命令
此过滤器支持以下命令:
- tempo
更改滤波器节奏缩放因子。 命令的语法是:"tempo"
29.66 atilt
对音频流应用倾斜滤波器。
该过滤器对任何指定频段应用任何频谱衰减斜率。
过滤器接受以下选项:
- freq
设置倾斜的中心频率(赫兹)。默认值为10000 Hz。
- slope
设置倾斜的斜率方向。默认值为0。允许范围为-1到1。
- width
设置倾斜宽度。默认值为1000。允许范围为100到10000。
- order
设置倾斜滤波器阶数。
- level
设置输入音量水平。允许范围为0到4。 默认值为1。
29.66.1 命令
此过滤器支持以上所有选项作为命令.
29.67 atrim
对输入进行修剪,使输出包含输入的一段连续子部分。
它接受以下参数:
- start
保留的部分起始时间戳(以秒为单位)。即时间戳为start的音频样本将是输出中的第一个样本。
- end
指定将被丢弃的第一个音频样本的时间,即在具有时间戳为end之前的音频样本 将是输出中的最后一个样本。
- start_pts
与start相同,但此选项以样本而不是秒设置起始时间戳。
- end_pts
与end相同,但此选项以样本而不是秒设置结束时间戳。
- duration
输出的最大持续时间,以秒为单位。
- start_sample
应输出的第一个样本的数量。
- end_sample
应丢弃的第一个样本的数量。
start, end和duration以时间持续时间规格表示;请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分.
注意,第一个和第二组起始/结束选项以及duration选项查看帧时间戳,而_sample选项仅仅统计通过过滤器的样本。因此,start/end_pts和start/end_sample在时间戳错误、不准确或未从零开始时会产生不同结果。还要注意,此过滤器不会修改时间戳。如果希望输出时间戳从零开始,请在atrim过滤器之后插入asetpts过滤器。
如果设置了多个起始或结束选项,此过滤器将尝试保持所有至少满足一个指定约束的样本。要仅保留同时满足所有约束的部分,可链式使用多个atrim过滤器。
默认情况下会保留所有输入。因此可以仅设置例如结束值以保留特定时间之前的所有内容。
示例:
- 仅保留输入的第二分钟内容:
ffmpeg -i INPUT -af atrim=60:120
- 仅保留前1000个样本:
ffmpeg -i INPUT -af atrim=end_sample=1000
29.68 axcorrelate
计算两个输入音频流的归一化窗口交叉相关性。
生成的样本始终在-1和1之间。如果结果为1,则表示选择的片段中两个输入样本高度相关。结果为0表示它们完全无关。如果结果为-1,则表示两个输入样本不同相位,这意味着它们互相抵消。
过滤器接受以下选项:
- size
设置计算交叉相关性的片段大小。 默认值为256。允许范围为2到131072。
- algo
设置交叉相关性的算法。可以是
slow
,fast
或best
。默认值为best
。快速算法假设在任何给定片段上的平均值始终为零,因此需要更少的计算。 这通常不正确,但对典型音频流有效。
29.68.1 示例
- 计算立体声音频流中通道之间的相关性:
ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
29.69 bandpass
应用两极巴特沃斯带通滤波器,设置中心频率frequency,以及(3dB点)带宽宽度。 该常数裙增益选项选择常数裙增益(峰值增益=Q),而不是默认值:常数0dB峰值增益。 滤波器以每倍频程6dB(每十倍频范围20dB)的速率滚降。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- csg
如果设置为1,则为常数裙增益。默认为0。
- width_type, t
设置指定滤波器带宽的方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以“width_type”单位指定滤波器的带宽。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。
- channels, c
指定要过滤的通道,默认情况下过滤所有可用通道。
- normalize, n
归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用32位浮点。
- f64
始终使用64位浮点。
- block_size, b
设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。
请注意,当设置为非零值时,滤波延迟将正好为这么多样本。
29.69.1 命令
此滤波器支持以下命令:
- frequency, f
更改带通频率。 命令的语法是:"频率"
- width_type, t
更改带通width_type。 命令的语法是:"width_type"
- width, w
更改带通宽度。 命令的语法是:"宽度"
- mix, m
更改带通混合比例。 命令的语法是:"混合比例"
29.70 带阻
应用一个中心频率为 的双极巴特沃斯带阻滤波器频率,以及(3dB点)带宽宽度。 滤波器以每倍频程6dB(每十倍频范围20dB)的速率滚降。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- width_type, t
设置指定滤波器带宽的方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以“width_type”单位指定滤波器的带宽。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。
- channels, c
指定要过滤的通道,默认情况下过滤所有可用通道。
- normalize, n
归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用32位浮点。
- f64
始终使用64位浮点。
- block_size, b
设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。
请注意,当设置为非零值时,滤波延迟将正好为这么多样本。
29.70.1 命令
此滤波器支持以下命令:
- frequency, f
更改带阻频率。 命令的语法是:"频率"
- width_type, t
更改带阻width_type。 命令的语法是:"width_type"
- width, w
更改带阻宽度。 命令的语法是:"宽度"
- mix, m
更改带阻混合比例。 命令的语法是:"混合比例"
29.71 低音,低架滤波
使用具有标准高保的音调控制类似响应的双极架式滤波器提升或降低音频的低音(较低)频率。这也称为架式均衡(EQ)。
滤波器接受以下选项:
- gain, g
给出在0赫兹的增益。其有用范围约为-20 (较大衰减)到+20(较大提升)。当使用正增益时请注意失真。
- frequency, f
设置滤波器的中心频率,因此可以用来扩展或减少要提升或降低的频率范围。 默认值为
100
赫兹。- width_type, t
设置指定滤波器带宽的方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
确定滤波器的架式过渡有多陡峭。
- poles, p
设置极点的数量。默认值为2。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。
- channels, c
指定要过滤的通道,默认情况下过滤所有可用通道。
- normalize, n
归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用32位浮点。
- f64
始终使用64位浮点。
- block_size, b
设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。
请注意,当设置为非零值时,滤波延迟将正好为这么多样本。
29.71.1 命令
此滤波器支持以下命令:
- frequency, f
更改低音频率。 命令的语法是:"频率"
- width_type, t
更改低音width_type。 命令的语法是:"width_type"
- width, w
更改低音宽度。 命令的语法是:"宽度"
- gain, g
更改低音增益。 命令的语法是:"增益"
- mix, m
更改低音混合比例。 命令的语法是:"混合比例"
29.72 双二阶滤波器
应用具有给定系数的双二阶IIR滤波器。 其中b0, b1, b2以及a0, a1, a2分别是分子和分母系数。 以及通道, c指定要过滤的通道,默认情况下过滤所有 可用通道。
29.72.1 命令
此滤波器支持以下命令:
- a0
- a1
- a2
- b0
- b1
- b2
更改双二阶滤波器参数。 命令的语法是:"数值"
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。
- channels, c
指定要过滤的通道,默认情况下过滤所有可用通道。
- normalize, n
归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用32位浮点。
- f64
始终使用64位浮点。
- block_size, b
设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。
请注意,当设置为非零值时,滤波延迟将正好为这么多样本。
29.73 Bauer立体声至双耳转换
Bauer立体声至双耳转换,可以改善使用耳机听立体声音频的体验。
要启用此滤波器的编译,需要使用以下配置FFmpeg:--enable-libbs2b
.
它接受以下参数:
- profile
预定义的交叉反馈等级。
- default
默认等级(fcut=700,feed=50)。
- cmoy
Chu Moy电路(fcut=700,feed=60)。
- jmeier
Jan Meier电路(fcut=650,feed=95)。
- fcut
截止频率(单位:赫兹)。
- feed
反馈等级(单位:赫兹)。
29.74 通道映射
将输入通道重新映射到新位置。
它接受以下参数:
- map
将输入映射到输出。参数是一个由‘|’分隔的映射列表,每个映射格式为
输入通道-输出通道
或者输入通道
格式。输入通道可以是输入通道的名称(例如前左FL)或输入通道布局中的索引。输出通道可以是输出通道的名称或输出通道布局中的索引。如果输出通道未提供,则它隐含为从零开始的索引,并且对于每个映射递增一。混合类型的映射是不允许的,将导致解析错误。- channel_layout
输出流的通道布局。如果未指定,则过滤器将根据输出通道名称或映射数量进行猜测。 猜测的布局不一定按映射的顺序包含通道。
如果没有映射,过滤器将隐含地将输入通道映射到输出通道,保持索引。
29.74.1 示例
- 例如,假设是一个5.1+下混的输入MOV文件,
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
将从输入的下混通道创建一个标记为立体声的输出WAV文件。
- 修复通过AAC原生通道顺序编码的不正确的5.1 WAV:
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
29.75 通道分拆
将输入音频流的每个通道拆分为一个单独的输出流。
它接受以下参数:
- channel_layout
输入流的通道布局。默认值为“立体声”。
- channels
描述要作为单独输出流提取的通道的通道布局,或选择“全部”以提取每个输入通道为单独的流。默认值为“全部”。
选择在输入时通道布局中不存在的通道将导致错误。
29.75.1 示例
- 例如,假设是一个立体声输入MP3文件,
ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
将创建一个带有两个音频流的输出Matroska文件,一个包含左声道,另一个包含右声道。
- 将一个5.1 WAV文件拆分为按通道文件:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav
- 仅从一个5.1 WAV文件中提取低频效果声道:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav
29.76 合唱效果
为音频添加一个合唱效果。
可以使单一人声听起来像合唱,但也可以应用于乐器。
合唱类似于带有短延迟的回声效果,但与回声的恒定延迟不同,合唱的延迟通过正弦或三角调制使其变化。 调制深度定义了调制延迟在延迟之前或之后播放的范围。因此延迟的声音听起来会更慢或更快,即延迟的声音围绕原始声音调谐,就像合唱中某些声音稍微跑调一样。
它接受以下参数:
- in_gain
设置输入增益。默认值为0.4。
- out_gain
设置输出增益。默认值为0.4。
- delays
设置延迟。典型延迟约为40ms至60ms。
- decays
设置衰减。
- speeds
设置速度。
- depths
设置深度。
29.76.1 示例
- 一个单独的延迟:
chorus=0.7:0.9:55:0.4:0.25:2
- 两个延迟:
chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
- 具有三个延迟的丰满的合唱效果:
chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
29.77 压缩-展开
压缩或扩展音频的动态范围。
它接受以下参数:
- attacks
- decays
每个通道的时间列表,用于计算输入信号的瞬时音量。攻击表示音量增加,衰减表示音量减少。对于大多数情况,攻击时间(对音频变响的响应)应比衰减时间更短,因为人耳对突然的响声音频更敏感,而对突然的轻声音频更敏感。 攻击的典型值为0.3秒,而衰减的典型值为0.8秒。 如果指定的攻击和衰减数量少于通道数,最后组的攻击/衰减将用于所有剩余通道。
- points
用于转换函数的一组点,指定为相对最大可能信号幅值的分贝值。每组键点列表必须使用以下语法:
x0/y0|x1/y1|x2/y2|....
或者x0/y0 x1/y1 x2/y2 ....
输入值必须严格递增,但传递函数不必单调递增。点
0/0
被假定为值,但可以被覆盖(通过0/out-dBn
)。典型的传递函数值是-70/-70|-60/-20|1/0
.- soft-knee
设置所有接点的曲线半径(以dB为单位)。默认值为0.01。
- gain
设置所有传递函数点上应用的附加增益(以dB为单位)。这使得整体增益的调整变得容易。默认值为0。
- volume
开始过滤时,为每个通道指定一个假定的初始音量,以dB为单位。这允许用户初始提供一个标称级别,例如,在动态范围压缩操作开始之前,避免在初始信号水平上施加非常大的增益。对于最初安静的音频,典型值为-90 dB。默认值为0。
- delay
设置延迟时间(以秒为单位)。输入音频被立即分析,但音频在送到音量调节器之前会有延迟。指定一个近似等于起延和衰减时间的延迟,允许过滤器实际上以预测模式工作而不是响应模式。默认值为0。
29.77.1 示例
- 使具有安静和响亮段落的音乐适合在嘈杂环境中收听:
compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
另一个示例,包含耳语和爆炸部分的音频:
compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
- 当噪音水平较低于信号时,用于降噪的噪音门:
compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
- 这是另一种噪音门,这次是当噪音水平高于信号时(在某些方面类似于静噪):
compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
- 从-6dB开始的2:1压缩:
compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
- 从-9dB开始的2:1压缩:
compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
- 从-12dB开始的2:1压缩:
compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
- 从-18dB开始的2:1压缩:
compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
- 从-15dB开始的3:1压缩:
compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
- 压缩器/门:
compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
- 扩展器:
compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
- 从-6dB开始的硬限制器:
compand=attacks=0:points=-80/-80|-6/-6|20/-6
- 从-12dB开始的硬限制器:
compand=attacks=0:points=-80/-80|-12/-12|20/-12
- 在-35dB的硬噪声门:
compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
- 软限制器:
compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
29.78 补偿延迟
补偿延迟线是一个基于度量的延迟,用于补偿麦克风或扬声器的不同位置。
例如,您使用分别放置在不同位置的两个麦克风录制吉他。由于声波前沿在正常条件下具有固定速度,麦克风的相位可能会有所不同,具体取决于它们的位置及彼此之间的关系。当这些麦克风处于同步状态时,可以获得最佳的音效混音。请注意,两个麦克风之间约30厘米的距离会使一个麦克风捕获的信号与另一个麦克风捕获的信号相位相反。这使得最终混音听起来郁闷。此过滤器通过向每个麦克风轨道添加不同的延迟以使它们同步,解决了相位问题。
最佳效果可以通过选取一个轨道作为基准,同时逐个同步其他轨道来实现。记住,同步/延迟容差也取决于采样率。更高的采样率能够提供更大的容差。
过滤器接受以下参数:
- mm
设置毫米距离。这是用于微调的补偿距离。默认值为0。
- cm
设置厘米距离。这是用于调整距离设置的补偿距离。默认值为0。
- m
设置米距离。这是用于硬性距离设置的补偿距离。默认值为0。
- dry
设置干音量。未处理(干)信号的比例。默认值为0。
- wet
设置湿音量。处理后(湿)信号的比例。默认值为1。
- temp
设置环境温度(以摄氏度为单位)。这是环境的温度。默认值为20。
29.78.1 命令
此过滤器支持以下所有选项作为命令.
29.79 交叉馈送
应用耳机交叉馈送过滤器。
交叉馈送是将立体声音频录音的左右通道混合在一起的过程。其主要用于减少低频的极端立体声分离。
目的是为听众产生更类似扬声器的声音。
过滤器接受以下选项:
- strength
设置交叉馈送的强度。默认值为0.2。允许范围为0到1。这设置了立体声图像边缘部分的低架滤波器增益。默认值为-6dB。当强度设置为1时,最大允许值为-30dB。
- range
设置声场宽度。默认值为0.5。允许范围为0到1。这设置了低架滤波器的截止频率。默认值接近1550 Hz的截止频率。范围设置为1时,截止频率设置为2100 Hz。
- slope
设置低架滤波器的曲线斜率。默认值为0.5。允许范围为0.01到1。
- level_in
设置输入增益。默认值为0.9。
- level_out
设置输出增益。默认值为1。
- block_size
设置用于反向IIR处理的块大小。如果此值设置得足够高(高于当接近零值截止时截断的脉冲响应长度),过滤将变为线性相位,否则如果设置得不够大,它将仅产生不良伪影。
请注意,当设置为非零值时,过滤延迟将正好为这么多采样点。
29.79.1 命令
此过滤器支持以下所有选项作为命令.
29.80 晶化器
用于音频噪声锐化的简单算法。
此过滤器线性增加每个音频样本之间的差异。
过滤器接受以下选项:
- i
设置效果强度(默认值:2.0)。必须在-10.0到0(保持原声)到10.0(最大效果)之间的范围内。要进行反向过滤,请使用负值。
- c
启用削波。默认情况下已启用。
29.80.1 命令
此过滤器支持以下所有选项作为命令.
29.81 直流偏移
对音频应用DC偏移。
这可以用于移除音频中的DC偏移(可能是由于录音链中的硬件问题引起的)。DC偏移的效果是减少动态余量,从而降低音量。astats过滤器可用于判断信号是否有DC偏移。
- shift
设置直流偏移,允许范围为[-1, 1]。它表示音频的偏移量。
- limitergain
可选项。它的值应该远小于1(例如0.05或0.02),用于防止削波。
29.82 去齿施
对音频样本应用去齿处理。
- i
设置触发去齿的强度。允许范围为0到1。默认值为0。
- m
设置减弱音域中高音部分的量。允许范围为0到1。默认值为0.5。
- f
设置去齿处理时保留原始频率内容的比例。允许范围为0到1。默认值为0.5。
- s
设置输出模式。
接受以下值:
- i
原样传递输入。
- o
传递被滤除的齿音。
- e
仅传递齿音。
默认值为o.
29.83 对话增强
增强立体声音频中的对话。
此过滤器接受立体声输入并生成环绕(3.0)声道输出。新生成的前置中间声道包含立体声声道中原始的增强语音对话。此过滤器输出的前置左声道和前置右声道与立体声输入中提供的相同。
过滤器接受以下选项:
- original
设置到前置中间声道输出中保持的原始中间因子。允许范围为0到1。默认值为1。
- enhance
设置应用到前置中间声道输出中的对话增强因子。允许范围为0到3。默认值为1。
- voice
设置语音检测因子。允许范围为2到32。默认值为2。
29.83.1 命令
此过滤器支持以下所有选项作为命令.
29.84 动态范围计
测量音频动态范围。
动态范围值为14及更高表示非常动态的素材。8到13之间表示过渡性素材。而低于8的值表示动态范围很差并且经过高度压缩。
过滤器接受以下选项:
- length
设置用于将音频切分为等长度段的窗口长度(以秒为单位)。默认值为3秒。
29.85 动态音频标准化
动态音频标准化器。
此过滤器对输入音频应用特定增益以将其峰值幅度带到目标水平(例如0 dBFS)。然而,与更"简单"的标准化算法不同,动态音频标准化器动态地重新调整输入音频的增益因子。这允许对"安静"部分的音频应用额外增益,同时避免失真或剪切"响亮"部分。换句话说,动态音频标准化器将"平衡"安静与响亮部分的音量,使每部分的音量达到相同的目标水平。但请注意,动态音频标准化器实现这一目标却没有应用"动态范围压缩",它将保留音频文件每段内容100%的动态范围。
- framelen, f
设置帧长度(以毫秒为单位)。范围为10到8000毫秒。默认值为500毫秒。动态音频标准化器以小块处理输入音频,这些小块被称为帧。这是必要的,因为对于单个采样值,峰值幅度没有意义。相反,我们需要确定连续采样值序列的峰值幅度。默认情况下,动态音频标准化器使用500毫秒的帧长度,这已被证明对大多数文件效果良好。注意,帧的确切长度(以样本数为单位)将根据各输入音频文件的采样率自动确定。
- gausssize, g
设置高斯滤波器窗口大小。范围为3到301,必须是奇数。默认值为31。动态音频标准化器最重要的参数可能是高斯平滑滤波器的窗口大小。窗口大小以帧为单位,围绕当前帧指定。为了简单起见,这必须是奇数。默认值31考虑当前帧,以及前15帧和后15帧。使用更大的窗口结果是更强的平滑效果,从而动态音频标准化器的增益调整更缓慢。相反,使用更小的窗口结果是更弱的平滑效果,从而动态音频标准化器的增益调整更快速。
window size
of the Gaussian smoothing filter. The filter’s window size is specified in frames, centered around the current frame. For the sake of simplicity, this must be an odd number. Consequently, the default value of 31 takes into account the current frame, as well as the 15 preceding frames and the 15 subsequent frames. Using a larger window results in a stronger smoothing effect and thus in less gain variation, i.e. slower gain adaptation. Conversely, using a smaller window results in a weaker smoothing effect and thus in more gain variation, i.e. faster gain adaptation. In other words, the more you increase this value, the more the Dynamic Audio Normalizer will behave like a "traditional" normalization filter. On the contrary, the more you decrease this value, the more the Dynamic Audio Normalizer will behave like a dynamic range compressor.- peak, p
设置目标峰值。这指定了标准化音频输入的最大允许幅度水平。过滤器将尽可能接近目标峰值,同时确保标准化信号绝不会超过此峰值。帧的最大局部增益因子的限制直接由目标峰值决定。默认值为0.95,因此留有5%的余量。建议不要超过此值。
- maxgain, m
设置最大增益因子。范围为1.0到100.0,默认值为10.0。动态音频标准化器为每个输入帧确定最大可能(局部)增益因子,即不会导致剪波或失真。最大增益因子由帧的最大幅度采样值决定。动态音频标准化器还通过预设的(全局)最大增益因子来限制帧的最大增益因子。这样可以避免在"静音"或近乎静音的帧中使用过大增益因子。默认情况下,最大增益因子为10.0。对于大多数输入,默认值应该足够,通常不建议增加此值。然而,对于整体音量水平极低的输入,可能需要允许更高的增益因子。请注意,动态音频标准化器不会简单应用一个"硬"的阈值(即切断超过阈值的值),而是应用一个"S型"阈函数。如此一来,增益因子会平滑地趋近平滑值,但永远不会超过该值。
- targetrms, r
设置目标RMS值。范围从0.0到1.0。默认值为0.0 - 禁用。 默认情况下,动态音频归一化器执行"峰值"归一化。 这意味着每帧的最大局部增益因子仅由帧中最大幅度的样本定义。 这样可以最大化样本的放大,而不会超过最大信号水平,也就是不会发生剪裁。然而,可选的是,动态音频归一化器也可以将帧的均方根(RMS,Root Mean Square)考虑在内。 在电气工程中,均方根通常用于确定时变信号的功率。因此,均方根被认为是比仅关注信号的峰值幅度更好的"感知响度"近似。因此,通过将所有帧调整到一个恒定的RMS值,可以建立统一的"感知响度"。 如果指定了目标RMS值,帧的局部增益因子定义为会正好产生该RMS值的因子。但是请注意,为防止剪裁,最大局部增益因子仍然受帧中最大幅度样本的限制。
- coupling, n
启用通道耦合。默认情况下启用。 默认情况下,动态音频归一化器将以相同的量放大所有通道。 这意味着将对所有通道应用相同的增益因子,即最大可用增益因子由"最响"的通道决定。 然而,在某些录音中,可能会出现不同通道的音量不均匀的情况,例如,一个通道可能比其他通道"更静"。 在这种情况下,可以使用该选项来禁用通道耦合。 这样,每个通道的增益因子将独立确定,仅根据单个通道的最大幅度样本。这允许平衡不同通道的音量。
- correctdc, c
启用直流偏移校正。默认情况下禁用。 音频信号(时间域中)是样本值的序列。 在动态音频归一化器中,这些样本值表示在范围-1.0到1.0之间,无论原始输入格式如何。正常情况下,音频信号或"波形"应围绕零点居中。 这意味着如果我们计算文件或单个帧中所有样本的平均值,结果应该是0.0或至少非常接近该值。 然而,如果平均值从0.0显著偏离,无论是正方向还是负方向,这将称为直流偏移或直流偏差。 由于直流偏移显然是不理想的,动态音频归一化器提供了可选的直流偏移校正。 启用直流偏移校正后,动态音频归一化器将确定每个输入帧的平均值或"直流校正"偏移,并从帧的所有样本值中减去该值,从而确保这些样本重新居中到0.0。此外,为了避免帧边界处的"间隙",邻近帧之间的直流校正偏移值将被平滑插值。
- altboundary, b
启用替代边界模式。默认情况下禁用。 动态音频归一化器会考虑每帧周围一定的邻域,包括前面的帧和后续的帧。然而,对于位于音频文件起点和终点的"边界"帧,并非所有邻近帧都是可用的。 尤其是对于音频文件的前几帧,前面的帧是未知的。同样,对于音频文件的后几帧,后续帧是未知的。因此,其缺失帧的增益因子应该赋值为多少的问题就出现了。 动态音频归一化器为处理这种情况实现了两种模式。默认的边界模式为缺失帧假设一个正好为1.0的增益因子,从而在输入的开头和结尾分别产生平滑的"淡入"和"淡出"效果。
- compress, s
设置压缩因子。范围从0.0到30.0。默认值为0.0。 默认情况下,动态音频归一化器不执行"传统"压缩。 这意味着信号峰值不会被裁剪,从而在每个局部邻域中保持完整的动态范围。 然而,在某些情况下,可能希望将动态音频归一化器的归一化算法与更"传统"的压缩相结合。 为此,动态音频归一化器提供了可选的压缩(阈值化)功能。如果(并且只有在)启用了压缩功能,所有输入帧将在实际归一化过程之前由一个软拐点阈值化函数处理。 简单来说,阈值化函数将裁剪所有幅度超过某个阈值的样本。 然而,动态音频归一化器不会简单地应用一个固定的阈值,而是为每个单独的帧调整阈值。 一般来说,较小的参数会导致更强的压缩,反之亦然。推荐避免使用小于3.0的值,以免出现可闻的失真。
- threshold, t
设置目标阈值。该值指定音频输入中允许的最低幅度水平,该水平将被归一化。 如果输入帧的音量高于该值,帧将被归一化。 否则,帧可能完全不被归一化。默认值为0,意味着所有输入帧将被归一化。 此选项主要用于避免对数字噪声进行放大的情况。
- channels, h
指定需要过滤的通道,默认情况下过滤所有可用的通道。
- overlap, o
指定帧的重叠部分。如果设置为0(默认为0),将不会进行帧重叠。 使用范围大于0小于1的值会使增益调整不那么保守,例如当帧长度选项设置为较小的值时,如果帧长度选项值通过非零重叠进行补偿,则与零重叠情况相比,增益调整在时间上会更加平滑。
- curve, v
指定计算帧增益时使用的峰值映射曲线表达式。帧增益的最大输出值仍然受此过滤器之前提到的其他选项限制。
表达式可以包含以下常量:
- ch
当前通道号
- sn
当前样本号
- nb_channels
通道总数
- t
以秒表示的时间戳
- sr
采样率
- p
当前帧峰值
29.85.1 命令
该过滤器支持上述所有选项作为命令.
29.86 耳蜡
使在耳机上的音频收听更舒适。
此滤镜为44.1kHz立体声(即音频CD格式)音频增加"提示信号",使得在耳机上收听时,立体声图像从头内(耳机的标准设置)移到听者外前方(音响的标准设置)。
移植自SoX。
29.87 均衡器
应用双极性峰值均衡滤波器(EQ)。使用此滤波器,可以在选定的频率及其周围增大或减小信号水平,而所有其他频率不会受到影响(与带通和带阻滤波器不同)。
为了生成复杂的均衡曲线,可以多次调用此滤波器,每次使用不同的中心频率。
该滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率,以Hz为单位。
- width_type, t
设置指定滤波器带宽的方式。
- h
Hz
- q
品质因数(Q-Factor)
- o
倍频程
- s
斜率
- k
kHz
- width, w
以width_type单位指定滤波器的带宽。
- gain, g
设置所需的增益或衰减,以dB为单位。 当使用正增益时请注意剪裁问题。
- mix, m
设置输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。
- channels, c
指定需要过滤的通道,默认情况下过滤所有可用的通道。
- normalize, n
归一化二次滤波系数,默认情况下禁用。 启用该选项将DC点的幅度响应归一化至0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤的精度。
- auto
根据环绕滤镜选择自动采样格式。
- s16
始终使用签名16位。
- s32
始终使用签名32位。
- f32
始终使用浮点32位。
- f64
始终使用浮点64位。
- block_size, b
设置反向IIR处理的块大小。如果此值设置得足够高(高于接近零值时截断的脉冲响应长度),过滤将变成线性相位,否则如果不足,它将只会产生难听的伪像。
注意,如果设置为非零值,滤波延迟将正好是这么多样本。
29.87.1 示例
- 在1000Hz处衰减10dB,带宽为200Hz:
equalizer=f=1000:t=h:width=200:g=-10
- 在Q为1的情况下在1000Hz处增强2dB,并在Q为2的情况下在100Hz处衰减5dB:
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
29.87.2 命令
此滤镜支持以下命令:
- frequency, f
更改均衡器频率。 命令的语法为:"频率"
- width_type, t
更改均衡器的width_type。 命令的语法为:"宽度类型"
- width, w
更改均衡器宽度。 命令的语法为:"宽度"
- gain, g
更改均衡器增益。 命令的语法为:"增益"
- mix, m
更改均衡器混合比例。 命令的语法为:"混合"
29.88 外部立体声
线性增大左右通道之间的差异,从而为播放添加某种"现场"效果。
此滤镜接受以下选项:
- m
设置差异系数(默认值:2.5)。0.0表示单声道效果(两个通道的平均值),1.0表示声音保持不变,-1.0表示左右通道将交换。
- c
启用剪裁。默认情况下启用。
29.88.1 命令
此滤镜支持上述所有选项作为命令.
29.89 火线均衡器
应用FIR均衡来实现自定义频率响应。
此滤镜接受以下选项:
- gain
设置增益曲线表达式(以dB为单位)。表达式可以包含变量:
- f
评估的频率
- sr
采样率
- ch
通道编号,当禁用多通道评估时设为0
- chid
通道标识,请参见libavutil/channel_layout.h,当禁用多通道评估时设为第一个通道标识
- chs
通道数量
- chlayout
通道布局,请参见libavutil/channel_layout.h
以及函数:
- gain_interpolate(f)
基于gain_entry在频率f上插值增益
- cubic_interpolate(f)
与gain_interpolate相同,但更加平滑
此选项也可作为命令使用。默认值为
gain_interpolate(f)
.- gain_entry
为gain_interpolate函数设置增益项。表达式可以包含函数:
- entry(f, g)
在频率f处存储值为g的增益项
此选项也可作为命令使用。
- delay
设置滤波器延迟(以秒为单位)。较高的值意味着更精确。 默认值为
0.01
.- accuracy
设置滤波器精度(以Hz为单位)。较低的值意味着更精确。 默认值为
5
.- wfunc
设置窗口函数。可接受的值有:
- rectangular
矩形窗口,适用于增益曲线已经平滑的情况
- hann
汉宁窗口(默认)
- hamming
汉明窗口
- blackman
布莱克曼窗口
- nuttall3
连续一阶导数的三项努特尔窗口
- mnuttall3
最小三项不连续努特尔窗口
- nuttall
连续一阶导数的四项努特尔窗口
- bnuttall
最小四项不连续努特尔(布莱克曼-努特尔)窗口
- bharris
布莱克曼-哈里斯窗口
- tukey
图基窗口
- fixed
如果启用,使用固定数量的音频样本。这在处理具有较大延迟的过滤时提高了速度。默认是禁用。
- multi
启用增益的多通道评估。默认是禁用。
- zero_phase
启用零相位模式,通过减去时间戳以补偿延迟。默认是禁用。
- scale
设置增益使用的尺度。可接受的值有:
- linlin
线性频率、线性增益
- linlog
线性频率、对数(分贝)增益(默认)
- loglin
对数(八度音阶,20 Hz为0)频率、线性增益
- loglog
对数频率、对数增益
- dumpfile
设置用于导出的文件,适用于gnuplot。
- dumpscale
设置导出文件的尺度。可接受的值与尺度选项相同。默认是linlog。
- fft2
启用使用复FFT的双通道卷积。这显著提高速度。默认是禁用。
- min_phase
启用最小相位脉冲响应。默认是禁用。
29.89.1 示例
- 1000 Hz的低通滤波器:
firequalizer=gain='if(lt(f,1000), 0, -INF)'
- 具有gain_entry的1000 Hz低通滤波器:
firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
- 自定义均衡:
firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
- 通过零相位补偿延迟实现更高延迟:
firequalizer=delay=0.1:fixed=on:zero_phase=on
- 左声道低通滤波器,右声道高通滤波器:
firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))' :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
29.90 镶边效果
对音频应用镶边效果。
此滤波器接受以下选项:
- delay
设置基延迟(单位:毫秒)。范围为0到30。默认值为0。
- depth
设置附加扫动延迟(单位:毫秒)。范围为0到10。默认值为2。
- regen
设置百分比再生(延迟信号反馈)。范围为-95到95。默认值为0。
- width
设置百分比延迟信号与原始信号的混合比例。范围为0到100。默认值为71。
- speed
设置每秒扫动次数(单位:赫兹)。范围为0.1到10。默认值为0.5。
- shape
设置扫动波形,可以为三角形或正弦形。 默认值是正弦形.
- phase
为多通道设置扫动波的百分比偏移。范围为0到100。默认值为25。
- interp
设置延迟线插值方式,线性或二次型。 默认是线性.
29.91 哈斯效应
对音频应用哈斯效应。
请注意,这通常最好应用于单声道信号。 将此滤波器应用于单声道信号时,它会增加方向感并拓宽其立体声空间。
此滤波器接受以下选项:
- level_in
设置输入音量。默认是1, 或0dB
- level_out
设置输出音量。默认是1, 或0dB。
- side_gain
对信号的边缘部分应用的增益。默认是1.
- middle_source
设置中间源的类型。可以是以下之一:
- ‘left’
选择左声道。
- ‘right’
选择右声道。
- ‘mid’
选择立体声图像的中间部分信号。
- ‘side’
选择立体声图像的边界部分信号。
- middle_phase
更改中间相位。默认是禁用。
- left_delay
设置左声道延迟。默认是2.05毫秒。
- left_balance
设置左声道平衡。默认是-1.
- left_gain
设置左声道增益。默认是1.
- left_phase
更改左相位。默认是禁用。
- right_delay
设置右声道延迟。默认是2.12毫秒。
- right_balance
设置右声道平衡。默认是1.
- right_gain
设置右声道增益。默认是1.
- right_phase
更改右相位。默认是启用。
29.92 hdcd
解码高清兼容数字(HDCD)数据。16位PCM流包含嵌入的HDCD代码,并扩展为20位PCM流。
此过滤器支持HDCD的峰值扩展和低音电平增益调整特性,并检测瞬态过滤器标志。
ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
使用此滤波器处理wav时,注意wav的默认编码为16位,因此结果中的20位流将截断回16位。使用类似于-acodec pcm_s24le
过滤器之后可获得24位PCM输出。
ffmpeg -i HDCD16.wav -af hdcd OUT16.wav ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
此滤波器接受以下选项:
- disable_autoconvert
在滤波器图中禁用任何自动格式转换或重采样。
- process_stereo
同时处理立体声通道。如果左右声道的目标增益不一致,则将其视为无效并使用最后可用的目标增益。
- cdt_ms
设置代码检测定时器周期(单位:毫秒)。
- force_pe
无论是否标记了PE,总是扩展超过-3dBFS的峰值。
- analyze_mode
用一个实音替换音频,并调整其幅度以指示解码过程的某些特定方面。将输出文件与原始文件一起加载到音频编辑器中以辅助分析。
analyze_mode=pe:force_pe=true
可以用于查看所有高于PE级别的样本。模式包括:
- ‘0, off’
禁用
- ‘1, lle’
每个样本的增益调整级别
- ‘2, pe’
发生峰值扩展的样本
- ‘3, cdt’
代码检测定时器处于激活状态时的样本
- ‘4, tgm’
目标增益在两声道间不匹配时的样本
29.93 耳机效果
应用头相关转移函数(HRTFs),以创建虚拟扬声器围绕用户,使用户通过耳机实现双耳环绕听觉。 HRIR通过附加流提供,每个频道需要一个单声道输入流。
此滤波器接受以下选项:
- map
设置用于卷积的输入流映射。 参数是一个由“|”分隔的频道名称列表,按照提供给滤波器的附加流顺序排列。 同时指定了输入流的数量。输入流的数量不得少于第一个流的频道数量加一。
- gain
设置音频的增益。值为dB。默认是0。
- type
设置处理类型,可以是时间域或频域. 。时间域是对音频进行时间域处理,较慢。 is processing audio in time domain which is slow. 频域是对音频进行频率域处理,较快。 默认是 is processing audio in frequency domain which is fast. Default is 频域.
- lfe
设置LFE频道的自定义增益。值为dB。默认是0。
- size
设置每次处理的帧大小(样本数量)。默认值是1024。允许范围为1024到96000。
- hrir
设置HRIR流的格式。 默认值是立体声。另一个值是多声道。 如果值设置为立体声,则附加流的数量应大于等于第一个输入流的频道数量。 此外,每个附加流应具有两个通道。 如果值设置为多声道,则附加流的数量应正好为1。此外附加流的输入频道数量应等于或超过第一个输入流的频道数量的两倍。
29.93.1 示例
- 使用wav文件作为系数的完整示例,该示例将amovie滤波器用于7.1混音,每个amovie滤波器使用带有IR系数的立体声文件作为输入。文件为虚拟扬声器的每个位置提供系数:
ffmpeg -i input.wav -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR" output.wav
- 使用wav文件作为系数的完整示例,该示例将amovie滤波器用于7.1混音,但这次采用多声道 hrir格式。
ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich" output.wav
29.94 高通滤波
应用一个3dB点频率的高通滤波器。滤波器可以是单极或双极(默认)。 滤波器的衰减率为每极每倍频程6dB(每极每十倍频程20dB)。
此滤波器接受以下选项:
- frequency, f
设置频率(单位:赫兹)。默认是3000。
- poles, p
设置极的数量。默认是2。
- width_type, t
设置用于指定滤波器带宽的方法。
- h
赫兹
- q
Q因子
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以width_type单位指定滤波器的带宽。 仅适用于双极滤波器。 默认是0.707q,提供了巴特沃斯响应。
- mix, m
在输出中使用过滤信号的比例。默认是1。 范围在0到1之间。
- channels, c
指定需要过滤的通道,默认过滤所有可用通道。
- normalize, n
对双二次系数进行归一化,默认是禁用。 启用时将使直流的幅值响应归一化为0dB。
- transform, a
设置IIR滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤的精度。
- auto
选择环绕滤波器时的自动采样格式。
- s16
始终使用有符号16位。
- s32
始终使用有符号32位。
- f32
始终使用浮点32位。
- f64
始终使用浮点64位。
- block_size, b
设置反向IIR处理使用的块大小。如果此值设置为充分高(高于当接近零值时截断的脉冲响应长度),则过滤将成为线性相位,否则若未充分大,会产生严重的伪影。
请注意,当设置为非零值时,滤波器延迟将确切等于此样本数量。
29.94.1 命令
此滤波器支持以下命令:
- frequency, f
更改高通频率。 命令的语法是:"frequency"
- width_type, t
更改高通width_type。 命令的语法是:"width_type"
- width, w
更改高通带宽。 命令的语法是:"width"
- mix, m
更改高通混合。 命令的语法是:"mix"
29.95 合并
将多个输入流合并为一个多声道流。
它接受以下参数:
- inputs
输入流的数量。默认是2。
- channel_layout
所需的输出声道布局。默认是立体声。
- map
将输入的频道映射到输出。参数是一个“|”分隔的映射列表,格式为
input_idx.in_channel-out_channel
。input_idx是输入流的从零开始的索引。in_channel可以是输入频道的名称(例如FL表示前左)或其在指定输入流中的索引。out_channel是输出频道的名称。
当未明确指定映射时,滤波器将尝试猜测映射。 它首先尝试找到一个未使用的匹配输入频道;如果失败,则选择第一个未使用的输入频道。
合并3个输入(具有正确设置的频道布局):
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
从6个单通道流构建5.1输出:
ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE' out
29.96 ladspa
加载LADSPA(Linux音频开发者的简单插件API)插件。
要启用此滤波器的编译,需要使用以下选项配置FFmpeg:--enable-ladspa
.
- file, f
指定要加载的LADSPA插件库的名称。 如果环境变量
LADSPA_PATH
已定义,将在LADSPA_PATH
的冒号分隔列表中指定的每一个目录中搜索该LADSPA插件,否则将在标准LADSPA路径中搜索,这些路径按以下顺序:HOME/.ladspa/lib/, /usr/local/lib/ladspa/, /usr/lib/ladspa/.- plugin, p
指定库中的插件。有些库只包含一个插件,但其他库可能包含多个插件。如果未设置此选项,过滤器将列出指定库中所有可用的插件。
- controls, c
设置“|”分隔的控件列表,这些控件是零个或多个浮点值,用以确定加载插件的行为(例如延迟、阈值或增益)。 控件需要使用以下语法定义: c0=value0|c1=value1|c2=value2|..., 其中valuei是设置在i号控件上的值。 或者,它们也可以使用以下语法定义:value0|value1|value2|..., 其中valuei是设置在i号控件上的值。 如果controls设置为
help
, 将输出所有可用控件及其有效范围。- sample_rate, s
指定采样率,默认是44100。仅当插件没有输入时使用。
- nb_samples, n
设置每个输出帧每个频道的样本数量,默认是1024。仅当插件没有输入时使用。
- duration, d
设置源音频的最小持续时间。请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间长度”部分。有关接受的语法。 请注意,生成的音频的持续时间可能会超过指定的时间, 因为生成的音频总是在一个完整帧的末尾被截断。 如果未指定,或表达的持续时间为负值,则假定音频将永远生成。 仅当插件没有输入时使用。
- latency, l
启用延迟补偿,默认情况下禁用。 仅当插件有输入时使用。
29.96.1 示例
- 列出 amp (LADSPA 示例插件) 库中的所有可用插件:
ladspa=file=amp
- 列出
vcf_notch
插件的所有可用控制及其有效范围VCF
,从ladspa=f=vcf:p=vcf_notch:c=help
- 使用
Computer Music Toolkit
(CMT) 插件库模拟低质量音频设备:ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
- 使用 TAP 插件
(Tom 的音频处理插件) 为音频添加混响:
ladspa=file=tap_reverb:tap_reverb
- 生成白噪声,幅度为 0.2:
ladspa=file=cmt:noise_source_white:c=c0=.2
- 使用插件生成 20 bpm 的点击声
C* Click - Metronome
,从C* Audio Plugin Suite
(CAPS) 库:ladspa=file=caps:Click:c=c1=20'
- 应用
C* Eq10X2 - Stereo 10-band equaliser
效果:ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
- 使用 Steve Harris 的快速前瞻限制器将音量增加 20dB
SWH Plugins
集合:ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
- 使用 Steve Harris 的多频段均衡器衰减低频
SWH Plugins
集合:ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
- 使用
Narrower
减少立体声图像,从C* Audio Plugin Suite
(CAPS) 库:ladspa=caps:Narrower
- 另一个白噪声,现在使用
C* Audio Plugin Suite
(CAPS) 库:ladspa=caps:White:.2
- 一些分形噪声,使用
C* Audio Plugin Suite
(CAPS) 库:ladspa=caps:Fractal:c=c1=1
- 使用
VLevel
插件的动态音量规范化:ladspa=vlevel-ladspa:vlevel_mono
29.96.2 命令
此过滤器支持以下命令:
- cN
修改N的控制值。
如果指定的值无效,则将忽略并保留之前的值。
29.97 loudnorm
EBU R128响度标准化。包括动态和线性标准化模式。
支持单次通行(直播流、文件)和双次通行(文件)模式。
此算法可以针对 IL、LRA 和最大真峰值进行目标设定。在动态模式下,为了准确
检测真峰值,音频流将被上采样到 192 kHz。
使用-ar
选项或aresample
过滤器显式设置输出采样率。
过滤器接受以下选项:
- I, i
设置综合响度目标。 范围为 -70.0 - -5.0。默认值为 -24.0。
- LRA, lra
设置响度范围目标。 范围为 1.0 - 50.0。默认值为 7.0。
- TP, tp
设置最大真峰值。 范围为 -9.0 到 +0.0。默认值为 -2.0。
- measured_I, measured_i
输入文件的 IL 测量值。 范围为 -99.0 到 +0.0。
- measured_LRA, measured_lra
输入文件的 LRA 测量值。 范围为 0.0 到 99.0。
- measured_TP, measured_tp
输入文件的真峰值测量值。 范围为 -99.0 到 +99.0。
- measured_thresh
输入文件的阈值测量值。 范围为 -99.0 到 +0.0。
- offset
设置偏移增益。增益在真峰值限制器之前应用。 范围为 -99.0 到 +99.0。默认值为 +0.0。
- linear
通过线性缩放源音频进行标准化。
measured_I
,measured_LRA
,measured_TP
, 和measured_thresh
都必须指定。目标 LRA 不应 低于源 LRA,并且综合响度的变化不应导致真峰值 超过目标 TP。如果不满足这些条件,标准化模式将退回到动态。 选项是true
或false
。默认值是true
.- dual_mono
将单声道输入文件视为 "双单声道"。如果单声道文件打算在 立体声系统上播放,其 EBU R128 测量将感知不正确。 如果设置为
true
,此选项将补偿此影响。 多通道输入文件不受此选项影响。 选项为 true 或 false。默认值为 false。- print_format
设置统计信息的打印格式。选项为 summary、json 或 none。 默认值为 none。
29.98 lowpass
应用具有 3dB 截止点频率的低通滤波器。 滤波器可以是单极或双极的(默认是双极)。 滤波器的每极衰减速率为每八度 6dB(每十倍频 20dB)。
过滤器接受以下选项:
- frequency, f
以 Hz 设置频率。默认值为 500。
- poles, p
设置极数。默认值为 2。
- width_type, t
设置用于指定滤波器带宽的方法。
- h
Hz
- q
质量因数
- o
八度
- s
坡度
- k
千赫
- width, w
以 width_type 单位指定滤波器的带宽。 仅适用于双极滤波器。 默认值为 0.707q,提供一个巴特沃斯响应。
- mix, m
在输出中使用过滤信号的程度。默认值为 1。 范围介于 0 和 1 之间。
- channels, c
指定要过滤的通道,默认情况下过滤所有可用通道。
- normalize, n
归一化双二阶系数,默认情况下禁用。 启用后会在直流时将幅度响应归一化到 0dB。
- transform, a
设置 IIR 滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置滤波的精度。
- auto
根据环绕过滤器选择自动样本格式。
- s16
始终使用有符号 16 位。
- s32
始终使用有符号 32 位。
- f32
始终使用浮点数 32 位。
- f64
始终使用浮点数 64 位。
- block_size, b
为逆 IIR 处理设置使用的块大小。如果此值设置为足够大的 值(大于接近零值时截短的冲击响应长度),过滤将成为线性相位,否则如果不够大 可能会产生不良伪影。
请注意,如果设置为非零值,则过滤延迟将分别为指定的采样数量。
29.98.1 示例
- 仅对 LFE 通道进行低通处理,如果不存在 LFE,则什么也不做:
lowpass=c=LFE
29.98.2 命令
此过滤器支持以下命令:
- frequency, f
更改低通频率。 命令的语法为:"频率"
- width_type, t
更改低通宽度类型。 命令的语法为:"宽度类型"
- width, w
更改低通宽度。 命令的语法为:"宽度"
- mix, m
更改低通混合比例。 命令的语法为:"混合"
29.99 lv2
加载一个 LV2 (LADSPA Version 2) 插件。
要启用此过滤器的编译,您需要使用以下命令配置 FFmpeg--enable-lv2
.
- plugin, p
指定插件 URI。您可能需要对 ':' 进行转义。
- controls, c
设置 '|' 分隔的控件列表,这些控件是零个或多个决定加载的插件行为的浮点值(例如延迟、 阈值或增益)。 如果controls设置为
help
,将打印所有可用控件及其有效范围。- sample_rate, s
指定采样率,默认为 44100。仅当插件没有 输入时使用。
- nb_samples, n
设置每个输出帧的每通道样本数量,默认值 为 1024。仅当插件没有输入时使用。
- duration, d
设置源音频的最短持续时间。参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续时间部分有关接受的语法。 请注意,生成的音频的持续时间可能会超过指定的时间, 因为生成的音频总是在一个完整帧的末尾被截断。 如果未指定,或表达的持续时间为负值,则假定音频将永久生成。 仅当插件没有输入时使用。
29.99.1 示例
- 应用 Calf 的低音增强插件:
lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
- 应用 Calf 的黑胶插件:
lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
- 应用 ArtyFX 的位干扰器插件:
lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
29.99.2 命令
此过滤器支持插件作为命令导出的所有选项。
29.100 mcompand
多频段压缩或扩展音频的动态范围。
输入音频通过 4 阶 Linkwitz-Riley IIR 被分为多个频段。 这类比于扬声器的分频器,且在没有压缩/扩展操作时提供平坦的频率响应。
它接受以下参数:
- args
此选项的语法为: attack,decay,[attack,decay..] 软膝点 crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 每个项目的解释请参考 compand 滤波器文档。
29.101 pan
以特定增益级别混合通道。过滤器接受输出 通道布局,后跟一组通道定义。
此过滤器还为高效重新映射音频流的通道进行了设计。
过滤器接受以下形式的参数: "l|输出定义|输出定义|..."
- l
输出通道布局或通道数量
- outdef
输出通道规格,形式为: "输出名称=[增益*]输入名称[(+-)[增益*]输入名称...]"
- out_name
要定义的输出通道, 既可以是通道名称 (FL, FR 等),也可以是通道编号 (c0, c1 等)
- gain
通道的乘法系数,设置为 1 时保持音量不变
- in_name
要使用的输入通道,请参见输出名称获取详情;不能混合命名和编号的输入通道
如果通道规格中的 '=' 被替换为 '<',则该规格的增益将重新 归一化,总和为 1,从而避免剪辑噪音。
29.101.1 混音示例
例如,如果您想要从立体声向单声道混音,但左声道的权重更大:
pan=1c|c0=0.9*c0+0.1*c1
一个自定义的立体声向下混音,自动适用于 3、4、5 和 7 通道环绕:
pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
请注意ffmpeg
集成了一个默认的向下混音(和向上混音)系统
应该优先使用(见 "-ac" 选项),除非您有非常具体的需求。
29.101.2 重新映射示例
如果且仅当满足以下条件时,通道重新映射才会有效:
- 增益系数为 0 或 1,
- 每通道输出仅有一个输入,
如果以上所有条件都满足,过滤器将通知用户("检测到纯通道映射"),并使用优化且无损的方法进行 重新映射。
例如,如果您有一个 5.1 源,并希望通过丢弃多余的通道生成一个立体声音频流:
pan="stereo| c0=FL | c1=FR"
对于相同的源,您也可以交换前左和前右通道并保持输入通道布局:
pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
如果输入是立体声音频流,您可以静音前左通道(并且仍然保持立体声通道布局):
pan="stereo|c1=c1"
如果输入是立体声音频流,您可以将右通道复制到前左和前右通道:
pan="stereo| c0=FR | c1=FR"
29.102 replaygain
ReplayGain 扫描滤波器。此过滤器将音频流作为输入并
保持输出不变。
在过滤结束时显示track_gain
和track_peak
.
该过滤器接受以下导出的只读选项:
- track_gain
在流结束时导出的轨道增益(单位:dB)。
- track_peak
在流结束时导出的轨道峰值。
29.103 resample
转换音频样本格式、采样率和通道布局。这并非 设计为直接使用。
29.104 rubberband
用 librubberband 应用时间伸展和音调移位。
要启用此过滤器的编译,您需要使用以下命令配置 FFmpeg--enable-librubberband
.
过滤器接受以下选项:
- tempo
设置速度刻度因子。
- pitch
设置音调刻度因子。
- transients
设置瞬态检测器。 可能的值为:
- 清晰
- 混合
- 平滑
- detector
设置检测器。 可能的值为:
- 复合
- 打击乐
- 柔和
- phase
设置相位。 可能的值为:
- 层流
- 独立
- window
设置处理窗口大小。 可能的值为:
- 标准
- 短
- 长
- smoothing
设置平滑功能。 可能的值为:
- 关闭
- 开启
- formant
在移调时启用共振峰保留。 可能的值为:
- 移调
- 保留
- pitchq
设置调音质量。 可能的值为:
- 质量
- 速度
- 一致性
- channels
设置通道。 可能的值为:
- 独立
- 一起
29.104.1 命令
此过滤器支持以下命令:
- tempo
更改过滤器速度刻度因子。 命令的语法为:"速度"
- pitch
更改过滤器音调刻度因子。 命令的语法为:"音调"
29.105 sidechaincompress
此过滤器的行为类似于普通压缩器,但能够使用第二输入信号对检测到的信号进行压缩。 它需要两个输入流并返回一个输出流。 第一个输入流将根据第二个流信号进行处理。 处理后的信号可以在后续的处理阶段中与其他过滤器一起过滤。参见盘和合并过滤器。
过滤器接受以下选项:
- level_in
设置输入增益。默认值为 1。范围为 0.015625 到 64。
- mode
设置压缩器操作模式。可以是
upward
或downward
。 默认值是downward
.- threshold
如果第二流的信号超过此级别,它将影响第一流的增益减少。 默认值是 0.125。范围是 0.00097563 到 1。
- ratio
设置信号减弱的比例。1:2 意味着,如果电平超过阈值 4dB,减少后将仅超过阈值 2dB。 默认值是 2。范围是 1 到 20。
- attack
信号需超过阈值一定毫秒数后才开始减少增益的时间。 默认值是 20 毫秒。范围是 0.01 到 2000 毫秒。
- release
信号需低于阈值一定毫秒数后减少量再次降低的时间。 默认值是 250 毫秒。范围是 0.01 到 9000 毫秒。
- makeup
设置处理后信号将被放大的量。 默认值为 1。范围是 1 到 64。
- knee
在阈值周围曲作用力,让增益减少更柔和。 默认值是 2.82843。范围是 1 到 8。
- link
选择是否
average
侧链流所有通道的平均电平 还是较大的(maximum
)侧链流通道的电平影响减少。 默认值是average
.- detection
应在情况下采取准确信号
peak
或在情况下取 RMS 信号rms
。 默认值是rms
,主要更平滑。- level_sc
设置侧链增益。默认值是 1。范围是 0.015625 到 64。
- mix
压缩信号在输出中使用的程度。 默认值是 1。范围是 0 到 1。
29.105.1 命令
此过滤器支持上述所有选项作为命令.
29.105.2 示例
- 完整 ffmpeg 示例,使用两个音频输入,第一个输入根据第二个输入信号进行压缩,随后将压缩后的信号与第二个输入合并:
ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
29.106 侧链门
侧链门像普通(宽频)门一样工作,但有能力在发送到增益减少阶段之前过滤检测到的信号。 通常,门使用全范围信号来检测高于阈值的电平。 例如:如果从侧链信号中切除所有较低频率,门仅会在高频不足时降低音轨音量。使用此技巧,您可以减少自然鼓的共振或消除从严重失真吉他中消音重击的“隆隆声”。 它需要两个输入流并返回一个输出流。 第一个输入流将根据第二个流信号进行处理。
过滤器接受以下选项:
- level_in
设置过滤前的输入电平。 默认值是 1。允许范围是 0.015625 到 64。
- mode
设置操作模式。可以是
upward
或downward
。 默认值是downward
。 如果设置为upward
模式,信号的较高部分将被放大,向上扩展动态范围。 否则,在downward
情况下,信号的较低部分将被减少。- range
设置当信号低于阈值时的增益减少水平。 默认值是 0.06125。允许范围是 0 到 1。 将此设置为 0 禁用减少,然后过滤器的行为如同扩展器。
- threshold
如果信号上升至超过该级别,增益减少将被释放。 默认值是 0.125。允许范围是 0 到 1。
- ratio
设置信号减少的比例。 默认值是 2。允许范围是 1 到 9000。
- attack
信号必须在超过阈值前升高一定毫秒数后才停止增益减少。 默认值是 20 毫秒。允许范围是 0.01 到 9000 毫秒。
- release
信号必须在低于阈值后下降一定毫秒数后再次增加减少量。 默认值是 250 毫秒。 允许范围是 0.01 到 9000 毫秒。
- makeup
设置处理后信号的放大量。 默认值是 1。允许范围是 1 到 64。
- knee
在阈值周围曲作用力,让增益减少更温和。 默认值是 2.828427125。允许范围是 1 到 8。
- detection
选择是应该采取确切信号进行检测还是类似 RMS 的信号。 默认值是 rms。可以是 peak 或 rms。
- link
选择是所有通道的平均电平还是更高的通道影响减少。 默认值是 average。可以是 average 或 maximum。
- level_sc
设置侧链增益。默认值是 1。范围是 0.015625 到 64。
29.106.1 命令
此过滤器支持上述所有选项作为命令.
29.107 静音检测
检测音频流中的静音。
当检测到输入音频音量小于或等于噪声容忍值且持续时间大于或等于最小检测噪声持续时间时,过滤器会记录一条消息。
打印的时间和持续时间均以秒表示。lavfi.silence_start
或lavfi.silence_start.X
元数据键
在时间戳等于或超过检测持续时间的第一帧上设置,并包含静音的第一帧的时间戳。
此lavfi.silence_duration
或lavfi.silence_duration.X
和lavfi.silence_end
或lavfi.silence_end.X
元数据
键设置在静音后的第一帧上。如果mono启用,并且每个通道单独评估,则使用后缀键,.X
对应于通道号。X
corresponds to the channel number.
过滤器接受以下选项:
- noise, n
设置噪声容忍值。可以用 dB 指定(如果指定值后附加“dB”)或振幅比来设置。默认值是 -60dB 或 0.001。
- duration, d
设置静音检测通知持续时间(默认是 2 秒)。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的持续时间部分以获取接受的语法。
- mono, m
将每个通道单独处理,而不是合并处理。默认未启用。
29.107.1 示例
- 检测静音 5 秒,噪声容忍值为 -50dB:
silencedetect=n=-50dB:d=5
- 带有完整示例
ffmpeg
以检测 0.0001 噪声容忍值的静音silence.mp3:ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
29.108 静音移除
从音频的开头、中间或结尾移除静音。
过滤器接受以下选项:
- start_periods
此值用来表示是否应在音频的开头修剪静音。值为零表示不修剪开头的静音。 如果指定一个非零值,它将修剪开头的音频直到找到非静音部分。 通常,修剪音频开头的静音时,start_periods将被
1
设置,但可以将其增加到更高的值以修剪所有音频直到特定数量的非静音周期。 默认值为0
.- start_duration
指定检测到非静音后需存在一定持续时间才停止修剪音频。 通过增加持续时间,可以将噪音突发看作静音并修剪掉。 默认值为
0
.- start_threshold
此值表示什么样的样本值应被看作静音。 对于数字音频,
0
可能就足够了,但对于来自模拟的音频,您可能需要增加值以考虑背景噪音。 可以是 dB 指定(如果指定值后附加“dB”)或振幅比。 默认值为0
.- start_silence
指定开头静音最大持续时间,在修剪后依然保留。默认是 0,相当于修剪所有检测为静音的样本。
- start_mode
指定多通道音频开始处的静音结束检测模式。 可以是任意或全部。 默认值为任意。 使用任意时,任何通道的任何样本被检测为非静音都会触发开头静音修剪的结束。 使用全部时,仅当每个通道的每个样本都被检测为非静音时才会触发开头静音修剪的结束,使用受限。
- stop_periods
设置修剪末尾静音的次数。 如果指定一个正值,它将修剪音频在找到指定静音周期后。 要从文件中间移除静音,请指定一个stop_periods为负值。 此值会被视为正值,并用于指示效果应按stop_periods所指定的方式重新启动处理,使其适合移除音频中间的静音周期。 默认值为
0
.- stop_duration
指定静音需存在的持续时间才能停止复制音频。 通过指定更高的持续时间,可以将想保留的静音保留在音频中。 默认值是
0
.- stop_threshold
此值与start_threshold对应,但用于修剪音频末尾的静音。 可以是 dB 指定(如果指定值后附加“dB”)或振幅比。 默认值为
0
.- stop_silence
指定末尾静音最大持续时间,在修剪后依然保留。 默认是 0,相当于修剪所有检测为静音的样本。
- stop_mode
指定多通道音频起始点后静音开始检测模式。 可以是任意或全部。 默认是全部。 使用任意时,任何通道的任何样本检测为静音都会触发开始点后静音修剪的开始,使用受限。 使用全部时,仅当每个通道的每个样本都检测为静音时才会触发开始点后静音修剪的开始。
- detection
设定静音的检测方式。
- avg
移动窗口中样本绝对值的平均值。
- rms
移动窗口中样本绝对值的平方根均值。
- peak
移动窗口中样本绝对值的最大值。
- median
移动窗口中样本绝对值的中位值。
- ptp
移动窗口中样本最大峰值与最小峰值的绝对差。
- dev
移动窗口中样本值的标准差。
默认值为
rms
.- window
设定用于计算检测静音窗口样本大小的持续时间秒数。 使用
0
将有效禁用任何窗口操作,并仅使用每通道单样本进行静音检测。 在这种情况下,可能还需要将start_silence和/或stop_silence设置为非零值,同时也要设置start_duration和/或stop_duration为非零值。 默认值是0.02
。允许范围为0
至10
.- timestamp
设置每个音频帧输出时间戳的处理模式。
- write
完全时间戳重写,仅保留第一帧的开始时间。
- copy
未丢弃的帧保留与输入音频帧相同的时间戳。
默认值为
write
.
29.108.1 示例
- 以下示例展示了如何使用此过滤器来开始录音,避免通常发生在按下录音按钮和开始表演之间的延迟:
silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
- 修剪从头到尾检测到的所有静音,其中音频中静音超过 1 秒:
silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
- 修剪所有检测到的数字静音样本,使用峰值检测,从头到尾,其中音频静音超过 0 个样本,数字静音在所有通道的相同位置被检测到:
silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
- 修剪从头到尾每隔第二个检测到的静音周期,其中音频中每个静音周期的静音超过 1 秒:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
- 与上面类似,但在修剪的静音周期中最多保留 0.5 秒的静音:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
- 与上面类似,但在音频开头最多保留 1.5 秒的静音:
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
29.108.2 命令
此滤镜支持上述一些选项,如命令.
29.109 sofalizer
SOFAlizer 使用头相关传递函数 (HRTF) 创建虚拟扬声器,以便通过耳机进行双耳监听(支持最多 9 声道的音频格式)。 HRTFs 存储在 SOFA 文件中(参见http://www.sofacoustics.org/此数据库)。 SOFAlizer 由奥地利科学院声学研究所 (ARI) 开发。
要启用此滤镜的编译,需要使用以下参数配置 FFmpeg--enable-libmysofa
.
过滤器接受以下选项:
- sofa
设置用于渲染的 SOFA 文件。
- gain
设置应用于音频的增益。值以分贝为单位。默认值为 0。
- rotation
设置虚拟扬声器的旋转角度(单位:度)。默认值为 0。
- elevation
设置虚拟扬声器的倾斜角度(单位:度)。默认值为 0。
- radius
设置近场 HRTFs 中扬声器与听者之间的距离(单位:米)。默认值为 1。
- type
设置处理类型。可以是time或freq. time是对时域音频进行处理,速度较慢。freq是对频域音频进行处理,速度较快。 默认值为freq.
- speakers
设置虚拟扬声器的自定义位置。此选项的语法是: <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。 每个虚拟扬声器由短声道名称、方位角和倾斜角(单位:度)描述。 每组扬声器描述以 '|' 分隔。 例如,要覆盖前左和前右声道的位置,使用: 'speakers=FL 45 15|FR 345 15'。 不识别的声道名称的描述将被忽略。
- lfegain
设置 LFE 声道的自定义增益。值以分贝为单位。默认值为 0。
- framesize
设置自定义帧大小,以样本数表示。默认值为 1024。 允许范围是从 1024 到 96000。当选项 'type' 设置为freq.
- normalize
在导入 SOFA 文件时,是否应对所有 IR 进行归一化。 默认情况下启用。
- interpolate
当确切位置不匹配时,是否应对最近的 IR 与邻近的 IR 进行插值。 默认情况下禁用。
- minphase
加载 SOFA 文件时,是否对所有 IR 应用最小相位处理。 默认情况下禁用。
- anglestep
设置邻近搜索角度步长。仅当选项interpolate启用时使用。
- radstep
设置邻近搜索半径步长。仅当选项interpolate启用时使用。
29.109.1 示例
- 使用 ClubFritz6 SOFA 文件:
sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
- 使用 ClubFritz12 SOFA 文件并设置更大的半径和小的旋转:
sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
- 与上面类似,但设置前左、前右、后左和后右的扬声器位置以及自定义增益:
"sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
29.110 speechnorm
语音归一化处理器。
此滤镜根据阈值调整音频样本的每个半周期(本地样本集均高于或低于零点且位于两个最近零交点之间),以便音频在受控条件下达到目标峰值。
过滤器接受以下选项:
- peak, p
设置扩展目标峰值。这指定了归一化音频输入的最高绝对幅度级别。 默认值为 0.95。允许范围是 0.0 到 1.0。
- expansion, e
设置最大扩展因子。允许范围是 1.0 到 50.0。默认值为 2.0。 此选项控制最大本地半周期样本的扩展。最大扩展的结果是使本地峰值达到目标峰值但不超过目标值,同时新旧峰值比不会超过此选项值。
- compression, c
设置最大压缩因子。允许范围是 1.0 到 50.0。默认值为 2.0。 该选项仅在threshold选项值大于 0.0 的情况下使用,此时当本地峰值低于或等于threshold时,属于该半周期峰值的所有样本都会按当前压缩因子进行压缩。
- threshold, t
设置阈值。默认值为 0.0。允许范围是 0.0 到 1.0。 此选项指定哪些样本的半周期将被压缩,哪些将被扩展。任何本地峰值低于或等于该选项值的半周期样本将通过当前压缩因子进行压缩;否则它们将通过扩展因子扩展,以便达到目标峰值但不超越。
- raise, r
设置扩展因子在每个半周期样本中的提升量。默认值为 0.001。 允许范围是 0.0 到 1.0。这控制扩展因子在每个半周期内的提升速度,直到达到expansion值。 设置此选项值过高可能导致失真。
- fall, f
设置压缩因子在每个半周期样本中的提升量。默认值为 0.001。 允许范围是 0.0 到 1.0。这控制压缩因子在每个半周期内的提升速度,直到达到compression值。
- channels, h
指定要过滤的声道,默认情况下过滤所有可用的声道。
- invert, i
启用反向过滤,默认情况下禁用。此选项反转threshold的解释逻辑。当启用时,任何其本地峰值小于或等于threshold选项的半周期样本将被扩展,否则将被压缩。
- link, l
链接声道以计算应用到每个过滤声道样本的增益,默认情况下禁用。 禁用时,每个过滤声道增益计算独立;否则,启用此选项时,将使用所有可能的增益中的最小值。
- rms, m
设置扩展目标 RMS 值。这指定了归一化音频输入的最高允许 RMS 级别。 默认值为 0.0,因此禁用。允许范围是 0.0 到 1.0。
29.110.1 命令
此滤镜支持所有上述选项作为命令.
29.110.2 示例
- 微弱且缓慢的放大:
speechnorm=e=3:r=0.00001:l=1
- 中等且缓慢的放大:
speechnorm=e=6.25:r=0.00001:l=1
- 强劲且快速的放大:
speechnorm=e=12.5:r=0.0001:l=1
- 非常强劲且快速的放大:
speechnorm=e=25:r=0.0001:l=1
- 极限且快速的放大:
speechnorm=e=50:r=0.0001:l=1
29.111 stereotools
此滤镜具有一些管理立体声音频的实用工具,用于将 M/S 立体声录音转换为 L/R 信号,同时控制参数,或扩展母带曲目中的立体声图像。
过滤器接受以下选项:
- level_in
设置滤镜前两声道的输入音量级别。默认值为 1。 允许范围是 0.015625 到 64。
- level_out
设置滤镜后两声道的输出音量级别。默认值为 1。 允许范围是 0.015625 到 64。
- balance_in
设置两声道之间的输入平衡。默认值为 0。 允许范围是 -1 到 1。
- balance_out
设置两声道之间的输出平衡。默认值为 0。 允许范围是 -1 到 1。
- softclip
启用软削波。会产生模拟失真而不是刺耳的数字 0dB 削波。默认情况下禁用。
- mutel
静音左声道。默认情况下禁用。
- muter
静音右声道。默认情况下禁用。
- phasel
改变左声道的相位。默认情况下禁用。
- phaser
改变右声道的相位。默认情况下禁用。
- mode
设置立体声模式。可用值为:
- ‘lr>lr’
左/右到左/右,这是默认设置。
- ‘lr>ms’
左/右到中/侧。
- ‘ms>lr’
中/侧到左/右。
- ‘lr>ll’
左/右到左/左。
- ‘lr>rr’
左/右到右/右。
- ‘lr>l+r’
左/右到左 + 右。
- ‘lr>rl’
左/右到右/左。
- ‘ms>ll’
中/侧到左/左。
- ‘ms>rr’
中/侧到右/右。
- ‘ms>rl’
中/侧到右/左。
- ‘lr>l-r’
左/右到左 - 右。
- slev
设置侧信号的音量级别。默认值为 1。 允许范围是 0.015625 到 64。
- sbal
设置侧信号的平衡。默认值为 0。 允许范围是 -1 到 1。
- mlev
设置中信号的音量级别。默认值为 1。 允许范围是 0.015625 到 64。
- mpan
设置中信号的声道平移。默认值为 0。 允许范围是 -1 到 1。
- base
设置单声道和反转声道之间的立体声基准。默认值为 0。 允许范围是 -1 到 1。
- delay
设置左声道与右声道之间的延迟时间(单位:毫秒)。默认值为 0。 允许范围是 -20 到 20。
- sclevel
设置 S/C 音量级别。默认值为 1。 允许范围是 1 到 100。
- phase
设置立体声相位(单位:度)。默认值为 0。 允许范围是 0 到 360。
- bmode_in, bmode_out
设置 balance_in/balance_out 选项的平衡模式。
可设置为以下之一:
- ‘balance’
经典平衡模式。每次衰减一个声道。 增益最多升高至 1。
- ‘amplitude’
与上述经典模式类似,但增益最多升高至 2。
- ‘power’
等功率分配,从 -6dB 到 +6dB 范围。
29.111.1 命令
此滤镜支持所有上述选项作为命令.
29.111.2 示例
- 应用类似卡拉 OK 效果:
stereotools=mlev=0.015625
- 将 M/S 信号转换为 L/R:
"stereotools=mode=ms>lr"
29.112 stereowiden
此滤镜通过抑制两声道共同的信号并延迟左声道的信号到右声道和反之,增强立体声效果,从而扩大立体声效果。
过滤器接受以下选项:
- delay
左声道信号到右声道和反向的延迟时间(单位:毫秒)。默认值为 20 毫秒。
- feedback
左声道到右声道和右声道到左声道的延迟信号增益量。赋予延迟效果的增益,增强立体声效果。默认值为 0.3。
- crossfeed
左右声道交叉混合并反向相位。这有助于抑制单声道信号。如果值为 1,将会取消所有两声道共同的信号。默认值为 0.3。
- drymix
设置原始声道输入信号的音量级别。默认值为 0.8。
29.112.1 命令
此滤镜支持所有上述选项除外delay
作为命令.
29.113 superequalizer
应用 18 波段均衡器。
过滤器接受以下选项:
- 1b
设置 65Hz 波段增益。
- 2b
设置 92Hz 波段增益。
- 3b
设置 131Hz 波段增益。
- 4b
设置 185Hz 波段增益。
- 5b
设置 262Hz 波段增益。
- 6b
设置 370Hz 波段增益。
- 7b
设置 523Hz 波段增益。
- 8b
设置 740Hz 波段增益。
- 9b
设置 1047Hz 波段增益。
- 10b
设置 1480Hz 波段增益。
- 11b
设置 2093Hz 波段增益。
- 12b
设置 2960Hz 波段增益。
- 13b
设置 4186Hz 波段增益。
- 14b
设置 5920Hz 波段增益。
- 15b
设置 8372Hz 波段增益。
- 16b
设置 11840Hz 波段增益。
- 17b
设置 16744Hz 波段增益。
- 18b
设置 20000Hz 波段增益。
29.114 surround
应用音频环绕升级滤镜。
此滤镜允许从音频流生成多声道输出。
过滤器接受以下选项:
- chl_out
设置输出声道布局。默认值为5.1.
- chl_in
设置输入声道布局。默认值为立体声.
- level_in
设置输入音量级别。默认值为1.
- level_out
设置输出音量级别。默认值为1.
- lfe
如果输出声道布局中存在 LFE 声道,则启用 LFE 声道输出。默认情况下启用。
- lfe_low
设置 LFE 低截止频率。默认值为128Hz。
- lfe_high
设置 LFE 高截止频率。默认值为256Hz。
- lfe_mode
设置 LFE 模式,可以是add或sub。默认值为add。 在add模式中,LFE 声道由输入音频生成并添加到输出。 在sub模式,LFE通道由输入音频创建并添加到输出中,但同时所有非LFE输出通道都会被输出LFE通道减去。
- smooth
设置时间平滑强度,用于在时间上逐步改变转换立体声音效时的因子。允许范围是从0.0到1.0。 当焦点选项值大于0.0时,这很有用。 默认值是0.0。只有在这个范围内且未触及边界的值才有效。
- angle
设置立体声环绕转换的角度,允许范围是从0到360。 默认值是90.
- focus
设置立体声环绕转换的焦点,允许范围是从-1到1。 默认值是0.
- fc_in
设置正前方中心输入音量。默认值是1.
- fc_out
设置正前方中心输出音量。默认值是1.
- fl_in
设置正前方左侧输入音量。默认值是1.
- fl_out
设置正前方左侧输出音量。默认值是1.
- fr_in
设置正前方右侧输入音量。默认值是1.
- fr_out
设置正前方右侧输出音量。默认值是1.
- sl_in
设置侧左输入音量。默认值是1.
- sl_out
设置侧左输出音量。默认值是1.
- sr_in
设置侧右输入音量。默认值是1.
- sr_out
设置侧右输出音量。默认值是1.
- bl_in
设置后左输入音量。默认值是1.
- bl_out
设置后左输出音量。默认值是1.
- br_in
设置后右输入音量。默认值是1.
- br_out
设置后右输出音量。默认值是1.
- bc_in
设置后中心输入音量。默认值是1.
- bc_out
设置后中心输出音量。默认值是1.
- lfe_in
设置LFE输入音量。默认值是1.
- lfe_out
设置LFE输出音量。默认值是1.
- allx
设置所有通道在X轴上的立体声图像扩展使用。 允许范围是从-1到15。 默认该值为负-1,因此未被使用。
- ally
设置所有通道在Y轴上的立体声图像扩展使用。 允许范围是从-1到15。 默认该值为负-1,因此未被使用。
- fcx, flx, frx, blx, brx, slx, srx, bcx
为每个通道设置在X轴上的立体声图像扩展。 允许范围是从0.06到15。 默认值是0.5.
- fcy, fly, fry, bly, bry, sly, sry, bcy
为每个通道设置在Y轴上的立体声图像扩展。 允许范围是从0.06到15。 默认值是0.5.
- win_size
设置窗口大小。允许范围是从1024到65536。默认大小是4096.
- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann, hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hann
.- overlap
设置窗口重叠。如果设置为1,将为选择的窗口函数选择推荐的重叠。默认值是
0.5
.
29.115 倾斜搁架
通过使用两极搁架滤波器提升或削减音频的低频和削减或提升高频,滤波器的响应类似于标准高保真的音调控制。 这也被称为搁架均衡(EQ)。
滤波器接受以下选项:
- gain, g
在0 Hz处给出增益。其有用范围约为-20(大幅削减)到+20(大幅提升)。 使用正增益时要注意可能的失真。
- frequency, f
设置滤波器的中心频率,因此可以用来扩展或减少要提升或削减的频率范围。 默认值是
3000
Hz。- width_type, t
设置用于指定滤波器带宽的方法。
- h
Hz
- q
品质因数
- o
八度
- s
坡度
- k
kHz
- width, w
确定滤波器搁架过渡的陡峭程度。
- poles, p
设置极数量。默认值为2。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围是0到1。
- channels, c
指定要过滤的通道,默认情况下所有可用通道都会被过滤。
- normalize, n
规范化双二次系数,默认情况下禁用。 启用后将规范化直流上的幅度响应为0dB。
- transform, a
设置IIR滤波器的转换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用16位有符号整数。
- s32
始终使用32位有符号整数。
- f32
始终使用32位浮点数。
- f64
始终使用64位浮点数。
- block_size, b
设置用于反向IIR处理的块大小。如果该值设置得足够高(高于当接近于零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不足够高,就会产生令人不快的伪影。
注意,当设置为非零值时,滤波延迟将准确等于这么多个样本。
29.115.1 命令
此滤波器支持一些选项作为命令.
29.116 高音、高搁架
通过两极搁架滤波器提升或削减音频的高音(高频),其响应类似于标准高保真的音调控制。这也被称为搁架均衡(EQ)。
滤波器接受以下选项:
- gain, g
在约22 kHz和奈奎斯特频率之间取较低值,给出增益。其有用范围约为-20(大幅削减)到+20(大幅提升)。使用正增益时要注意可能的失真。
- frequency, f
设置滤波器的中心频率,因此可以用来扩展或减少要提升或削减的频率范围。 默认值是
3000
Hz。- width_type, t
设置用于指定滤波器带宽的方法。
- h
Hz
- q
品质因数
- o
八度
- s
坡度
- k
kHz
- width, w
确定滤波器搁架过渡的陡峭程度。
- poles, p
设置极数量。默认值为2。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围是0到1。
- channels, c
指定要过滤的通道,默认情况下所有可用通道都会被过滤。
- normalize, n
规范化双二次系数,默认情况下禁用。 启用后将规范化直流上的幅度响应为0dB。
- transform, a
设置IIR滤波器的转换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动采样格式。
- s16
始终使用16位有符号整数。
- s32
始终使用32位有符号整数。
- f32
始终使用32位浮点数。
- f64
始终使用64位浮点数。
- block_size, b
设置用于反向IIR处理的块大小。如果该值设置得足够高(高于当接近于零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不足够高,就会产生令人不快的伪影。
注意,当设置为非零值时,滤波延迟将准确等于这么多个样本。
29.116.1 命令
此滤波器支持以下命令:
- frequency, f
更改高音频率。 命令的语法是:"频率"
- width_type, t
更改高音宽度类型。 命令的语法是:"宽度类型"
- width, w
更改高音宽度。 命令的语法是:"宽度"
- gain, g
更改高音增益。 命令的语法是:"增益"
- mix, m
更改高音混合。 命令的语法是:"混合"
29.117 颤音
正弦幅度调制。
滤波器接受以下选项:
- f
以赫兹为单位的调制频率。在亚谐波范围(20 Hz或更低)的调制频率将产生颤音效果。 指定超过20 Hz的调制频率时,该滤波器也可以用作环形调制器。 范围为0.1 - 20000.0。默认值为5.0 Hz。
- d
以百分比表示的调制深度。范围为0.0 - 1.0。 默认值为0.5。
29.118 颤音效果
正弦相位调制。
该滤波器接受以下选项:
- f
以赫兹为单位的调制频率。 范围为0.1 - 20000.0。默认值为5.0 Hz。
- d
以百分比表示的调制深度。范围为0.0 - 1.0。 默认值为0.5。
29.119 虚拟低音
应用音频虚拟低音滤波器。
该滤波器接受立体声输入并输出带有LFE(2.1)通道的立体声。生成的新LFE通道增强了本来从两个立体声通道获得的虚拟低音。这一滤波器的输出左前和右前通道与立体声输入中保留不变。
该滤波器接受以下选项:
- cutoff
设置虚拟低音截止频率。默认值为250 Hz。 允许范围是从100到500 Hz。
- strength
设置虚拟低音强度。允许范围是从0.5到3。 默认值为3。
29.120 音量
调整输入音频音量。
它接受以下参数:
- volume
设置音频音量表达式。
输出值会被截断到最大值。
输出音频音量的关系为:
输出音量 = 音量 * 输入音量
默认值为音量是"1.0"。
- precision
此参数表示数学精度。
它决定了将允许的输入采样格式,这会影响音量缩放的精度。
- fixed
8位定点;这限制了输入采样格式为U8、S16和S32。
- float
32位浮点;这限制了输入采样格式为FLT。(默认)
- double
64位浮点;这限制了输入采样格式为DBL。
- replaygain
选择在输入框中遇到ReplayGain边数据时的行为。
- drop
删除ReplayGain边数据,忽略其内容(默认)。
- ignore
忽略ReplayGain边数据,但将其保留在帧中。
- track
如果存在,则优先选用曲目增益。
- album
如果存在,则优先选用专辑增益。
- replaygain_preamp
对选定的ReplayGain增益应用预放大增益(dB)。
默认值为replaygain_preamp是0.0。
- replaygain_noclip
通过限制应用的增益来防止失真。
默认值为replaygain_noclip是1。
- eval
设置音量表达式的评估时间。
它接受以下值:
- ‘once’
仅在滤波初始化期间或在发送‘volume’命令时评估表达式
- ‘frame’
为每个传入帧评估表达式
默认值是‘once’.
音量表达式可以包含以下参数。
- n
帧号(从0开始)
- nb_channels
通道数量
- nb_consumed_samples
滤波器处理的采样点数
- nb_samples
当前帧的采样数量
- pos
文件中原始帧的位置;不推荐使用
- pts
帧PTS
- sample_rate
采样率
- startpts
流启动时的PTS
- startt
流启动时的时间
- t
帧时间
- tb
时间戳时间基
- volume
上次设置的音量值
注意,当eval设置为‘once’时,仅有采样率和tb变量可用,所有其他变量将评估为NAN。
29.120.1 命令
此滤波器支持以下命令:
- volume
修改音量表达式。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
29.120.2 示例
- 将输入音频音量减半:
volume=volume=0.5 volume=volume=1/2 volume=volume=-6.0206dB
在以上所有示例中,命名键volume可以省略,例如:
volume=0.5
- 使用定点精度将输入音频功率增加6分贝:
volume=volume=6dB:precision=fixed
- 在时间10之后淡出音量,并设置5秒的消失时间:
volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
29.121 音量检测
检测输入视频的音量。
该过滤器无参数。它仅支持16位有符号整数样本,因此必要时输入将被转换。输入流结束时,将在日志中打印音量统计数据。
特别是,它会显示平均音量(均方根)、最大音量(基于每个样本)以及注册音量值的直方图开始部分(从最大值到累积1000分之一的样本数)。
所有音量均为相对于最大PCM值的分贝值。
29.121.1 示例
以下是输出的摘录:
[Parsed_volumedetect_0 0xa23120] mean_volume: -27 dB [Parsed_volumedetect_0 0xa23120] max_volume: -4 dB [Parsed_volumedetect_0 0xa23120] histogram_4db: 6 [Parsed_volumedetect_0 0xa23120] histogram_5db: 62 [Parsed_volumedetect_0 0xa23120] histogram_6db: 286 [Parsed_volumedetect_0 0xa23120] histogram_7db: 1042 [Parsed_volumedetect_0 0xa23120] histogram_8db: 2551 [Parsed_volumedetect_0 0xa23120] histogram_9db: 4609 [Parsed_volumedetect_0 0xa23120] histogram_10db: 8409
这意味着:
- 均方能量约为-27 dB,即10^-2.7。
- 最大样本为-4 dB,或者更精确地介于-4 dB和-5 dB之间。
- 在-4 dB有6个样本,在-5 dB有62个样本,在-6 dB有286个样本,以此类推。
换句话说,音量增加+4 dB不会导致任何剪辑, 增加+5 dB会导致6个样本出现剪辑,等等。
30种音频源
以下是当前可用音频源的描述。
30.1 abuffer
缓冲音频帧并使其可用于滤波链。
此源主要用于程序化使用,尤其是通过以下定义的接口libavfilter/buffersrc.h.
它接受以下参数:
- time_base
用于提交帧时间戳的时间基。它必须是浮点数或采用分子/分母形式。
- sample_rate
输入音频缓冲区的采样率。
- sample_fmt
输入音频缓冲区的采样格式。 可以是采样格式名或在以下枚举 AVSampleFormat 中的对应整数表示libavutil/samplefmt.h
- channel_layout
输入音频缓冲区的声道布局。 可以是从 channel_layout_map 中的声道布局名称libavutil/channel_layout.c或其对应整数表示 来自 AV_CH_LAYOUT_* 宏libavutil/channel_layout.h
- channels
输入音频缓冲区的声道数。 如果同时指定了channels和channel_layout,那么它们必须一致。
30.1.1 示例
abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
将指示源接受频率为44100Hz的16位无符号立体声分块。 由于名为"s16p"的采样格式对应数字6,并且"立体声"声道布局对应值0x3,这等同于:
abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
30.2 aevalsrc
生成由表达式指定的音频信号。
此源接受一个或多个输入表达式(每个声道一个表达式),利用这些表达式生成相应的音频信号。
此源接受以下选项:
- exprs
为每个单独的声道设置由'|'分隔的表达式列表。如果channel_layout选项未指定,选择的声道布局依赖于提供的表达式数量。否则,最后指定的表达式将应用于剩下的输出声道。
- channel_layout, c
设置声道布局。指定的布局中的声道数必须与指定的表达式数量相等。
- duration, d
设置源音频的最小时长。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分以了解可接受的语法。 注意,结果的时长可能会大于指定时长,因为生成的音频总是在完整帧的最后被截断。
如果未指定,或者表达的时长为负数,则假定音频会永久生成。
- nb_samples, n
每个输出帧中每个声道的样本数,默认为1024。
- sample_rate, s
指定采样率,默认为44100。
在exprs的每个表达式中可以包含以下常量:
- n
评估样本的编号,从0开始
- t
以秒为单位的评估样本时间,从0开始
- s
采样率
30.2.1 示例
- 生成静音:
aevalsrc=0
- 生成频率为440 Hz 的正弦波信号,设置采样率为8000 Hz:
aevalsrc="sin(440*2*PI*t):s=8000"
- 生成两声道信号,显式指定声道布局(前中心+后中心):
aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
- 生成白噪声:
aevalsrc="-2+random(0)"
- 生成幅度调制信号:
aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
- 在360 Hz载波上生成2.5 Hz双耳节拍:
aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
30.3 afdelaysrc
生成分数延迟FIR系数。
生成的流可以用于afir滤波器来滤波音频信号。
此滤波器接受以下选项:
- delay, d
设置分数延迟。默认为0。
- sample_rate, r
设置采样率,默认为44100。
- nb_samples, n
设置每帧样本数量。默认为1024。
- taps, t
设置输出音频流中的滤波器系数数量。 默认值为0。
- channel_layout, c
指定声道布局,可以是一个表示声道布局的字符串。 默认值为channel_layout为"立体声"。
30.4 afireqsrc
生成FIR均衡器系数。
生成的流可以用于afir滤波器来滤波音频信号。
此滤波器接受以下选项:
- preset, p
设置均衡器预设。 默认预设为
flat
.可用的预设值为:
- ‘custom’
- ‘flat’
- ‘acoustic’
- ‘bass’
- ‘beats’
- ‘classic’
- ‘clear’
- ‘deep bass’
- ‘dubstep’
- ‘electronic’
- ‘hard-style’
- ‘hip-hop’
- ‘jazz’
- ‘metal’
- ‘movie’
- ‘pop’
- ‘r&b’
- ‘rock’
- ‘vocal booster’
- gains, g
为每个频段设置自定义增益。只有在预设选项设置为
custom
时才使用。 增益值以白色空格分隔,每个增益值以 dBFS 为单位表示。 默认值为0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
.- bands, b
设置自定义频段以从中设置自定义均衡器增益。 该值必须严格递增。只有在预设选项设置为
custom
时才使用。 频段值以白色空格分隔,每个频段表示Hz单位的频率。 默认值为25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000
.- taps, t
设置输出音频流中的滤波器系数数量。 默认值为
4096
.- sample_rate, r
设置输出音频流的采样率,默认为
44100
.- nb_samples, n
设置每帧输出音频流的样本数量。默认为
1024
.- interp, i
为FIR均衡器系数设置插值方法。可以是
linear
或cubic
.- phase, h
设置FIR滤波器的相位类型,可以是
linear
或min
:最小相位。 默认值为最小相位滤波器。
30.5 afirsrc
使用频率采样方法生成FIR系数。
生成的流可以用于afir滤波器来滤波音频信号。
此滤波器接受以下选项:
- taps, t
设置输出音频流中的滤波器系数数量。 默认值为1025。
- frequency, f
设置频率点,以从中设置幅度和相位值。 此值必须是非递减顺序,且第一个元素必须是0,最后一个元素必须是1。 元素以白色空格分隔。
- magnitude, m
为frequency设置每个频率点的幅度值。 值的数量必须与频率点的数量相同。 值以白色空格分隔。
- phase, p
为frequency设置每个频率点的相位值。 值的数量必须与频率点的数量相同。 值以白色空格分隔。
- sample_rate, r
设置采样率,默认为44100。
- nb_samples, n
设置每帧样本数量。默认为1024。
- win_func, w
设置窗函数。默认为blackman。
30.6 anullsrc
空音频源,返回未处理的音频帧。它主要用作模板并用于分析/调试工具,或者作为忽略输入数据的滤波器的源(例如sox合成滤波器)。
此源接受以下选项:
- channel_layout, cl
-
指定声道布局,可以是整数值或表示声道布局的字符串。 默认值为channel_layout为"立体声"。
请查看libavutil/channel_layout.c中的channel_layout_map定义以了解字符串与声道布局值的映射关系。
- sample_rate, r
指定采样率,默认为44100。
- nb_samples, n
设置每帧请求的样本数。
- duration, d
设置来源音频的时长。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分以了解可接受的语法。
如果未指定,或者表达的持续时间为负数,则假定音频会永久生成。
30.6.1 示例
- 将采样率设置为48000 Hz,并将声道布局设置为AV_CH_LAYOUT_MONO。
anullsrc=r=48000:cl=4
- 使用更直观的语法进行同样的操作:
anullsrc=r=48000:cl=mono
所有参数需要显式定义。
30.7 flite
使用libflite库生成语音合成。
要启用此滤波器的编译,您需要使用以下选项配置FFmpeg:--enable-libflite
.
注意,2.0版本之前的flite库不是线程安全的。
此滤波器接受以下选项:
- list_voices
如果设置为1,列出可用语音的名称并立即退出。 默认值为0。
- nb_samples, n
设置每帧的最大样本数。 默认值为512。
- textfile
设置文件名,文件中包含要朗读的文本。
- text
设置要朗读的文本。
- voice, v
设置要用于语音合成的语音。 默认值为
kal
。另请参阅list_voices选项。
30.7.1 示例
- 从文件speech.txt中读取,并使用标准flite语音合成文本:
flite=textfile=speech.txt
- 读取指定的文本并选择
slt
语音:flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
- 输入文本到ffmpeg:
ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
- 让ffplay朗读指定文本,使用
flite
和lavfi
设备:ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
有关libflite的更多信息,请访问:http://www.festvox.org/flite/
30.8 anoisesrc
生成一个噪声音频信号。
此滤波器接受以下选项:
- sample_rate, r
指定采样率。 默认值为48000 Hz。
- amplitude, a
指定生成音频流的振幅(0.0-1.0)。 默认值为1.0。
- duration, d
指定生成音频流的持续时间。 不指定此选项会生成具有无限长度的噪声。
- color, colour, c
指定噪声的颜色。 可用的噪声颜色有白色、粉红色、棕色、蓝色、紫色和绒毛。 默认颜色为白色。
- seed, s
指定用于为PRNG生成种子的值。
- nb_samples, n
设置每帧输出样本数量,默认为1024。
- density
设置绒毛噪声生成器的密度(0.0-1.0),默认为0.05。
30.8.1 示例
- 生成60秒的粉红噪声,采样率为44.1 kHz,振幅为0.5:
anoisesrc=d=60:c=pink:r=44100:a=0.5
30.9 hilbert
生成奇点Hilbert变换FIR系数。
生成的流可以用于afir滤波器将信号相移90度。
这在许多矩阵编码方案中使用,也用于解析信号生成。 这个过程通常表示为乘以i(或j),即虚数单位。
此滤波器接受以下选项:
- sample_rate, s
设置采样率,默认为44100。
- taps, t
设置FIR滤波器的长度,默认为22051。
- nb_samples, n
设置每帧样本数量。
- win_func, w
设置窗函数,用于生成FIR系数。
30.10 sinc
生成sinc Kaiser窗低通滤波器、高通滤波器、带通滤波器或带阻滤波器的FIR系数。
生成的流可以用于afir滤波器来滤波音频信号。
此滤波器接受以下选项:
- sample_rate, r
设置采样率,默认为44100。
- nb_samples, n
设置每帧样本数量,默认为1024。
- hp
设置高通滤波器频率。默认为0。
- lp
设置低通滤波器频率。默认为0。 如果高通滤波器频率低于低通滤波器频率,并且低通频率大于0,则滤波器将创建带通滤波器系数, 否则为带阻滤波器系数。
- phase
设置滤波器的相位响应。默认为50。 允许范围为0到100。
- beta
设置Kaiser窗的beta值。
- att
设置阻带衰减。默认为120dB,允许范围为40到180 dB。
- round
启用舍入,默认为禁用。
- hptaps
为高通滤波器设置抽头数。
- lptaps
为低通滤波器设置抽头数。
30.11 sine
生成一个由振幅为1/8的正弦波组成的音频信号。
音频信号是完全精确的。
此滤波器接受以下选项:
- frequency, f
设置载波频率。默认值为440 Hz。
- beep_factor, b
启用每秒一次的周期性蜂鸣,频率为beep_factor倍的载波频率。 默认值为0,表示蜂鸣被禁用。
- sample_rate, r
指定采样率,默认为44100。
- duration, d
指定生成音频流的时长。
- samples_per_frame
设置每帧输出样本数量。
表达式可以包含以下常量:
- n
输出音频帧的顺序编号,从0开始。
- pts
输出音频帧的PTS(演示时间戳),以TB单位。
- t
输出音频帧的PTS,以秒为单位表达。
- TB
输出音频帧的时间基。
默认值是
1024
.
30.11.1 示例
- 生成一个简单的440 Hz正弦波:
sine
- 生成一个220 Hz正弦波和每秒一个880 Hz哔声,持续5秒:
sine=220:4:d=5 sine=f=220:b=4:d=5 sine=frequency=220:beep_factor=4:duration=5
- 生成一个1千赫兹的正弦波,遵循
1602,1601,1602,1601,1602
NTSC 模式:sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
31 音频输出
以下是当前可用音频输出的说明。
31.1 abuffersink
缓冲音频帧,并使它们可用于过滤链的末端。
此输出主要用于编程使用,特别是通过定义在libavfilter/buffersink.h或选项系统中的接口。
它接受一个指向AVABufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,作为初始化中传递的opaque参数。avfilter_init_filter
进行初始化。
31.2 anullsink
空音频输出;对输入音频绝不处理。它主要作为模板并用于分析/调试工具。
32 视频滤镜
配置FFmpeg构建时,可以禁用任何现有的滤镜,使用--disable-filters
。
配置输出将显示你的构建中包含的视频滤镜。
以下是当前可用的视频滤镜的说明。
32.1 addroi
在视频帧中标记感兴趣区域。
帧数据保持不变,但元数据附加到帧上,指示感兴趣区域,可以影响后续编码的行为。多个区域可以通过多次应用滤镜进行标记。
- x
到帧左边缘的区域距离,以像素为单位。
- y
到帧顶部边缘的区域距离,以像素为单位。
- w
区域宽度,以像素为单位。
- h
区域高度,以像素为单位。
参数x, y, w和h都是表达式,并可能包含以下变量:
- iw
输入帧的宽度。
- ih
输入帧的高度。
- qoffset
在区域内应用的量化偏移。
此值必须在 -1 到 +1 范围内,零表示无质量变化。负值要求更好质量(更少量化),而正值要求更低质量(更多量化)。
范围经过校准,以便极限值表示最大可能偏移——如果帧的其他部分以最差质量编码,则偏移值 -1 表示该区域无论如何都应该以最佳质量编码。中间值随后以某种编解码器依赖的方式插值。
例如,在10位的H.264中,量化参数范围从-12到51。一个典型的qoffset值为-1/10,因此指示该区域应该以比该范围其余部分好大约十分之一的质量(QP)编码。因此,如果帧的大部分以QP约30编码,该区域会获得大约24左右的QP(偏移约-1/10 * (51 - -12) = -6.3)。极限值-1意味着该区域应该无论如何都以最佳质量编码,而不考虑帧的其他部分的处理,即以QP为-12。
- clear
如果设置为true,在添加新区域之前移除帧上标记的任何现有感兴趣区。
32.1.1 示例
- 标记帧中心四分之一为感兴趣。
addroi=iw/4:ih/4:iw/2:ih/2:-1/10
- 将帧左边缘的100像素宽区域标记为非常不感兴趣(以远低于帧其他部分质量编码)。
addroi=0:0:100:ih:+1/5
32.2 alphaextract
从输入中提取alpha成分作为灰度视频。这个功能尤其与alphamerge滤镜配合有用。
32.3 alphamerge
用第二个输入的灰度值添加或替换主要输入的alpha成分。这功能旨在与alphaextract结合使用,以允许在不支持alpha通道的格式中传输或存储帧序列。
例如,从一个正常的YUV编码视频和另一个视频用alphaextract创建,你可能使用:
movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
32.4 amplify
在相同像素位置上放大当前像素与相邻帧像素的差异。
这个滤镜接受以下选项:
- radius
设置帧半径。默认值是2。允许范围是1到63。 例如半径为3会告诉滤镜计算7帧的平均值。
- factor
设置放大差异的因子。默认值为2。允许范围是0到65535。
- threshold
设置差异放大的阈值。任何大于或等于此值的差异不会改变原始像素。默认值为10。 允许范围是0到65535。
- tolerance
设置差异放大中的容差。任何低于此值的差异不会改变原始像素。默认值为0。 允许范围是0到65535。
- low
设置更改原始像素的下限。默认值为65535。允许范围是0到65535。 此选项控制最大可能的值来减少原始像素值。
- high
设置更改原始像素的上限。默认值为65535。允许范围是0到65535。 此选项控制最大可能的值来增加原始像素值。
- planes
设置要过滤的平面。默认是全部。允许范围是0到15。
32.4.1 命令
此滤镜支持以下命令对应于同名选项:
- factor
- threshold
- tolerance
- low
- high
- planes
32.5 ass
和subtitles滤镜相同,只不过它不需要libavcodec和libavformat来工作。另一方面,它仅限于ASS(高级字幕Alpha)字幕文件。
此滤镜除了subtitles滤镜的常规选项外,还接受以下选项:
- shaping
设置形状引擎
可用值为:
- ‘auto’
默认libass形状引擎,是最好的选择。
- ‘simple’
快速,无关字体的成形引擎,只能进行替换
- ‘complex’
使用OpenType进行替换和定位的较慢成形引擎
默认值是
auto
.
32.6 atadenoise
对视频输入应用自适应时间平均噪声过滤器。
滤镜接受以下选项:
- 0a
为第一个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。
- 0b
为第一个平面设置阈值B。默认值为0.04。 有效范围为0到5。
- 1a
为第二个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。
- 1b
为第二个平面设置阈值B。默认值为0.04。 有效范围为0到5。
- 2a
为第三个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。
- 2b
为第三个平面设置阈值B。默认值为0.04。 有效范围为0到5。
阈值A设计用于对输入信号中的突然变化反应,阈值B设计用于对输入信号中的连续变化反应。
- s
设置滤镜用于平均化的帧数。默认值为9。必须是范围[5, 129]内的奇数。
- p
设置滤镜将用于平均化的帧的平面。默认值是全部平面。
- a
设置滤镜用于平均化的算法变体。默认值是
p
parallel。 还可以设置为s
serial。Parallel可能比serial更快,但从不相反。Parallel会在第一次变化大于阈值时提前终止,而serial如果它们等于或低于阈值则会继续处理帧的其他部分。
- 0s
- 1s
- 2s
为1号平面、2号平面或3号平面设置sigma。默认值为32767。 有效范围是0到32767。 该选项控制定义的大小的半径内每个像素的权重。 默认值表示每个像素具有相同的权重。 将此选项设置为0实际上禁用过滤。
32.6.1 命令
此滤镜支持与选项相同的命令除了选项s
。
该命令接受与对应选项相同的语法。
32.7 avgblur
应用平均模糊滤镜。
滤镜接受以下选项:
- sizeX
设置水平半径大小。
- planes
设置要过滤的平面。默认情况下过滤所有平面。
- sizeY
如果为零则设置垂直半径大小与
sizeX
相同。 默认值是0
.
32.7.1 命令
此滤镜支持与选项相同的命令。 该命令接受对应选项的相同语法。
如果指定的表达式无效,则保持当前值不变。
32.8 backgroundkey
将静态背景转换为透明。
滤镜接受以下选项:
- threshold
场景更改检测的阈值。
- similarity
与背景的相似度百分比。
- blend
为不相似的像素设置混合量。
32.8.1 命令
此滤镜支持以上所有选项作为命令.
32.9 bbox
计算输入帧亮度平面中非黑色像素的边界框。
此滤镜计算包含所有亮度值大于最小允许值的像素的边界框。 描述边界框的参数打印在滤镜日志中。
滤镜接受以下选项:
- min_val
设置最小亮度值。默认值是
16
.
32.9.1 命令
此滤镜支持以上所有选项作为命令.
32.10 bilateral
应用双边滤镜,空间平滑同时保留边缘。
滤镜接受以下选项:
- sigmaS
设置高斯函数的sigma以计算空间权重。 允许范围是0到512。默认值是0.1。
- sigmaR
设置高斯函数的sigma以计算范围权重。 允许范围是0到1。默认值是0.1。
- planes
设置要过滤的平面。默认是仅第一个。
32.10.1 命令
此滤镜支持以上所有选项作为命令.
32.11 bilateral_cuda
CUDA加速版双边滤镜,一种边缘保留滤镜。 由于使用了GPU加速,此滤镜在数学上是精确的。 为了获得最佳的输出质量,使用一对一的色度抽样,例如yuv444p格式。
滤镜接受以下选项:
- sigmaS
设置高斯函数的sigma以计算空间权重,也称为空间sigma。 允许范围为0.1到512。默认值是0.1。
- sigmaR
设置高斯函数的sigma以计算颜色范围权重,也称为颜色sigma。 允许范围为0.1到512。默认值为0.1。
- window_size
设置双边函数的窗口大小以决定需要循环的邻居数量。 如果输入的数字是偶数,会自动加1。 允许范围是1到255。默认值是1。
32.11.1 示例
- 在视频上应用双边滤镜。
./ffmpeg -v verbose \ -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]scale_cuda=format=yuv444p[scaled_video]; [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \ -an -sn -c:v h264_nvenc -cq 20 out.mp4
32.12 bitplanenoise
显示并测量位平面噪声。
滤镜接受以下选项:
- bitplane
设置要分析的平面。默认是
1
.- filter
从设置的上面过滤出噪声像素。 默认是禁用。
bitplane
set above. Default is disabled.
32.13 blackdetect
检测(几乎)完全黑的视频间隔。可以用于检测章节转换、广告或无效录音。
滤镜将其检测分析输出到日志和帧元数据。如果发现至少指定的最短持续时间的黑色段,则会将开始和结束时间戳以及持续时间打印到日志中,并带有级别info
。
此外,还会打印带有级别的日志行debug
每帧打印显示检测到的黑色量。
过滤器还会将元数据附加到黑段的第一帧,键为lavfi.black_start
以及黑段结束后的第一帧的键为lavfi.black_end
。值是帧的时间戳。无论指定的最短持续时间如何,都会添加此元数据。
过滤器接受以下选项:
- black_min_duration, d
设置以秒为单位的最小检测黑色持续时间。必须是非负浮点数。
默认值为2.0。
- picture_black_ratio_th, pic_th
设置考虑图片为“黑色”的阈值。 表示比例值的最小值:
nb_black_pixels / nb_pixels
图片被视为黑色的情况下。 默认值为0.98。
- pixel_black_th, pix_th
设置考虑像素为“黑色”的阈值。
阈值表示像素亮度值的最大值,低于此值的像素即为“黑色”。提供的值按以下等式缩放:
absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size
luma_range_size和luma_minimum_value取决于输入视频格式,对于全范围的YUV格式,范围为[0-255],对于非全范围的YUV格式,范围为[16-235]。
默认值为0.10。
以下示例将最大像素阈值设置为最小值,仅检测持续2秒或更长时间的黑色间隔:
blackdetect=d=2:pix_th=0.00
32.14 blackframe
检测几乎完全黑色的帧。这对检测章节转换或广告很有用。输出行包括检测帧的帧号、黑色百分比、文件中的位置(如果已知)或-1,以及以秒为单位的时间戳。
为了显示输出行,需要将日志级别至少设置为AV_LOG_INFO值。
此过滤器输出帧元数据lavfi.blackframe.pblack
。
值表示图片像素低于阈值的百分比。
它接受以下参数:
- amount
必须低于阈值的像素百分比;默认值为
98
.- threshold, thresh
低于此值的像素值被视为黑色;默认值为
32
.
32.15 blend
将两个视频帧融合在一起。
The blend
过滤器接收两个输入流并输出一个流,第一个输入是“上层”,第二个输入是“下层”。
默认情况下,当最长输入结束时输出终止。
The tblend
(时间混合)过滤器从一个单一流中提取两个连续帧,并输出通过将新帧覆盖在旧帧上获得的结果。
以下是接受的选项的描述。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
为特定像素组件或所有像素组件设置混合模式(在all_mode情况下)。默认值为all_mode。
normal
.组件模式的可用值为:
- ‘addition’
- ‘and’
- ‘average’
- ‘bleach’
- ‘burn’
- ‘darken’
- ‘difference’
- ‘divide’
- ‘dodge’
- ‘exclusion’
- ‘extremity’
- ‘freeze’
- ‘geometric’
- ‘glow’
- ‘grainextract’
- ‘grainmerge’
- ‘hardlight’
- ‘hardmix’
- ‘hardoverlay’
- ‘harmonic’
- ‘heat’
- ‘interpolate’
- ‘lighten’
- ‘linearlight’
- ‘multiply’
- ‘multiply128’
- ‘negation’
- ‘normal’
- ‘or’
- ‘overlay’
- ‘phoenix’
- ‘pinlight’
- ‘reflect’
- ‘screen’
- ‘softdifference’
- ‘softlight’
- ‘stain’
- ‘subtract’
- ‘vividlight’
- ‘xor’
- c0_opacity
- c1_opacity
- c2_opacity
- c3_opacity
- all_opacity
为特定像素组件或所有像素组件设置混合不透明度(在all_opacity情况下)。 仅在结合像素组件混合模式时使用。all_opacity。
- c0_expr
- c1_expr
- c2_expr
- c3_expr
- all_expr
为特定像素组件或所有像素组件设置混合表达式(在all_expr情况下)。 请注意,相关模式选项如果已设置将被忽略。all_expr。
表达式可以使用以下变量:
- N
过滤帧的连续编号,从
0
.- X
- Y
当前采样点的坐标
- W
- H
当前滤波平面的宽度和高度
- SW
- SH
正在过滤平面的比例宽度和高度。该值是当前平面尺寸与亮度平面之间的比例,例如,对于
yuv420p
帧,亮度平面值为1,1
,色差平面值为0.5,0.5
。- T
当前帧的时间,以秒为单位。
- TOP, A
第一个视频帧(上层)当前位置的像素组件值。
- BOTTOM, B
第二个视频帧(下层)当前位置的像素组件值。
The blend
过滤器也支持framesync选项。
32.15.1 示例
- 在前10秒对底层到上层应用转换:
blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
- 从顶部层到底层沿水平线性过渡:
blend=all_expr='A*(X/W)+B*(1-X/W)'
- 应用1x1棋盘效果:
blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
- 应用从左侧显现效果:
blend=all_expr='if(gte(N*SW+X,W),A,B)'
- 应用从下向上显现效果:
blend=all_expr='if(gte(Y-N*SH,0),A,B)'
- 应用左上向显现效果:
blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
- 对角线拆分视频,左侧显示顶部层,右侧显示底层:
blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
- 显示当前和上一帧之间的差异:
tblend=all_mode=grainextract
32.15.2 命令
此过滤器支持与选项相同的命令。
32.16 blockdetect
判断帧的方块失真,在不更改输入帧的情况下。
基于Remco Muijs和Ihor Kirenko的《用于自适应视频处理的无参考方块伪影度量》(2005第13届欧洲信号处理会议)。
过滤器接受以下选项:
- period_min
- period_max
设置确定像素网格(周期)的最小值和最大值。 默认值为[3,24]。
- planes
设置需要过滤的平面。默认情况下,仅过滤第一个平面。
32.16.1 示例
- 确定对第一个平面的方块失真,并在[8,32]范围内搜索周期:
blockdetect=period_min=8:period_max=32:planes=1
32.17 blurdetect
判断帧的模糊程度,在不更改输入帧的情况下。
基于Marziliano等人的《一种无参考的感知模糊度量》。 支持基于块的缩略。
过滤器接受以下选项:
- low
- high
设置Canny阈值算法使用的低值和高值阈值。
高值阈值选择“强边缘像素”,这些与低值阈值选择的“弱边缘像素”通过8连通相连。
low和high阈值值必须在[0,1]范围内选择,且low值应小于或等于high.
默认值为low为
20/255
,high默认值为50/255
.- radius
定义围绕边缘像素搜索局部最大值的半径。
- block_pct
仅针对最显著的块确定模糊度,按百分比给出。
- block_width
为宽度为block_width的块确定模糊度。如果设置小于1的值,则无论block_height.
- block_height
为高度为block_height的块确定模糊度。如果设置小于1的值,则无论block_width.
- planes
设置需要过滤的平面。默认情况下,仅过滤第一个平面。
32.17.1 示例
- 为最显著的80%的32x32块确定模糊度:
blurdetect=block_width=32:block_height=32:block_pct=80
32.18 bm3d
使用块匹配的BM3D算法降噪帧。
过滤器接受以下选项。
- sigma
设置降噪强度。默认值为1。 允许的范围是0到999.9。 降噪算法对sigma非常敏感,因此请根据来源调整。
- block
设置局部块的大小。这设置为2D尺寸。
- bstep
设置块处理滑动步长。默认值为4。 允许的范围是1到64。 较小的值允许处理更多引用块,但速度较慢。
- group
为第三维设置相似块的最大数量。默认值为1。 设置为1时不会进行块匹配。较大值允许单个组中有更多块。 允许范围为1至256。
- range
设置块匹配搜索半径。默认值为9。 允许范围是1到INT32_MAX。
- mstep
设置块匹配两次搜索位置之间的步长。默认值为1。 允许范围是1到64。较小值速度较慢。
- thmse
设置块匹配的均方误差阈值。有效范围为0到INT32_MAX。
- hdthr
为在三维变换域中的硬阈值设置参数。 较大的值会导致在频率域中的更强硬阈值过滤。
- estim
设置滤波估计模式。可以是
basic
或final
。 默认值为basic
.- ref
如果启用,过滤器将使用第二个输入流进行块匹配。 对于估计模式值
basic
estimestim选项的默认值,禁用此功能, 而当估计模式值为estim时,总是启用。final
.- planes
设置需要过滤的平面。默认情况下,所有可用的平面都被过滤,除了透明通道。
32.18.1 示例
- 使用bm3d的基本滤波:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
- 同上,但仅过滤亮度:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
- 同上,但使用两种估计模式:
split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
- 同上,但用nlmeans代替:
split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
32.19 boxblur
对输入视频应用方框模糊算法。
它接受以下参数:
- luma_radius, lr
- luma_power, lp
- chroma_radius, cr
- chroma_power, cp
- alpha_radius, ar
- alpha_power, ap
以下是接受选项的描述。
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
为用于模糊相应输入平面的方框半径设置表达式。
半径值必须为非负数,并且不得大于表达式的值
min(w,h)/2
对于亮度和alpha平面,以及min(cw,ch)/2
对于色度平面。默认值为luma_radius为"2"。如果未指定,chroma_radius和alpha_radius默认为为luma_radius.
设置的对应值。
- w
- h
以像素为单位的输入宽度和高度。
- cw
- ch
以像素为单位的输入色度图像宽度和高度。
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式“yuv422p”,hsub为2,vsub为1。
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
指定对相应平面应用方框模糊过滤器的次数。
默认值为luma_power为2。如果未指定,chroma_power和alpha_power默认为为luma_power.
设置为0将禁用此效果。
32.19.1 示例
- 使用亮度、色度和alpha半径均为2的设置应用方框模糊过滤器:
boxblur=luma_radius=2:luma_power=1 boxblur=2:1
- 设置亮度半径为2,alpha和色度半径为0:
boxblur=2:1:cr=0:ar=0
- 将亮度和色度半径设置为视频维度的某个分数:
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
32.20 bwdif
对输入视频进行去隔行扫描(“bwdif”代表“Bob Weaver去隔行扫描过滤器”)。
基于 yadif 的运动自适应去隔行扫描,使用 w3fdif 和立方插值算法。 它接受以下参数:
- mode
采用的隔行扫描模式。可接受以下值之一:
- 0, send_frame
为每帧输出一个帧。
- 1, send_field
为每场输出一个帧。
默认值为
send_field
.- parity
输入隔行扫描视频假设的图像场顺序。可接受以下值之一:
- 0, tff
假设顶场优先。
- 1, bff
假设底场优先。
- -1, auto
启用自动检测场顺序。
默认值为
auto
。 如果隔行扫描未知或解码器未导出此信息,则假设为顶场优先。- deint
指定要隔行扫描的帧。接受以下值之一:
- 0, all
去隔行扫描所有帧。
- 1, interlaced
仅去隔行扫描标记为隔行扫描的帧。
默认值为
all
.
32.21 bwdif_cuda
使用bwdif算法对输入视频进行去隔行扫描,但在CUDA中实现, 以便可以作为使用nvdec和/或nvenc的GPU加速管道的一部分进行工作。
它接受以下参数:
- mode
采用的隔行扫描模式。可接受以下值之一:
- 0, send_frame
为每帧输出一个帧。
- 1, send_field
为每场输出一个帧。
默认值为
send_field
.- parity
输入隔行扫描视频假设的图像场顺序。可接受以下值之一:
- 0, tff
假设顶场优先。
- 1, bff
假设底场优先。
- -1, auto
启用自动检测场顺序。
默认值为
auto
。 如果隔行扫描未知或解码器未导出此信息,则假设为顶场优先。- deint
指定要隔行扫描的帧。接受以下值之一:
- 0, all
对所有帧进行去隔行。
- 1, interlaced
仅对标记为隔行的帧进行去隔行。
默认值是
all
.
32.22 ccrepack
重新打包CEA-708闭路字幕的旁路数据
此过滤器修复商业编码器中常见的上游CEA-708有效载荷格式错误问题,特别是目标帧率的错误元组数(错误的cc_count)以及元组排序错误(例如,CEA-608元组未在有效载荷的第一个条目中)。
32.23 cas
将对比度自适应锐化过滤器应用于视频流。
该过滤器接受以下选项:
- strength
设置锐化强度。默认值为0。
- planes
设置需要过滤的平面。默认值为过滤所有平面,除了Alpha平面。
32.23.1 命令
此过滤器支持与选项相同的命令。
32.24 chromahold
移除所有颜色信息,仅保留特定颜色。
该过滤器接受以下选项:
- color
不会被中性色彩替代的颜色。
- similarity
与上述颜色的相似百分比。0.01仅匹配精确的关键颜色,1.0匹配所有颜色。
- blend
混合比例。 0.0使像素要么完全是灰色,要么完全不是灰色。 更高的值会保留更多的颜色。
- yuv
表示传递的颜色已经是YUV格式而不是RGB。
启用此选项时,像“绿色”或“红色”之类的字面颜色将不再有意义。 这可用于以十六进制形式传递精确的YUV值。
32.24.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则将保持当前值。
32.25 chromakey
YUV颜色空间的颜色/色度键控。
该过滤器接受以下选项:
- color
将被替换为透明的颜色。
- similarity
与关键颜色的相似百分比。
0.01仅匹配精确的关键颜色,1.0匹配所有颜色。
- blend
混合比例。
0.0使像素要么完全透明,要么完全不透明。
更高的值会使像素半透明,像素颜色越接近关键颜色,透明度越高。
- yuv
表示传递的颜色已经是YUV格式而不是RGB。
启用此选项时,像“绿色”或“红色”之类的字面颜色将不再有意义。 这可用于以十六进制形式传递精确的YUV值。
32.25.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则将保持当前值。
32.25.2 示例
- 使输入图像中的每个绿色像素透明:
ffmpeg -i input.png -vf chromakey=green out.png
- 将绿屏视频覆盖在静态黑色背景之上。
ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
32.26 chromakey_cuda
CUDA加速的YUV颜色空间的颜色/色度键控。
此过滤器的工作原理类似于常规chroma键控过滤器,但操作在CUDA帧上。 有关更多详细信息和参数,请参阅chromakey.
32.26.1 示例
- 使输入视频中的所有绿色像素透明,并将其用作其他视频的叠加:
./ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4 \ -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \ -init_hw_device cuda \ -filter_complex \ " \ [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \ [1:v]scale_cuda=format=yuv420p[base]; \ [base][overlay_video]overlay_cuda" \ -an -sn -c:v h264_nvenc -cq 20 output.mp4
- 处理两个软件源,显式上传帧:
./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \ -f lavfi -i color=size=800x600:color=white,format=yuv420p \ -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \ -filter_complex \ " \ [0]hwupload[under]; \ [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \ [under][over]overlay_cuda" \ -c:v hevc_nvenc -cq 18 -preset slow output.mp4
32.27 chromanr
减少亮度噪声。
该过滤器接受以下选项:
- thres
设置用于平均亮度值的阈值。 当前像素和邻近像素的Y、U和V像素分量的绝对差值之和低于此阈值的值将被用于平均。 亮度分量不变并复制到输出中。 默认值为30,允许范围为1到200。
- sizew
设置用于平均的矩形的水平半径。 允许范围为1至100。默认值为5。
- sizeh
设置用于平均的矩形的垂直半径。 允许范围为1至100。默认值为5。
- stepw
设置平均时的水平步长。默认值为1。 允许范围为1到50。 主要用于加速过滤。
- steph
设置平均时的垂直步长。默认值为1。 允许范围为1到50。 主要用于加速过滤。
- threy
设置用于平均亮度值的Y阈值。 对当前像素和邻近像素的Y分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。
- threu
设置用于平均亮度值的U阈值。 对当前像素和邻近像素的U分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。
- threv
设置用于平均亮度值的V阈值。 对当前像素和邻近像素的V分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。
- distance
设置计算中使用的距离类型。
- ‘manhattan’
绝对差值。
- ‘euclidean’
平方差。
默认距离类型为曼哈顿距离。
32.27.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
32.28 chromashift
水平和/或垂直地移动色度像素。
此过滤器接受以下选项:
- cbh
设置水平移动蓝色色度的量。
- cbv
设置垂直移动蓝色色度的量。
- crh
设置水平移动红色色度的量。
- crv
设置垂直移动红色色度的量。
- edge
设置边缘模式,可以是涂抹(默认),或者变形.
32.28.1 命令
此过滤器支持以上所有选项作为命令.
32.29 ciescope
显示CIE色彩图,并将像素覆盖其上。
此过滤器接受以下选项:
- system
设置色彩系统。
- ‘ntsc, 470m’
- ‘ebu, 470bg’
- ‘smpte’
- ‘240m’
- ‘apple’
- ‘widergb’
- ‘cie1931’
- ‘rec709, hdtv’
- ‘uhdtv, rec2020’
- ‘dcip3’
- cie
设置CIE系统。
- ‘xyy’
- ‘ucs’
- ‘luv’
- gamuts
设置要绘制的色域。
请参阅
system
选项来获取可用值。- size, s
设置ciescope大小,默认值为512。
- intensity, i
设置将输入像素值映射到CIE图的强度。
- contrast
设置对绘制超出活动色彩系统内的颜色的对比度。
- corrgamma
校正范围内显示的伽玛,默认启用。
- showwhite
在CIE图上显示白点,默认禁用。
- gamma
设置输入伽玛。仅在XYZ输入色彩空间中使用。
- fill
填充CIE颜色。默认启用。
32.30 codecview
可视化某些编解码器导出的信息。
某些编解码器可以通过帧使用旁路数据或其他途径导出信息。 例如,一些基于MPEG的编解码器通过导出export_mvs标志来输出运动矢量。flags2 option.
The filter accepts the following option:
- block
Display block partition structure using the luma plane.
- mv
Set motion vectors to visualize.
Available flags for mv are:
- ‘pf’
forward predicted MVs of P-frames
- ‘bf’
forward predicted MVs of B-frames
- ‘bb’
backward predicted MVs of B-frames
- qp
Display quantization parameters using the chroma planes.
- mv_type, mvt
Set motion vectors type to visualize. Includes MVs from all frames unless specified by frame_type option.
Available flags for mv_type are:
- ‘fp’
forward predicted MVs
- ‘bp’
backward predicted MVs
- frame_type, ft
Set frame type to visualize motion vectors of.
Available flags for frame_type are:
- ‘if’
intra-coded frames (I-frames)
- ‘pf’
predicted frames (P-frames)
- ‘bf’
bi-directionally predicted frames (B-frames)
32.30.1 Examples
- Visualize forward predicted MVs of all frames using
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
- Visualize multi-directionals MVs of P and B-Frames using
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
32.31 colorbalance
Modify intensity of primary colors (red, green and blue) of input frames.
The filter allows an input frame to be adjusted in the shadows, midtones or highlights regions for the red-cyan, green-magenta or blue-yellow balance.
A positive adjustment value shifts the balance towards the primary color, a negative value towards the complementary color.
The filter accepts the following options:
- rs
- gs
- bs
Adjust red, green and blue shadows (darkest pixels).
- rm
- gm
- bm
Adjust red, green and blue midtones (medium pixels).
- rh
- gh
- bh
Adjust red, green and blue highlights (brightest pixels).
Allowed ranges for options are
[-1.0, 1.0]
. Defaults are0
.- pl
Preserve lightness when changing color balance. Default is disabled.
32.31.1 Examples
- Add red color cast to shadows:
colorbalance=rs=.3
32.31.2 Commands
This filter supports the all above options as commands.
32.32 colorcontrast
Adjust color contrast between RGB components.
The filter accepts the following options:
- rc
Set the red-cyan contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
- gm
Set the green-magenta contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
- by
Set the blue-yellow contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.
- rcw
- gmw
- byw
Set the weight of each
rc
,gm
,by
option value. Default value is 0.0. Allowed range is from 0.0 to 1.0. If all weights are 0.0 filtering is disabled.- pl
Set the amount of preserving lightness. Default value is 0.0. Allowed range is from 0.0 to 1.0.
32.32.1 Commands
This filter supports the all above options as commands.
32.33 colorcorrect
Adjust color white balance selectively for blacks and whites. This filter operates in YUV colorspace.
The filter accepts the following options:
- rl
Set the red shadow spot. Allowed range is from -1.0 to 1.0. Default value is 0.
- bl
Set the blue shadow spot. Allowed range is from -1.0 to 1.0. Default value is 0.
- rh
Set the red highlight spot. Allowed range is from -1.0 to 1.0. Default value is 0.
- bh
Set the blue highlight spot. Allowed range is from -1.0 to 1.0. Default value is 0.
- saturation
Set the amount of saturation. Allowed range is from -3.0 to 3.0. Default value is 1.
- analyze
If set to anything other than
manual
it will analyze every frame and use derived parameters for filtering output frame.Possible values are:
- ‘manual’
- ‘average’
- ‘minmax’
- ‘median’
Default value is
manual
.
32.33.1 Commands
This filter supports the all above options as commands.
32.34 colorchannelmixer
Adjust video input frames by re-mixing color channels.
This filter modifies a color channel by adding the values associated to the other channels of the same pixels. For example if the value to modify is red, the output value will be:
red=red*rr + blue*rb + green*rg + alpha*ra
The filter accepts the following options:
- rr
- rg
- rb
- ra
Adjust contribution of input red, green, blue and alpha channels for output red channel. Default is
1
for rr, and0
for rg, rb and ra.- gr
- gg
- gb
- ga
Adjust contribution of input red, green, blue and alpha channels for output green channel. Default is
1
for gg, and0
for gr, gb and ga.- br
- bg
- bb
- ba
Adjust contribution of input red, green, blue and alpha channels for output blue channel. Default is
1
for bb, and0
for br, bg and ba.- ar
- ag
- ab
- aa
Adjust contribution of input red, green, blue and alpha channels for output alpha channel. Default is
1
for aa, and0
for ar, ag and ab.Allowed ranges for options are
[-2.0, 2.0]
.- pc
Set preserve color mode. The accepted values are:
- ‘none’
Disable color preserving, this is default.
- ‘lum’
Preserve luminance.
- ‘max’
Preserve max value of RGB triplet.
- ‘avg’
Preserve average value of RGB triplet.
- ‘sum’
Preserve sum value of RGB triplet.
- ‘nrm’
Preserve normalized value of RGB triplet.
- ‘pwr’
Preserve power value of RGB triplet.
- pa
Set the preserve color amount when changing colors. Allowed range is from
[0.0, 1.0]
. Default is0.0
因此被禁用。
32.34.1 示例
- 将源转换为灰度:
colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
- 模拟棕褐色调:
colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
32.34.2 命令
此过滤器支持以上所有选项作为命令.
32.35 着色
在视频流上覆盖实色。
过滤器接受以下选项:
- hue
设置色调。允许范围为0到360。 默认值为0。
- saturation
设置饱和度。允许范围为0到1。 默认值为0.5。
- lightness
设置亮度。允许范围为0到1。 默认值为0.5。
- mix
设置源亮度的混合比例。 默认值为1.0。 允许范围为0.0到1.0。
32.35.1 命令
此过滤器支持以上所有选项作为命令.
32.36 颜色键
RGB颜色空间颜色键控。 此过滤器作用于8位RGB格式帧,通过将落入键颜色相似性半径内的每个像素的alpha分量设置为0进行操作。 超出相似性半径的像素alpha值取决于混合选项的值。
过滤器接受以下选项:
- color
设置alpha将为0(完全透明)的颜色。 参见ffmpeg-utils手册中的“颜色”部分。 默认值为
black
.- similarity
设置从键颜色起的半径范围,半径内的其他颜色也拥有完全透明度。 计算出的距离与键颜色RGB值与像素颜色之间的3D空间单元分数距离相关。 范围为0.01到1.0。0.01在键颜色周围的非常小的半径内匹配,而1.0匹配所有颜色。 默认值为
0.01
.- blend
设置如何计算落在相似性半径外的像素的alpha值。 0.0使像素要么完全透明,要么完全不透明。 较高的值会产生半透明的像素,与键颜色越相似则像素透明度越大。 范围为0.0到1.0。 默认值为
0.0
.
32.36.1 示例
- 使输入图像中的每个绿色像素透明:
ffmpeg -i input.png -vf colorkey=green out.png
- 将在静态背景图像上叠加绿屏视频。
ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
32.36.2 命令
此过滤器支持相同命令作为选项。 命令接受对应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
32.37 保持颜色
删除所有RGB颜色的颜色信息,仅保留特定颜色。
过滤器接受以下选项:
- color
不会被中性灰色替代的颜色。
- similarity
与上述颜色的相似度百分比。 0.01仅匹配精确的键颜色,而1.0匹配所有颜色。
- blend
混合百分比。0.0使像素完全灰色。 更高的值会保留更多颜色。
32.37.1 命令
此过滤器支持相同命令作为选项。 命令接受对应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
32.38 颜色级别
使用级别调整视频输入帧。
过滤器接受以下选项:
- rimin
- gimin
- bimin
- aimin
调整红、绿、蓝和alpha输入黑点。 允许范围为
[-1.0, 1.0]
。默认值为0
.- rimax
- gimax
- bimax
- aimax
调整红、绿、蓝和alpha输入白点。 允许范围为
[-1.0, 1.0]
。默认值为1
.输入级别用于减轻高光(明亮色调)、加深阴影(暗色调)、改变明暗色调的平衡。
- romin
- gomin
- bomin
- aomin
调整红、绿、蓝和alpha输出黑点。 允许范围为
[0, 1.0]
。默认值为0
.- romax
- gomax
- bomax
- aomax
调整红、绿、蓝和alpha输出白点。 允许范围为
[0, 1.0]
。默认值为1
.输出级别允许手动选择限制的输出范围。
- preserve
设置保留颜色模式。接受值为:
- ‘none’
禁用颜色保留,默认值。
- ‘lum’
保留亮度。
- ‘max’
保留RGB三元组的最大值。
- ‘avg’
保留RGB三元组的平均值。
- ‘sum’
保留RGB三元组的总和值。
- ‘nrm’
保留RGB三元组的归一化值。
- ‘pwr’
保留RGB三元组的功率值。
32.38.1 示例
- 使视频输出变暗:
colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
- 增加对比度:
colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
- 使视频输出变亮:
colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
- 增加亮度:
colorlevels=romin=0.5:gomin=0.5:bomin=0.5
32.38.2 命令
此过滤器支持以上所有选项作为命令.
32.39 颜色映射
对视频流应用自定义颜色映射。
此过滤器需要三个输入视频流。 第一个流是将要被过滤的视频流。 第二和第三个视频流指定源颜色和目标颜色的颜色块映射。
过滤器接受以下选项:
- patch_size
设置源和目标视频流的颜色块大小(以像素为单位)。
- nb_patches
设置从源和目标视频流中使用的颜色块最大数量。 默认值为附加视频流中可用颜色块的数量。 颜色块的最大允许数量为
64
.- type
设置目标颜色的调整方式。可为
relative
或absolute
。 默认值为absolute
.- kernel
设置用于测量映射颜色之间颜色差异的核。
接受值为:
- ‘euclidean’
- ‘weuclidean’
默认值为
euclidean
.
32.40 颜色矩阵
转换颜色矩阵。
过滤器接受以下选项:
- src
- dst
指定源和目标颜色矩阵。必须同时指定两个值。
接受值为:
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt601’
BT.601
- ‘bt470’
BT.470
- ‘bt470bg’
BT.470BG
- ‘smpte170m’
SMPTE-170M
- ‘smpte240m’
SMPTE-240M
- ‘bt2020’
BT.2020
例如,将BT.601转换为SMPTE-240M,可以使用以下命令:
colormatrix=bt601:smpte240m
32.41 颜色空间
转换颜色空间、传递特性或颜色主色。 输入视频需要具有偶数大小。
过滤器接受以下选项:
- all
一次指定所有颜色属性。
接受值为:
- ‘bt470m’
BT.470M
- ‘bt470bg’
BT.470BG
- ‘bt601-6-525’
BT.601-6 525
- ‘bt601-6-625’
BT.601-6 625
- ‘bt709’
BT.709
- ‘smpte170m’
SMPTE-170M
- ‘smpte240m’
SMPTE-240M
- ‘bt2020’
BT.2020
- space
指定输出颜色空间。
接受值为:
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470BG 或 BT.601-6 625
- ‘smpte170m’
SMPTE-170M 或 BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘ycgco’
YCgCo
- ‘bt2020ncl’
BT.2020 非恒定亮度
- trc
指定输出传递特性。
接受值为:
- ‘bt709’
BT.709
- ‘bt470m’
BT.470M
- ‘bt470bg’
BT.470BG
- ‘gamma22’
恒定伽玛 2.2
- ‘gamma28’
恒定伽玛 2.8
- ‘smpte170m’
SMPTE-170M, BT.601-6 625 或 BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘srgb’
SRGB
- ‘iec61966-2-1’
iec61966-2-1
- ‘iec61966-2-4’
iec61966-2-4
- ‘xvycc’
xvycc
- ‘bt2020-10’
BT.2020 10位内容
- ‘bt2020-12’
BT.2020 12位内容
- primaries
指定输出颜色主色。
接受值为:
- ‘bt709’
BT.709
- ‘bt470m’
BT.470M
- ‘bt470bg’
BT.470BG 或 BT.601-6 625
- ‘smpte170m’
SMPTE-170M 或 BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘film’
影片
- ‘smpte431’
SMPTE-431
- ‘smpte432’
SMPTE-432
- ‘bt2020’
BT.2020
- ‘jedec-p22’
JEDEC P22 磷光体
- range
指定输出颜色范围。
接受值为:
- ‘tv’
电视(受限)范围
- ‘mpeg’
MPEG(受限)范围
- ‘pc’
PC(完全)范围
- ‘jpeg’
JPEG(完全)范围
- format
指定输出颜色格式。
接受值为:
- ‘yuv420p’
YUV 4:2:0 平面 8位
- ‘yuv420p10’
YUV 4:2:0 平面 10位
- ‘yuv420p12’
YUV 4:2:0 平面 12位
- ‘yuv422p’
YUV 4:2:2 平面 8位
- ‘yuv422p10’
YUV 4:2:2 平面 10位
- ‘yuv422p12’
YUV 4:2:2 平面 12位
- ‘yuv444p’
YUV 4:4:4 平面 8位
- ‘yuv444p10’
YUV 4:4:4 平面 10位
- ‘yuv444p12’
YUV 4:4:4 平面 12位
- fast
执行快速转换,跳过伽玛/主色校正。这将显著减少CPU开销,但在数学上是不正确的。 为了获得与colormatrix过滤器生成的输出兼容的结果,请使用fast=1。
- dither
指定抖动模式。
接受值为:
- ‘none’
无抖动
- ‘fsb’
Floyd-Steinberg抖动
- wpadapt
白点适配模式。
接受值为:
- ‘bradford’
Bradford白点适配
- ‘vonkries’
von Kries白点适配
- ‘identity’
身份白点适配(即无白点适配)
- iall
一次覆盖所有输入属性。与相同的接受值。.
- ispace
覆盖输入颜色空间。与空间接受值相同。.
- iprimaries
覆盖输入颜色主色。与主色接受值相同。.
- itrc
覆盖输入传递特性。与传递特性接受值相同。.
- irange
覆盖输入颜色范围。与范围接受值相同。.
过滤器将传递特性、颜色空间和颜色主色转换为指定的用户值。 如果未指定输出值,则根据"all"属性设置默认值。 如果也未指定该属性,过滤器将记录错误。 输出颜色范围和值格式默认为输入颜色范围和值格式。 输入传递特性、颜色空间、颜色主色和颜色范围应设置为输入数据。 如果缺少任何这些值,过滤器将记录错误并且不会发生转换。
例如,将输入转换为SMPTE-240M,可以使用以下命令:
colorspace=smpte240m
32.42 colorspace_cuda
colorspace过滤器的CUDA加速实现。
与软件colorspace过滤器相比,它并不完全具备所有功能,且目前仅支持jpeg/全范围和mpeg/有限范围之间的颜色范围转换。
过滤器接受以下选项:
- range
指定输出颜色范围。
接受值为:
- ‘tv’
电视(受限)范围
- ‘mpeg’
MPEG(受限)范围
- ‘pc’
PC(完全)范围
- ‘jpeg’
JPEG(完全)范围
32.43 色温
调整视频中的色温以模拟环境色温的变化。
过滤器接受以下选项:
- temperature
设置温度(单位:开尔文)。允许范围为1000到40000。 默认值为6500 K。
- mix
设置过滤输出的混合。允许范围为0到1。 默认值为1。
- pl
设置保留亮度的量。允许范围为0到1。 默认值为0。
32.43.1 命令
此过滤器支持相同命令作为选项。
32.44 卷积
应用3x3、5x5、7x7或水平/垂直最多49个元素的卷积运算。
过滤器接受以下选项:
- 0m
- 1m
- 2m
- 3m
为每个平面设置矩阵。 矩阵是9、25或49个有符号整数的序列,格式为方形模式, 从1到49个奇数有符号整数,格式为行模式。
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
为每个平面设置计算值的乘数。 如果未设置或为0,则为所有矩阵元素的和的倒数。
- 0bias
- 1bias
- 2bias
- 3bias
为每个平面设置偏移值。此值会加入乘法结果。 用于使总图像更明亮或更暗。默认值为0.0。
- 0mode
- 1mode
- 2mode
- 3mode
为每个平面设置矩阵模式。可为方形, 行列。 默认值为. Default is 方形.
32.44.1 命令
此过滤器支持以上所有选项作为命令.
32.44.2 示例
- 应用锐化:
convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
- 应用模糊:
convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
- 应用边缘增强:
convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
- 应用边缘检测:
convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
- 应用包含对角线的拉普拉斯边缘检测器:
convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
- 应用浮雕效果:
convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
32.45 卷积
在频域中对视频流进行2D卷积,使用第二流作为脉冲。
过滤器接受以下选项:
- planes
设置要处理的平面。
- impulse
设置要处理的脉冲视频帧,可以是第一个或全部。默认值为全部.
过滤器还支持convolve
帧同步选项。 options.
32.46 复制
将输入视频源未更改地复制到输出。主要用于测试目的。
32.47 核心图像
使用苹果OSX中的CoreImage API进行视频GPU过滤。
硬件加速基于OpenGL上下文。通常,这意味着视频由硬件处理。 但软件OpenGL实现也存在,这意味着没有硬件处理的保证。这取决于具体的OSX系统。
苹果提供了许多过滤器和图像生成器,具有多种选项。过滤器必须通过其名称以及选项进行引用。
核心图像过滤器接受以下选项:
- list_filters
列出所有可用的过滤器和生成器以及它们各自的选项、可能的最小值和最大值,以及默认值。
list_filters=true
- filter
通过各自的名称和选项指定所有过滤器。使用list_filters来确定所有有效的过滤器名称和选项。数值选项通过浮点值指定,并自动限制在其各自的值范围内。向量和颜色选项必须指定为以空格分隔的浮点值列表。字符转义必须完成。一个特殊选项名称
default
可用以使用过滤器的默认选项。必须指定
default
或至少一个过滤器选项。所有省略的选项将使用它们的默认值。过滤器字符串的语法如下:filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
- output_rect
指定一个矩形,将过滤器链的输出复制到输入图像中。它由以空格分隔的浮点值列表给出:
output_rect=x\ y\ width\ height
如果没有提供,输出矩形等于输入图像的尺寸。输出矩形会自动在输入图像边界处裁剪。每个分量的负值是有效的。
output_rect=25\ 25\ 100\ 100
多个过滤器可以链接进行连续处理,而无需 GPU-HOST 传输,从而允许快速处理复杂的过滤器链。目前,仅支持具有零个(生成器)或恰好一个(过滤器)输入图像和一个输出图像的过滤器。此外,过渡过滤器目前还不能按预期使用。
某些过滤器生成具有附加填充的输出图像,具体取决于各自的过滤器内核。填充会自动移除,以确保过滤器输出与输入图像具有相同的大小。
对于图像生成器,输出图像的大小由过滤器链的前一个输出图像或整个过滤器链的输入图像决定。生成器不使用该图像的像素信息来生成其输出。然而,生成的输出会混合到该图像上,从而导致输出图像的部分或完全覆盖。
使用coreimagesrc视频源用于生成输入图像,并直接传递到过滤器链中。通过使用它,无需通过其他视频源或输入视频来提供输入图像。
32.47.1 示例
- 列出所有可用的过滤器:
coreimage=list_filters=true
- 使用带默认选项的 CIBoxBlur 过滤器来模糊图像:
coreimage=filter=CIBoxBlur@default
- 使用一个过滤器链,CISepiaTone 使用默认值,CIVignetteEffect 的中心设置为100x100,半径为50像素:
coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
- 使用 nullsrc 和 CIQRCodeGenerator 为 FFmpeg 主页创建二维码,以下是为 Apple 标准 bash shell 提供的完整且转义的命令行:
ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
32.48 corr
获取两个输入视频之间的相关性。
该过滤器需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式,才能使该过滤器正常工作。此外,假设两个输入具有相同数量的帧,这些帧是一一比较的。
获得的每个分量、平均值、最小值和最大值相关性通过日志系统打印。
过滤器将每帧计算的相关性存储在帧元数据中。
此过滤器还支持framesync选项。
在以下示例中,正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -
32.49 cover_rect
遮盖矩形对象
它接受以下选项:
- cover
可选遮盖图像的文件路径,需要为 yuv420 格式。
- mode
设置遮盖模式。
它接受以下值:
- ‘cover’
通过提供的图像来遮盖它
- ‘blur’
通过插值周围像素来遮盖它
默认值为模糊.
32.49.1 示例
- 通过给定视频中的提供图像遮盖矩形对象
ffmpeg
:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
32.50 裁剪
将输入视频裁剪为给定的尺寸。
它接受以下参数:
- w, out_w
输出视频的宽度。默认值为
iw
。 此表达式仅在过滤器配置期间或发送“w”或“out_w”命令时评估一次。- h, out_h
输出视频的高度。默认值为
ih
。 此表达式仅在过滤器配置期间或发送“h”或“out_h”命令时评估一次。- x
输入视频中输出视频左边缘的水平位置。默认值为
(in_w-out_w)/2
。 此表达式每帧评估一次。- y
输入视频中输出视频顶部边缘的垂直位置。默认值为
(in_h-out_h)/2
。 此表达式每帧评估一次。- keep_aspect
如果设置为1,将强制输出显示长宽比与输入相同,通过更改输出样本长宽比。默认值为0。
- exact
启用精确裁剪。如果启用,子采样视频将按指定的确切宽度/高度/x/y裁剪,不会舍入为更小的值。默认值为0。
参数out_w, out_h, x, y是包含以下常量的表达式:
- x
- y
计算得出的x和y值。它们每帧进行计算。
- in_w
- in_h
输入的宽度和高度。
- iw
- ih
这与in_w和in_h.
- out_w
- out_h
输出(裁剪后)的宽度和高度。
- ow
- oh
这与out_w和out_h.
- a
与iw / ih
- sar
输入样本长宽比
- dar
输入显示长宽比,与(iw / ih) * sar
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式“yuv422p”hsub为2,vsub为1。
- n
输入帧的编号,从0开始。
- pos
输入帧在文件中的位置,未知时为 NAN;已弃用,不要使用
- t
时间戳以秒为单位表示。如果输入时间戳未知,则为 NAN。
表达式out_w可能依赖于out_h的值, 表达式out_h可能依赖于out_w,但它们 不能依赖于x和y,因为x和y会在out_w和out_h.
之后计算。x和y参数指定位于输出(未裁剪)区域左上角的表达式。它们 会为每帧计算一次。如果计算得出的值无效,则它会 近似到最接近的有效值。
表达式x可能依赖于y,表达式y可能依赖于x.
32.50.1 示例
- 裁剪 100x100 大小的区域,其位置为(12,34)。
crop=100:100:12:34
使用命名的参数,以上示例变为:
crop=w=100:h=100:x=12:y=34
- 裁剪输入区域中心大小为 100x100:
crop=100:100
- 裁剪输入视频的中心区域大小为输入视频的 2/3:
crop=2/3*in_w:2/3*in_h
- 裁剪输入视频中心正方形:
crop=out_w=in_h crop=in_h
- 限定一个矩形,其左上角位置为 100:100,
右下角对应于输入图像的右下角。
crop=in_w-100:in_h-100:100:100
- 从左、右边缘裁剪10像素,从上、下边缘裁剪20像素
crop=in_w-2*10:in_h-2*20
- 仅保留输入图像的右下四分之一部分:
crop=in_w/2:in_h/2:in_w/2:in_h/2
- 裁剪高度以获得希腊和谐:
crop=in_w:1/PHI*in_w
- 应用震颤效果:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
- 根据时间戳应用不稳定摄像机效果:
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
- 设置 x 取决于 y 的值:
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
32.50.2 命令
此过滤器支持以下命令:
- w, out_w
- h, out_h
- x
- y
设置输出视频的宽度/高度以及 输入视频中的水平/垂直位置。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,则继续保持当前值。
32.51 cropdetect
自动检测裁剪大小。
它计算必要的裁剪参数,并通过日志系统打印 推荐的参数。检测到的尺寸根据模式.
接受以下参数:
- mode
根据模式裁剪检测基于周围像素的纯黑值或运动矢量和边缘像素的组合。
- ‘black’
检测播放视频周围的黑色像素。要进行精确控制,请使用选项限制.
- ‘mvedges’
通过视频内部的运动矢量检测播放中的视频,并扫描边缘像素(通常形成播放视频的边界)。
- limit
设置更高的黑色值阈值,可以选择指定值 从无(0)到全部(对于 8 位格式为 255)。 大于设置值的强度值会被视为非黑色。默认值为 24。 您还可以指定一个介于 0.0 到 1.0 之间的值,该值将根据像素格式的位深度进行缩放。
- round
设置宽度/高度应整除的值。默认值为 16。 偏移会自动调整以居中视频。使用 2 以仅获得偶数维度(针对 4:2:2 视频需要)。 编码到大多数视频编码时,16 是最佳选择。
- skip
设置初始帧数,在此期间跳过评估。 默认值是2。范围是0到INT_MAX。
- reset_count, reset
设置计数器,该计数器在检测到的最大视频区域重新设置并重新开始检测当前最佳裁剪区域之前决定经过的帧数。 默认值是 0。
当频道标志会干扰视频区域时,这可能会很有用。0 表示“从不重置”, 并返回播放期间遇到的最大区域。
- mv_threshold
设置作为运动检测阈值的像素单位运动。默认值为 8。
- low
- high
设置低阈值和高阈值,用于 Canny 阈值算法。
高阈值选择“强”边缘像素,然后这些强像素通过 8 连通性与低阈值选择的“弱”边缘像素连接。
低和高阈值必须选择在范围 [0,1] 中,并且低应小于或等于高.
低默认值为0.05
5/255
,高默认值为15/255
.
32.51.1 示例
- 查找视频周围有黑色边框的区域:
ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
- 查找嵌入的视频区域,事先生成运动矢量:
ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
- 查找嵌入的视频区域,使用解码器的运动矢量:
ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
32.51.2 命令
此过滤器支持以下命令:
- limit
命令接受与对应选项相同的语法。 如果指定的表达式无效,则继续保持其当前值。
32.52 延迟
延迟视频过滤,直到给定的墙钟时间戳。过滤器 首先传递preroll数量的帧,然后缓冲最多buffer数量的帧并等待提示。达到提示后 转发缓冲帧以及输入中的任何后续帧。
该过滤器可用于同步多个 ffmpeg 进程的输出,适用于 实时输出设备(例如 Decklink)。通过将该延迟放入过滤链中 并预缓冲帧,进程可以几乎在目标墙钟时间戳 到达后立即传递数据到输出。
不能保证完美的帧精度,但结果足以满足某些方案。
- cue
提示时间戳,以微秒为单位的 UNIX 时间戳表示。默认值为 0。
- preroll
以秒为单位通过预卷传递的内容持续时间。默认值为 0。
- buffer
在等待提示之前缓冲内容的最大持续时间,以秒为单位。默认值为0。
32.53曲线
通过曲线应用颜色调整。
此滤镜类似于Adobe Photoshop和GIMP中的曲线工具。每个组件(红色、绿色和蓝色)的值由N关键点通过平滑曲线相互连接来定义。x轴表示输入帧的像素值,y轴表示要为输出帧设置的新像素值。
默认情况下,一个组件曲线由两个点定义(0;0)和(1;1)。这创建了一条直线,其中每个原始像素值都被调整为其自身的值,这意味着图像没有变化。
该滤镜允许您重新定义这两个点并添加更多点。将定义一条新的曲线,使其平滑地通过所有这些新坐标。新定义的点需要在x轴上严格递增,并且它们的x和y值必须在[0;1]区间内。曲线通过使用自然或单调的三次样条插值形成,具体取决于interp选项(默认值为natural
)。natural
样条通常产生更平滑的曲线,而单调(pchip
)样条保证指定点之间的过渡是单调的。如果计算出的曲线恰好超出向量空间,将根据情况对值进行剪裁。
滤镜接受以下选项:
- preset
选择一项可用的颜色预设。此选项可以与r, g, b参数一起使用;在这种情况下,后者选项优先于预定义值。 可用的预设包括:
- ‘none’
- ‘color_negative’
- ‘cross_process’
- ‘darker’
- ‘increase_contrast’
- ‘lighter’
- ‘linear_contrast’
- ‘medium_contrast’
- ‘negative’
- ‘strong_contrast’
- ‘vintage’
默认值为
none
.- master, m
设置主关键点。这些点将定义第二次映射。这有时被称为"亮度"或"值"映射。可以与r, g, b或all一起使用,因为它的作用像后处理LUT。
- red, r
设置红色组件的关键点。
- green, g
设置绿色组件的关键点。
- blue, b
设置蓝色组件的关键点。
- all
设置所有组件(不包括主组件)的关键点。 可以与其他组件关键点选项一起使用。在这种情况下,未设置的组件将回落到此all设置。
- psfile
指定一个Photoshop曲线文件
.acv
)以导入设置。- plot
将曲线的Gnuplot脚本保存到指定文件。
- interp
指定插值类型。可用的算法包括:
- ‘natural’
自然三次样条,使用分段三次多项式,具有两次连续可微性。
- ‘pchip’
单调三次样条,使用分段三次Hermite插值多项式(PCHIP)。
为了避免一些滤镜图语法冲突,每个关键点列表需要使用以下语法进行定义:x0/y0 x1/y1 x2/y2 ...
.
32.53.1命令
此过滤器支持与选项相同的命令。
32.53.2示例
- 轻微提升蓝色的中间水平:
curves=blue='0/0 0.5/0.58 1/1'
- 复古效果:
curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
这里我们得到了每个组件的以下坐标:
- 红色
(0;0.11) (0.42;0.51) (1;0.95)
- 绿色
(0;0) (0.50;0.48) (1;1)
- 蓝色
(0;0.22) (0.49;0.44) (1;0.80)
- 之前的示例也可以通过相关的内置预设来实现:
curves=preset=vintage
- 或者简单地:
curves=vintage
- 使用Photoshop预设并重新定义绿色组件的点:
curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
- 检查曲线的
cross_process
配置文件使用ffmpeg
和gnuplot
:ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null - gnuplot -p /tmp/curves.plt
32.54数据范围
视频数据分析滤镜。
此滤镜显示部分视频的十六进制像素值。
滤镜接受以下选项:
- size, s
设置输出视频尺寸。
- x
设置拾取像素的x偏移量。
- y
设置拾取像素的y偏移量。
- mode
设置范围模式,可选值包括:
- ‘mono’
用白色在黑色背景上绘制十六进制像素值。
- ‘color’
用输入视频像素颜色在黑色背景上绘制十六进制像素值。
- ‘color2’
在从输入视频中拾取的彩色背景上绘制十六进制像素值,文字颜色按照总是可见的方式选择。
- axis
在视频的左边和顶部绘制行和列编号。
- opacity
设置背景透明度。
- format
设置显示的数字格式。可以是
hex
,或者dec
。默认值为hex
.- components
设置要显示的像素组件。默认情况下,显示所有像素组件。
32.54.1命令
此过滤器支持与选项相同的命令,不包括size
选项。
32.55方向模糊
应用方向模糊滤镜。
滤镜接受以下选项:
- angle
设置方向模糊的角度。默认值为
45
.- radius
设置方向模糊的半径。默认值为
5
.- planes
设置需要过滤的部分。默认情况下过滤所有部分。
32.55.1命令
此过滤器支持与选项相同的命令。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
32.56离散余弦去噪
使用二维离散余弦变换(频域过滤)对帧去噪。
此滤镜不为实时设计。
滤镜接受以下选项:
- sigma, s
设置噪声标准差常量。
此sigma定义了一个硬阈值的
3 * sigma
;每个绝对值低于此阈值的离散余弦系数将被丢弃。如果需要更高级的过滤机制,请参见expr.
默认值为
0
.- overlap
设置每个块的重叠像素数量。由于过滤器可能比较慢,您可以想要减少此值,但会导致过滤器效果不如之前并可能产生各种伪影。
如果重叠值未允许处理整个输入宽度或高度,将显示一个警告,并相应的边界不会被去噪。
默认值为块尺寸-1,这是最佳设置。
- expr, e
设置系数因子表达式。
对于离散余弦块的每个系数,此表达式将作为系数的一个乘子值进行评估。
如果此选项被设置,则sigma选项将被忽略。
离散余弦块绝对值可以通过c变量进行访问。
- n
通过定义位数设置块尺寸。
1<<n
定义了块尺寸,这是处理块的宽度和高度。默认值为3(8x8),可以提高到4以获得块尺寸的16x16块。注意更改此设置对处理速度有巨大影响。此外,较大的块尺寸并不一定意味着更好的去噪。
32.56.1示例
应用标准差为sigma的去噪。4.5
:
dctdnoiz=4.5
同样操作也可以使用表达式系统来实现:
dctdnoiz=e='gte(c, 4.5*3)'
使用块尺寸为16x16
:
dctdnoiz=15:n=4
的猛烈去噪。
去除输入视频中的带状伪影。 它通过用参考像素的平均值替换带状像素来工作。
滤镜接受以下选项:
- 1thr
- 2thr
- 3thr
- 4thr
为每个部分设置带状检测阈值。默认值为0.02。 有效范围为0.00003到0.5。 如果当前像素与参考像素之间的差异小于阈值,将被视为带状。
- range, r
带状检测范围,以像素为单位。默认是16。如果为正,使用从0到设置值区间内的随机数。如果为负,则使用确切的绝对值。 范围定义了当前像素周围四个像素的方块。
- direction, d
设置方向(以弧度为单位),从中比较四个像素。如果为正,随机方向从0到设置值区间内。如果为负,则选择绝对值。例如方向0,-PI或-2*PI弧度只选择同一行上的像素,-PI/2只选择同一列上的像素。
- blur, b
如果启用,将用所有四个周围像素的平均值与当前像素进行比较。默认值为启用。如果禁用,将单独比较当前像素与所有四个周围像素。如果只有所有四个与周围像素的差异都小于阈值,则像素被视为带状。
- coupling, c
如果启用,只有当所有像素组件都是带状时才更改当前像素,例如所有颜色组件的带状检测阈值都触发。 默认值为禁用。
32.57.1命令
此过滤器支持以上所有选项作为命令.
32.58去块
从输入视频中移除块状伪影。
滤镜接受以下选项:
- filter
设置过滤器类型,可以是弱或强。默认值为强。 这控制了应用什么类型的去块操作。
- block
设置块的大小,允许范围为4到512。默认值为8.
- alpha
- beta
- gamma
- delta
设置块检测阈值。允许范围为0到1。 默认值为:0.098对于alpha和0.05其他。 使用更高的阈值会增加去块强度。 设置alpha控制块的精确边缘检测阈值。 剩余选项控制块附近边缘的检测阈值。每个选项分别适用于低于/高于或左/右。如果将任何一个设置为0禁用去块。
- planes
设置需要过滤的平面。默认情况下对所有可用平面进行过滤。
32.58.1示例
- 使用弱过滤器和块大小为4像素的去块操作。
deblock=filter=weak:block=4
- 使用强过滤器、块大小为4像素,并自定义阈值以过滤更多边缘。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
- 类似上述操作,但仅过滤第一个平面。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
- 类似上述操作,但仅过滤第二个和第三个平面。
deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
32.58.2命令
此过滤器支持上述所有选项作为命令.
32.59抽取
在固定间隔处丢弃重复帧。
滤镜接受以下选项:
- cycle
设置丢弃一个帧所需的帧数。从中每N帧中丢弃一帧。 默认值为N frames will be dropped. Default is
5
.- dupthresh
设置重复检测的阈值。如果帧的差异度量小于或等于此值,则将其声明为重复帧。默认值为
1.1
- scthresh
设置场景变化的阈值。默认值为
15
.- blockx
- blocky
设置用于度量计算的x轴和y轴块的大小。较大的块提供更好的抗噪性,但在检测小运动时效果较差。必须是2的幂。默认值为
32
.- ppsrc
将主输入标记为预处理输入并激活纯净源输入流。这允许输入通过多种过滤器进行预处理,以帮助度量计算,同时保持帧选择无损。当设置为
1
时,第一个流为预处理输入,第二个流是纯净源,用于选择保留的帧。默认值为0
.- chroma
设置是否在度量计算中考虑颜色信息。默认值为
1
.- mixed
设置输入是否仅部分包含需要抽取的内容。 默认值为
false
。 如果启用,视频输出流将是可变帧率。
32.60去卷积
通过使用第二个流作为脉冲,对视频流进行频域的二维去卷积。
滤镜接受以下选项:
- planes
设置要处理的平面。
- impulse
设置将要处理的脉冲视频帧,可以是第一帧或所有帧。默认值为所有帧。.
- noise
在进行分割时设置噪声。默认值为0.0000001。当宽度和高度不相同且不是2的幂,或流在卷积之前有噪声时很有用。
此deconvolve
滤镜还支持同步帧选项。
32.61点去杂
从视频中减小交叉亮度(点爬行)和交叉颜色(彩虹效应)。
它接受以下选项:
- m
设置操作模式。可以是多个的组合。点爬纹用于减少交叉亮度和/或彩虹纹用于减少交叉颜色。
- lt
设置空间亮度阈值。值越低,交叉亮度的减少越多。
- tl
设置时间亮度的容差。值越高,交叉亮度的减少越多。
- tc
设置色度时间变化的容差。值越高,交叉颜色的减少越多。
- ct
设置时间色度阈值。值越低,交叉颜色的减少越多。
32.62 压缩
将压缩效果应用于视频。
此滤镜通过局部 (3x3) 平均值替换像素,仅考虑低于该像素的值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化,默认值为 65535。 如果为 0,平面将保持不变。
32.62.1 命令
此滤镜支持以上所有选项作为命令.
32.63 去闪烁
去除时间帧亮度的变化。
它接受以下选项:
- size, s
设置移动平均滤波器的帧大小。默认值为 5,允许范围是 2 - 129。
- mode, m
设置平滑时间亮度变化的平均方式。
可用的值有:
- ‘am’
算术平均
- ‘gm’
几何平均
- ‘hm’
调和平均
- ‘qm’
平方平均
- ‘cm’
立方平均
- ‘pm’
幂平均
- ‘median’
中值
- bypass
实际上不修改帧。当只是想要元数据时很有用。
32.64 去抖动
去除部分交错的电影化内容所产生的抖动。
例如,抖动可能由提取滤镜产生。如果原始来源是部分电影化内容,则输出pullup,dejudder
将具有可变帧率。这可能会更改容器的记录帧率。除此之外,此滤镜不会影响恒定帧率视频。
此滤镜可用的选项为:
- cycle
指定抖动重复的窗口长度。
接受大于 1 的任何整数。常用的值有:
- ‘4’
如果原始内容是从 24 fps 至 30 fps(电影到 NTSC)进行电影化。
- ‘5’
如果原始内容是从 25 fps 至 30 fps(PAL 到 NTSC)进行电影化。
- ‘20’
如果是两者的混合。
默认值为‘4’.
32.65 去标志
通过简单插值周围像素来抑制电视台的标志。只需设置一个覆盖标志的矩形并让它消失(有时可能会出现更丑陋的东西——结果可能有所不同)。
它接受以下参数:
- x
- y
指定标志的左上角坐标。必须指定。
- w
- h
指定要清除的标志的宽度和高度。必须指定。
- show
设置为 1 时,在屏幕上绘制一个绿色矩形以简化寻找合适的x, y, w和h参数。 默认值为 0。
矩形绘制在将被(部分)替换为插值值的最外层像素上。每个方向上位于此矩形之外的下一行像素将用于计算矩形内部的插值像素值。
32.65.1 示例
- 设置一个覆盖区域左上角坐标为 0,0,大小为 100x77 的矩形:
delogo=x=0:y=0:w=100:h=77
32.66 去雨
通过应用基于卷积神经网络的去雨方法来去除输入图像/视频中的雨水。支持的模型:
- 循环压缩及扩展上下文聚合网络(RESCAN)。 详见http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf.
训练以及模型生成脚本可在以下仓库中找到:https://github.com/XueweiMeng/derain_filter.git.
此滤镜接受以下选项:
- filter_type
指定要使用的滤镜。此选项接受以下值:
- ‘derain’
去雨滤镜。执行去雨滤镜需要使用去雨模型。
- ‘dehaze’
去雾滤镜。执行去雾滤镜需要使用去雾模型。
默认值为‘derain’.
- dnn_backend
指定用于模型加载和执行的 DNN 后端。此选项接受以下值:
- ‘tensorflow’
TensorFlow 后端。要启用此后端,您需要安装 TensorFlow 的 C 库(见https://www.tensorflow.org/install/lang_c)并配置 FFmpeg。
--enable-libtensorflow
- model
设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。TensorFlow 仅能加载其自身格式的文件。
为了获得完整功能(如异步执行),请使用dnn_processing滤镜。
32.67 去抖
尝试修复横向和/或纵向移动的小变化。 此滤镜有助于消除手持相机、碰撞三脚架、车辆移动等导致的相机抖动。
此滤镜接受以下选项:
- x
- y
- w
- h
指定一个矩形区域以限制运动向量的搜索。 如有需要,可将运动向量的搜索限制在由其左上角、宽度和高度定义的框架矩形区域中。 这些参数的含义与用于显示边界框位置的 drawbox 滤镜相同。
这在框中主体的同步移动可能会与运动向量搜索的相机运动混淆时很有用。
如果x, y, w和h中的任意一个或全部设置为 -1 则将使用整个框架。这允许在未指定运动向量搜索边界框的情况下设置后续选项。
默认值 - 搜索整个框架。
- rx
- ry
指定 x 和 y 方向的最大移动范围,范围为 0-64 像素。默认值为 16。
- edge
指定如何生成像素以填补框架边缘的空白区域。可用值为:
- ‘blank, 0’
在空白位置填充零
- ‘original, 1’
在空白位置使用原始图像
- ‘clamp, 2’
在空白位置使用挤出的边缘值
- ‘mirror, 3’
在空白位置使用镜像边缘
默认值为‘mirror’.
- blocksize
指定用于运动搜索的区块大小。范围为 4-128 像素,默认值为 8。
- contrast
指定区块的对比度阈值。只有对比度(最暗和最亮像素之间的差异)超过指定阈值的区块才会被考虑。范围为 1-255,默认值为 125。
- search
指定搜索策略。可用值为:
- ‘exhaustive, 0’
设置为全面搜索
- ‘less, 1’
设置为较少的全面搜索。
默认值为‘exhaustive’.
- filename
如果设置,则将详细的运动搜索日志写入指定文件。
32.68 消除溢色
去除由绿屏或蓝屏反射颜色引起的不必要的前景颜色污染。
此滤镜接受以下选项:
- type
设置要使用的溢色消除类型。
- mix
设置如何生成溢色图。
- expand
设置如何去除仍然残留的溢色。
- red
控制溢色区域红色的量。
- green
控制溢色区域绿色的量。 对于绿屏,应为 -1。
- blue
控制溢色区域蓝色的量。 对于蓝屏,应为 -1。
- brightness
控制溢色区域的亮度,同时保留原色。
- alpha
从生成的溢色图中修改 alpha 通道。
32.68.1 命令
此滤镜支持以上所有选项作为命令.
32.69 去电影化
应用电影化操作的精确反转。需要使用 pattern 选项指定一个预定义的模式,该模式必须与传递给电影化滤镜的模式相同。
此滤镜接受以下选项:
- first_field
- ‘top, t’
顶部字段优先
- ‘bottom, b’
底部字段优先 默认值为
top
.
- pattern
字符串,表示想要应用的电影提取模式。 默认值为
23
.- start_frame
表示第一个帧相对于电影化模式的位置的值。如果剪切了流,可以使用此选项。 默认值为
0
.
32.70 扩张
对视频应用扩张效果。
此滤镜通过局部 (3x3) 最大值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化,默认值为 65535。 如果为 0,平面将保持不变。
- coordinates
指定参考像素的标志。默认值为 255,即使用所有八个像素。
标志与局部 3x3 坐标的映射如下:
1 2 3 4 5 6 7 8
32.70.1 命令
此滤镜支持以上所有选项作为命令.
32.71 位移
根据第二和第三个输入流指示的内容移动像素。
它接受三个输入流并输出一个流,第一个输入为源,第二个和第三个输入为位移图。
第二个输入指定像素沿 x 轴的位移量,而第三个输入指定像素沿 y 轴的位移量。 如果位移图流中的一个终止,则将使用该位移图的最后一帧。
请注意,一旦生成,位移图可以反复重用。
以下是接受的选项说明。
- edge
设置超出范围像素的处理行为。
可用值为:
- ‘blank’
丢失的像素将被黑色像素代替。
- ‘smear’
相邻像素将扩展以代替丢失的像素。
- ‘wrap’
超出范围的像素会环绕指向屏幕另一侧的像素。
- ‘mirror’
超出范围的像素将用镜像像素代替。
默认值为‘smear’.
32.71.1 示例
- 为视频尺寸为 hd720 的 RGB 输入添加波纹效果:
ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
- 为视频尺寸为 hd720 的 RGB 输入添加波浪效果:
ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
32.72 dnn 分类
根据边界框使用深度神经网络进行分类。
此滤镜接受以下选项:
- dnn_backend
指定用于加载和执行模型的 DNN 后端。此选项目前仅支持 OpenVINO,将添加 TensorFlow 后端。
- model
设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。
- input
设置 dnn 网络的输入名称。
- output
设置 dnn 网络的输出名称。
- confidence
设置置信阈值(默认值:0.5)。
- labels
设置指定标签 id 和名称之间映射关系的标签文件路径。 每个标签名称占一行,尾部空格和空行会被跳过。 第一行是标签 ID 0 的名称, 第二行是标签 ID 1 的名称,依此类推。 如果未提供标签文件,则标签 ID 将被视为名称。
- backend_configs
设置要传递到后端的配置。
对于 TensorFlow 后端,您可以通过sess_config选项设置其配置, 请使用 tools/python/tf_sess_config.py 获取适合您系统的配置。
32.73 dnn 检测
使用深度神经网络进行目标检测。
此滤镜接受以下选项:
- dnn_backend
指定用于加载和执行模型的 DNN 后端。此选项目前仅支持 OpenVINO,将添加 TensorFlow 后端。
- model
设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。
- input
设置 dnn 网络的输入名称。
- output
设置 dnn 网络的输出名称。
- confidence
设置置信阈值(默认值:0.5)。
- labels
设置指定标签 id 和名称之间映射关系的标签文件路径。 每个标签名称占一行,尾部空格和空行会被跳过。 第一行是标签 ID 0(通常是“背景”), 第二行是标签 ID 1 的名称,依此类推。 如果未提供标签文件,则标签 ID 将被视为名称。
- backend_configs
设置要传递到后端的配置。要使用异步执行,请设置 async(默认值:set)。 如果后端不支持异步执行,将回滚为同步执行。
32.74 深度神经网络处理
使用深度神经网络进行图像处理。它与另一个过滤器协同工作,将帧的像素格式转换为深度神经网络所需的格式。
该过滤器接受以下选项:
- dnn_backend
指定使用哪个深度神经网络后端来加载和运行模型。本选项接受以下值:
- ‘tensorflow’
TensorFlow 后端。要启用此后端,需要安装 TensorFlow for C 库(见https://www.tensorflow.org/install/lang_c)并使用以下方式配置 FFmpeg
--enable-libtensorflow
- ‘openvino’
OpenVINO 后端。要启用此后端,需要构建并安装 OpenVINO for C 库(见https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md),并使用以下方式配置 FFmpeg
--enable-libopenvino
(如果未将头文件和库安装到系统路径中,则可能需要使用 –extra-cflags=-I... –extra-ldflags=-L...)- ‘torch’
Libtorch 后端。要启用此后端,需要构建并安装 Libtorch for C++ 库。请下载 cxx11 ABI 版本(见https://pytorch.org/get-started/locally),并使用以下方式配置 FFmpeg
--enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/
- model
设置模型文件的路径以指定网络架构及其参数。请注意,不同后端使用不同的文件格式。TensorFlow、OpenVINO 和 Libtorch 后端只能加载其格式的文件。
- input
设置深度神经网络的输入名称。
- output
设置深度神经网络的输出名称。
- backend_configs
设置要传递给后端的配置。要使用异步执行,请设置为 async(默认设置)。如果后端不支持异步,则回滚到同步执行。
对于 TensorFlow 后端,可以通过以下方式设置配置sess_config选项, 请使用 tools/python/tf_sess_config.py 获取您系统上 TensorFlow 后端的配置。
32.74.1 示例
- 使用 can.pb 删除 rgb24 帧中的雨水(见去雨过滤器):
./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
- 对 yuv420p(支持平面 YUV 格式)的帧使用 srcnn.pb 处理 Y 通道(见超分辨率过滤器):
./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
- 对 yuv420p(支持平面 YUV 格式)的帧使用 espcn.pb 处理 Y 通道(见超分辨率过滤器),该操作会更改帧大小,请使用 tools/python/tf_sess_config.py 获取您系统上 TensorFlow 后端的配置。
./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
32.75 绘制方框
在输入图像上绘制一个彩色方框。
它接受以下参数:
- x
- y
指定方框左上角坐标的表达式。默认值为 0。
- width, w
- height, h
指定方框的宽度和高度的表达式;如果为 0,则解释为输入宽度和高度。默认值为 0。
- color, c
指定方框的颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册。如果使用特殊值
invert
,方框边缘颜色将与视频相同,但亮度取反。- thickness, t
设置方框边缘厚度的表达式。 值为
fill
将创建填充的方框。默认值是3
.请参阅下面的接受常量列表。
- replace
适用于输入具有 alpha 通道的情况。如果值为
1
,绘制的方框像素 将覆盖视频的色彩和 alpha 像素。 默认值为0
,它将方框合成到输入中,保留视频的 alpha 通道。
参数x, y, w和h以及t是包含以下常量的表达式:
- dar
输入显示纵横比,与 (w / h) * sar.
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式 "yuv422p"hsub是 2 而vsub是 1。
- in_h, ih
- in_w, iw
输入的宽度和高度。
- sar
输入的像素纵横比。
- x
- y
绘制方框的 x 和 y 偏移坐标。
- w
- h
绘制方框的宽度和高度。
- box_source
盒子的来源可以设置为 side_data_detection_bboxes,如果您希望使用来自边数据检测的盒子数据。
如果box_source已设置,x, y, width和height将被忽略,并仍然使用边数据检测中的盒子数据。因此,如果您不确定盒子来源,请不要使用此参数。
- t
绘制方框的厚度。
这些常量允许x, y, w, h和t表达式相互引用,因此您可以例如指定
y=x/dar
或h=w/dar
.
32.75.1 示例
- 在输入图像边缘绘制一个黑色方框:
drawbox
- 绘制一个颜色为红色且透明度为 50% 的方框:
drawbox=10:20:200:60:red@0.5
上一个示例可指定为:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
- 填充方框为粉红色:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
- 绘制一个 2 像素厚的红色 2.40:1 遮罩:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
32.75.2 命令
此过滤器支持与选项相同的命令。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
32.76 绘制图表
使用输入视频元数据绘制图表。
它接受以下参数:
- m1
设置第一个帧元数据键,其元数据值将用于绘制图表。
- fg1
设置第一个前景色表达式。
- m2
设置第二个帧元数据键,其元数据值将用于绘制图表。
- fg2
设置第二个前景色表达式。
- m3
设置第三个帧元数据键,其元数据值将用于绘制图表。
- fg3
设置第三个前景色表达式。
- m4
设置第四个帧元数据键,其元数据值将用于绘制图表。
- fg4
设置第四个前景色表达式。
- min
设置元数据值的最小值。
- max
设置元数据值的最大值。
- bg
设置图表背景颜色。默认是白色。
- mode
设置图表模式。
模式可用的值为:
- ‘bar’
- ‘dot’
- ‘line’
默认值为
line
.- slide
设置滑动模式。
滑动模式可用的值为:
- ‘frame’
右边框到达时绘制新的帧。
- ‘replace’
用新的列替换旧的列。
- ‘scroll’
从右向左滚动。
- ‘rscroll’
从左向右滚动。
- ‘picture’
绘制单一图片。
默认值为
frame
.- size
设置图表视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分中的 ffmpeg-utils 手册。 默认值为
900x256
.- rate, r
设置输出帧率。默认值为
25
.前景色表达式可以使用以下变量:
- MIN
元数据值的最小值。
- MAX
元数据值的最大值。
- VAL
当前元数据键的值。
颜色定义为 0xAABBGGRR。
使用来自signalstats过滤器的元数据示例:
signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
使用来自ebur128过滤器的元数据示例:
ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
32.77 绘制网格
在输入图像上绘制一个网格。
它接受以下参数:
- x
- y
指定网格相交点某点的坐标的表达式(用于配置偏移量)。两者默认值为 0。
- width, w
- height, h
指定网格单元的宽度和高度的表达式。如果为 0,则分别解释为输入宽度和高度减去
thickness
,使图像 被框住。默认值为 0。- color, c
指定网格颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册。如果使用特殊值
invert
,网格颜色将与视频相同,但亮度取反。- thickness, t
设置网格线厚度的表达式。默认值为
1
.请参阅下面的接受常量列表。
- replace
适用于输入具有 alpha 通道的情况。值为
1
时,绘制的网格像素 将覆盖视频的色彩和 alpha 像素。 默认值为0
,它将网格合成到输入中,保留视频的 alpha 通道。
参数x, y, w和h以及t是包含以下常量的表达式:
- dar
输入显示纵横比,与 (w / h) * sar.
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式 "yuv422p"hsub是 2 而vsub是 1。
- in_h, ih
- in_w, iw
输入的网格单元宽度和高度。
- sar
输入的像素纵横比。
- x
- y
网格相交点某点的 x 和 y 坐标(用于配置偏移量)。
- w
- h
绘制单元的宽度和高度。
- t
绘制单元的厚度。
这些常量允许x, y, w, h和t表达式相互引用,因此您可以例如指定
y=x/dar
或h=w/dar
.
32.77.1 示例
- 绘制一个单元为 100x100 像素、厚度为 2 像素、颜色为红色且透明度为 50% 的网格:
drawgrid=width=100:height=100:thickness=2:color=red@0.5
- 绘制一个白色 3x3 网格,透明度为 50%:
drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
32.77.2 命令
此过滤器支持与选项相同的命令。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
32.78 绘制文本
使用 libfreetype 库在视频顶部绘制文本字符串或从指定的文件中绘制文本。
要启用此过滤器的编译,需要使用以下方式配置 FFmpeg--enable-libfreetype
和--enable-libharfbuzz
。
要启用默认字体回退以及字体选项,您需要使用以下方式配置 FFmpeg--enable-libfontconfig
。
要启用文本成形选项,您需要使用以下方式配置 FFmpeg--enable-libfribidi
.
32.78.1 语法
它接受以下参数:
- box
使用背景颜色在文本周围绘制一个框。 该值必须为 1(启用)或 0(禁用)。框的默认值为 0。
- boxborderw
设置用于在文本周围绘制框的边框宽度,使用框颜色。 该值必须使用以下格式之一指定:
-
boxborderw=10
设置所有边框宽度为 10 -
boxborderw=10|20
设置顶部和底部边框宽度为 10 左右边框宽度为 20 -
boxborderw=10|20|30
设置顶部边框宽度为 10,底部边框宽度为 30 左右边框宽度为 20 -
boxborderw=10|20|30|40
设置边框宽度为 10(顶部)、20(右侧)、 30(底部)、40(左侧)
框边框宽度的默认值为 "0"。 is "0".
-
- boxcolor
设置用于在文本周围绘制框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册.
框颜色的默认值为 "白色"。 is "white".
- line_spacing
设置行间距(以像素为单位)。行间距的默认值为 0。
- text_align
设置文本相对于框边界的垂直和水平对齐方式。 该值是标志的组合,一个用于垂直对齐(T=顶部,M=中间,B=底部) 一个用于水平对齐(L=左侧,C=居中,R=右侧)。 请注意,制表符字符仅在左水平对齐的情况下支持。
- y_align
指定y值的参考内容。可能的值包括:
-
text
第一行文本中最高字形的顶部与y -
baseline
第一行文本的基线与y -
font
第一行文本的基线与y加上字体指标中定义的上升部分(以像素为单位)一起放置
y 对齐的默认值是 "文本",以保持向后兼容性。 is "text" for backward compatibility.
-
- borderw
设置用于在文本周围绘制框的边框宽度,使用边框颜色。 边框宽度的默认值为 0。 is 0.
- bordercolor
设置用于在文本周围绘制边框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册.
边框颜色的默认值为 "黑色"。 is "black".
- expansion
选择扩展文本的方式。可以是
none
,strftime
(已弃用) 或normal
(默认)。有关详细信息,请参阅文本扩展章。- basetime
设置计数开始时间。值以微秒为单位。仅在已弃用的
strftime
扩展模式下应用。要在正常扩展模式下模拟,请使用pts
函数,并提供开始时间(以秒为单位)作为第二个参数。- fix_bounds
如果为真,检查并修复文本坐标以避免裁剪。
- fontcolor
用于绘制字体的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分在ffmpeg-utils手册中的内容.
默认值为fontcolor(字体颜色)是"黑色"。
- fontcolor_expr
一个字符串,与文本一样扩展以动态获取fontcolor(字体颜色)值。默认情况下,此选项为空值且不会被处理。当此选项设置时,它将覆盖fontcolor(字体颜色)选项。
- font
用于绘制文本的字体系列。默认值是Sans。
- fontfile
用于绘制文本的字体文件。路径必须包括在内。如果字体配置支持被禁用,此参数是必需的。
- alpha
绘制文本应用 alpha 混合。值可以是 0.0 到 1.0之间的数字。表达式也接受相同的变量x, y默认值是1。 请参阅fontcolor_expr(字体颜色表达式).
- fontsize
用于绘制文本的字体大小。 默认值为fontsize(字体大小)是16。
- text_shaping
如果设置为1,则在绘制文本之前尝试对文本进行处理成形(例如,逆转从右到左的文本顺序并合并阿拉伯字符)。否则,仅准确地显示给出的文本。 默认值为1(如果支持)。
- ft_load_flags
用于加载字体的标志。
标志映射到libfreetype支持的相应标志,并是以下值的组合:
- default(默认)
- no_scale(无缩放)
- no_hinting(无提示)
- render(渲染)
- no_bitmap(不使用位图)
- vertical_layout(垂直布局)
- force_autohint(强制自动提示)
- crop_bitmap(裁剪位图)
- pedantic(拘泥于细节)
- ignore_global_advance_width(忽略全局提前宽度)
- no_recurse(无递归)
- ignore_transform(忽略转换)
- monochrome(单色)
- linear_design(线性设计)
- no_autohint(无自动提示)
默认值是"default"。
有关详细信息,请查阅FT_LOAD_* libfreetype标志的文档。
- shadowcolor
用于绘制文本后面的阴影的颜色。有关此选项的语法,请检查(ffmpeg-utils)"颜色"部分在ffmpeg-utils手册中的内容.
默认值为shadowcolor(阴影颜色)是"黑色"。
- boxw
设置绘制在文本周围的框的宽度。 默认值为boxw(框宽度)自动根据文本宽度计算。
- boxh
设置绘制在文本周围的框的高度。 默认值为boxh(框高度)自动根据文本高度计算。
- shadowx
- shadowy
文本阴影位置相对于文本位置的x和y偏移量。它们可以是正值或负值。 默认值为"0"。
- start_number
对于 n/frame_num 变量的初始帧号。默认值为"0"。
- tabsize
用于渲染制表符的空格大小。 默认值为4。
- timecode
设置"hh:mm:ss[:;.]ff"格式的初始时间码表示形式。它可以与或不与文本参数一起使用。timecode_rate(时间码速率)选项必须被指定。
- timecode_rate, rate, r
设置时间码帧速率(仅限时间码)。值将四舍五入到最接近的整数。 最小值为"1"。 对于帧率30和60,支持掉帧时间码。
- tc24hmax
如果设置为1,则时间码选项的输出将在24小时后回绕。 默认值为0(禁用)。
- text
要绘制的文本字符串。文本必须是UTF-8编码字符的序列。 如果未用参数指定文件,则此参数为必填项textfile(文本文件).
- textfile
包含要绘制文本的文本文件。文本必须是UTF-8编码字符的序列。
如果未通过参数指定文本字符串,则此参数为必填项文本.
如果同时指定了文本和文本文件将引发错误。
- text_source
如果希望在检测侧数据的边界框中使用文本数据,应将文本源设置为side_data_detection_bboxes。
如果设置为文本源,文本和文本文件将被忽略,并仍然使用检测侧数据边界框中的文本数据。因此,如果不确定文本源,请不要使用此参数。
- reload
文本文件将在指定帧间隔重新加载。 请确保原子更新 will be reloaded at specified frame interval. Be sure to update 文本文件否则可能会部分读取,甚至失败。 范围是0到INT_MAX。默认值是0。
- x
- y
指定文本将在视频帧内绘制的偏移的表达式。 它们相对于输出图像的顶/左边框。
默认值为x和y是"0"。
请参阅下面列出可接受的常量和函数。
对于x和y的参数是包含以下常量和函数的表达式:
- dar
输入显示宽高比,等于(宽度 / 高度) * sar(样本宽高比)
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。
- line_h, lh
每行文本的高度
- main_h, h, H
输入高度
- main_w, w, W
输入宽度
- max_glyph_a, ascent
从基线到最高/上网格坐标的最大距离,用于放置所有渲染字符轮廓点。 它是正值,因为网格的方向Y轴向上。
- max_glyph_d, descent
从基线到最低网格坐标的最大距离,用于放置所有渲染字符轮廓点。 这是负值,因为网格的方向是Y轴向上。
- max_glyph_h
最大字形高度,即渲染文本中所有字形的最大高度,相当于升高 - 降低.
- max_glyph_w
最大字形宽度,即渲染文本中所有字形的最大宽度。
- font_a
在字体度量中定义的上升尺寸
- font_d
在字体度量中定义的下降尺寸
- top_a
第一行文本字形的最大上升
- bottom_d
最后一行文本字形的最大下降
- n
输入帧数,从0开始
- rand(min, max)
返回一个最小值和最大值
- sar
输入样本宽高比。
- t
时间戳以秒表示,如果输入时间戳未知则为NAN
- text_h, th
渲染文本的高度
- text_w, tw
渲染文本的宽度
- x
- y
绘制文本时的x和y偏移坐标。
这些参数允许x和y表达式相互关联,因此您可以例如指定
y=x/dar
.- pict_type
当前帧图片类型的一字符描述。
- pkt_pos
当前包在输入文件或流中的位置 (从输入开始的字节)。值为-1表示此信息不可用。
- duration
当前包的持续时间,以秒为单位。
- pkt_size
当前包的大小(以字节为单位)。
32.78.2 文本扩展
如果expansion设置为strftime
,过滤器在提供的文本中识别strftime
C函数接受的序列并据此扩展。请查看strftime
的文档。normal
此功能已被推荐使用gmtime
或localtime
扩展函数替代。
如果expansion设置为none
,则会原样打印文本。
如果expansion设置为normal
(默认值),则使用以下扩展机制。
反斜杠字符"\",后跟任何字符,总是扩展到第二个字符。
形式上的序列%{...}
将被扩展。括号之间的文本是一个函数名称,可能后跟用‘:’分隔的参数列表。
如果参数中包含特殊字符或分隔符(‘:’或‘}’),则它们需要被转义。
请注意,这些字符可能还需要作为text选项在过滤器参数字符串中的值转义,以及作为过滤器图描述中的过滤器参数转义,可能还需要为shell转义,总计最多需要四级转义;使用textfile选项的文本文件可以避免这些问题。
以下功能可用:
expr, e
表达式评估结果。
它必须采用一个指定要评估的表达式的参数,接受与x和y值相同的常量和函数。请注意,并非所有常量都应使用,例如,在评估表达式时,文本大小未知,因此常量文本宽度和文本高度将具有未定义值。
expr_int_format, eif
评估表达式的值并作为格式化整数输出。
第一个参数是要评估的表达式,与expr函数一样。x’, ‘X’, ‘d第二个参数指定输出格式。允许的值包括‘u’和‘
printf
’。它们与gmtime
过滤器运行时的时间,以UTC表示。 它可以接受一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N打印秒的分数部分,可选择指定数字位数。localtime
过滤器运行时的时间,以当地时区表示。 它可以接受一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N打印秒的分数部分,可选择指定数字位数。metadata
帧元数据。有两个参数。
第一个参数是强制性的,指定元数据键。
第二个参数是可选的,当找不到或元数据键为空时,使用默认值。
可用元数据可以通过检查每帧部分中的TAG条目识别,运行后打印
ffprobe -show_frames
.过滤器之前生成的字符串元数据也可用。
n, frame_num
帧号,从0开始。
pict_type
当前图片类型的一字符描述。
pts
当前帧的时间戳。 它最多可以接受三个参数。
第一个参数是时间戳的格式;默认值为
flt
以秒为单位的小数数字,精确到微秒;hms
表示格式化的[-]HH:MM:SS.mmm时间戳,精确到毫秒。gmtime
表示UTC时间格式化的帧时间戳;localtime
表示以本地时区时间格式化的帧时间戳。第二个参数是要加到时间戳的偏移量。
如果格式设置为
hms
,第三个参数24HH
可以 用于以24小时格式(00-23)显示格式化时间戳的小时部分。如果格式设置为
localtime
或gmtime
,可以提供第三个参数:一个strftime
C函数格式字符串。 默认情况下,YYYY-MM-DD HH:MM:SS格式将被使用。
32.78.3 命令
此过滤器支持通过命令更改参数:
- reinit
更改现有过滤参数。
参数的语法与过滤器调用的语法相同,例如。
fontsize=56:fontcolor=green:text='Hello World'
带有 sendcmd 的完整过滤器调用如下:
sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
如果整个参数无法解析或应用为有效值,则过滤器将继续使用其现有参数。
以下选项也支持作为命令:
- x
- y
- alpha
- fontsize(字体大小)
- fontcolor(字体颜色)
- boxcolor(框颜色)
- bordercolor(边框颜色)
- shadowcolor(阴影颜色)
- box
- boxw(框宽度)
- boxh(框高度)
- boxborderw(框边框宽度)
- line_spacing(行间距)
- text_align(文本对齐)
- shadowx(阴影x位置)
- shadowy(阴影y位置)
- borderw
32.78.4 示例
- 使用FreeSerif字体绘制"测试文本",采用可选参数的默认值。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
- 使用FreeSerif字体大小为24在位置x=100和y=50上绘制"测试文本"(从屏幕左上角开始计数),文本颜色为黄色,并带有一个红色框。文本和框均具有20%的不透明度。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\ x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
请注意,如果参数列表中不使用空格,则不需要使用双引号。
- 在视频帧的中心显示文本:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
- 在随机位置显示文本,每30秒切换到新位置:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
- 在视频帧的最后一行显示一行从右向左滑动的文本。文件LONG_LINE被认为只包含单行且没有换行符。
drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
- 显示文件的内容CREDITS从帧底部滚动并向上移动。
drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
- 在输入视频的中心绘制一个绿色字母"g"。字形的基线位于屏幕高度的一半。
drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
- 每3秒显示1秒的文本:
drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
- 使用fontconfig设置字体。注意需要为冒号加上转义。
drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
- 根据视频高度绘制字体大小可变的"测试文本"。
drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
- 打印实时编码的日期(请参阅
strftime
C函数)的文档:drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}'
- 显示淡入淡出的文本(出现/消失):
#!/bin/sh DS=1.0 # display start DE=10.0 # display end FID=1.5 # fade in duration FOD=5 # fade out duration ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"
- 水平对齐多个单独的文本。注意max_glyph_a和fontsize值包含在y偏移中。
drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a, drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
- 绘制特殊lavf.image2dec.source_basename元数据到每一帧(如果此类元数据存在)。否则,绘制字符串"NA"。注意,image2解复用器必须启用选项-export_path_metadata 1以使滤镜可用特殊元数据字段。
drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
关于libfreetype的更多信息,请访问:http://www.freetype.org/.
关于fontconfig的更多信息,请访问:http://freedesktop.org/software/fontconfig/fontconfig-user.html.
关于libfribidi的更多信息,请访问:http://fribidi.org/.
关于libharfbuzz的更多信息,请访问:https://github.com/harfbuzz/harfbuzz.
32.79 边缘检测
检测并绘制边界。该滤镜使用Canny边缘检测算法。
该滤镜接受以下选项:
- low
- high
设置Canny阈值算法使用的低阈值和高阈值。
高阈值选择"强"边缘像素,然后通过8连接性连接由低阈值选择的"弱"边缘像素。
低和高阈值必须在范围[0,1]内,并且低应小于或等于高.
低的默认值是low is
20/255
,高的默认值是high is50/255
.- mode
定义绘制模式。
- ‘wires’
在黑色背景上绘制白色/灰色线条。
- ‘colormix’
混合颜色以创建油画/卡通效果。
- ‘canny’
对所有选定的平面应用Canny边缘检测器。
默认值是wires.
- planes
选择要过滤的平面。默认情况下,过滤所有可用平面。
32.79.1 示例
- 具有自定义滞后阈值的标准边缘检测:
edgedetect=low=0.1:high=0.4
- 无阈值的绘画效果:
edgedetect=mode=colormix:high=0
32.80 elbg
使用ELBG(增强型LBG)算法应用色彩分层效果。
对于每个输入图像,滤镜将根据码书长度(即输出的独特颜色数)计算输入到输出的最佳映射。
滤镜接受以下选项。
- codebook_length, l
设置码书长度。值必须是正整数,表示独特输出颜色的数量。默认值为256。
- nb_steps, n
设置最大迭代次数以计算最佳映射。值越高,结果越好,计算时间也越长。默认值为1。
- seed, s
设置随机种子,必须是在0和UINT32_MAX之间的整数。如果未指定或者显式设置为-1,滤镜将尽可能使用优秀的随机种子。
- pal8
设置pal8输出像素格式。此选项不适用于码书长度大于256的情况。默认禁用。
- use_alpha
在量化计算中包含alpha值。允许创建带有多种alpha平滑混合的调色板输出图像(例如PNG8)。
32.81 熵
测量视频帧颜色通道直方图的灰度熵。
它接受以下参数:
- mode
可以为正常或差分。默认是正常.
差分模式测量直方图差值的熵,即相邻直方图值的绝对差。
32.82 epx
应用专为像素艺术设计的EPX放大滤镜。
它接受以下选项:
- n
设置缩放维度:
2
对于2xEPX
,3
对于3xEPX
。 默认是3
.
32.83 eq
设置亮度、对比度、饱和度和近似伽玛调整。
滤镜接受以下选项:
- contrast
设置对比度表达式。该值必须为范围
-1000.0
到1000.0
内的浮点值。默认值为"1"。- brightness
设置亮度表达式。该值必须在范围
-1.0
到1.0
内的浮点值。默认值为"0"。- saturation
设置饱和度表达式。该值必须在范围
0.0
到3.0
内的浮点值。默认值为"1"。- gamma
设置伽玛表达式。该值必须在范围
0.1
到10.0
内的浮点值。默认值为"1"。- gamma_r
设置红色伽玛表达式。值必须在范围
0.1
到10.0
内的浮点值。默认值为"1"。- gamma_g
设置绿色伽玛表达式。值必须在范围
0.1
到10.0
内的浮点值。默认值为"1"。- gamma_b
设置蓝色伽玛表达式。值必须在范围
0.1
到10.0
内的浮点值。默认值为"1"。- gamma_weight
设置伽玛权重表达式。可以用于减少高伽玛值对图像亮区的影响,例如防止它们被过度放大成纯白。该值必须为范围
0.0
到1.0
内的浮点值。值为0.0
时完全关闭伽玛校正,而1.0
时保持其完全强度。默认为"1"。- eval
设置何时评估亮度、对比度、饱和度和伽玛表达式。
它接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时评估表达式一次
- ‘frame’
为每个输入帧评估表达式
默认值是‘init’.
表达式接受以下参数:
- n
从0开始的输入帧的帧计数
- pos
输入文件中对应数据包的字节位置,如果未指定则为NAN;已弃用,请勿使用
- r
输入视频的帧率,如果帧率未知则为NAN
- t
以秒为单位的时间戳,如果输入时间戳未知则为NAN
32.83.1 命令
滤镜支持以下命令:
- contrast
设置对比度表达式。
- brightness
设置亮度表达式。
- saturation
设置饱和度表达式。
- gamma
设置伽玛表达式。
- gamma_r
设置gamma_r表达式。
- gamma_g
设置gamma_g表达式。
- gamma_b
设置gamma_b表达式。
- gamma_weight
设置gamma_weight表达式。
命令接受与对应选项相同的语法。
如果指定的表达式无效,则保留当前值。
32.84 腐蚀
对视频应用腐蚀效果。
该滤镜用局部(3x3)最小值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
为每个平面限制最大变化默认值为65535。如果为0,则平面保持不变。
- coordinates
设定参考像素的标志。默认值为255,即使用所有8个像素。
将标志对应到局部3x3坐标,如下所示:
1 2 3 4 5 6 7 8
32.84.1 命令
此滤镜支持以上所有选项作为命令.
32.85 estdif
对输入视频进行去隔行("estdif"代表"边缘斜率跟踪去隔行滤镜")。
仅限于空间的滤镜,使用边缘斜率跟踪算法插值丢失的行。 它接受以下参数:
- mode
要采用的隔行模式。接受以下值之一:
- frame
每帧输出一帧。
- field
每场输出一帧。
默认值是
field
.- parity
为输入隔行视频假定的场奇偶性。接受以下值之一:
- tff
假设上场优先。
- bff
假设下场优先。
- auto
启用场奇偶性自动检测。
默认值是
auto
。 如果隔行状态未知或解码器未导出此信息,则假定为上场优先。- deint
指定要去隔行的帧。接受以下值之一:
- all
对所有帧去隔行。
- interlaced
仅对标记为隔行的帧去隔行。
默认值是
all
.- rslope
指定用于边缘斜率跟踪的搜索半径。默认值为1。 允许范围为1到15。
- redge
指定用于最佳边缘匹配的搜索半径。默认值为2。 允许范围为0到15。
- ecost
指定用于边缘匹配的边缘成本。默认值为2。 允许范围为0到50。
- mcost
指定用于边缘匹配的中间成本。默认值为1。 允许范围为0到50。
- dcost
指定用于边缘匹配的距离成本。默认值为1。 允许范围为0到50。
- interp
指定使用的插值。默认是4点插值。接受以下值之一:
- 2p
两点插值。
- 4p
四点插值。
- 6p
六点插值。
32.85.1 命令
此滤镜支持与选项相同的命令。 as options.
32.86 曝光
调整视频流的曝光。
滤镜接受以下选项:
- exposure
设置曝光校正值(单位为EV)。允许范围为-3.0到3.0 EV。 默认值为0 EV。
- black
设置黑电平校正。允许范围为-1.0到1.0。 默认值为0。
32.86.1 命令
此滤镜支持与选项相同的命令。 as options.
32.87 提取平面
将输入视频流的颜色通道组件提取为单独的灰度视频流。
滤镜接受以下选项:
- planes
设置要提取的平面。
平面可用值有:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
选择输入中不可用的平面将会导致错误。 这意味着不能同时选择
r
,g
,b
planes withy
,u
,v
平面。
32.87.1 示例
- 提取输入视频帧中的亮度、u和v颜色通道组件为三个灰度输出:
ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
32.88 渐变
对输入视频应用渐入/渐出效果。
它接受以下参数:
- type, t
效果类型可以为"in"(渐入)或"out"(渐出)。 默认是
in
.- start_frame, s
指定开始应用渐变效果的帧编号。默认是0。
- nb_frames, n
渐变效果持续的帧数。在渐入效果结束时,输出视频的明暗度将与输入视频相同。 在渐出过渡结束时,输出视频将填充为选定的color。 默认是25。
- alpha
如果设置为1,则仅对alpha通道渐变(如果输入中存在alpha通道)。 默认值为0。
- start_time, st
指定开始应用渐变效果的帧的时间戳(单位为秒)。如果同时指定了start_frame和start_time,则渐变将从两者中较晚的时间开始。 默认是0。
- duration, d
渐变效果需要持续的秒数。在渐入效果结束时,输出视频的明暗度将与输入视频相同, 在渐出过渡结束时,输出视频将填充为选定的color。 如果同时指定了duration和nb_frames,则以duration为准。默认是0(默认使用nb_frames)。
- color, c
指定渐变的颜色。默认是"黑色"。
32.88.1 示例
- 为视频的前30帧应用渐入效果:
fade=in:0:30
上述命令等价于:
fade=t=in:s=0:n=30
- 为一个200帧的视频的最后45帧应用渐出效果:
fade=out:155:45 fade=type=out:start_frame=155:nb_frames=45
- 在一个1000帧的视频中,前25帧淡入,最后25帧淡出:
fade=in:0:25, fade=out:975:25
- 使前5帧变成黄色,然后在第5到24帧之间渐显:
fade=in:5:20:color=yellow
- 在视频的前25帧中渐显透明度:
fade=in:0:25:alpha=1
- 使前5.5秒变成黑色,然后在接下来的0.5秒内渐显:
fade=t=in:st=5.5:d=0.5
32.89反馈
应用反馈视频滤镜。
此滤镜将裁剪的输入帧传递到第二个输出。从那里可以通过其他视频滤镜进行处理。在滤镜从第二个输入接收到帧后,该帧与来自第一个输入的原始帧组合并传递到第一个输出。
典型用途是仅过滤帧的一部分。
滤镜接受以下选项:
- x
- y
设置裁剪区域的左上角位置。
- w
- h
设置裁剪大小。
32.89.1 示例
- 使用gblur滤镜仅模糊视频帧左上角大小为100x100的矩形部分。
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
- 使用drawbox滤镜在视频帧的左上角大小为100x100的部分绘制黑框。
[in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
- 使用pixelize滤镜对视频帧大小为100x100的矩形部分进行像素化处理。
[in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
32.90 fftdnoiz
使用3D FFT(频域过滤)去噪帧。
滤镜接受以下选项:
- sigma
设置噪声的sigma常量。这决定了降噪强度。默认值为1。允许范围是0到30。使用非常高的sigma结合低重叠可能会产生块状伪影。
- amount
设置降噪量。默认情况下所有检测到的噪声都会被减少。默认值为1,允许范围是0到1。
- block
设置块大小,以像素为单位。默认值为32,可以是8到256。
- overlap
设置块的重叠量。默认值为0.5,允许范围是0.2到0.8。
- method
设置降噪方法。默认值为
wiener
,也可以是hard
.- prev
设置用于降噪的前帧数量。默认情况下设为0。
- next
设置用于降噪的后帧数量。默认情况下设为0。
- planes
设置将被过滤的平面,默认情况下滤除了alpha以外的所有可用平面。
32.91 fftfilt
在频域对样本应用任意表达式
- dc_Y
调整图像亮度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设为0
.- dc_U
调整图像第一个色度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设为0
.- dc_V
调整图像第二个色度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设为0
.- weight_Y
设置亮度平面的频域权重表达式。
- weight_U
设置第一个色度平面的频域权重表达式。
- weight_V
设置第二个色度平面的频域权重表达式。
- eval
设置表达式的评估时间。
接受以下值:
- ‘init’
仅在滤镜初始化期间评估表达式一次。
- ‘frame’
为每个传入帧评估表达式。
默认值为‘init’.
滤镜接受以下变量:
- X
- Y
当前样本的坐标。
- W
- H
图像的宽度和高度。
- N
输入帧的数量,从0开始。
- WS
- HS
用于水平和垂直处理的FFT数组大小。
32.91.1 示例
- 高通滤波:
fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
- 低通滤波:
fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
- 锐化:
fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
- 模糊:
fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
32.92 field
使用步幅算法从隔行视频中提取单个字段以避免浪费CPU时间。输出帧标记为非隔行。
滤镜接受以下选项:
- type
指定是否提取顶部字段(如果值为
0
或top
)或底部字段(如果值为1
或bottom
).
32.93 fieldhint
通过从提示文件提供的周围帧中的顶部和底部字段复制来创建新帧。
- hint
设置包含提示的文件:绝对/相对帧数。
剪辑中的每一帧必须有一行。每行必须包含两个用逗号分隔的数字,后面可选
-
或+
。文件中每一行提供的数字不能超出[N-1,N+1]范围,其中N是当前帧数针对absolute
模式或超出[-1, 1]范围针对relative
模式。第一个数字表示从哪一帧获取顶部字段,第二个数字表示从哪一帧获取底部字段。如果后面可选
+
输出帧将标记为隔行,否则如果后面是-
输出帧将被标记为渐进,否则将标记为与输入帧相同。如果后面可选t
输出帧将仅使用顶部字段,或者在b
情况下将仅使用底部字段。如果行以#
或;
开头,则该行将被跳过。- mode
可以是项目
absolute
或relative
或pattern
。默认值为absolute
。pattern
模式与relative
模式相同,除非文件的最后一个条目如果还有更多帧要处理那么hint
文件将被重新定位到开始处。
针对hint
模式的relative
文件的前几行示例:
0,0 - # first frame 1,0 - # second frame, use third's frame top field and second's frame bottom field 1,0 - # third frame, use fourth's frame top field and third's frame bottom field 1,0 - 0,0 - 0,0 - 1,0 - 1,0 - 1,0 - 0,0 - 0,0 - 1,0 - 1,0 - 1,0 - 0,0 -
32.94 fieldmatch
用于逆插帧的字段匹配滤镜。它旨在从插帧流中重构渐进帧。滤镜不会删除重复帧,因此完成逆插帧fieldmatch
需要后接过滤器链中的去重滤镜,例如decimate。
字段匹配和去重的分离尤其是出于在两者之间插入去隔行滤镜的可能性。如果源具有插帧和真正隔行内容的混合,fieldmatch
将无法匹配隔行部分的字段。但这些remaining combed frames 将被标记为隔行,因此可以由后续滤镜如yadif在去重前进行去隔行处理。
除了各种配置选项之外fieldmatch
可以通过ppsrc选项激活可选的第二个流。如果启用,帧重建将基于来自第二个流的字段和帧。这允许第一个输入被预处理,以帮助滤镜的各种算法,同时保持输出无损(假设字段正确匹配)。通常情况下,基于字段的去噪器或亮度/对比度调整可以提供帮助。
请注意,此滤镜使用了与TIVTC/TFM(AviSynth项目)以及VIVTC/VFM(VapourSynth项目)相同的算法。后者是TFM的一个轻量克隆,基于此fieldmatch
在构建。虽然语义和使用方式非常接近,但某些行为和选项名称可能会有所不同。
目前decimate滤镜只能用于恒定帧率输入。如果您的输入具有混合插帧(30fps)和具有较低帧率如24fps的渐进内容,请使用以下滤镜链生成必要的恒定帧率流:dejudder,fps=30000/1001,fieldmatch,decimate
.
滤镜接受以下选项:
- order
指定输入流的假定字段顺序。可用值为:
- ‘auto’
自动检测奇偶性(使用FFmpeg的内部奇偶值)。
- ‘bff’
假定底部字段优先。
- ‘tff’
假定顶部字段优先。
请注意,有时建议不要信任流声明的奇偶性值。
默认值为auto.
- mode
设置用于使用的匹配模式或策略。pc模式是最安全的一种模式,因为它避免了由于重复帧而可能导致的卡顿风险,但如果存在错误编辑或混合字段,它会产生combed frames,尽管可能存在一个匹配帧。而pcn_ub模式是最有风险的,可能会导致卡顿,但几乎总能找到一个好的帧匹配。其他值在pc和pcn_ub之间,权衡了卡顿风险、产生重复帧与在有糟糕编辑、混合字段等情况下找到匹配帧的可能性。
有关p/c/n/u/b的更多详细信息请参阅p/c/n/u/b含义部分。
可用值为:
- ‘pc’
2向匹配(p/c)
- ‘pc_n’
2向匹配,如果仍然combed则尝试第3个匹配(p/c + n)
- ‘pc_u’
2向匹配,如果仍然combed则尝试第3个匹配(相同顺序)(p/c + u)
- ‘pc_n_ub’
2向匹配,如果仍然combed则尝试第3个匹配,以及第4/5个匹配(p/c + n + u/b)
- ‘pcn’
3向匹配(p/c/n)
- ‘pcn_ub’
3向匹配,如果所检测的所有3个原匹配均为combed的则尝试第4/5个匹配(p/c/n + u/b)
括号中表示对应于该模式的用于匹配的项(假设order=tff和field设置于auto或top).
就速度而言pc模式速度远远最快而pcn_ub是最慢的。
默认值为pc_n.
- ppsrc
将主输入流标记为预处理输入,并启用次要输入流以从中选择字段。有关更多细节请参阅过滤器介绍。这类似于clip2功能来自VFM/TFM。
默认值为
0
(禁用)。- field
设置用于匹配的字段。建议将其设置为与order一致,除非您遇到与该设置相关的匹配失败。在某些情况下,改变用于匹配的字段对匹配性能有重大影响。可选值为:
- ‘auto’
自动(与order).
- ‘bottom’
从底部字段匹配。
- ‘top’
从顶部字段匹配。
默认值为auto.
- mchroma
设置是否在匹配比较中包含彩色。在大多数情况下建议保持启用状态。仅在您的剪辑存在明显的彩色问题如严重的彩条或其他伪影时设置为
0
。设置为0
也可用于加快处理速度但可能减少一些准确性。默认值为
1
.- y0
- y1
这些定义一个排除带,该排除带将忽略y0和y1之间的行以进行字段匹配决策。此排除带可用于忽略字幕、徽标或可能干扰匹配的其他图像内容。y0定义起始扫描行,y1定义结束行;在y0和y1之间的所有行(包括y0和y1)都将被忽略。将y0和y1设置为相同值将禁用该功能。y0和y1的默认值为
0
.- scthresh
设置场景变化检测阈值作为亮度平面上最大变化的百分比。良好的值范围为
[8.0, 14.0]
。场景变化检测仅在combmatch=sc时相关。scthresh的范围为[0.0, 100.0]
.默认值为
12.0
.- combmatch
当combatch不为none,
fieldmatch
时- ‘none’
不基于combed分数进行最终匹配。
- ‘sc’
仅在检测到场景变化时使用combed分数。
- ‘full’
在任何情况下均使用combed分数。
默认值为sc.
- combdbg
强制
fieldmatch
计算某些匹配的combed指标并打印它们。此设置在TFM/VFM术语中称为micout。可用值为:- ‘none’
不强制计算。
- ‘pcn’
强制进行p/c/n计算。
- ‘pcnub’
强制进行p/c/n/u/b计算。
默认值为none.
- cthresh
这是用于combed帧检测的区域梳理阈值。本质上该值控制了梳理的“强度”或“可见性”必须到达什么程度才能被检测到。较大的值意味着梳理必须更明显,而较小的值表示即使梳理不明显或强烈仍然可以被检测到。有效范围为
-1
(每个像素都会被检测为梳理)到255
(不会有像素被检测为梳理)。这是一个基本像素差异值。一个好的范围为[8, 12]
.默认值为
9
.- chroma
设置在梳状帧判定中是否考虑色度。只有当您的来源存在色度问题(如彩虹效应等)并且启用色度检测导致问题时才禁用此功能。实际上,使用chroma=0通常更可靠,除了来源中存在仅色度梳状的情况。
默认值为
0
.- blockx
- blocky
分别设置梳状帧检测期间窗口的x轴和y轴大小。这与combpel像素数量有关,需要在区域内检测到这些像素才能将帧声明为梳状帧。请参阅combpel参数说明以获取更多信息。 可能的值为从4开始的以2为幂的任意数字,一直到512。
默认值为
16
.- combpel
帧上的任何blockyxblockx大小的块内被检测为梳状的像素数量以决定该帧是否为梳状帧。而cthresh控制梳状的“可见度”,此设置控制在帧的任何局部区域(由blockx和blocky设置定义的窗口)中必须存在“多少”梳状。最小值为
0
,最大值为blocky x blockx
(在此情况下,永远不会检测到任何梳状帧)。此设置在TFM/VFM术语中被称为MI。默认值为
80
.
32.94.1 p/c/n/u/b 含义
32.94.1.1 p/c/n
假设以下带有梳状的流:
Top fields: 1 2 2 3 4 Bottom fields: 1 2 3 4 4
数字对应于字段关联的渐进帧。这里,前两帧是渐进的,第3和第4帧是梳状的,依此类推。
当fieldmatch
被配置为从底部运行匹配(field=底部)时,这个输入流会被转化为:
Input stream: T 1 2 2 3 4 B 1 2 3 4 4 <-- matching reference Matches: c c n n c Output stream: T 1 2 3 4 4 B 1 2 3 4 4
由于字段匹配的结果,我们可以看到某些帧被重复。 要完成完整的逆转(inverse telecine),您需要在此操作后依赖于去重滤镜。例如参阅去重滤镜。
现在从顶端字段匹配的同样操作(field=顶部)看起来如下:
Input stream: T 1 2 2 3 4 <-- matching reference B 1 2 3 4 4 Matches: c c p p c Output stream: T 1 2 2 3 4 B 1 2 2 3 4
在这些示例中,我们可以看到p, c和n的含义; 基本上,它们指的是具有相反奇偶校验的帧和字段:
- p与前一帧中具有相反奇偶校验的字段匹配
- c与当前帧中具有相反奇偶校验的字段匹配
- n与下一帧中具有相反奇偶校验的字段匹配
32.94.1.2 u/b
匹配u和b有点特殊,因为它们从相反的奇偶校验标志进行匹配。在以下例子中,我们假设目前正在匹配第2帧(顶部:2,底部:2)。根据匹配,‘x’会被放置在每个匹配字段的上下方。
底部匹配(field=底部):
Match: c p n b u x x x x x Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 x x x x x Output frames: 2 1 2 2 2 2 2 2 1 3
顶部匹配(field=顶部):
Match: c p n b u x x x x x Top 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 Bottom 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 x x x x x Output frames: 2 2 2 1 2 2 1 3 2 2
32.94.2 示例
对顶部优先的场影像流进行简单逆转(IVTC):
fieldmatch=order=tff:combmatch=none, decimate
高级逆转处理,带有保留yadif用于仍然梳状的帧:
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
32.95 fieldorder
变更输入视频的字段顺序。
接受以下参数:
- order
输出字段顺序。有效值为tff表示顶部字段优先或bff表示底部字段优先。
默认值是‘tff’.
字段顺序的变换是通过将画面内容向上或向下移动一行完成的,并使用适当的画面内容填充剩下的行。 此方法与大多数广播字段顺序转换器一致。
如果输入视频未标记为隔行扫描,或者已标记为所需的输出字段顺序,则此滤镜不会更改传入的视频。
非常适合用于转换至或从PAL DV素材 (该素材为底部字段优先)。
例如:
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
32.96 fillborders
填充输入视频的边框,而不更改视频流的尺寸。 有时视频的四边会出现无用数据,而您可能不希望裁剪视频输入,以保持大小是某些数字的倍数。
此滤镜接受以下选项:
- left
从左边框填充的像素数。
- right
从右边框填充的像素数。
- top
从顶部边框填充的像素数。
- bottom
从底部边框填充的像素数。
- mode
设置填充模式。
接受以下值:
- ‘smear’
使用最外侧的像素填充
- ‘mirror’
使用对称镜像(半样本)填充
- ‘fixed’
用常量值填充像素
- ‘reflect’
使用反射(全样本对称)填充像素
- ‘wrap’
使用环绕填充像素
- ‘fade’
使像素渐变到常量值
- ‘margins’
使用接近边框的像素的加权平均值填充顶部和底部像素
默认值是涂抹.
- color
在固定或渐变模式下为像素设置颜色。默认是黑色.
32.96.1 命令
此滤镜支持与选项相同的命令。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则它会保持当前值。
32.97 find_rect
在输入视频中查找矩形对象。
要搜索的对象必须以灰度8图像的形式指定并通过object选项指定。
为每个可能的匹配计算一个分数。如果分数达到指定的阈值,则认为找到了对象。
如果输入视频包含对象的多个实例,则滤镜仅会找到其中一个。
当发现一个对象时,在匹配帧中会设置以下元数据条目:
- lavfi.rect.w
对象的宽度
- lavfi.rect.h
对象的高度
- lavfi.rect.x
对象的x位置
- lavfi.rect.y
对象的y位置
- lavfi.rect.score
找到对象的匹配分数
接受以下选项:
- object
对象图像的文件路径,需要为灰度8。
- threshold
检测阈值,以0-1范围的小数表示。
阈值为0.01表示仅精确匹配,阈值为0.99表示几乎所有都匹配。
默认值为0.5。
- mipmaps
指定的mipmap数量,默认是3。
- xmin, ymin, xmax, ymax
指定搜索的矩形区域。
- discard
丢弃未检测到对象的帧。默认是禁用的。
32.97.1 示例
- 通过提供的图像覆盖给定视频中的矩形对象
ffmpeg
:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
- 使用
ffprobe
查找每帧中对象的位置并记录到日志文件:ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \ -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \ -of csv -o find_rect.csv
32.98 floodfill
用另一种值填充与一个像素分量相同的区域。
接受以下选项:
- x
设置像素x坐标。
- y
设置像素y坐标。
- s0
设置源#0分量值。
- s1
设置源#1分量值。
- s2
设置源#2分量值。
- s3
设置源#3分量值。
- d0
设置目标#0分量值。
- d1
设置目标#1分量值。
- d2
设置目标#2分量值。
- d3
设置目标#3分量值。
32.99 format
将输入视频转换为指定的一种像素格式。 Libavfilter将尝试选择一种适合作为下一个滤镜输入的格式。
接受以下参数:
- pix_fmts
由’|’分隔的像素格式名称列表,如“pix_fmts=yuv420p|monow|rgb24”。
- color_spaces
由’|’分隔的色彩空间名称列表,如“color_spaces=bt709|bt470bg|bt2020nc”。
- color_ranges
由’|’分隔的色彩范围名称列表,如“color_spaces=tv|pc”。
32.99.1 示例
- 将输入视频转换为yuv420p格式
format=pix_fmts=yuv420p
将输入视频转换为列表中的任一格式
format=pix_fmts=yuv420p|yuv444p|yuv410p
32.100 fps
通过必要时重复或删除帧将视频转换为指定的恒定帧速率。
接受以下参数:
- fps
所需的输出帧速率。它接受包含以下常量的表达式:
- ‘source_fps’
输入的帧速率
- ‘ntsc’
NTSC帧速率为
30000/1001
- ‘pal’
PAL帧速率为
25.0
- ‘film’
电影帧速率为
24.0
- ‘ntsc_film’
NTSC电影帧速率为
24000/1001
默认值是
25
.- start_time
假设第一个PTS应该是给定的值(以秒为单位)。这允许在流的开始处进行填充/修剪。 默认情况下,不对第一帧的预期时间戳进行任何假设,因此不会进行填充或修剪。 例如,可以将此值设置为0以填充流的开头,将其与第一个帧的副本匹配,或者修剪任何具有负PTS的帧。
- round
时间戳(PTS)舍入方法。
可能的值有:
- zero
向零舍入
- inf
远离零舍入
- down
向无穷负舍入
- up
向无穷正舍入
- near
舍入到最近
默认值是
near
.- eof_action
读取最后一帧时执行的操作。
可能的值有:
- round
使用与其他帧相同的时间戳舍入方法。
- pass
如果输入持续时间尚未达到,则通过最后一帧。
默认值是
round
.
或者,可以将选项指定为简单的字符串格式:fps[:开始时间[:舍入]].
参见setpts滤镜。
32.100.1 示例
- 一种典型的用法,将帧速率设置为25:
fps=fps=25
- 将帧速率设置为24,使用省略号并舍入方式为向最近舍入:
fps=fps=film:round=near
32.101 framepack
将两个不同的视频流打包为立体视频,并在支持的编解码器上设置适当的元数据。 两个视图应具有相同的大小和帧速率,并且处理将在较短视频结束时停止。 请注意,您可以方便地使用scale和fps滤镜调整视图属性。
接受以下参数:
- format
所需的打包格式。支持的值为:
- sbs
视图彼此相邻(默认值)。
- tab
视图堆叠在一起。
- lines
视图按行打包。
- columns
视图按列打包。
- frameseq
视图按时间交错。
一些示例:
# Convert left and right views into a frame-sequential video ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT # Convert views into a side-by-side video with the same output resolution as the input ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
32.102 framerate
通过从源帧插值新的视频输出帧来改变帧速率。
此滤镜设计不适用于隔行媒体。如果您希望更改隔行媒体的帧速率,则需要在此滤镜之前进行去隔行处理,并在此滤镜之后重新隔行处理。
接受选项的描述如下。
- fps
指定输出帧每秒数。 此选项还可以指定为单独的数值。 默认值为
50
.- interp_start
指定一个范围的开始部分,输出帧将在线性插值的两帧之间创建。 范围为[
0
-255
],默认为15
.- interp_end
指定一个范围的结束部分,输出帧将在线性插值的两帧之间创建。 范围为[
0
-255
],默认为240
.- scene
指定检测场景更改的级别,值在0到100之间;值越低表示当前帧引入新场景的可能性越低,值越高表示当前帧更可能是一个新场景。 默认值为
8.2
.- flags
指定影响滤镜过程的标志。
可用的标志为:
- scene_change_detect, scd
使用选项场景的值启用场景变化检测。 此标志默认启用。
32.103 framestep
选择每第N帧的一帧。
此滤镜接受以下选项:
- step
选择每
step
帧之后的帧。 允许的值为大于0的正整数。 默认值为1
.
32.104 freezedetect
检测冻结视频。
当检测到输入视频的内容在指定持续时间内没有显著变化时, 此滤镜记录一条消息并设置帧元数据。 视频冻结检测计算所有视频帧分量的平均绝对差值并与噪声底值进行比较。
打印的时间和持续时间以秒为单位。lavfi.freezedetect.freeze_start
元数据键设置在第一个时间戳等于或超过检测持续时间的帧,它包含了冻结的第一个帧的时间戳。lavfi.freezedetect.freeze_duration
和lavfi.freezedetect.freeze_end
元数据键设置在冻结后的第一个帧上。
过滤器接受以下选项:
- noise, n
设置噪声容忍度。可以指定为dB(如果指定值后面附加了“dB”)或者作为0到1之间的差异比率。默认值是-60dB或0.001。
- duration, d
设置冻结通知的持续时间(默认是2秒)。
32.105 冻结帧
冻结视频帧。
此过滤器使用第二个输入的帧来冻结视频帧。
过滤器接受以下选项:
- first
设置开始冻结的第一帧号。
- last
设置结束冻结的最后帧号。
- replace
设置用于替换帧的第二个输入的帧号。
32.106 frei0r
对输入视频应用frei0r效果。
要启用此过滤器的编译,您需要安装frei0r头文件并使用以下命令配置FFmpeg:--enable-frei0r
.
它接受以下参数:
- filter_name
要加载的frei0r效果的名称。如果环境变量
FREI0R_PATH
已定义,则frei0r效果将在FREI0R_PATH
中指定的目录列表中进行搜索(用冒号分隔)。 否则,将按以下顺序搜索标准frei0r路径:HOME/.frei0r-1/lib/, /usr/local/lib/frei0r-1/, /usr/lib/frei0r-1/.- filter_params
一个以‘|’分隔的参数列表,用于传递给frei0r效果。
frei0r效果参数可以是布尔值(其值要么为“y”要么为“n”)、双精度数、颜色(指定为R/G/B,其中R, G和B是0.0到1.0之间(含)的浮点数)或指定的颜色描述如ffmpeg-utils手册的“颜色”部分, 位置(指定为X/Y,其中X和Y是浮点数)和/或一个字符串。
参数的数量和类型取决于加载的效果。如果未指定效果参数,将设置默认值。
32.106.1 示例
- 应用distort0r效果,并设置前两个双精度参数:
frei0r=filter_name=distort0r:filter_params=0.5|0.01
- 应用colordistance效果,将颜色作为第一个参数:
frei0r=colordistance:0.2/0.3/0.4 frei0r=colordistance:violet frei0r=colordistance:0x112233
- 应用perspective效果,指定图像的左上和右上位置:
frei0r=perspective:0.2/0.2|0.8/0.2
欲了解更多信息,请参阅http://frei0r.dyne.org
32.106.2 命令
此过滤器支持filter_params选项作为命令.
32.107 fspp
应用快速简单的后处理。这是spp.
的更快版本。它将(I)DCT分为水平/垂直通道处理。与简单后处理滤镜不同,其中一个通道每次每块进行一次处理,而不是每像素处理。这允许更高的速度。
过滤器接受以下选项:
- quality
设置质量。此选项定义平均的级别数量。它接受范围为4-5的整数。默认值是
4
.- qp
强制使用恒定的量化参数。它接受范围为0-63的整数。如果未设置,过滤器将使用视频流中的QP(如果可用)。
- strength
设置滤镜强度。它接受范围为-15到32的整数。较低的值意味着更多细节但也更多伪影,而较高的值使图像更平滑但更模糊。默认值是
0
− PSNR最佳。- use_bframe_qp
如果设置为
1
启用从B帧中使用的QP。使用此选项可能会导致闪烁,因为B帧通常具有较大的QP。默认是0
(未启用)。
32.108 fsync
与文件的外部映射同步视频帧。
对于地图文件中给定的每个输入PTS,它要么丢弃,要么创建必要数量的帧,以重新创建地图文件中给定的输出帧序列。
此过滤器有助于通过fps过滤器进行帧速率转换,记录到地图文件中使用ffmpeg选项-stats_mux_pre
,并对相应帧进行进一步处理,例如质量比较。
地图文件每行必须包含三个项目,每个输入帧的输入PTS(十进制)、输出PTS(十进制)和输出时间基(十进制/十进制),用空格分隔。此文件格式对应于-stats_mux_pre_fmt="{ptsi} {pts} {tb}"
.
的输出。
过滤器假定地图文件按输入PTS升序排序。
- file, f
要使用的地图文件的文件名。
示例:
# Convert a video to 25 fps and record a MAP_FILE file with the default format of this filter ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT # Sort MAP_FILE by increasing input PTS sort -n MAP_FILE # Use INPUT, OUTPUT and the MAP_FILE from above to compare the corresponding frames in INPUT and OUTPUT via SSIM ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -
32.109 gblur
应用高斯模糊滤镜。
过滤器接受以下选项:
- sigma
设置水平标准差(sigma),高斯模糊的标准差。默认值是
0.5
.- steps
设置高斯逼近的步骤数。默认值是
1
.- planes
设置要过滤的平面。默认情况下所有平面都被过滤。
- sigmaV
设置垂直标准差(sigma),如果为负值,将与
sigma
z相同。 默认值是-1
.
32.109.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
32.110 geq
对每个像素应用通用方程。
过滤器接受以下选项:
- lum_expr, lum
设置亮度表达式。
- cb_expr, cb
设置蓝色色度表达式。
- cr_expr, cr
设置红色色度表达式。
- alpha_expr, a
设置透明度表达式。
- red_expr, r
设置红色表达式。
- green_expr, g
设置绿色表达式。
- blue_expr, b
设置蓝色表达式。
根据指定的选项选择色彩空间。如果指定了lum_expr, cb_expr, 或者cr_expr选项,则过滤器将自动选择YCbCr色彩空间。如果指定了red_expr, green_expr, 或者blue_expr选项,则过滤器将选择RGB颜色空间。
如果未定义其中一个色度表达式,它将回退到另一个表达式。如果未指定透明度表达式,它将评估为不透明值。如果未指定任何色度表达式,它们将评估为亮度表达式。
表达式可以使用以下变量和函数:
- N
过滤帧的顺序号,从
0
.- X
- Y
当前样本的坐标。
- W
- H
图像的宽度和高度。
- SW
- SH
根据滤镜的当前平面缩放的宽度和高度。它是与当前平面像素数对应的亮度平面像素数之间的比例。例如,对于YUV4:2:0,这些值为
1,1
对于亮度平面,和0.5,0.5
对于色度平面。- T
当前帧的时间,以秒表示。
- p(x, y)
返回当前平面位置(x,y)像素的值。
- lum(x, y)
返回亮度平面位置(x,y)像素的值。
- cb(x, y)
返回蓝色差色度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。
- cr(x, y)
返回红色差色度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。
- r(x, y)
- g(x, y)
- b(x, y)
返回红色/绿色/蓝色组件位置(x,y)像素的值。如果没有这样的组件,则返回0。
- alpha(x, y)
返回透明度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。
- psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
从(0,0)到(x,y)矩形范围内的样本值总和,这使得可以获得矩形范围内样本的总和。请参阅未带sum后缀的函数。
- interpolation
设置一种插值方法:
- nearest, n
- bilinear, b
默认是双线性。
对于函数,如果x和y超出区域范围,值将自动调整到最近的边缘。
请注意,此过滤器可以使用多线程,在这种情况下,每个切片将有自己的表达式状态。如果表达式取决于之前状态并希望使用单个表达式状态,则应将过滤器线程数量限制为1。
32.110.1 示例
- 水平翻转图像:
geq=p(W-X\,Y)
- 生成二维正弦波,波角为
PI/3
,波长为100像素:geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
- 生成一个奇特而神秘的移动光:
nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
- 快速生成浮雕效果:
format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
- 根据像素位置修改RGB组件:
geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
- 创建与输入大小相同的径向渐变(另见vignette滤镜):
geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
32.111 gradfun
修复通过截断到8位颜色深度有时会引入到接近平坦区域的条纹伪影。 插入应该位于条纹处的渐变,并对这些部分进行抖动处理。
它仅设计用于播放。不要在有损压缩之前使用它,因为压缩往往会丢失抖动并恢复条纹。
它接受以下参数:
- strength
滤镜可以改变任何像素的最大值。这也是检测接近平坦区域的阈值。可接受值范围是.51到64;默认值是1.2。超出范围的值将被剪裁到有效范围。
- radius
用于拟合渐变的邻域。较大的半径可以创建更平滑的渐变,但也会防止滤镜修改邻近详细区域的像素。可接受值范围是8到32;默认值是16。超出范围的值将被剪裁到有效范围。
或者,可以以平面字符串指定选项:强度[:半径]
32.111.1 示例
- 应用滤镜,设置
3.5
强度和半径为8
:gradfun=3.5:8
- 指定半径,忽略强度(将回退到默认值):
gradfun=radius=8
32.112 graphmonitor
显示各种过滤图表统计数据。
借助此过滤器可以调试完整的过滤图。 尤其是在链接填充队列帧时的问题。
过滤器接受以下选项:
- size, s
设置视频输出大小。默认是hd720.
- opacity, o
设置视频不透明度。默认是0.9允许范围是从0到1.
- mode, m
设置输出模式标志。
标志的可选值为:
- ‘full’
没有任何过滤。默认值。
- ‘compact’
仅显示带有队列帧的过滤器。
- ‘nozero’
仅显示具有非零统计数据的过滤器。
- ‘noeof’
仅显示具有非EOF状态的过滤器。
- ‘nodisabled’
仅显示时间轴中启用的过滤器。
- flags, f
设置用于启用视频中显示哪些统计数据的标志。
标志的可选值为:
- ‘none’
关闭所有标志。
- ‘all’
打开所有标志。
- ‘queue’
显示每个链接队列帧的数量。
- ‘frame_count_in’
显示从过滤器中提取的帧数量。
- ‘frame_count_out’
显示由过滤器输出的帧数量。
- ‘frame_count_delta’
显示上述两个值之间的帧增量数量。
- ‘pts’
显示当前过滤的帧的PTS。
- ‘pts_delta’
显示当前帧与上一帧之间的PTS差值。
- ‘time’
显示当前过滤的帧时间。
- ‘time_delta’
显示当前帧与上一帧之间的时间差。
- ‘timebase’
显示过滤器链接的时间基。
- ‘format’
显示过滤器链接使用的格式。
- ‘size’
在使用音频过滤器链接时显示视频大小或音频通道数。
- ‘rate’
在使用音频过滤器链接时显示视频帧速率或采样率。
- ‘eof’
显示链接输出状态。
- ‘sample_count_in’
显示从过滤器中提取的样本数量。
- ‘sample_count_out’
显示由过滤器输出的样本数量。
- ‘sample_count_delta’
显示上述两个值之间的样本增量数量。
- ‘disabled’
显示时间线过滤器状态。
- rate, r
设置输出流视频速率的上限值。默认值是25。 这可确保输出视频帧速率不会高于此值。
32.113 grayworld
一种基于灰世界假设的颜色常量滤镜,用于颜色校正。
该算法使用线性光,因此输入数据应提前线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT
32.114 灰边缘
一种颜色恒定变化滤波器,它通过灰边缘算法估算场景照明并相应地校正场景颜色。
请参见:https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf
该滤镜接受以下选项:
- difford
在场景上应用的微分级数。必须选择范围[0,2],默认值为1。
- minknorm
用于计算明可夫斯基距离的明可夫斯基参数。必须选择范围[0,20],默认值为1。设置为0以获取最大值而不是计算明可夫斯基距离。
- sigma
在场景上应用的高斯模糊的标准差。必须选择范围[0,1024.0],默认值=1。floor(sigma* break_off_sigma(3) )不能等于0,如果difford大于0。
32.114.1 示例
- 灰边缘:
greyedge=difford=1:minknorm=5:sigma=2
- 最大边缘:
greyedge=difford=1:minknorm=0:sigma=2
32.115 引导
应用引导滤波器进行边缘保留平滑、去雾等操作。
该滤镜接受以下选项:
- radius
设置盒子半径(以像素为单位)。允许范围为1到20。默认值为3。
- eps
设置正则化参数(平方方式)。允许范围为0到1。默认值为0.01。
- mode
设置滤波器模式。可以是
basic
或fast
。默认是basic
.- sub
设置采样比例用于
fast
模式。范围为2到64。默认值为4。在basic
模式下不发生子采样。- guidance
设置引导模式。可以是
off
或on
。默认是off
。如果off
,需要单一输入。 如果on
,需要两个具有相同分辨率和像素格式的输入。第二个输入作为引导。- planes
设置要滤波的平面。默认值是仅第一个。
32.115.1 命令
该滤镜支持以上选项作为命令.
32.115.2 示例
- 使用引导滤波器进行边缘保留平滑:
ffmpeg -i in.png -vf guided out.png
- 使用引导滤波器进行去雾、结构转换滤波、细节增强。关于生成引导图像,请参阅论文《引导图像过滤》。详见:http://kaiminghe.com/publications/pami12guidedfilter.pdf.
ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
32.116 Hald CLUT
将 Hald CLUT 应用于视频流。
第一个输入是要处理的视频流,第二个输入是 Hald CLUT。Hald CLUT 输入可以是简单的图片或完整的视频流。
该滤镜接受以下选项:
- clut
设置将处理第二输入流中的哪帧 CLUT 视频,可以是first或all。默认值是all.
- shortest
强制最短输入结束时终止。默认值为
0
.- repeatlast
继续在流结束后应用最后的 CLUT。值为
0
在到达 CLUT 的最后一帧后禁用滤镜。默认值为1
.
haldclut
还具有与lut3d相同的插值选项(两个滤镜共享相同的内部逻辑)。
该滤镜还支持framesync选项。
更多关于 Hald CLUT 的信息可以在 Eskil Steenberg 的网站上找到(Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html.
32.116.1 命令
该滤镜支持interp
选项作为命令.
32.116.2 工作流程示例
32.116.2.1 Hald CLUT 视频流
生成一个通过各种效果修改的身份 Hald CLUT 流:
ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
注意:确保您使用无损编解码器。
然后使用haldclut
将其应用于随机流:
ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
Hald CLUT 将应用于前10秒(clut.nut的持续时间),之后 CLUT 流的最后一个图片将应用于mandelbrot
流的剩余帧。
32.116.2.2 带预览的 Hald CLUT
Hald CLUT 应为Level*Level*Level
到Level*Level*Level
像素的正方形图片。对于给定的 Hald CLUT,FFmpeg 将选择从图片左上角开始的最大可能正方形区域。剩余的填充像素(底部或右侧)将被忽略。此区域可以用于添加 Hald CLUT 的预览。
通常,以下生成的 Hald CLUT 将受到haldclut
滤镜支持:
ffmpeg -f lavfi -i haldclutsrc=8 -vf " pad=iw+320 [padded_clut]; smptebars=s=320x256, split [a][b]; [padded_clut][a] overlay=W-320:h, curves=color_negative [main]; [main][b] overlay=W-320" -frames:v 1 clut.png
它包含原始效果预览的 Hald CLUT:SMPTE 彩色条显示在右上角,下面是颜色变更处理后的相同彩色条。
然后,可以通过以下方式可视化此 Hald CLUT 的效果:
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
32.117 hflip
水平翻转输入视频。
例如,使用以下命令水平翻转输入视频:ffmpeg
:
ffmpeg -i in.avi -vf "hflip" out.avi
32.118 histeq
此滤镜对每帧应用全局颜色直方图均衡化。
它可以用于校正像素强度范围压缩的视频。滤镜重新分配像素强度以均衡其在强度范围内的分布。可以将其视为“自动调节对比度滤镜”。此滤镜仅适用于校正质量较低或捕捉较差的源视频。
滤镜接受以下选项:
- strength
确定要应用的均衡化量。随着强度减弱,像素强度的分布越来越接近输入帧。取值须在范围 [0,1] 内且默认值为 0.200。
- intensity
设置最大生成强度并适当缩放输出值。应根据需要设置强度,然后如果需要避免过度曝光,可以有限制地设置强度。取值须在范围 [0,1] 内且默认值为 0.210。
- antibanding
设置防条纹级别。如果启用,滤镜将随机略微变动输出像素的亮度,以避免直方图的条纹。可能的值为
none
,weak
或strong
。默认值为none
.
32.119 histogram
计算并绘制输入视频的颜色分布直方图。
计算的直方图是图像中颜色分量分布的表示。
标准直方图显示了图像中颜色分量的分布。显示每个颜色分量的颜色图。显示了 Y、U、V、A 或 R、G、B 分量(取决于输入格式)在当前帧中的分布。在每个图表下面显示颜色分量刻度计。
该滤镜接受以下选项:
- level_height
设置水平高度。默认值为
200
。 允许范围为 [50, 2048]。- scale_height
设置颜色刻度的高度。默认值为
12
。 允许范围为 [0, 40]。- display_mode
设置显示模式。 可接受以下值:
- ‘stack’
每个颜色分量图表排列在彼此下面。
- ‘parade’
每个颜色分量图表排列在彼此旁边。
- ‘overlay’
呈现与
parade
模式相同的信息,除了代表颜色分量的图表直接叠加在彼此上。
默认值为
stack
.- levels_mode
设置模式。可以是
linear
或logarithmic
。 默认值为linear
.- components
设置显示的颜色分量。 默认值为
7
.- fgopacity
设置前景透明度。默认值为
0.7
.- bgopacity
设置背景透明度。默认值为
0.5
.- colors_mode
设置颜色模式。 接受以下值:
- ‘whiteonblack’
- ‘blackonwhite’
- ‘whiteongray’
- ‘blackongray’
- ‘coloronblack’
- ‘coloronwhite’
- ‘colorongray’
- ‘blackoncolor’
- ‘whiteoncolor’
- ‘grayoncolor’
默认值为
whiteonblack
.
32.119.1 示例
- 计算并绘制直方图:
ffplay -i input -vf histogram
32.120 hqdn3d
这是一个高精度/高质量的3D去噪滤镜。其目的是减少图像噪声,生成平滑图像并使静态图像真正静止。应该提高压缩性。
它接受以下可选参数:
- luma_spatial
规格化亮度强度的一个非负浮点数。默认值为4.0。
- chroma_spatial
规格化色度强度的一个非负浮点数。默认值为3.0倍于亮度空间强度。/4.0.
- luma_tmp
规格化亮度时间强度的一个浮点数。默认值为6.0倍于亮度空间强度。/4.0.
- chroma_tmp
规格化色度时间强度的一个浮点数。默认值为亮度时间强度乘以*色度空间强度乘以/亮度空间强度。.
32.120.1 命令
此滤镜支持与选项相同的命令。该命令接受对应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
32.121 hwdownload
下载硬件帧到系统内存。
输入必须是硬件帧,输出则为非硬件格式。并非所有格式都支持输出 - 可能需要在图中紧随其后插入一个额外的format滤镜以使输出为受支持格式。
32.122 hwmap
将硬件帧映射到系统内存或其他设备。
该滤镜有几种不同的操作模式;使用哪一种取决于输入和输出格式:
- 硬件帧输入,正常帧输出
将输入帧映射到系统内存并传递给输出。如果稍后需要原始硬件帧(例如,在其上叠加其他内容之后),可以再次使用hwmap滤镜以另一个模式检索。
- 正常帧输入,硬件帧输出
如果输入实际上是软件映射了硬件帧,则解除映射 - 即返回原始硬件帧。
否则,必须提供设备。在该设备上为输出创建新的硬件表面,然后将其映射回输入的格式并将这些帧提供给前一个滤镜。然后其行为将类似于hwupload滤镜,但可能在输入已经是兼容格式的情况下避免额外的拷贝。
- 硬件帧输入和输出
输出必须直接或使用derive_device选项提供设备。输入和输出设备必须是不同类型且兼容 - 这在具体意义上依赖于系统,但通常意味着它们必须指向同一底层硬件上下文(例如,同一图形卡)。
如果输入帧最初是在输出设备上创建,则解除映射以检索原始帧。
否则,将帧映射到输出设备 - 在输出端创建新的硬件帧以对应于输入端的帧。
接受以下附加参数:
- mode
设置帧映射模式。某些组合包括:
- 读取
映射帧应可读取。
- 写入
映射帧应可写。
- 覆盖
映射将始终覆盖整个帧。
这在某些情况下可能改善性能,因为不需要加载帧的原始内容。
- 直接
映射不能涉及任何拷贝。
在某些情况下创建间接映射以复制帧不是直接映射可能或可能具有意外属性时发生。设置此标志确保映射是直接的,如果不可能,则失败。
如果未指定,则默认为读取+写入。 if not specified.
- derive_device 类型
不是使用初始化时提供的设备,而是从输入帧所在设备派生新设备类型类型。
- reverse
在硬件到硬件映射中,以反向方式映射 - 在sink中创建帧并将其映射回source。这在某些情况下是必要的,其中需要一个方向的映射,但设备只支持相对方向。
此选项很危险 - 如果之前的滤镜输出有任何额外限制,可能会以未定义方式破坏之前滤镜。不完全理解使用影响时请勿使用此选项。
32.123 硬件上传
将系统内存帧上传到硬件表面。
初始化时必须提供要上传到的设备。如果使用 ffmpeg,请通过以下选项选择合适的设备-filter_hw_device选项或通过derive_device选项。输入和输出设备必须是不同类型并兼容 - 具体含义依赖于系统,但通常意味着它们必须引用相同的底层硬件环境(例如,引用相同的显卡)。
接受以下附加参数:
- derive_device 类型
而不是使用初始化时提供的设备,而是从输入帧存在的设备派生一个新的类型类型的设备。
32.124 硬件上传到 CUDA
将系统内存帧上传到 CUDA 设备。
接受以下可选参数:
- device
要使用的 CUDA 设备编号
32.125 HQX
应用专为像素艺术设计的高质量放大滤镜。此滤镜最初由 Maxim Stepin 创建。
接受以下选项:
- n
设置缩放维度:
2
用于hq2x
,3
用于hq3x
和4
用于hq4x
。 默认为3
.
32.126 水平堆叠
水平堆叠输入视频。
所有流的像素格式和高度必须相同。
滤镜接受以下选项:
- inputs
设置输入流的数量。默认为 2。
- shortest
如果设置为 1,则当最短输入终止时强制输出终止。默认值为 0。
32.127 HSV 范围保持
将特定的 HSV 范围转换为灰度值。
此滤镜根据选项中设置的 HSV 颜色与视频流中测量的颜色之间的色差进行测量。根据选项,可以将输出颜色变为灰色或不变。
滤镜接受以下选项:
- hue
设置将用于色差计算的色调值。 允许的范围是 -360 到 360。默认值为 0。
- sat
设置将用于色差计算的饱和度值。 允许范围是 -1 到 1。默认值为 0。
- val
设置将用于色差计算的值。 允许范围是 -1 到 1。默认值为 0。
- similarity
设置与关键颜色的相似百分比。 允许范围是 0 到 1。默认值为 0.01。
0.00001 仅匹配确切的关键颜色,而 1.0 匹配所有颜色。
- blend
混合百分比。 允许范围是 0 到 1。默认值为 0。
0.0 将像素完全变为灰色或完全不变。
更高的值会导致更多的灰色像素,且颜色越接近关键颜色的像素越灰色。
32.128 HSV 关键透明
将特定的 HSV 范围转换为透明色。
此滤镜根据选项中设置的 HSV 颜色与视频流中测量的颜色之间的色差进行测量。根据选项,可以通过添加 alpha 通道将输出颜色变为透明。
滤镜接受以下选项:
- hue
设置将用于色差计算的色调值。 允许的范围是 -360 到 360。默认值为 0。
- sat
设置将用于色差计算的饱和度值。 允许范围是 -1 到 1。默认值为 0。
- val
设置将用于色差计算的值。 允许范围是 -1 到 1。默认值为 0。
- similarity
设置与关键颜色的相似百分比。 允许范围是 0 到 1。默认值为 0.01。
0.00001 仅匹配确切的关键颜色,而 1.0 匹配所有颜色。
- blend
混合百分比。 允许范围是 0 到 1。默认值为 0。
0.0 使像素变得完全透明或完全不透明。
更高的值会导致半透明像素,颜色越接近关键颜色,透明度越高。
32.129 色调
修改输入的色调和/或饱和度。
接受以下参数:
- h
以度为单位指定色调角度。接受一个表达式,默认为 "0"。
- s
在 [-10,10] 范围内指定饱和度。接受一个表达式默认为 "1"。
- H
以弧度为单位指定色调角度。接受一个表达式,默认为 "0"。
- b
在 [-10,10] 范围内指定亮度。接受一个表达式,默认为 "0"。
h和H是互斥的,不能同时指定。
选项值是包含以下常量的表达式:b, h, H and s option values are expressions containing the following constants:
- n
从 0 开始的输入帧计数
- pts
以时间基单位表示的输入帧的展示时间戳
- r
输入视频的帧率,如果未知输入帧率为 NAN
- t
以秒为单位表示的时间戳,如果未知时间戳为 NAN
- tb
输入视频的时间基
32.129.1 示例
- 将色调设置为 90 度,饱和度设置为 1.0:
hue=h=90:s=1
- 使用弧度表示色调的相同命令:
hue=H=PI/2:s=1
- 旋转色调并使饱和度在 1 秒内在 0 和 2 之间摆动:
hue="H=2*PI*t: s=sin(2*PI*t)+1"
- 从 0 开始应用 3 秒的饱和度渐入效果:
hue="s=min(t/3\,1)"
渐入效果的一般表达式可以写成:
hue="s=min(0\, max((t-START)/DURATION\, 1))"
- 从第 5 秒开始应用 3 秒的饱和度渐出效果:
hue="s=max(0\, min(1\, (8-t)/3))"
渐出效果的一般表达式可以写成:
hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
32.129.2 命令
支持以下命令:
- b
- s
- h
- H
修改输入视频的色调和/或饱和度和/或亮度。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
32.130 色调和饱和度
对输入视频流应用色调-饱和度-强度调整。
此滤镜在 RGB 色彩空间中操作。
滤镜接受以下选项:
- hue
设置要应用的色调偏移(以度为单位)。默认为 0。 允许范围是 -180 到 180。
- saturation
设置饱和度偏移。默认为 0。 允许范围是 -1 到 1。
- intensity
设置强度偏移。默认为 0。 允许范围是 -1 到 1。
- colors
设置要调整的主要和互补颜色。 通过提供一个或多个值来设置选项。 可以一次选择多种颜色。默认选择所有颜色。
- ‘r’
调整红色。
- ‘y’
调整黄色。
- ‘g’
调整绿色。
- ‘c’
调整青色。
- ‘b’
调整蓝色。
- ‘m’
调整洋红色。
- ‘a’
调整所有颜色。
- strength
设置过滤强度。允许范围是 0 到 100。 默认值为 1。
- rw, gw, bw
为每个 RGB 分量设置权重。允许范围是 0 到 1。 默认设置为 0.333,0.334,0.333。 这些选项用于饱和度和亮度处理。
- lightness
设置保持亮度,默认为禁用。 调整色调可能会更改原始 RGB 三元组的亮度, 启用此选项亮度保持不变。
32.131 滞后
通过连接组件将第一个流扩展到第二个流。 这使得构建更稳定的边缘蒙版成为可能。
滤镜接受以下选项:
- planes
设置将被处理为位图的平面,未处理的平面将 从第一个流复制。 默认值为 0xf,所有平面都会被处理。
- threshold
设置过滤中使用的阈值。如果像素组件值高于 该值,则激活用于连接组件的过滤算法。 默认值为 0。
滤镜还支持hysteresis
framesyncframesync选项。
32.132 ICC 检测
从嵌入的 ICC 配置文件(如果存在)中检测颜色空间,并更新帧的标签。
滤镜接受以下选项:
- force
如果为 true,帧的现有颜色空间标签将始终被 ICC 配置文件中检测到的值覆盖。否则,只有当它们包含
unknown
时才会被分配。默认启用。
32.133 ICC 生成
生成 ICC 配置文件并将其附加到帧。
滤镜接受以下选项:
- color_primaries
- color_trc
配置将为其生成 ICC 配置文件的颜色空间。 默认值
auto
从输入帧的元数据中推断值, 默认值为 BT.709/sRGB。参见setparams滤镜以获得可能值的列表,但请注意,
unknown
不是此滤镜的有效值。- force
如果为 true,即使会覆盖现有的 ICC 配置文件, 也会生成一个新的 ICC 配置文件。默认禁用。
32.134 身份
获得两个输入视频之间的身份分数。
此滤镜接受两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式, 以确保此滤镜能够正确工作。 还假定两个输入具有相同数量的帧,逐帧进行比较。
获得的每个组件的平均值、最小值和最大值身份分数通过日志系统输出。
滤镜将每帧计算得到的身份分数存储在帧元数据中。
此滤镜也支持framesync选项。
在下面的示例中,输入文件main.mpg被处理并与参考文件ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
进行比较。
检测视频交织类型。
此滤镜试图检测输入帧是交织的、渐进的、顶部或底部字段优先。 它还会尝试检测在相邻帧之间重复的字段(电影转视频的信号)。
单帧检测仅考虑相邻帧来分类每一帧。 多帧检测结合了先前帧的分类历史。
滤镜将记录以下元数据值:
- single.current_frame
使用单帧检测检测到的当前帧类型之一: “tff”(顶部字段优先)、“bff”(底部字段优先)、 “progressive”(渐进)、或“undetermined”(未确定)
- single.tff
使用单帧检测检测到的顶部字段优先帧的累计数。
- multiple.tff
使用多帧检测检测到的顶部字段优先帧的累计数。
- single.bff
使用单帧检测检测到的底部字段优先帧的累计数。
- multiple.current_frame
使用多帧检测检测到的当前帧类型之一: “tff”(顶部字段优先)、“bff”(底部字段优先)、 “progressive”(渐进)、或“undetermined”(未确定)
- multiple.bff
使用多帧检测检测到的底部字段优先帧的累计数。
- single.progressive
使用单帧检测检测到的渐进帧的累计数。
- multiple.progressive
使用多帧检测检测到的渐进帧的累计数。
- single.undetermined
使用单帧检测无法分类的帧的累计数。
- multiple.undetermined
使用多帧检测无法分类的帧的累计数。
- repeated.current_frame
当前帧中从上一帧重复的字段之一:“neither”(无)、“top”(顶部)、或“bottom”(底部)。
- repeated.neither
无重复字段帧的累计数。
- repeated.top
从前一帧顶部字段重复顶部字段帧的累计数。
- repeated.bottom
从前一帧底部字段重复底部字段帧的累计数。
滤镜接受以下选项:
- intl_thres
设置交错门限。
- prog_thres
设置渐进门限。
- rep_thres
重复场检测的门限。
- half_life
设置在多少帧后当前帧对统计数据的贡献减半(即它的分类贡献减少为0.5)。默认值为0,表示所有已查看的帧始终完全权重为1.0。
- analyze_interlaced_flag
当值不为0时,idet将使用指定数量的帧来判断交错标志是否准确,不计入未确定帧。如果标志被判定为准确,则将在没有任何进一步计算的情况下使用它;如果被判定为不准确,则将在没有任何进一步计算的情况下被清除。这允许将idet滤镜作为一种低计算成本的方法,用于清理交错标志。
32.135.1 示例
详细检查前360帧视频的场序:
ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -
idet滤镜会将分析元数据添加到每一帧,然后该元数据会被丢弃。最后,过滤器会打印带有统计数据的最终报告。
32.136 il
解交错或交错字段。
该滤镜允许处理交错图像字段,而无需对其进行解交错操作。解交错将输入帧分成两个字段(称为半幅画面)。奇数行移动到输出图像的上半部分,偶数行移动到底部。可以分别对其进行处理(过滤),然后重新交错。
此滤镜接受以下选项:
- luma_mode, l
- chroma_mode, c
- alpha_mode, a
可用值luma_mode, chroma_mode和alpha_mode分别是:
- ‘none’
不执行任何操作。
- ‘deinterleave, d’
解交错字段,将一个字段放在另一个字段上。
- ‘interleave, i’
交错字段。颠倒解交错效果。
默认值是
none
.- luma_swap, ls
- chroma_swap, cs
- alpha_swap, as
交换明度/色度/透明度字段。交换奇数和偶数行。默认值是
0
.
32.136.1 命令
此滤镜支持以上所有选项作为命令.
32.137 inflate
对视频应用膨胀效果。
该滤镜通过仅考虑比当前像素值高的值来用局部(3x3)平均值替代像素。
可接受的选项包括:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个位面的最大变化,默认值为65535。如果为0,则平面保持不变。
32.137.1 命令
此滤镜支持以上所有选项作为命令.
32.138 interlace
从渐进内容中生成简单交错视频。这会将奇帧的上半部分(或下半部分)与偶帧的下半部分(或上半部分)交错,减半帧率但保留图像高度。
Original Original New Frame Frame 'j' Frame 'j+1' (tff) ========== =========== ================== Line 0 --------------------> Frame 'j' Line 0 Line 1 Line 1 ----> Frame 'j+1' Line 1 Line 2 ---------------------> Frame 'j' Line 2 Line 3 Line 3 ----> Frame 'j+1' Line 3 ... ... ... New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
接收以下可选参数:
- scan
此参数决定交错帧是从渐进帧的偶数行(默认tff)还是奇数行(bff)生成。
- lowpass
纵向低通滤波器以避免闪烁交错并减少摩尔纹。
- ‘0, off’
禁用纵向低通滤波器
- ‘1, linear’
启用线性滤波器(默认值)
- ‘2, complex’
启用复杂滤波器。这会稍微减少闪烁和摩尔纹,但更好地保留细节和主观清晰感。
32.139 kerndeint
通过应用Donald Graft的自适应核交错法对输入视频进行去交错。作用于视频中的交错部分以生成渐进框架。
以下是可接受参数的描述。
- thresh
设置门限值,该值影响滤镜在判断像素行是否需要处理时的容忍度。必须为[0,255]范围内的整数,默认值为10。值为0将导致对每一个像素进行处理。
- map
如果设置为1,则将超过门限值的像素涂成白色。默认值为0。
- order
设置字段顺序。如果设置为1,则交换字段;如果为0,则保留字段不变。默认值为0。
- sharp
如果设置为1,则启用额外锐化。默认值为0。
- twoway
如果设置为1,则启用双向锐化。默认值为0。
32.139.1 示例
- 应用默认值:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
- 启用额外锐化:
kerndeint=sharp=1
- 将处理的像素涂白:
kerndeint=map=1
32.140 kirsch
对输入视频流应用kirsch算子。
滤镜接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。默认值为0xf,表示处理所有平面。
- scale
设置与过滤结果相乘的值。
- delta
设置添加到过滤结果的值。
32.140.1 命令
此滤镜支持以上所有选项作为命令.
32.141 lagfun
缓慢更新较暗的像素。
该滤镜使短暂的光闪现时间延长。接受以下选项:
- decay
设置衰减的因子。默认值为0.95。允许范围是0到1。
- planes
设置要过滤的平面。默认是所有平面。允许范围是0到15。
32.141.1 命令
此滤镜支持以上所有选项作为命令.
32.142 lenscorrection
校正径向镜头畸变。
该滤镜可用于校正因使用广角镜头而造成的径向畸变,从而重新调整图像。寻找正确参数可以使用例如OpenCV提供的工具,也可以通过试错法找到合适的值。在使用OpenCV时,可通过OpenCV源码中的校准例程(samples/cpp)提取结果矩阵中的k1和k2系数。
注意,该滤镜在KDE项目的开源工具Krita和Digikam中也提供了类似的功能。
与vignette滤镜不同,尽管其也用于补偿镜头误差,该滤镜是校正图像的几何畸变,而vignette滤镜是校正亮度分布,因此在某些情况下可能需要同时使用这两个滤镜,不过需要注意顺序,即先应用镜头校正还是光晕校正。
32.142.1 选项
滤镜接受以下选项:
- cx
图像焦点的相对x坐标,同时也是畸变中心。范围为[0,1],以图像宽度的比例表示。默认值为0.5。
- cy
图像焦点的相对y坐标,同时也是畸变中心。范围为[0,1],以图像高度的比例表示。默认值为0.5。
- k1
二次校正项的系数。范围为[-1,1],值为0表示不进行校正。默认值为0。
- k2
双二次校正项的系数。范围为[-1,1],值为0表示不进行校正。默认值为0。
- i
设置插值类型。可以为
nearest
或bilinear
。默认是nearest
.- fc
指定未映射像素的颜色。有关此选项的语法,请参考(ffmpeg-utils)"颜色"章节。默认颜色是
black@0
.
生成校正的公式为:
r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)
其中r_0是图像对角线的一半,而r_src和r_tgt分别是源图像和目标图像中焦点的距离。
32.142.2 命令
此滤镜支持以上所有选项作为命令.
32.143 lensfun
通过lensfun库(http://lensfun.sourceforge.net/)应用镜头校正。).
滤镜需要提供相机品牌、机型和镜头型号,以应用镜头校正。滤镜将加载lensfun数据库并查询其中是否存在符合选项的相机和镜头条目。只要能够根据给定选项找到对应条目,滤镜即可对帧进行校正。注意,不完整的字符串将导致滤镜从所提供的选项中选择最佳匹配项,并输出所选的相机和镜头型号(以"info"级别记录)。必须提供品牌、机型和镜头型号,因为它们是必需的。lensfun
filter requires the camera make, camera model, and lens model
to apply the lens correction. The filter will load the lensfun database and
query it to find the corresponding camera and lens entries in the database. As
long as these entries can be found with the given options, the filter can
perform corrections on frames. Note that incomplete strings will result in the
filter choosing the best match with the given options, and the filter will
output the chosen camera and lens models (logged with level "info"). You must
provide the make, camera model, and lens model as they are required.
为了获得可用品牌和型号的列表,可以省略其中一个或两个make
和model
选项。滤镜会将完整列表发送到日志中,级别为INFO
。
第一列为品牌,第二列为型号。
要获取可用镜头的列表,请为品牌和型号设定任意值,然后省略lens_model
选项。滤镜将完整输出镜头列表到日志中,级别为INFO
。ffmpeg工具将在打印列表后退出。
此滤镜接受以下选项:
- make
相机品牌(例如,“Canon”)。此选项为必需项。
- model
相机型号(例如,“Canon EOS 100D”)。此选项为必需项。
- lens_model
镜头型号(例如,“Canon EF-S 18-55mm f/3.5-5.6 IS STM”)。此选项为必需项。
- db_path
镜头数据库文件夹的完整路径。如果未设置,滤镜将在构建库时尝试从安装路径加载数据库。默认值未设置。
- mode
需要应用的校正类型。以下值为有效选项:
- ‘vignetting’
启用修正镜头渐晕。
- ‘geometry’
启用修正镜头几何失真。这是默认值。
- ‘subpixel’
启用修正色差。
- ‘vig_geo’
启用修正镜头渐晕和几何失真。
- ‘vig_subpixel’
启用修正镜头渐晕和色差。
- ‘distortion’
启用同时修正几何失真和色差。
- ‘all’
启用所有可能的校正。
- focal_length
设置图像/视频的焦距(变焦;视频预期为恒定)。例如,18–55mm镜头的焦距范围为[18–55],因此在使用该镜头时,应选择该范围内的值。默认值为18。
- aperture
设置图像/视频的光圈(预期为恒定值)。注意,光圈仅用于渐晕校正。默认值为3.5。
- focus_distance
设置图像/视频的焦距(预期为恒定值)。注意,焦距仅用于渐晕,并且仅对渐晕校正过程略有影响。如果未知,则保持为默认值(即1000)。
- scale
在转换后应用的缩放比例。校正后的视频不一定是矩形。此参数控制结果图像的可见程度。值为0表示会自动选择一个值,以确保输出图像中几乎没有未映射区域;1.0表示不进行额外缩放。较小的值可能会显示更多的校正图像,而较高的值可以避免输出中的未映射区域。
- target_geometry
输出图像/视频的目标几何形状。以下值为有效选项:
- ‘rectilinear (default)’
- ‘fisheye’
- ‘panoramic’
- ‘equirectangular’
- ‘fisheye_orthographic’
- ‘fisheye_stereographic’
- ‘fisheye_equisolid’
- ‘fisheye_thoby’
- reverse
应用图像校正的反向效果(与修正畸变相反,应用畸变)。
- interpolation
校正畸变时使用的插值方式。以下值为有效选项:
- ‘nearest’
- ‘linear (default)’
- ‘lanczos’
32.143.1 示例
- 通过镜头校正应用品牌为“Canon”、相机型号为“Canon EOS 100D”、镜头型号为“Canon EF-S 18-55mm f/3.5-5.6 IS STM”,焦距为“18”、光圈为“8.0”。
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
- 与之前一样,但仅应用于前5秒的视频。
ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
32.144 libplacebo
基于libplacebo的灵活GPU加速处理滤镜https://code.videolan.org/videolan/libplacebo).
32.144.1 选项
该过滤器的选项分为以下几个部分:
32.144.1.1 输出模式
这些选项控制总体输出模式。默认情况下,libplacebo将尽可能保留源颜色空间和大小,但会应用源帧中嵌入的胶片颗粒、杜比视界元数据或变形SAR。
- inputs
设置输入数量。这可以与
idx
变量一起使用,以允许在输出帧中放置/混合多个输入。这实际上启用类似于水平堆叠, 覆盖等功能。- w
- h
设置输出视频尺寸表达式。默认值为
iw
和ih
.允许使用与缩放过滤器相同的表达式。
- crop_x
- crop_y
设置输入裁剪的 x/y 表达式,默认值为
(iw-cw)/2
和(ih-ch)/2
.- crop_w
- crop_h
设置输入裁剪宽度/高度表达式,默认值为
iw
和ih
.- pos_x
- pos_y
设置输出放置的 x/y 表达式,默认值为
(ow-pw)/2
和(oh-ph)/2
.- pos_w
- pos_h
设置输出放置宽度/高度表达式,默认值为
ow
和oh
.- fps
设置输出帧率。可以是有理数,例如
60000/1001
。如果设置为特殊字符串none
(默认),输入时间戳将直接传递到未修改的输出。否则,输入视频帧将根据需要插值,以按frame_mixer选项确定的方式调整到指定的目标帧率。- format
设置输出格式覆盖。如果未设置(默认),帧将以与相应输入帧相同的格式输出。否则,将执行格式转换。
- force_original_aspect_ratio
- force_divisible_by
与完全相同的缩放过滤器选项的效果相同。
- normalize_sar
如果启用,输出帧将始终具有1:1的像素宽高比。这将在必要时引入额外的内边距/裁剪。如果禁用(默认),任何宽高比不匹配,包括例如源自变形视频源的比例,将转发到输出像素宽高比。
- pad_crop_ratio
指定输入宽高比与输出宽高比不匹配时的填充与裁剪比率(介于
0.0
和1.0
之间)并且normalize_sar已生效。默认值为0.0
总是用黑色边框填充内容,而值为1.0
总是裁剪掉部分内容。可以使用中间值,从而导致两种方法的混合。- fillcolor
设置用于填充未被输出图像覆盖的输出区域的颜色,例如由normalize_sar导致的。有关此选项的一般语法,请检查(ffmpeg-utils) 在 ffmpeg-utils 文档中的“颜色”部分。默认值为
black
.- corner_rounding
以圆角渲染帧。该值是一个浮点数,范围从
0.0
到1.0
,表示圆角的相对程度,从完全方形到完全圆形。换句话说,它提供半径除以较小边长的一半。默认值为0.0
.- extra_opts
传递额外的 libplacebo 内部配置选项。这些选项可以指定为由冒号分隔的键=值对列表。以下示例演示如何配置自定义过滤器内核(“EWA LanczosSharp”)并使用它将输入图像分辨率加倍:
-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
- colorspace
- color_primaries
- color_trc
- range
配置输出帧将使用的颜色空间。默认值为
auto
输出与输入帧相同格式的帧,从而无变化。对于任何其他值,将执行转换。参见setparams过滤器以获取可能值的列表。
- apply_filmgrain
如果源帧中存在电影颗粒(例如 AV1 或 H.274),则应用并从输出中剥离。默认启用。
- apply_dolbyvision
如果源帧中存在杜比视界 RPU 元数据,则应用并从输出中剥离。默认启用。需要注意的是,杜比视界将始终输出 BT.2020+PQ,覆盖通常的输入帧元数据。这些也将被选为
auto
用于相应帧输出选项的值。
除了文档中为缩放过滤器记录的表达式常量之外,crop_w, crop_h, crop_x, crop_y, pos_w, pos_h, pos_x和pos_y选项还可以包含以下常量:
- in_idx, idx
当前活动输入流的(从0开始)数字索引。
- crop_w, cw
- crop_h, ch
计算出的crop_w和crop_h.
- pos_w, pw
- pos_h, ph
计算出的pos_w和pos_h.
- in_t, t
输入帧时间戳,以秒为单位。如果输入时间戳未知,则为 NAN。
- out_t, ot
输入帧时间戳,以秒为单位。如果输入时间戳未知,则为 NAN。
- n
输入帧号,从0开始。
32.144.1.2 缩放
本节中的选项控制 libplacebo 在进行放大(必要时还包括缩小)时的操作方式。注意,libplacebo 始终在内部处理 4:4:4 内容,因此任何子采样色度格式(如yuv420p
)在渲染过程中都必然会被放大和缩小。这意味着,即使源和目标分辨率相同,也可能会启用缩放。
- upscaler
- downscaler
配置用于放大和缩小的过滤器内核。各自的默认值分别为
spline36
和mitchell
。要查看可能值的完整列表,请传递help
到这些选项。最重要的值包括:- ‘none’
强制使用内置的 GPU 纹理采样(通常是双线性)。速度极快但质量差,尤其是在缩小时。
- ‘bilinear’
双线性插值。通常可以免费在 GPU 上完成,除了会导致混叠的情况外。速度快但质量差。
- ‘nearest’
最近邻插值。锐利但高度混叠。
- ‘oversample’
一种看起来与最近邻插值视觉上类似但试图保留像素比例的算法。对于像素艺术效果很好,因为它会尽可能减少对艺术外观的扭曲。
- ‘lanczos’
标准的 sinc-sinc 插值内核。
- ‘spline36’
Lanczos 的立方样条近似值。性能没有差异,但略微减少了振铃。
- ‘ewa_lanczos’
基于 jinc-sinc 内核的 Lanczos 的椭圆加权平均版本。这也被流行称为“Jinc 缩放”。速度慢但质量非常高。
- ‘gaussian’
高斯内核。具有某些理想的数学特性,但主观上非常模糊。
- ‘mitchell’
米切尔和奈特拉瓦力推荐的带参数的立方 BC 样条。几乎没有振铃。
- frame_mixer
控制用于在时间上混合帧的内核。默认值为
none
,禁用帧混合。查看可能值的完整列表,请传递help
到此选项。最重要的值包括:- ‘none’
禁用帧混合,生成与“最近邻”语义等效的结果。
- ‘oversample’
对输入视频进行超采样以创建“平滑运动”类型效果:如果输出帧恰好出现在两个视频帧之间的过渡处,则根据相对重叠进行混合。无论何时需要保留原始主观外观,这都是推荐的选项。
- ‘mitchell_clamp’
较大的过滤器内核,以平滑插值多个帧的方式设计,从而尽可能消除振铃和其他伪影。这是在任何地方追求最大视觉平滑度的推荐选项。
- ‘linear’
在帧之间进行线性混合/淡出。特别适合构建例如幻灯片。
- lut_entries
配置 scaler LUT 的大小,范围从
1
到256
。默认值0
将选择 libplacebo 的内部默认值,通常为64
.- antiringing
启用抗振铃(对于非EWA过滤器)。值范围(介于
0.0
到1.0
之间)配置抗振铃算法的强度。如果设置过高可能会增加混叠。默认禁用。- sigmoid
在放大期间启用 S 字形压缩。稍微减少振铃。默认启用。
32.144.1.3 去色带
Libplacebo 带有一个内置的去色带过滤器,可以很好地抵消许多常见的色带和块效应。如果追求质量,强烈建议将其打开。
- deband
启用(快速)去色带算法。默认禁用。
- deband_iterations
去色带算法的迭代次数。每次迭代都会以逐步增加的半径(和减弱的阈值)进行。推荐值范围在
1
到4
之间。默认值为1
.- deband_threshold
去色带滤波器强度。更高的数字会导致更激进的去色带处理。默认值为
4.0
.- deband_radius
去色带滤波器半径。半径较高更适合缓慢渐变,而半径较低适合陡峭渐变。默认值为
16.0
.- deband_grain
要添加的额外输出颗粒量。帮助隐藏瑕疵。默认值为
6.0
.
32.144.1.4 颜色调整
一组主观色彩控制。不太严格,因此具体效果会因输入主色和色彩空间而有所不同。
- brightness
亮度提升,范围介于
-1.0
到1.0
之间。默认值为0.0
.- contrast
对比度增益,范围介于
0.0
到16.0
之间。默认值为1.0
.- saturation
饱和度增益,范围介于
0.0
到16.0
之间。默认值为1.0
.- hue
色调偏移,以弧度为单位,范围介于
-3.14
到3.14
之间。默认值为0.0
。这将旋转 UV 子向量,RGB 输入默认使用 BT.709 系数。- gamma
伽马调整,范围介于
0.0
到16.0
之间。默认值为1.0
.- cones
用于色盲模拟的锥体模式。接受
l
,m
和s
的任意组合。以下是一些示例:- ‘m’
绿色弱视 / 绿色盲(影响3%-4%人口)
- ‘l’
红绿色弱视 / 红绿色盲(影响1%-2%人口)
- ‘l+m’
全色盲(非常罕见)
- ‘l+m+s’
全色盲(完全丧失白天视觉,极为罕见)
- cone-strength
指定由
cones
定义的锥体的增益因子,范围介于0.0
到10.0
之间。值为1.0
不会改变色觉。值为0.0
(默认)模拟完全丧失这些锥体的情况。超过1.0
的值会增加锥体之间的差异,这可能有助于补偿色觉减弱。
32.144.1.5 峰值检测
为了帮助处理仅具有静态 HDR10 元数据(或根本没有标记)的源,libplacebo 使用其自己的内部帧分析计算着色器来分析源帧并实时调整色调映射功能。如果这太慢,或者需要完全可复制的帧级完美结果,建议关闭此功能。
- peak_detect
启用 HDR 峰值检测。忽略静态 MaxCLL/MaxFALL 值,优先从输入中动态检测。注意,检测到的值不会写回到输出帧,它们只是引导内部色调映射过程。默认启用。
- smoothing_period
峰值检测平滑周期,范围介于
0.0
到1000.0
之间。更高的值会导致峰值检测对输入变化的响应变慢。默认值为100.0
.- minimum_peak
检测到的峰值的下限(相对于 SDR 白色),范围介于
0.0
到100.0
之间。默认值为1.0
.- scene_threshold_low
- scene_threshold_high
场景变更检测的上下阈值。在
0.0
到100.0
范围内以对数刻度表示。默认值为5.5
和10.0
。若将任一设置为负值可禁用此功能。- percentile
用作色调映射源峰值的帧亮度直方图分位数。默认值为
99.995
,相当保守的值。将其设置为100.0
禁用帧直方图测量,改为使用真实峰值亮度进行色调映射。
32.144.1.6 色调映射
本节中的选项控制 libplacebo 在处理宽色域或 HDR 内容之间的失配时进行色调映射和色域映射的方式。总的来说,libplacebo 依赖于准确的源标签和母版显示色域信息,以产生最佳效果。
- gamut_mode
如何处理由于色度色域映射而可能发生的颜色超出范围的情况。
- ‘clip’
什么都不做,只是将超范围的颜色剪裁到RGB范围内。质量低但速度非常快。
- ‘perceptual’
以感知方式将颜色柔和剪裁到色域范围内。这是默认设置。
- ‘relative’
相对的色度硬剪裁。类似于
perceptual
但没有柔和过渡。- ‘saturation’
饱和度映射,在RGB空间中直接将原色映射到原色。不推荐使用,除非用于人工计算机图形中希望明亮饱和的显示。
- ‘absolute’
绝对色度硬剪裁。不进行对白点的调整。
- ‘desaturate’
将超范围颜色硬性去饱和,向白色靠近,同时保留亮度。容易导致明亮物体的视觉外观失真。
- ‘darken’
线性降低内容亮度以保留饱和细节,然后剪裁剩余的超范围颜色。
- ‘warn’
突出显示超范围像素(通过反转/标记它们)。
- ‘linear’
线性减小整个图像的色度以适应目标色彩范围。使用此设置处理没有正确母版元数据的BT.2020源时请十分小心,因为这样会导致过度去饱和。
- tonemapping
使用的色调映射算法。可用值为:
- ‘auto’
基于内部启发式的自动选择。这是默认设置。
- ‘clip’
不执行色调映射,只剪裁超范围颜色。对范围内的颜色保留完全准确,但完全丢失超范围信息。未执行任何黑点调整。不可配置。
- ‘st2094-40’
从SMPTE ST 2094-40附录B的EETF,使用HDR10+动态元数据的贝塞尔曲线进行色调映射。根据目标与实际显示峰值亮度之间的比例调整OOTF。
- ‘st2094-10’
从SMPTE ST 2094-10附录B.2的EETF,考虑输入信号的平均亮度以及最大/最小。可配置的对比度参数影响线性输出段的斜率,默认值为
1.0
,表示对比度没有增加或减少。请注意,目前尚未包括附录B.3中定义的主观增益/偏移/伽玛控制。- ‘bt.2390’
ITU-R报告BT.2390的EETF,含线性段的赫米特样条过渡。膝点偏移量可配置。请注意,此参数默认为
1.0
,而不是ITU-R规范中的值0.5
。- ‘bt.2446a’
ITU-R报告BT.2446方法A的EETF。专为制作精良的HDR源设计,可用于前向和反向色调映射。不可配置。
- ‘spline’
由两个多项式组成的简单样条,连接处有一个单一的枢点。参数指定枢点(在PQ空间中),默认值为
0.30
。可用于前向和反向色调映射。- ‘reinhard’
简单非线性全球色调映射算法。参数指定显示峰值的局部对比度系数。基本上,参数为
0.5
意味着参考白点的亮度大约为剪裁情况下的一半。默认值为0.5
,这使得该函数的表达式最简单。- ‘mobius’
雷哈德色调映射算法的推广,支持接近黑色的附加线性斜率。色调映射参数表示线性部分与非线性部分之间的权衡。基本上,对于给定参数x,每个颜色值低于x的部分都将被线性映射,而较高的值则进行非线性色调映射。接近
1.0
的值使此曲线表现类似于clip
,而接近0.0
的值使此曲线表现类似于reinhard
。默认值为0.3
,在保留超范围细节和色度准确性之间提供了一个良好的平衡。- ‘hable’
约翰·哈布尔开发的分段电影色调映射算法,用于《神秘海域2》。受柯达用于类似色调映射算法的启发。因其在具有HDR渲染的视频游戏中的应用而普及。能够非常好地保留暗部和亮部细节,但其缺点是会显著改变平均亮度。这有点类似于
reinhard
参数为0.24
.- ‘gamma’
拟合伽马(幂)函数以在源和目标颜色空间之间转换,有效结果是感知硬性过渡连接两个近似线性部分。这能较准确地保留所有尺度的细节,但可能导致图像显得黯淡或沉闷。参数用于作为截止点,默认值为
0.5
.- ‘linear’
在PQ空间中线性拉伸输入范围到输出范围。这将准确地保留所有细节,但会显著改变平均亮度。除了常规色调映射,还可用于反向色调映射。此参数可用作附加线性增益系数(默认值为
1.0
).
- tonemapping_param
对于可调色调映射函数,此参数可用于微调曲线行为。请参见
tonemapping
的文档。默认值0.0
由曲线的首选默认设置替代。- inverse_tonemapping
如果启用,此滤镜还将尝试将SDR信号拉伸以填充HDR输出色彩范围。默认情况下禁用。
- tonemapping_lut_size
色调映射LUT的大小范围在
2
和1024
之间。默认值为256
。注意,当与peak_detect
.- contrast_recovery
对比度恢复强度。设置为高于
0.0
的值时,源图像将被分为高频和低频分量,并在色调映射输出中添加一部分高频图像。这可能会导致某些HDR源出现过度振铃伪影,但可以改善色调映射后图像的主观清晰度和细节剩余。默认值为0.30
.- contrast_smoothness
对比度恢复低通核大小。默认值为
3.5
。增加或减少它将显著影响视觉效果。当禁用contrast_recovery
时,则不会产生影响。
32.144.1.7 抖动
默认情况下,libplacebo会在必要时进行抖动,这包括渲染到任何低于16位精度的整数格式。建议始终保持启用状态,否则可能在输出中出现明显的色带效应,即使启用了debanding
滤镜,为了达到最大性能,可以使用ordered_fixed
代替禁用抖动。
- dithering
使用的抖动方法。接受以下值:
- ‘none’
完全禁用抖动。可能会出现明显的色带。
- ‘blue’
使用伪蓝噪声进行抖动。这是默认设置。
- ‘ordered’
可调的有序抖动模式。
- ‘ordered_fixed’
更快的固定大小抖动,大小为
6
。无纹理。- ‘white’
使用白噪声进行抖动。无纹理。
- dither_lut_size
抖动LUT大小,以对数基准2表示范围为
1
到8
。默认值为6
,对应于64x64
.- dither_temporal
启用时间抖动。默认情况下禁用。
32.144.1.8 自定义着色器
libplacebo支持基于mpv .hook GLSL语法的多个自定义着色器。此类着色器的集合可以在这里找到:https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders
对mpv着色器格式的完整描述超出了本节范围,但摘要可以在这里找到:https://mpv.io/manual/master/#options-glsl-shader
- custom_shader_path
指定运行时加载的自定义着色器文件路径。
- custom_shader_bin
指定完整的自定义着色器作为原始字符串。
32.144.1.9 调试/性能
本节中所有选项默认关闭。它们可能在试图以质量为代价达到最高性能时有帮助。
- skip_aa
下采样时禁用抗锯齿。
- polar_cutoff
将极性(EWA)缩放器核截掉低于绝对振幅的值,范围在
0.0
和1.0
.- disable_linear
禁用线性光缩放。
- disable_builtin
禁用内置GPU采样(强制使用LUT)。
- disable_fbos
强制禁用FBO,导致几乎所有功能丧失,但提供最大的速度。
32.144.2 命令
此滤镜支持几乎所有上述选项作为命令.
32.144.3 示例
- 将输入色调映射到标准色域BT.709输出:
libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
- 将输入重新缩放以适应标准1080p,采用高质量缩放:
libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
- 将低FPS/VFR输入插值为平滑的恒定60 FPS输出:
libplacebo=fps=60:frame_mixer=mitchell_clamp
- 将输入转换为标准的sRGB JPEG:
libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
- 使用更高质量的去条带设置:
libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
- 在安装Mesa的系统上运行此滤镜,使用CPU(并禁用最昂贵的选项):
ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
- 在解码器中抑制CPU基础的AV1/H.274电影颗粒应用,而使用此滤镜来处理。请注意,只有在帧已经位于GPU上或者您正在将libplacebo用于其他目的时,这是有效的,因为否则VRAM往返将超过任何预期的速度加快。
ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
- 与VAAPI硬解码的互操作,避免通过RAM来回传输:
ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
32.145 libvmaf
计算参考/失真视频对的VMAF(视频多方法评估融合)分数。
第一个输入是失真视频,第二个输入是参考视频。
获得的VMAF分数通过日志系统打印。
它需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后可以通过以下方式启用:./configure --enable-libvmaf
.
此滤镜有以下选项:
- model
由多个用‘|’分隔的vmaf模型组成的列表。每个模型可以通过一些参数进行配置。默认值:
"version=vmaf_v0.6.1"
- feature
由多个用‘|’分隔的特征组成的列表。每个特征可以通过一些参数进行配置。
- log_path
设置用于存储日志文件的文件路径。
- log_fmt
设置日志文件的格式(xml, json, csv或sub)。
- pool
设置用于计算vmaf的池方法。选项为
min
,harmonic_mean
或mean
(默认)。- n_threads
设置初始化libvmaf时使用的线程数。默认值:
0
,无线程。- n_subsample
设置使用的帧子采样间隔。
此滤镜还支持framesync选项。
32.145.1 示例
- 在以下示例中,一个失真视频distorted.mpg与参考文件进行比对reference.mpg.
- 基本使用:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
- 使用多模型的示例:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
- 使用多个附加特征的示例:
ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
- 使用选项和不同容器的示例:
ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
32.146 libvmaf_cuda
这是libvmaf滤镜的CUDA变体,仅接受CUDA帧。
它需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后可以通过以下方式启用:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf
.
32.146.1 示例
- 展示CUVID硬件解码和使用scale_cuda:
ffmpeg \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \ -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \ -filter_complex " [0:v]scale_cuda=format=yuv420p[dis]; \ [1:v]scale_cuda=format=yuv420p[ref]; \ [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json " \ -f null -
进行CUDA缩放的基本使用。
使用第二个视频流(可选第三个视频流)应用有限差异滤镜。
滤镜接受以下选项:
- threshold
设置用于允许视频流之间差异的阈值。任意小于或等于此阈值的绝对差值将从第一个视频流中选取像素分量。
- elasticity
设置处理视频流时软阈值弹性。将此值与第一个值相乘即设置第二个阈值。任意大于或等于第二个阈值的绝对差值将从第二个视频流选取像素分量。对于介于这两个阈值之间的值,将在线性插值第一个和第二个视频流之间选择。
- reference
启用参考(第三个)视频流处理。默认情况下禁用。如果设置,此视频流将用于计算与第一个视频流的绝对差值。
- planes
指定将处理哪些平面。默认为所有可用的。
32.147.1 命令
此滤镜支持以上所有选项作为命令除了选项'reference’.
32.148 限幅器
将像素分量的值限制在指定的范围[min, max]内。
该滤镜接受以下选项:
- min
下限。默认为输入的最低允许值。
- max
上限。默认为输入的最高允许值。
- planes
指定将处理哪些平面。默认为所有可用的。
32.148.1 命令
此滤镜支持以上所有选项作为命令.
32.149 循环
循环视频帧。
该滤镜接受以下选项:
- loop
设置循环次数。将此值设置为 -1 将导致无限循环。默认值为 0。
- size
设置最大帧数。默认值为 0。
- start
设置循环的第一帧。默认值为 0。
- time
设置循环开始的时间(秒)。仅在命名为start的选项被设置时使用。
-1
.
32.149.1 示例
- 无限循环单个第一帧:
loop=loop=-1:size=1:start=0
- 循环单个第一帧 10 次:
loop=loop=10:size=1:start=0
- 循环前 10 帧 5 次:
loop=loop=5:size=10:start=0
32.150 lut1d
对输入视频应用 1D LUT。
该滤镜接受以下选项:
- file
设置 1D LUT 文件名。
当前支持的格式:
- ‘cube’
Iridas
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最近定义点的值。
- ‘linear’
使用线性插值值。
- ‘cosine’
使用余弦插值值。
- ‘cubic’
使用立方插值值。
- ‘spline’
使用样条插值值。
32.150.1 命令
此滤镜支持以上所有选项作为命令.
32.151 lut3d
对输入视频应用 3D LUT。
该滤镜接受以下选项:
- file
设置 3D LUT 文件名。
当前支持的格式:
- ‘3dl’
AfterEffects
- ‘cube’
Iridas
- ‘dat’
DaVinci
- ‘m3d’
Pandora
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最近定义点的值。
- ‘trilinear’
使用定义立方体的 8 个点进行插值。
- ‘tetrahedral’
使用四面体插值。
- ‘pyramid’
使用金字塔插值。
- ‘prism’
使用棱柱插值。
32.151.1 命令
此滤镜支持interp
选项作为命令.
32.152 lumakey
将某些亮度值转为透明。
该滤镜接受以下选项:
- threshold
设置用于透明度基础的亮度。默认值为
0
.- tolerance
设置要剔除的亮度值范围。默认值为
0.01
.- softness
设置柔和度范围。默认值为
0
。用此来控制从零到完全透明的渐变过渡。
32.152.1 命令
此滤镜支持相同命令作为选项。命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
32.153 lut, lutrgb, lutyuv
计算一个查找表来将每个像素分量的输入值绑定到输出值,并将其应用于输入视频。
lutyuv应用查找表到 YUV 输入视频,lutrgb应用于 RGB 输入视频。
这些滤镜接受以下参数:
- c0
设置第一个像素分量的表达式
- c1
设置第二个像素分量的表达式
- c2
设置第三个像素分量的表达式
- c3
设置第四个像素分量的表达式,对应于 alpha 分量
- r
设置红色分量表达式
- g
设置绿色分量表达式
- b
设置蓝色分量表达式
- a
alpha 分量表达式
- y
设置 Y/亮度分量表达式
- u
设置 U/Cb 分量表达式
- v
设置 V/Cr 分量表达式
每个都指定用于计算相应像素分量值查找表的表达式。
与每个c*选项关联的确切分量取决于输入的格式。
该lut滤镜需要输入为 YUV 或 RGB 像素格式,lutrgb需要输入为 RGB 像素格式,而lutyuv需要 YUV。
表达式可以包含以下常量和函数:
- w
- h
输入的宽度和高度。
- val
像素分量的输入值。
- clipval
输入值,裁剪到minval-maxval范围。
- maxval
像素分量的最大值。
- minval
像素分量的最小值。
- negval
像素分量值的取反值,裁剪到minval-maxval范围;其等于表达式“maxval-clipval+minval”。
- clip(val)
计算值val,裁剪到minval-maxval范围。
- gammaval(gamma)
像素分量值的计算伽马校正值,裁剪到minval-maxval范围。其等于表达式“pow((clipval-minval)/(maxval-minval),gamma)*(maxval-minval)+minval”。
所有表达式默认值为“clipval”。
32.153.1 命令
此滤镜支持相同命令作为选项。
32.153.2 示例
- 反转输入视频:
lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
上述等同于:
lutrgb="r=negval:g=negval:b=negval" lutyuv="y=negval:u=negval:v=negval"
- 反转亮度:
lutyuv=y=negval
- 移除色度分量,将视频变成灰度图像:
lutyuv="u=128:v=128"
- 应用亮度燃烧效果:
lutyuv="y=2*val"
- 移除绿色和蓝色分量:
lutrgb="g=0:b=0"
- 在输入上设置固定的 alpha 通道值:
format=rgba,lutrgb=a="maxval-minval/2"
- 通过因子 0.5 校正亮度伽玛:
lutyuv=y=gammaval(0.5)
- 丢弃亮度的最低有效位:
lutyuv=y='bitand(val, 128+64+32)'
- Technicolor 类似效果:
lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
32.154 lut2, tlut2
此lut2
滤镜接受两个输入流并输出一个流。
此tlut2
(时间 lut2) 滤镜从单个流中接受两个连续帧。
此滤镜接受以下参数:
- c0
设置第一个像素分量表达式
- c1
设置第二个像素分量表达式
- c2
设置第三个像素分量表达式
- c3
设置第四个像素分量表达式,对应于 alpha 分量
- d
设置输出位深,仅适用于
lut2
滤镜。默认值为 0,表示位深从第一个输入格式自动选择。
此lut2
滤镜也支持framesync选项。
每个都指定用于计算相应像素分量值查找表的表达式。
与每个c*选项关联的确切分量取决于输入的格式。
表达式可以包含以下常量:
- w
- h
输入的宽度和高度。
- x
像素分量的第一个输入值。
- y
像素分量的第二个输入值。
- bdx
第一输入视频的位深。
- bdy
第二输入视频的位深。
所有表达式的默认值是“x”。
32.154.1 命令
此滤镜支持以上所有选项作为命令除了选项d
.
32.154.2 示例
- 突出显示两个 RGB 视频流之间的差异:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
- 突出显示两个 YUV 视频流直接的差异:
lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
- 显示两个视频流之间的最大差异:
lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
32.155 maskedclamp
使用第二输入流与第三输入流对第一个输入流进行限定。
将第一个流的值限定在第二输入流的范围内-undershoot
和第三输入流的范围+overshoot
.
此滤镜接受以下选项:
- undershoot
默认值为
0
.- overshoot
默认值为
0
.- planes
设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。
32.155.1 命令
此滤镜支持以上所有选项作为命令.
32.156 maskedmax
将第二个输入流和第三个输入流合并到输出流中,使用第二个输入流与第一个输入流之间的绝对差异和第三个输入流与第一个输入流之间的绝对差异。如果第二个绝对差异大于第一个绝对差异,则选取第二个输入流的值,否则选取第三个输入流的值。
此滤镜接受以下选项:
- planes
设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。
32.156.1 命令
此滤镜支持以上所有选项作为命令.
32.157 maskedmerge
以像素为单位的权重使用第三输入流将第一个输入流与第二输入流合并。
在第三输入流像素分量中的值为 0 时,将返回第一个输入流的像素分量未修改;而最大值(例如 8-bit 视频的 255)表示返回未修改的第二输入流像素分量。介于两者间的值定义了输入流像素分量之间的合并量。
此滤镜接受以下选项:
- planes
设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。
32.157.1 命令
此滤镜支持以上所有选项作为命令.
32.158 maskedmin
将第二个输入流和第三个输入流合并到输出流中,使用第二个输入流与第一个输入流之间的绝对差异和第三个输入流与第一个输入流之间的绝对差异。如果第二个绝对差异小于第一个绝对差异,则选取第二个输入流的值,否则选取第三个输入流的值。
此滤镜接受以下选项:
- planes
设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。
32.158.1 命令
此滤镜支持以上所有选项作为命令.
32.159 maskedthreshold
通过比较两个视频流的绝对差异和固定的阈值选择像素。
如果第一个和第二个视频流像素分量之间的绝对差异小于或等于用户提供的阈值,则选取第一个视频流的像素分量,否则选取第二个视频流的像素分量。
此滤镜接受以下选项:
- threshold
设置用于从两个输入视频流的绝对差异中选择像素的阈值。
- planes
设置哪些平面将作为位图进行处理,未处理的平面将从第二个流中复制。默认值为 0xf,所有平面都将被处理。
- mode
设置滤镜操作模式。可以为
abs
或diff
。默认值为abs
.
32.159.1 命令
此滤镜支持以上所有选项作为命令.
32.160 maskfun
从输入视频创建掩码。
例如,它在过滤器之后创建运动掩码非常有用。tblend
过滤器。
此滤镜接受以下选项:
- low
设置低阈值。任何像素分量小于或等于此值的都将设置为 0。
- high
设置高阈值。任何像素分量大于此值的都将设置为当前像素格式允许的最大值。
- planes
设置要过滤的平面,默认情况下所有可用平面都会被过滤。
- fill
用此值填充所有帧像素。
- sum
设置帧的最大平均像素值。如果所有像素分量的总和高于此平均值,输出帧将完全用fill选项设置的值填充。通常,这与
tblend
过滤器结合使用时对于场景切换很有用。
32.160.1 命令
此滤镜支持以上所有选项作为命令.
32.161 mcdeint
应用运动补偿的去隔行处理。
它需要每帧一个场作为输入,因此必须与 yadif=1/3 或同等方式一起使用。
此滤镜接受以下选项:
- mode
设置去隔行模式。
它接受以下值之一:
- ‘fast’
- ‘medium’
- ‘slow’
使用迭代运动估计
- ‘extra_slow’
类似于‘slow’,但使用多个参考帧。
默认值为‘fast’.
- parity
设置输入视频的图像场顺序假设。它必须是以下值之一:
- ‘0, tff’
假设顶部场优先
- ‘1, bff’
假设底部场优先
默认值为‘bff’.
- qp
设置内部编码器使用的按块量化参数(QP)。
较高的值会导致更平滑的运动向量场,但个别向量可能会较低效。默认值为1。
32.162中值
从由半径定义的某个矩形中选择中值像素。
此滤镜接受以下选项:
- radius
设置水平半径大小。默认值为
1
。 允许范围是 1 到 127 的整数。- planes
设置要处理的平面。默认值为
15
,即所有可用的平面。- radiusV
设置垂直半径大小。默认值为
0
。 允许范围是 0 到 127 的整数。 如果为0,将从水平radius
选项中取值。- percentile
设置中值百分位。默认值为
0.5
。 默认值0.5
将始终选择中值,0
选择最小值,1
选择最大值。
32.162.1命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
32.163合并平面
从多个视频流中合并颜色通道组件。
此滤镜最多接受4个输入流,并将选定的输入平面合并到输出视频中。
此滤镜接受以下选项:
- mapping
设置输入到输出平面映射方式。默认值为
0
.映射方法被定义为一个位图。它应以十六进制数的形式指定,如 0xAa[Bb[Cc[Dd]]]。‘Aa’描述了第一输出流平面的映射。‘A’设置使用的输入流编号(从0到3),‘a’设置使用的对应输入的平面编号(从0到3)。剩余映射类似,‘Bb’描述了第二输出流平面的映射,‘Cc’描述了第三输出流平面的映射,‘Dd’描述了第四输出流平面的映射。
- format
设置输出像素格式。默认值为
yuva444p
.- map0s
- map1s
- map2s
- map3s
设置输出第N个平面的输入与输出流映射方式。默认值为
0
.- map0p
- map1p
- map2p
- map3p
设置输出第N个平面的输入与输出平面映射方式。默认值为
0
.
32.163.1示例
- 将三个具有相同宽度和高度的灰度视频流合并为一个视频流:
[a0][a1][a2]mergeplanes=0x001020:yuv444p
- 将第一个yuv444p流和第二个灰度视频流合并为yuva444p视频流:
[a0][a1]mergeplanes=0x00010210:yuva444p
- 在yuva444p流中交换Y和A平面:
format=yuva444p,mergeplanes=0x03010200:yuva444p
- 在yuv420p流中交换U和V平面:
format=yuv420p,mergeplanes=0x000201:yuv420p
- 将rgb24剪辑转换为yuv444p:
format=rgb24,mergeplanes=0x000102:yuv444p
32.164运动估计
使用块匹配算法估计并导出运动向量。运动向量存储在帧侧数据中,以供其他滤镜使用。
此滤镜接受以下选项:
- method
指定运动估计方法。接受以下值之一:
- ‘esa’
穷举搜索算法。
- ‘tss’
三步搜索算法。
- ‘tdls’
二维对数搜索算法。
- ‘ntss’
新的三步搜索算法。
- ‘fss’
四步搜索算法。
- ‘ds’
菱形搜索算法。
- ‘hexbs’
基于六边形的搜索算法。
- ‘epzs’
增强预测区域搜索算法。
- ‘umh’
不均匀多六边形搜索算法。
默认值为‘esa’.
- mb_size
宏块大小。默认值为
16
.- search_param
搜索参数。默认值为
7
.
32.165中值均衡器
使用两个视频流应用中值图像均衡效果。
中值图像均衡可调整一对图像使它们具有相同的直方图,同时尽可能保持它们的动态效果。这在例如调整一对立体摄像机的曝光时非常有用。
此滤镜有两个输入和一个输出,必须具有相同的像素格式,但可以具有不同的尺寸。滤镜的输出是通过两个输入的中值直方图调整后的第一个输入。
此滤镜接受以下选项:
- planes
设置要处理的平面。默认值为
15
,即所有可用平面。
32.166运动插值
使用运动插值将视频转换为指定的帧率。
此滤镜接受以下选项:
- fps
指定输出帧率。这可以是有理数,例如
60000/1001
。如果fps低于源帧率,则会丢帧。默认值为60
.- mi_mode
运动插值模式。接受以下值:
- ‘dup’
用前一帧或后一帧重复来插值新帧。
- ‘blend’
混合源帧。插值帧是前一帧和下一帧的平均值。
- ‘mci’
运动补偿插值。当选择此模式时,以下选项有效:
- ‘mc_mode’
运动补偿模式。接受以下值:
- ‘obmc’
重叠块运动补偿。
- ‘aobmc’
自适应重叠块运动补偿。窗口加权系数根据邻近运动矢量的可靠性自适应控制,以减少过度平滑。
默认模式为‘obmc’.
- ‘me_mode’
运动估计模式。接受以下值:
- ‘bidir’
双向运动估计。对每个源帧分别进行前后两个方向的运动矢量估计。
- ‘bilat’
双边运动估计。直接对插值帧进行运动矢量估计。
默认模式为‘bilat’.
- ‘me’
用于运动估计的算法。接受以下值:
- ‘esa’
穷举搜索算法。
- ‘tss’
三步搜索算法。
- ‘tdls’
二维对数搜索算法。
- ‘ntss’
新的三步搜索算法。
- ‘fss’
四步搜索算法。
- ‘ds’
菱形搜索算法。
- ‘hexbs’
基于六边形的搜索算法。
- ‘epzs’
增强预测区域搜索算法。
- ‘umh’
不均匀多六边形搜索算法。
默认算法为‘epzs’.
- ‘mb_size’
宏块大小。默认值为
16
.- ‘search_param’
运动估计搜索参数。默认值为
32
.- ‘vsbmc’
启用可变大小块运动补偿。运动估计在对象边界处采用更小的块大小,以减少模糊效果。默认值为
0
(禁用)。
- scd
场景变化检测方法。场景变化会导致运动矢量随机变化。场景变化检测会用重复的帧替换插值帧。其他模式可能不需要此功能。接受以下值:
- ‘none’
禁用场景变化检测。
- ‘fdiff’
帧差异。比较对应像素值,如果满足scd_threshold条件,则检测到场景变化。
默认方法为‘fdiff’.
- scd_threshold
场景变化检测阈值。默认值为
10.
.
32.167混合
将多个视频输入流混合为一个视频流。
以下是接受的选项描述。
- inputs
输入数量。如果未明确指定,则默认为2。
- weights
指定每个输入视频流的权重序列。 每个权重以空格分隔。如果权重数量少于帧的数量,最后指定的权重将用于所有剩余未设置的权重。
- scale
指定缩放,如果设置,将和每个权重的总和及像素值相乘来计算最终目标像素值。默认情况下scale会自动缩放到权重的总和。
- planes
设置要过滤的平面。默认是全部。允许范围是从0到15。
- duration
指定如何确定流的结束。
- ‘longest’
最长输入的持续时间。(默认)
- ‘shortest’
最短输入的持续时间。
- ‘first’
第一个输入的持续时间。
32.167.1命令
此滤镜支持以下命令:
- weights
- scale
- planes
语法与具有相同名称的选项相同。
32.168单色
使用自定义颜色滤镜将视频转换为灰度。
以下是接受的选项描述。
- cb
设置蓝色色度点。允许范围是 -1 到 1。 默认值为0。
- cr
设置红色色度点。允许范围是 -1 到 1。 默认值为0。
- size
设置颜色滤镜的大小。允许的范围是 0.1 到 10。 默认值为1。
- high
设置高光强度。允许范围是 0 到 1。 默认值为0。
32.168.1命令
此滤镜支持上述所有选项作为命令.
32.169形态学
此滤镜允许应用主要的灰度形态学变换,比如用第二个输入流的任意结构进行腐蚀和膨胀。
与在腐蚀和膨胀滤镜中的原始实现和速度慢的性能不同,当速度很重要时应使用morpho
滤镜。
以下是接受的选项描述。
- mode
设置要应用的形态学变换,可以是:
- ‘erode’
- ‘dilate’
- ‘open’
- ‘close’
- ‘gradient’
- ‘tophat’
- ‘blackhat’
默认值为
erode
.- planes
设置要过滤的平面,默认情况下除alpha以外的所有平面被过滤。
- structure
设置第二输入流中结构视频帧的处理方式,可以是第一个或所有。默认值为所有.
此morpho
滤镜还支持framesync选项。
32.169.1命令
此滤镜支持与选项相同的命令。
32.170降帧
丢弃与上一帧相比变化不大的帧,以降低帧率。
此滤镜的主要用途是用于非常低比特率的编码(例如通过拨号调制解调器的流媒体),但理论上可以用于修复错误逆向扫描的电影。
以下是接受的选项描述。
- max
设置可丢弃的连续帧的最大数量(如果为正值),或丢弃帧之间的最小间隔(如果为负值)。如果值为0,无视先前已连续丢弃帧的数量直接丢弃当前帧。
默认值为0。
- keep
设置在开始丢弃前要忽略的连续相似帧的最大数量。 如果值为0,无视先前已连续相似的帧的数量直接丢弃当前帧。
默认值为0。
- hi
- lo
- frac
设置丢弃阈值。
的值hi和lo是8x8像素块的值,表示实际像素值差异,所以阈值64表示每个像素有1个单位差异,或者差异不同地分布在块内。
如果没有任何8x8块的像素差超过hi阈值,并且超过阈值的块数不超过frac(1表示整个图像),则该帧是丢弃的候选。lo.
的默认值为64*12,hi的默认值为64*5,lo的默认值为0.33。frac的值
32.171MSAD
获取两个输入视频的MSAD(绝对差异均值之和)。
此滤镜需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式,才能正确地工作。此外,它假设两个输入具有相同数量的帧,它们一一比较。
每个组件、平均值、最小值和最大值的MSAD值通过日志系统打印出来。
滤镜将每帧的计算MSAD存储在帧元数据中。
此滤镜还支持framesync选项。
在下面的示例中,输入文件main.mpg正在处理,与参考文件ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
32.172乘法
将第一个视频流的像素值与第二个视频流的像素值相乘。
此滤镜接受以下选项:
- scale
设置应用于第二视频流的缩放比例。默认值是
1
。 允许的范围是从0
到9
.- offset
设置应用于第二视频流的偏移量。默认值是
0.5
。 允许的范围是从-1
到1
.- planes
指定输入视频流中将被处理的平面。 默认情况下,所有平面都会被处理。
32.172.1 命令
此滤镜支持与选项相同的命令。
32.173 反转
反转(取反)输入视频。
它接受以下选项:
- components
设置要反转的组件。
可用的组件值有:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
- negate_alpha
值为1时,反转存在的alpha组件。默认值为0。
32.173.1 命令
此滤镜支持与选项相同的命令。
32.174 nlmeans
使用非局部均值算法对帧进行去噪。
通过查找具有相似上下文的其他像素来调整每个像素。 这种上下文相似性是通过比较周围的补丁大小pxp定义的。补丁在rxr的区域内进行搜索。
注意,研究区域定义了补丁的中心,这意味着有些补丁将由研究区域外的像素组成。
该滤镜接受以下选项。
- s
设置去噪强度。默认值为1.0。必须在范围[1.0, 30.0]内。
- p
设置补丁大小。默认值为7,必须是范围[0, 99]内的奇数。
- pc
与p相同,但针对色度平面。
默认值是0,表示自动。
- r
设置研究大小。默认值为15,必须是范围[0, 99]内的奇数。
- rc
与r相同,但针对色度平面。
默认值是0,表示自动。
32.175 nnedi
使用神经网络边缘导向插值对视频进行反交错。
该滤镜接受以下选项:
- weights
强制性选项,缺少二进制文件时滤镜将无法工作。 目前可在此处找到文件: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
- deint
设置要反交错的帧,默认值是
all
。 可以是all
或interlaced
.- field
设置操作模式。
可以是以下之一:
- ‘af’
使用帧标志,两个场。
- ‘a’
使用帧标志,单个场。
- ‘t’
仅使用顶场。
- ‘b’
仅使用底场。
- ‘tf’
使用两个场,先顶场。
- ‘bf’
使用两个场,先底场。
- planes
设置要处理的平面,默认情况下滤镜处理所有帧。
- nsize
设置周围每个像素的局部邻域大小,由预测神经网络使用。
可以是以下之一:
- ‘s8x6’
- ‘s16x6’
- ‘s32x6’
- ‘s48x6’
- ‘s8x4’
- ‘s16x4’
- ‘s32x4’
- nns
设置预测神经网络中的神经元数量。 可以是以下之一:
- ‘n16’
- ‘n32’
- ‘n64’
- ‘n128’
- ‘n256’
- qual
控制用于计算最终输出值的不同神经网络预测的混合数量。 可以是
fast
,默认或slow
.- etype
设置要在预测器中使用的权重集。 可以是以下之一:
- ‘a, abs’
权重经过训练以最小化绝对误差
- ‘s, mse’
权重经过训练以最小化平方误差
- pscrn
控制是否使用预筛选神经网络来决定 哪些像素应由预测器神经网络处理,哪些可以通过简单的三次插值处理。 预筛选器经过训练判断三次插值是否足够处理像素,或者是否需要预测器处理。 预筛选器的计算复杂度远低于预测器。由于大多数像素可以通过三次插值处理, 使用预筛选器通常会显著提高处理速度。 预筛选器非常精确,因此使用与不使用之间的差异几乎总是察觉不到的。
可以是以下之一:
- ‘none’
- ‘original’
- ‘new’
- ‘new2’
- ‘new3’
默认值是
new
.
32.175.1 命令
此滤镜支持与选项相同的命令,除权重选项外。
32.176 noformat
强制libavfilter不使用指定的像素格式作为下一个滤镜的输入。
它接受以下参数:
- pix_fmts
以'|'分隔的像素格式名称列表,例如 pix_fmts=yuv420p|monow|rgb24"。
32.176.1 示例
- 强制libavfilter使用与yuv420p不同的格式作为
vflip滤镜的输入:
noformat=pix_fmts=yuv420p,vflip
- 将输入视频转换为不包含在列表中的任何格式:
noformat=yuv420p|yuv444p|yuv410p
32.177 噪声
在视频输入帧中添加噪声。
该滤镜接受以下选项:
- all_seed
- c0_seed
- c1_seed
- c2_seed
- c3_seed
设置特定像素组件或所有像素组件的噪声种子, 对于all_seed。默认值是
123457
.- all_strength, alls
- c0_strength, c0s
- c1_strength, c1s
- c2_strength, c2s
- c3_strength, c3s
设置特定像素组件或所有像素组件的噪声强度, 对于all_strength。默认值是
0
。允许范围为[0, 100]。- all_flags, allf
- c0_flags, c0f
- c1_flags, c1f
- c2_flags, c2f
- c3_flags, c3f
设置像素组件标志或为所有组件设置标志, 如果all_flags。 组件标志的可用值为:
- ‘a’
平均时间噪声(更平滑)
- ‘p’
将随机噪声与(半)规则图案混合
- ‘t’
时间噪声(噪声图案在帧之间变化)
- ‘u’
均匀噪声(否则为高斯噪声)
32.177.1 示例
向输入视频添加时间和均匀噪声:
noise=alls=20:allf=t+u
32.178 归一化
归一化RGB视频(即直方图拉伸,对比度拉伸)。 参见:https://en.wikipedia.org/wiki/Normalization_(image_processing)
对于每帧的每个通道,滤镜计算输入范围并将其线性映射至用户指定的输出范围。 输出范围默认为从纯黑到纯白的全动态范围。
可以对输入范围使用时间平滑,以减少小黑点或亮点 进入或离开场景时造成的闪烁(亮度的快速变化)。 这类似于摄像机上的自动曝光(自动增益控制),并且如同视频摄像机一样, 可能会导致视频的过度或不足曝光。
可以对R、G、B通道独立进行归一化,这可能会导致颜色偏移, 或者链接为单个通道以防止颜色偏移。链接归一化保留色相。 独立归一化不会保留色相,因此可用于移除一些颜色偏差。 独立和链接归一化可以以任何比例组合。
归一化滤镜接受以下选项:
- blackpt
- whitept
定义输出范围的颜色。最小输入值被映射到blackpt。 最大输入值映射到whitept。 默认值分别是黑色和白色。指定为blackpt的白色和为whitept的黑色将生成颜色反转的归一化视频。 使用灰色可以减少动态范围(对比度)。 在此处指定饱和的颜色可以创建一些有趣的效果。
- smoothing
前一帧用于时间平滑的数量。每通道的输入范围使用当前帧和smoothing前一帧的滚动平均值平滑。 默认值为0(没有时间平滑)。
- independence
控制独立(颜色偏移)通道归一化与链接(颜色保留)归一化的比例。 0.0是完全链接,1.0是完全独立。默认为1.0(完全独立)。
- strength
滤镜的总体强度。1.0是最大强度。0.0是较昂贵的无操作。 默认为1.0(最大强度)。
32.178.1 命令
此滤镜支持与选项相同的命令,除时间平滑(smoothing)选项外。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
32.178.2 示例
将视频对比度拉伸到使用全动态范围,没有时间平滑;是否闪烁取决于源内容:
normalize=blackpt=black:whitept=white:smoothing=0
与上面相同,但具有50帧时间平滑;闪烁应减少,视源内容而定:
normalize=blackpt=black:whitept=white:smoothing=50
与上面相同,但具有保色相的链接通道归一化:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0
与上面相同,但只施加一半强度:
normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
将最暗的输入颜色映射到红色,将最亮的输入颜色映射到青色:
normalize=blackpt=red:whitept=cyan
32.179 空操作
将视频源未更改地传递到输出。
32.180 光学字符识别
光学字符识别
此滤镜使用Tesseract进行光学字符识别。要启用此滤镜的编译,
需要通过以下配置与FFmpeg一起安装:--enable-libtesseract
.
它接受以下选项:
- datapath
设置tesseract数据的路径。默认使用安装时设置的路径。
- language
设置语言,默认是"eng"。
- whitelist
设置字符白名单。
- blacklist
设置字符黑名单。
滤镜将识别的文本作为帧元数据导出lavfi.ocr.text
。
滤镜将识别的单词的置信度作为帧元数据导出lavfi.ocr.confidence
.
32.181 OpenCV
使用libopencv应用视频变换。
要启用此滤镜,请安装libopencv库和头文件,
并通过以下方式配置FFmpeg:--enable-libopencv
.
它接受以下参数:
- filter_name
要应用的libopencv滤镜的名称。
- filter_params
传递给libopencv滤镜的参数。如果未指定,则假定默认值。
有关更精确的信息,请参考官方libopencv文档:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
支持多种libopencv滤镜;请参阅以下子章节。
32.181.1 膨胀
通过使用特定结构元素对图像进行膨胀。
它对应于libopencv函数cvDilate
.
它接受以下参数:结构元素|迭代次数.
结构元素表示结构元素,并具有以下语法:列x行+锚点Xx锚点Y/形状
列和行表示结构元素的列和行数量,锚点X和锚点Y为锚点,形状为结构元素的形状。形状必须是"矩形"、"交叉"、"椭圆"或"自定义"。
如果形状的值为"自行定义",后面必须跟一个 形式为"=文件名"的字符串。名称为文件名的文件假定代表一个二进制图像,每个 可打印字符对应一个亮像素。当使用自定义形状时,列和行将被忽略,而假定使用读入文件的列和行数量。
结构元素的默认值为"3x3+0x0/矩形"。 is "3x3+0x0/rect".
迭代次数指定对图像应用变换的次数,默认为1。
一些示例:
# Use the default values ocv=dilate # Dilate using a structuring element with a 5x5 cross, iterating two times ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2 # Read the shape from the file diamond.shape, iterating two times. # The file diamond.shape may contain a pattern of characters like this # * # *** # ***** # *** # * # The specified columns and rows are ignored # but the anchor point coordinates are not ocv=dilate:0x0+2x2/custom=diamond.shape|2
32.181.2 腐蚀
通过使用特定结构元素对图像进行腐蚀。
它对应于libopencv函数cvErode
.
它接受以下参数:结构元素:迭代次数, 与膨胀滤镜具有相同的语法和语义。
32.181.3 平滑
平滑输入视频。
该滤镜接受以下参数:类型|参数1|参数2|参数3|参数4.
类型是要应用的平滑滤镜类型,必须是以下值之一:"模糊"、"不缩放模糊"、"中值"、"高斯", 或"双边"。默认值是"高斯"。
参数参数1, 参数2, 参数3和参数4的意义因平滑类型而异。参数1和参数2接受正整数或0。参数3和参数4接受浮点值。
参数1的默认值为3。 其他参数的默认值为0。 is 3. The default value for the other parameters is 0.
这些参数对应于libopencv函数的参数cvSmooth
.
32.182 示波器
2D 视频示波器。
适用于测量空间冲击、阶跃响应、色度延迟等。
它接受以下参数:
- x
设置瞄准中心的x位置。
- y
设置瞄准中心的y位置。
- s
设置瞄准尺寸,相对于框架对角线。
- t
设置瞄准的倾斜/旋转。
- o
设置轨迹的不透明度。
- tx
设置轨迹中心的x位置。
- ty
设置轨迹中心的y位置。
- tw
设置轨迹宽度,相对于框架宽度。
- th
设置轨迹高度,相对于框架高度。
- c
设置要追踪的组件。默认情况下它追踪前三个组件。
- g
绘制轨迹网格。默认情况下是启用的。
- st
绘制一些统计信息。默认情况下是启用的。
- sc
绘制瞄准器。默认情况下是启用的。
32.182.1 命令
此过滤器支持与选项相同的命令。该命令接受与相应选项相同的语法。
如果指定的表达式无效,它将保持当前值。
32.182.2 示例
- 检查视频帧的整行第一行。
oscilloscope=x=0.5:y=0:s=1
- 检查视频帧的整行最后一行。
oscilloscope=x=0.5:y=1:s=1
- 检查高度为1080的视频帧的完整第五行。
oscilloscope=x=0.5:y=5/1080:s=1
- 检查视频帧的整列最后一列。
oscilloscope=x=1:y=0.5:s=1:t=1
32.183 叠加
将一个视频叠加到另一个视频之上。
它需要两个输入并生成一个输出。第一个输入被称为“主”视频,第二个输入叠加在其上。
它接受以下参数:
以下是支持的选项说明。
- x
- y
设置叠加视频在主视频上x和y坐标的表达式。默认值是“0”对于两个表达式。如果表达式无效,则设置为一个巨大的值(表示叠加不会显示在输出可见区域内)。
- eof_action
参见framesync.
- eval
设置x和y表达式的计算时间。
它接受以下值:
- ‘init’
仅在过滤器初始化或处理命令时评估表达式。
- ‘frame’
为每个输入帧评估表达式。
默认值是‘frame’.
- shortest
参见framesync.
- format
设置输出视频的格式。
它接受以下值:
- ‘yuv420’
强制使用YUV 4:2:0 8位平面输出。
- ‘yuv420p10’
强制使用YUV 4:2:0 10位平面输出。
- ‘yuv422’
强制使用YUV 4:2:2 8位平面输出。
- ‘yuv422p10’
强制使用YUV 4:2:2 10位平面输出。
- ‘yuv444’
强制使用YUV 4:4:4 8位平面输出。
- ‘yuv444p10’
强制使用YUV 4:4:4 10位平面输出。
- ‘rgb’
强制使用RGB 8位打包输出。
- ‘gbrp’
强制使用RGB 8位平面输出。
- ‘auto’
自动选择格式。
默认值是‘yuv420’.
- repeatlast
参见framesync.
- alpha
设置叠加视频透明的格式,可以是直接或预乘。默认值是直接.
The x和y表达式可以包含以下参数。
- main_w, W
- main_h, H
主输入的宽度和高度。
- overlay_w, w
- overlay_h, h
叠加输入的宽度和高度。
- x
- y
计算的x和y值。它们是针对每个新帧计算的。
- hsub
- vsub
输出格式的水平和垂直色度子采样值。例如,对于像素格式“yuv422p”hsub是2,vsub是1。
- n
输入帧的序号,从0开始。
- pos
输入帧在文件中的位置,未知则为NAN。
- t
时间戳,以秒为单位。如果输入时间戳未知,则为NAN。
此过滤器还支持framesync选项。
请注意,n, t变量仅在评估时可用每帧,并且在eval设置为‘init’.
时将评估为NAN。setpts=PTS-STARTPTS filter to have them begin in the same zero timestamp, as the example for the movie filter does.
您可以将多个叠加连接在一起,但应该测试此方法的效率。
32.183.1 命令
此过滤器支持以下命令:
- x
- y
修改叠加输入的x和y值。命令接受与相应选项相同的语法。
如果指定的表达式无效,它将保持当前值。
32.183.2 示例
- 在主视频的右下角10像素处绘制叠加:
overlay=main_w-overlay_w-10:main_h-overlay_h-10
使用命名选项,上例变为:
overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
- 在输入的左下角插入一个透明的PNG徽标,使用
ffmpeg
工具及其-filter_complex
选项:ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
- 使用
ffmpeg
工具插入2个不同的透明PNG徽标(第二个徽标放在右下角):ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
- 在主视频顶部添加一个透明的彩色层;
WxH
必须指定叠加过滤器的主输入的尺寸:color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
- 并排播放一个原始视频和一个过滤版视频(这里使用稳定过滤器):
ffplay
工具:ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
上述命令的另一个表达方式是:
ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
- 制作一个滑动叠加,从屏幕顶部的左侧到右侧出现,从第2秒开始:
overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
- 通过将两个输入视频并排放置来合成输出:
ffmpeg -i left.avi -i right.avi -filter_complex " nullsrc=size=200x100 [background]; [0:v] setpts=PTS-STARTPTS, scale=100x100 [left]; [1:v] setpts=PTS-STARTPTS, scale=100x100 [right]; [background][left] overlay=shortest=1 [background+left]; [background+left][right] overlay=shortest=1:x=100 [left+right] "
- 通过将去徽标过滤器应用于一个部分来遮罩视频的10-20秒部分。
ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]' masked.avi
- 链式多个叠加:
nullsrc=s=200x200 [bg]; testsrc=s=100x100, split=4 [in0][in1][in2][in3]; [in0] lutrgb=r=0, [bg] overlay=0:0 [mid0]; [in1] lutrgb=g=0, [mid0] overlay=100:0 [mid1]; [in2] lutrgb=b=0, [mid1] overlay=0:100 [mid2]; [in3] null, [mid2] overlay=100:100 [out0]
32.184 overlay_cuda
将一个视频叠加到另一个视频之上。
这是叠加过滤器的CUDA版本。它仅接受CUDA帧。两个输入的底层像素格式必须一致。
它需要两个输入并生成一个输出。第一个输入被称为“主”视频,第二个输入叠加在其上。
它接受以下参数:
- x
- y
设置叠加视频在主视频上的x和y坐标的表达式。
它们可以包含以下参数:
- main_w, W
- main_h, H
主输入的宽度和高度。
- overlay_w, w
- overlay_h, h
叠加输入的宽度和高度。
- x
- y
计算的x和y值。它们是针对每个新帧计算的。
- n
主输入帧的序号,从0开始。
- pos
主输入帧在文件中的字节偏移位置,未知则为NAN。已弃用,请勿使用。
- t
主输入帧的时间戳,以秒为单位,未知则为NAN。
两个表达式的默认值为“0”。
- eval
设置x和y表达式的评估时间。
它接受以下值:
- init
在过滤器初始化或处理命令时评估表达式。
- frame
为每个输入帧评估表达式。
默认值为frame.
- eof_action
参见framesync.
- shortest
参见framesync.
- repeatlast
参见framesync.
此过滤器还支持framesync选项。
32.185 owdenoise
应用过完备小波降噪。
滤波器接受以下选项:
- depth
设置深度。
更大的深度值将更多地降噪低频分量,但会减慢过滤速度。
必须是范围8-16中的int值,默认值为
8
.- luma_strength, ls
设置亮度强度。
必须是范围0-1000中的double值,默认值为
1.0
.- chroma_strength, cs
设置色度强度。
必须是范围0-1000中的double值,默认值为
1.0
.
32.186 pad
向输入图像添加填充,并在提供的x, y坐标处定位原始输入。
它接受以下参数:
- width, w
- height, h
指定带有填充的输出图像尺寸的表达式。如果宽度或高度的值为0,则使用输入尺寸作为输出尺寸。
The 宽度表达式可以引用由高度表达式设置的值,反之亦然。
The default value of 宽度和高度的默认值为0。
- x
- y
指定偏移量以在填充区域内定位输入图像,相对于输出图像的顶部/左侧边界。
The x表达式可以引用由y表达式设置的值,反之亦然。
The default value of x和y的默认值为0。
如果x或y评估为负数,它们将被更改,使输入图像居于填充区域的中心。
- color
指定填充区域的颜色。有关此选项的语法,请参考ffmpeg-utils手册中"颜色"部分.
The default value of 颜色的默认值是"黑色"。
- eval
指定何时评估宽度, 高度, x和y表达式。
它接受以下值:
- ‘init’
仅在过滤器初始化或处理命令时评估表达式。
- ‘frame’
为每个输入帧评估表达式。
默认值是‘init’.
- aspect
以比例填充而非分辨率填充。
The value for the 宽度, 高度, x和y选项值是包含以下常量的表达式:
- in_w
- in_h
输入视频的宽度和高度。
- iw
- ih
这些与in_w和in_h.
- out_w
- out_h
输出的宽度和高度(填充区域的大小),由宽度和高度表达式指定。
- ow
- oh
这些与out_w和out_h.
- x
- y
由x和y表达式指定的x和y偏移量,或者还未指定为NAN。
- a
等于iw / ih
- sar
输入的样本宽高比。
- dar
输入的显示宽高比,与(iw / ih) * sar
- hsub
- vsub
水平和垂直色度子采样值。例如对于像素格式“yuv422p”,hsub是2,vsub是1。
32.186.1 示例
- 为输入视频添加颜色为“紫罗兰色”的填充。输出视频的大小为640x480,输入视频的左上角位于第0列、第40行。
pad=640:480:0:40:violet
以上示例相当于以下命令:
pad=width=640:height=480:x=0:y=40:color=violet
- 为输入视频添加填充,以使输出的尺寸增加到原来的3/2,并将输入视频放在填充区域的中心。
pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
- 为输入视频添加填充,以获得一个边长为输入宽度和高度最大值的方形输出,并将输入视频放在填充区域的中心。
pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
- 为输入视频添加填充,以获得最终的宽高比为16:9的输出:
pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
- 在处理宽高比异常的视频时,为了正确设置输出显示宽高比,需要在表达式中使用sar,根据以下关系:
(ih * X / ih) * sar = output_dar X = output_dar / sar
因此需要修改前面的示例为:
pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
- 将输出尺寸加倍,并将输入视频放在输出填充区域的右下角。
pad="2*iw:2*ih:ow-iw:oh-ih"
32.187 palettegen
为整个视频流生成一个调色板。
它接受以下选项:
- max_colors
设置调色板中需量化的最大颜色数。 注意:调色板仍然包含256种颜色;未使用的条目将是黑色。
- reserve_transparent
生成最多255种颜色的调色板,并保留最后一种颜色用于透明度。保留透明度颜色对GIF优化很有用。如果未设置,调色板中的最大颜色数将为256。对于独立图像,您可能希望禁用此选项。 默认已设置。
- transparency_color
设置将用于透明背景的颜色。
- stats_mode
设置统计模式。
它接受以下值:
- ‘full’
计算完整帧的直方图。
- ‘diff’
仅计算与上一帧不同部分的直方图。如果背景是静态的,这可能有助于给输入的动态部分更高的重要性。
- ‘single’
为每帧计算新的直方图。
默认值是完整.
过滤器还会导出帧元数据lavfi.color_quant_ratio
(nb_color_in / nb_color_out
),您可以用来评估调色板的颜色量化程度。此信息也在信息日志级别中可见。
32.187.1 示例
- 使用
ffmpeg
:ffmpeg -i input.mkv -vf palettegen palette.png
32.188 paletteuse
使用调色板对输入视频流进行下采样。
过滤器需要两个输入:一个视频流和一个调色板。调色板必须是256像素图像。
它接受以下选项:
- dither
选择抖动模式。可用算法包括:
- ‘bayer’
有序8x8拜耳抖动(确定性)。
- ‘heckbert’
由Paul Heckbert在1982年定义的抖动(简单误差扩散)。 注意:这种抖动有时被认为是“错误的”,被作为参考包含在内。
- ‘floyd_steinberg’
Floyd和Steingberg抖动(误差扩散)
- ‘sierra2’
Frankie Sierra v2抖动(误差扩散)
- ‘sierra2_4a’
Frankie Sierra v2抖动“Lite”版(误差扩散)
- ‘sierra3’
Frankie Sierra v3抖动(误差扩散)
- ‘burkes’
Burkes抖动(误差扩散)
- ‘atkinson’
由Apple公司的Bill Atkinson提出的Atkinson抖动(误差扩散)
- ‘none’
禁用抖动。
默认值为sierra2_4a.
- bayer_scale
当bayer抖动被选中时,此选项定义了图案的比例(交叉网纹图案的可见度)。较低的值意味着图案更可见以减少条带效应,而较高的值则减少图案的可见性但可能增加条带效应。
选项必须是范围[0,5]内的整数值。默认值为2.
- diff_mode
如果设置,定义需要处理的区域
- ‘rectangle’
只有变化的矩形部分会被重新处理。这类似于GIF裁剪/偏移压缩机制。如果仅图像的一部分发生变化,此选项对于提速非常有用,并且在限制误差扩散范围的用例中,例如对移动场景的边界矩形进行限制,这会使输出更具确定性,如果场景变化不大,则能减少移动噪点并获得更好的GIF压缩。dither。
默认值为none.
- new
为每个输出帧采用新的调色板。
- alpha_threshold
设置用于透明度的alpha阈值。高于此阈值的alpha值将被视为完全不透明,低于此阈值的alpha值将被视为完全透明。
选项必须是范围[0,255]内的整数值。默认值为128.
32.188.1 示例
- 使用调色板(例如通过palettegen生成)来编码GIF
ffmpeg
:ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
32.189 视角
校正未以屏幕垂直方向录制的视频的视角。
以下是接受的参数描述。
- x0
- y0
- x1
- y1
- x2
- y2
- x3
- y3
设置左上、右上、左下和右下角的坐标表达式。默认值为
0:0:W:0:0:H:W:H
视角保持不变。如果sense
选项被设置为source
,则指定的点将被发送到目标的角点。如果sense
选项被设置为destination
,则源的角点将被发送到指定的坐标。表达式可以使用以下变量:
- W
- H
视频帧的宽度和高度。
- in
输入帧计数。
- on
输出帧计数。
- interpolation
设置视角校正的插值。
它接受以下值:
- ‘linear’
- ‘cubic’
默认值为“linear’.
- sense
设置坐标选项的解释方式。
它接受以下值:
- ‘0, source’
-
发送源中给定坐标的点到目标的角点。
- ‘1, destination’
-
将源的角点发送到目标中指定坐标点。
默认值为“source’.
- eval
设置何时计算坐标表达式x0,y0,...x3,y3。
它接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时计算表达式一次
- ‘frame’
为每个传入帧计算表达式
默认值为“init’.
32.190 相位
延迟隔行视频的一个字段时间,以改变字段顺序。
目的用于修复以与电影到视频传输相反的字段顺序捕获的PAL电影。
以下是接受的参数描述。
- mode
设置相位模式。
它接受以下值:
- ‘t’
捕获字段顺序为顶部优先,传输底部优先。 滤镜将延迟底部字段。
- ‘b’
捕获字段顺序为底部优先,传输顶部优先。 滤镜将延迟顶部字段。
- ‘p’
捕获和传输具有相同字段顺序。此模式仅用于参考其他选项的文档,但如果实际选择它,滤镜将忠实执行“无操作”。
- ‘a’
捕获字段顺序由字段标志自动确定,传输相反。 滤镜在逐帧的基础上使用字段标志从‘t’和‘b’模式中选择。如果没有字段信息可用,则它只是以‘u’.
- ‘u’
捕获未知或变化,传输相反。 滤镜在逐帧的基础上通过分析图像选择‘t’和‘b’中产生字段最佳匹配的替代方案。
- ‘T’
捕获顶部优先,传输未知或变化。 滤镜通过图像分析选择‘t’和‘p’。
- ‘B’
捕获底部优先,传输未知或变化。 滤镜通过图像分析选择‘b’和‘p’。
- ‘A’
捕获由字段标志确定,传输未知或变化。 滤镜使用字段标志和图像分析选择‘t’, ‘b’和‘p’。如果没有字段信息可用,则以‘U’方式工作。这是默认模式。
- ‘U’
捕获和传输均未知或变化。 滤镜仅通过图像分析选择‘t’, ‘b’和‘p’。
32.190.1 命令
此滤镜支持所有上述选项作为命令.
32.191 光感减少
减少视频中的各种闪光,以帮助癫痫患者。
它接受以下选项:
- frames, f
设置过滤时使用的帧数。默认值为30。
- threshold, t
设置检测阈值因子。默认值为1。 值越低越严格。
- skip
设置采样帧时跳过的像素数。默认值为1。 允许范围为1到1024。
- bypass
保持帧不变。默认是禁用。
32.192 pixdesctest
像素格式描述符测试滤镜,主要用于内部测试。输出视频应该等于输入视频。
例如:
format=monow, pixdesctest
可用于测试monowhite像素格式描述符定义。
32.193 像素化
对视频流应用像素化。
滤镜接受以下选项:
- width, w
- height, h
设置用于像素化的块尺寸。 默认值为
16
.- mode, m
设置使用的像素化模式。
可能的值为:
- ‘avg’
- ‘min’
- ‘max’
默认值为
avg
.- planes, p
设置要过滤的平面。默认是过滤所有平面。
32.193.1 命令
此滤镜支持所有选项作为命令.
32.194 pixscope
显示颜色通道的采样值。主要用于检查颜色和水平。最低支持分辨率为640x480。
滤镜接受以下选项:
- x
设置示波器X位置,相对于X轴的偏移。
- y
设置示波器Y位置,相对于Y轴的偏移。
- w
设置示波器宽度。
- h
设置示波器高度。
- o
设置窗口不透明度。此窗口还包含像素区域的统计信息。
- wx
设置窗口X位置,相对于X轴的偏移。
- wy
设置窗口Y位置,相对于Y轴的偏移。
32.194.1 命令
此滤镜支持与选项相同的命令。
32.195 pp
启用指定的后处理子滤镜链,使用libpostproc库。
如果是GPL构建(--enable-gpl
),库会自动选择。
子滤镜必须用“/”分隔,并可通过前置“-”禁用。
每个子滤镜和一些选项都有短名称和长名称,可以互换使用,例如dr/dering是相同的。
滤镜接受以下选项:
- subfilters
设置后处理子滤镜字符串。
所有子滤镜共享常见选项,以确定其范围:
- a/autoq
为此子滤镜遵守质量命令。
- c/chrom
同时进行色度过滤(默认)。
- y/nochrom
仅进行亮度过滤(不含色度)。
- n/noluma
仅进行色度过滤(不含亮度)。
这些选项可在子滤镜名称后附加,用“|”分隔。
可用的子滤镜包括:
- hb/hdeblock[|difference[|flatness]]
水平去块滤镜
- difference
差异因子,值越高表示更强的去块效果(默认:
32
).- flatness
平坦度阈值,值越低表示更强的去块效果(默认:
39
).
- vb/vdeblock[|difference[|flatness]]
垂直去块滤镜
- difference
差异因子,值越高表示更强的去块效果(默认:
32
).- flatness
平坦度阈值,值越低表示更强的去块效果(默认:
39
).
- ha/hadeblock[|difference[|flatness]]
精确的水平去块滤镜
- difference
差异因子,值越高表示更强的去块效果(默认:
32
).- flatness
平坦度阈值,值越低表示更强的去块效果(默认:
39
).
- va/vadeblock[|difference[|flatness]]
精确的垂直去块滤镜
- difference
差异因子,值越高表示更强的去块效果(默认:
32
).- flatness
平坦度阈值,值越低表示更强的去块效果(默认:
39
).
水平和垂直去块滤镜共享差异和平坦值,因此无法设置不同的水平和垂直阈值。
- h1/x1hdeblock
实验性水平去块滤镜
- v1/x1vdeblock
实验性垂直去块滤镜
- dr/dering
去环滤镜
- tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
- threshold1
值越大->滤波越强
- threshold2
值越大->滤波越强
- threshold3
值越大->滤波越强
- al/autolevels[:f/fullyrange], automatic brightness / contrast correction
- f/fullyrange
将亮度拉伸到
0-255
.
- lb/linblenddeint
线性混合隔行扫描滤镜,通过过滤所有行以
(1 2 1)
滤波方式去隔行扫描指定的块。- li/linipoldeint
线性插值隔行扫描滤镜,通过线性插值每隔一行去隔行扫描指定的块。
- ci/cubicipoldeint
三次插值隔行扫描滤镜,通过立方插值去隔行扫描指定的块。
- md/mediandeint
中值隔行扫描滤镜,通过对每隔一行应用中值滤波去隔行扫描指定的块。
- fd/ffmpegdeint
FFmpeg隔行扫描滤镜,通过对每隔一行应用
(-1 4 2 4 -1)
滤波方式去隔行扫描指定的块。- l5/lowpass5
按照垂直方向应用FIR低通滤波器,通过对所有行应用
(-1 2 6 2 -1)
滤波方式去隔行扫描指定的块。- fq/forceQuant[|quantizer]
用您指定的常量量化器覆盖输入中的量化器表。
- quantizer
要使用的量化器
- de/default
默认后处理滤镜组合(
hb|a,vb|a,dr|a
)- fa/fast
快速后处理滤镜组合(
h1|a,v1|a,dr|a
)- ac
高质量后处理滤镜组合(
ha|a|128|7,va|a,dr|a
)
32.195.1 示例
- 应用水平和垂直去块、去环和自动亮度/对比度:
pp=hb/vb/dr/al
- 应用默认滤镜但不进行亮度/对比度校正:
pp=de/-al
- 应用默认滤镜和时间降噪器:
pp=default/tmpnoise|1|2|3
- 仅在亮度上进行去块,并根据可用的CPU时间自动打开或关闭垂直去块:
pp=hb|y/vb|a
32.196 pp7
应用后处理滤镜7。这是spp滤镜的变体,类似于spp = 6的7点DCT,其中仅使用IDCT后的中心样本。
滤镜接受以下选项:
- qp
强制使用常量量化参数。可接受范围为0到63的整数。如果未设置,滤镜将使用视频流中的QP(如果可用)。
- mode
设置阈值模式。可用模式为:
- ‘hard’
设置硬阈值。
- ‘soft’
设置软阈值(更好的去环效果,但可能会更模糊)。
- ‘medium’
设置中等阈值(效果良好,默认)。
32.197 预乘
对输入视频流应用alpha预乘效果,使用第二个流的第一平面作为alpha。
两个流必须具有相同的尺寸和像素格式。
滤镜接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被直接复制。 默认值为0xf,所有平面都会被处理。
- inplace
无需使用第二个输入进行处理,而是直接使用输入流的alpha平面。
32.198 prewitt
对输入视频流应用Prewitt算子。
滤镜接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被直接复制。 默认值为0xf,所有平面都会被处理。
- scale
设置将与过滤结果相乘的值。
- delta
设置将添加到筛选结果的值。
32.198.1 命令
此过滤器支持上述所有选项,如下所示命令.
32.199 伪彩色
使用伪彩色修改视频帧颜色。
此过滤器接受以下选项:
- c0
设置像素第一分量表达式
- c1
设置像素第二分量表达式
- c2
设置像素第三分量表达式
- c3
设置像素第四分量表达式,对应于 alpha 分量
- index, i
设置用于更改颜色的基准分量
- preset, p
选择内置的查找表 (LUT) 之一。默认设置为无。
可用的 LUTs:
- ‘magma’
- ‘inferno’
- ‘plasma’
- ‘viridis’
- ‘turbo’
- ‘cividis’
- ‘range1’
- ‘range2’
- ‘shadows’
- ‘highlights’
- ‘solar’
- ‘nominal’
- ‘preferred’
- ‘total’
- ‘spectral’
- ‘cool’
- ‘heat’
- ‘fiery’
- ‘blues’
- ‘green’
- ‘helix’
- opacity
设置输出颜色的不透明度。允许范围为 0 到 1。 默认值为 1。
每个表达式选项指定用于计算对应像素分量值的查找表的表达式。
表达式可以包含以下常量和函数:
- w
- h
输入的宽度和高度。
- val
像素分量的输入值。
- ymin, umin, vmin, amin
允许的最小分量值。
- ymax, umax, vmax, amax
允许的最大分量值。
所有表达式的默认值为 "val"。
32.199.1 命令
此过滤器支持上述所有选项,如下所示命令.
32.199.2 示例
- 将亮度值过高部分更改为渐变:
pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
32.200 PSNR
获取两个输入视频之间的平均、最大和最小 PSNR(峰值信噪比)。
此过滤器接受两个输入视频,第一个输入被视为"主"源并未经改变地传递到输出。第二个输入被用作计算PSNR的"参考"视频。
两个视频输入必须具有相同的分辨率和像素格式,此过滤器才能正常工作。此外,假设两个输入具有相同的帧数,逐帧进行比较。
获得的平均 PSNR 将通过日志系统打印输出。
过滤器会存储每帧的累计 MSE(均方误差),在处理结束时将其均匀地平均处理所有帧,应用以下公式以获得 PSNR:
PSNR = 10*log10(MAX^2/MSE)
其中,MAX 是图像每个分量的最大值的平均值。
以下为接受的参数描述。
- stats_file, f
如果指定了文件名,过滤器将使用命名的文件保存每帧的 PSNR。当文件名为 "-" 时,数据将发送至标准输出。
- stats_version
指定要使用的统计文件格式版本。每种格式的详细信息如下。 默认值为 1。
- stats_add_max
确定最大值是否输出到统计日志。 默认值为 0。 要求 stats_version >= 2。如果设置此值且 stats_version < 2,过滤器将返回错误。
此过滤器还支持framesync选项。
如果选择了stats_file,则输出的文件包含一系列 键/值对,格式为键:值,每对帧比较一次。
如果stats_version大于 1,则在每帧比较统计列表之前,会有一行头部信息,按帧格式显示键值对,包含以下参数:
- psnr_log_version
日志文件格式的版本,将匹配stats_version.
- fields
逗号分隔的每对帧参数在日志中显示。
以下是每对帧参数的描述:
- n
输入帧的连续编号,从1开始
- mse_avg
逐像素均方误差,表示比较帧的平均差异值,取所有图像分量的平均值。
- mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
逐像素均方误差,表示比较帧中指定分量(由后缀指定)的平均差异值。
- psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
指定分量(由后缀指定)的比较帧的峰值信噪比。
- max_avg, max_y, max_u, max_v
每个通道的最大允许值,以及所有通道的平均值。
32.200.1 示例
- 例如:
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] psnr="stats_file=stats.log" [out]
在此示例中,待处理的输入文件与参考文件ref_movie.mpg对比。每帧的PSNR存储在stats.log.
- 另一个不同容器的示例:
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
32.201 pullup
反向转换(逆变换)过滤器,可处理混合硬电信变频器、24000/1001 fps 进度和30000/1001 fps进度的内容。
pullup 过滤器设计为利用未来的上下文来做出判断。此滤镜是无状态的,它不会锁定到某一模式,而是向前查看后续字段,尝试找到匹配项并重建进度帧。
为生成具有恒定帧速率的内容,请在 pullup 之后插入 fps 滤镜,当输入帧速率为29.97fps时,请使用fps=24000/1001
,当输入帧速率为30fps或罕见的电信变25fps时,使用fps=24
。
此过滤器接受以下选项:
- jl
- jr
- jt
- jb
这些选项分别设置图像左、右、顶部和底部要忽略的 "无意义" 范围量。左和右以8像素为单位,顶部和底部以2行为单位。 默认每一侧忽略8个像素。
- sb
设置严格断点。将此选项设置为1将减少过滤器生成偶尔失配帧的概率,但在高运动场景下也可能导致大量帧丢弃。 相反,设置为-1将使过滤器更容易匹配字段。这可能有助于处理轻微模糊的字段间的视频,但也可能导致输出中出现交错帧。 默认值为
0
.- mp
设置要使用的度量平面。接受以下值:
- ‘l’
使用亮度(luma)平面。
- ‘u’
使用蓝色(chroma blue)平面。
- ‘v’
使用红色(chroma red)平面。
此选项可以设置使用色度平面代替默认的亮度平面进行过滤计算。 这可能在非常干净的源素材上提高精度,但更可能降低精度,特别是如果有色度噪声(如彩虹效应)或任何灰度视频。 设置mp为色度平面的主要目的是降低CPU负载,使pullup在慢速机器上可实时使用。
为了获得最佳结果(输出文件中没有重复帧),有必要更改输出帧速率。例如,要逆转换NTSC输入:
ffmpeg -i input -vf pullup -r 24000/1001 ...
32.202 qp
更改视频量化参数(QP)。
此过滤器接受以下选项:
- qp
为量化参数设置表达式。
表达式通过 eval API 进行计算,并可包含(但不限于)以下常量:
- known
如果索引不是129,则值为1,否则为0。
- qp
从-129到128的序列索引。
32.202.1 示例
- 类似于以下的方程式:
qp=2+2*sin(PI*qp)
32.203 qrencode
使用 libqrencode 库生成二维码(参见https://fukuchi.org/works/qrencode/),并将其叠加在当前帧上。
要启用此滤镜的编译,需使用以下方式配置 FFmpeg--enable-libqrencode
.
二维码是根据所提供的文本或文本模式生成的。 生成的二维码经过缩放后被根据指定选项叠加到视频输出中。
如果没有指定文本,则不会叠加二维码。
此过滤器接受以下选项:
- qrcode_width, q
- padded_qrcode_width, Q
为渲染二维码的宽度(有无填充)指定表达式。qrcode_width表达式可以引用由padded_qrcode_width表达式设置的值,反之亦然。 默认情况下,padded_qrcode_width设置为qrcode_width,即没有填充。
这些表达式会针对每帧新帧进行计算。
请参阅qrencode 表达式一节了解详细内容。
- x
- y
为填充二维码左上角的位置指定表达式。x表达式可以引用由y表达式设置的值,反之亦然。
默认情况下,x和y设置为0,这意味着二维码放置在输入的左上角。
这些表达式会针对每帧新帧进行计算。
请参阅qrencode 表达式一节了解详细内容。
- case_sensitive, cs
指示 libqrencode 使用区分大小写的编码。这默认启用。可以禁用此选项以减小二维码的编码大小。
- level, l
指定二维码的错误纠正级别。较高的纠错级别会增加编码大小,但代码将更耐破坏。 最低级别为L.
它接受以下值:
- ‘L’
- ‘M’
- ‘Q’
- ‘H’
- expansion
选择输入文本如何扩展。可以是
none
,或normal
(默认值)。请参阅qrencode 文本扩展部分了解详情。- text
- textfile
定义要渲染的文本。如果未指定任何内容,则不编码二维码(仅显示一个空白的彩色帧)。
如果启用扩展,文本将被视为文本模板,使用 qrencode 的扩展机制处理。参见qrencode 文本扩展部分了解详情。
- background_color, bc
- foreground_color, fc
设置二维码和背景色。默认foreground_color为"黑色",默认background_color为"白色"。
有关颜色选项的语法,请检查(ffmpeg-utils)"颜色" 部分,位于 ffmpeg-utils 手册中.
32.203.1 qrencode 表达式
选项设置的表达式中包含以下常量和函数。
- dar
输入显示宽高比,即等于 (w / h) * sar
- duration
当前帧的持续时间,以秒为单位
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub为2,而vsub为1。
- main_h, H
输入高度
- main_w, W
输入宽度
- n
输入帧数,从0开始
- pict_type
表示图片类型的编号
- qr_w, w
编码二维码的宽度
- rendered_qr_w, q
- rendered_padded_qr_w, Q
渲染二维码的宽度(有无填充)。
这些参数允许q和Q表达式互相引用,所以您可以例如指定
q=3/4*Q
.- rand(min, max)
返回一个介于min和max
- sar
输入采样比例
- t
以秒表示的时间戳,如果输入时间戳未知,则为 NAN
- x
- y
绘制文字的 x 和 y 偏移坐标。
这些参数允许x和y表达式互相引用,因此您可以例如指定
y=x/dar
.
32.203.2 qrencode 文本扩展
如果expansion设置为none
,文本将被逐字显示。
如果expansion设置为normal
(默认值),
以下扩展机制将被使用。
反斜杠字符‘\’,后跟任何字符,总是扩展为第二个字符。
形式为%{...}
的序列将被扩展。花括号中的文本为函数名,可能后跟用重复号 ’:’分隔的参数。
如果参数包含特殊字符或分隔符(’:’或 ’}’),需要进行转义。
注意它们可能还必须在text选项作为参数字符串值时、在过滤器图描述的过滤器参数中、以及可能在 shell 中进行四层转义;使用包含textfile选项的文本文件可避免这些问题。
提供以下函数:
n, frame_num
返回帧编号
pts
返回当前帧的显示时间戳
它可以最多接受两个参数。
第一个参数是时间戳的格式;默认为
flt
表示以秒为单位的小数格式,具有微秒精度;hms
表示格式化[-]HH:MM:SS.mmm带有毫秒精度的时间戳。gmtime
表示帧的时间戳格式化为UTC时间;localtime
表示帧的时间戳格式化为本地时区时间。如果格式设置为hms24hh
,时间将以24小时制(00-23)格式化。第二个参数是添加到时间戳的偏移量。
如果格式设置为
localtime
或gmtime
,可以提供第三个参数:一个strftime
C函数格式字符串。默认情况下,YYYY-MM-DD HH:MM:SS格式将被使用。expr, e
对表达式的值求值并以双精度格式输出。
它必须接收一个参数,指定要求值的表达式,并接受qrencode_expressions.
expr_formatted, ef
对表达式的值求值并以格式化字符串形式输出。
第一个参数是要求值的表达式,与expr函数相同。 第二个参数指定输出的格式。允许的值是‘x’, ‘X’, ‘d’和‘u’。它们的处理方式与
printf
函数完全一样。 第三个参数是可选的,设置输出占据的字符数。 可以用于从左侧用零填充。gmtime
表达过滤器运行的时间,以UTC表示。 它可以接收一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可以打印以指定数字位数表示的秒内小数部分。localtime
表达过滤器运行的时间,以本地时区表示。 它可以接收一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可以打印以指定数字位数表示的秒内小数部分。metadata
帧元数据。需要一个或两个参数。
第一个参数是必须的,指定元数据键值。
第二个参数是可选的,指定默认值,在找不到或为空时使用。
可用元数据可以通过检查带有 `TAG` 前缀的条目来识别,它们包含在运行时打印的每个帧段中。
ffprobe -show_frames
.在滤镜操作过程中生成的字符串元数据也可用。
rand(min, max)
返回一个在min和max
之间的随机数。
- 生成一个QR码,编码指定的文本,默认大小,叠加在输入视频的左上角,默认大小:
qrencode=text=www.ffmpeg.org
- 同下,但选择蓝色和粉红色的颜色:
qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
- 将QR码放置在输入视频的右下角:
qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
- 生成一个宽度为200像素并带有边距的QR码,使填充后的宽度为QR码宽度的4/3:
qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
- 生成一个填充宽度为200像素并带有边距的QR码,使QR码宽度为填充宽度的3/4:
qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
- 使QR码成为输入视频宽度的一部分:
qrencode=text=www.ffmpeg.org:q=W/5
- 生成一个编码帧号的QR码:
qrencode=text=%{n}
- 生成一个编码GMT时间戳的QR码:
qrencode=text=%{gmtime}
- 生成一个以浮点数表示的时间戳编码的QR码:
qrencode=text=%{pts}
32.204 quirc
使用 libquirc 库识别并解码QR码(参见https://github.com/dlbeer/quirc/),并将识别的QR码位置和内容作为元数据打印。
要启用此滤镜的编译,您需要配置FFmpeg--enable-libquirc
.
对于输入视频中找到的每个QR码,会添加一些带有前缀lavfi.quirc.N的元数据条目,其中N是与QR码关联的索引,从0开始。
以下是每个元数据值的说明:
- lavfi.quirc.count
找到的QR码数量;如果未找到,则不会设置。
- lavfi.quirc.N.corner.M.x
- lavfi.quirc.N.coreer.M.y
包含QR码的方形四个角的X/Y坐标,其中M是角索引,从0开始。
- lavfi.quirc.N.payload
QR码的内容。
32.205 random
将内部缓存的帧以随机顺序输出。 没有帧会被丢弃。 灵感来自frei0rnervous 滤镜。
- frames
设置内部缓存的大小(帧数),范围从
2
到512
。默认值是30
.- seed
为随机数生成器设置种子值,必须是介于
0
和UINT32_MAX
之间的整数。如果未指定,或者明确设置为小于0
, 滤镜将尽最大努力使用一个好的随机种子。
32.206 readeia608
从视频帧的顶行读取闭字字幕(EIA-608)信息。
此滤镜为lavfi.readeia608.X.cc
和lavfi.readeia608.X.line
添加帧元数据,其中X
是标识EIA-608数据的行号(从0开始)。以下是每个元数据值的描述:
- lavfi.readeia608.X.cc
存储为EIA-608数据的两个字节(以十六进制打印)。
- lavfi.readeia608.X.line
标识并读取EIA-608数据的行号。
此滤镜接受以下选项:
- scan_min
设置开始扫描EIA-608数据的行,默认值是
0
.- scan_max
设置结束扫描EIA-608数据的行,默认值是
29
.- spw
设置用于同步码检测的宽度比例。 默认值是
0.27
。允许的范围是[0.1 - 0.7]
.- chp
启用奇偶校验位检查。如果发生奇偶校验错误,滤镜将输出
0x00
作为字符的替代。默认值为false。- lp
在进一步处理之前对行进行低通滤波。默认已启用。
32.206.1 Commands
此滤镜支持以上所有选项作为命令.
32.206.2 Examples
- 输出带有显示时间和已识别的首两行EIA-608字幕数据的CSV文件。
ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
32.207 readvitc
从视频帧的顶行读取垂直间隔时间码(VITC)信息。
如果检测到有效的时间码,滤镜会添加帧元数据键lavfi.readvitc.tc_str
,表示时间码价值;此外,元数据键lavfi.readvitc.found
将根据是否检测到时间码数据设置为0或1。
此滤镜接受以下选项:
- scan_max
设置扫描VITC数据的最大行数。如果设置为
-1
将扫描整个视频帧。默认值是45
.- thr_b
设置黑色的亮度阈值。接受范围为[0.0,1.0]的浮点数,默认值是
0.2
。该值必须小于或等于thr_w
.- thr_w
设置白色的亮度阈值。接受范围为[0.0,1.0]的浮点数,默认值是
0.6
。该值必须大于或等于thr_b
.
32.207.1 Examples
- 检测并在视频帧上绘制VITC数据;如果未检测到有效的VITC,则绘制
--:--:--:--
作为占位符:ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
32.208 remap
使用第二个输入视频流(Xmap)和第三个输入视频流(Ymap)重新映射像素。
目标像素的(X, Y)位置将由源的(x, y)位置获取,其中 x = Xmap(X, Y),y = Ymap(X, Y)。如果映射值超出范围,将为目标像素使用零值。
Xmap和Ymap输入视频流必须具有相同的尺寸。输出视频流将具有与Xmap/Ymap视频流相同的尺寸。 Xmap和Ymap输入视频流为16位深度,单通道。
- format
指定此滤镜输出的像素格式。可以是
color
或gray
。 默认值是color
.- fill
指定未映射像素的颜色。有关此选项的语法,请查看(ffmpeg-utils)“颜色”章节中的说明。默认颜色是
black
.
32.209 removegrain
removegrain滤镜是用于逐行视频的空间去噪器。
- m0
设置第一个颜色平面的模式。
- m1
设置第二个颜色平面的模式。
- m2
设置第三个颜色平面的模式。
- m3
设置第四个颜色平面的模式。
模式的范围为0到24。以下是每种模式的描述:
- 0
保持输入平面不变。默认。
- 1
用8个邻近像素的最小值和最大值剪裁像素。
- 2
用8个邻近像素的次低和次高值剪裁像素。
- 3
用8个邻近像素的第三低和第三高值剪裁像素。
- 4
用8个邻近像素的第四低和第四高值剪裁像素。 这相当于一个中值滤波器。
- 5
行敏感剪裁,最小化变化。
- 6
行敏感剪裁,中等设置。
- 7
行敏感剪裁,中等设置。
- 8
行敏感剪裁,中等设置。
- 9
在一行上进行行敏感剪裁,其中邻近像素之间的距离最小。
- 10
用最近的邻近像素替换目标像素。
- 11
[1 2 1]水平和垂直核模糊。
- 12
与模式11相同。
- 13
隔行扫描模式,从包含邻近像素最近的一行插值顶部场。
- 14
隔行扫描模式,从包含邻近像素最近的一行插值底部场。
- 15
隔行扫描模式,插值顶部场。与模式13相同,但使用更复杂的插值公式。
- 16
隔行扫描模式,插值底部场。与模式14相同,但使用更复杂的插值公式。
- 17
用分别为每一对相对邻近像素最大和最小值的最小值和最大值剪裁像素。
- 18
对使用相对邻近像素的剪裁,其中这些邻近像素到当前像素的最大距离是最小的。
- 19
用8个邻近像素的平均值替换当前像素。
- 20
对9个像素求平均值([1 1 1]水平和垂直模糊)。
- 21
使用相对邻近像素的平均值裁剪像素。
- 22
模式21的简化且更快版本。
- 23
小的边缘和光晕移除,但声称无用。
- 24
与模式23相似。
32.210 removelogo
使用图像文件来确定哪些像素属于电视台台标,并抑制台标。它通过用相邻像素填充构成台标的像素来工作。
此滤镜接受以下选项:
- filename, f
设置滤镜位图文件,可以是libavformat支持的任意图像格式。图像文件的宽度和高度必须与所处理的视频流匹配。
提供的位图图像中值为零的像素将不被视为台标的一部分,非零像素将被视为台标的一部分。如果使用白色(255)表示台标,黑色(0)表示其余部分,则会比较安全。建议使用带有可见台标的黑帧捕获屏幕,再进行阈值滤波和一到两次腐蚀滤波以制作滤镜位图。
如有需要,可以手动修复小斑点。请记住,如果台标像素未覆盖,滤镜质量会大大降低。将过多像素标记为台标的一部分影响较小,但会增加覆盖图像所需的模糊量,并破坏更多不必要的信息,额外的像素会在大型台标上减慢处理速度。
32.211 repeatfields
此滤镜使用视频数据流头文件中的 `repeat_field` 标志,并根据其值执行硬重复字段。
32.212 reverse
倒放视频片段。
警告:此滤镜需要内存缓冲整个片段,因此建议进行剪辑。
32.212.1 Examples
- 截取片段的前5秒,并倒放。
trim=end=5,reverse
32.213 rgbashift
水平和/或垂直移动R/G/B/A像素。
此滤镜接受以下选项:
- rh
设置红色水平偏移的量。
- rv
设置红色垂直偏移的量。
- gh
设置绿色水平偏移的量。
- gv
设置绿色垂直偏移的量。
- bh
设置蓝色水平偏移的量。
- bv
设置蓝色垂直偏移的量。
- ah
设置透明度水平偏移的量。
- av
设置透明度垂直偏移的量。
- edge
设置边缘模式,可为涂抹,默认值或扭曲.
32.213.1 命令
该滤镜支持以上所有选项作为命令.
32.214 roberts
对输入视频流应用Roberts交叉操作符。
该滤镜接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面将被处理。
- scale
设置乘以过滤结果的值。
- delta
设置加到过滤结果的值。
32.214.1 命令
该滤镜支持以上所有选项作为命令.
32.215 旋转
通过弧度值旋转视频。
该滤镜接受以下选项:
下面是可选参数的说明。
- angle, a
为旋转输入视频的角度设置表达式,顺时针旋转,以弧度表示。 负值将导致逆时针旋转。默认设置为"0"。
此表达式会对每帧进行评估。
- out_w, ow
设置输出宽度表达式,默认值为"iw"。 此表达式仅在配置期间评估一次。
- out_h, oh
设置输出高度表达式,默认值为"ih"。 此表达式仅在配置期间评估一次。
- bilinear
启用双线性插值时设置为1,设置为0则禁用。 默认值为1。
- fillcolor, c
设置用于填充旋转后图像未覆盖的输出区域的颜色。 有关此选项的常规语法,请参阅(ffmpeg-utils)"颜色"部分的ffmpeg-utils手册。 如果选择特殊值"无",则不会打印背景(例如背景永远不会显示时很有用)。
默认值为"黑色"。
角度和输出尺寸的表达式可以包含以下常量和函数:
- n
输入帧的顺序号,从0开始。在过滤第一个帧之前始终是NAN。
- t
输入帧的时间(以秒为单位),在滤镜配置时设置为0。 在过滤第一个帧之前始终是NAN。
- hsub
- vsub
水平和垂直色度子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。
- in_w, iw
- in_h, ih
输入视频的宽度和高度
- out_w, ow
- out_h, oh
输出宽度和高度,即配置时通过指定的填充区域的大小宽度和高度表达式
- rotw(a)
- roth(a)
完全包含旋转输入视频所需的最小宽度/高度,旋转弧度为a弧度。
这些仅在计算out_w高度out_h表达时可用。
32.215.1 示例
- 顺时针旋转输入视频PI/6弧度:
rotate=PI/6
- 逆时针旋转输入视频PI/6弧度:
rotate=-PI/6
- 顺时针旋转输入视频45度:
rotate=45*PI/180
- 应用从PI/3的角度开始,周期为T的恒定旋转:
rotate=PI/3+2*PI*t/T
- 使输入视频以周期T秒振荡旋转,幅度为A弧度:
rotate=A*sin(2*PI/T*t)
- 旋转视频,选择输出尺寸以确保始终完全包含旋转输入视频:
rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
- 旋转视频,减小输出尺寸以确保背景永远不会显示:
rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
32.215.2 命令
该滤镜支持以下命令:
- a, angle
设置角度表达式。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
32.216 sab
应用形状自适应模糊。
该滤镜接受以下选项:
- luma_radius, lr
设置亮度模糊滤镜的强度,必须介于0.1-4.0之间,默认值为1.0。 更大的值会产生更模糊的图像,并且处理速度较慢。
- luma_pre_filter_radius, lpfr
设置亮度预滤镜半径,必须在0.1-2.0范围内,默认值为1.0。
- luma_strength, ls
设置像素之间仍被考虑的亮度最大差异值,必须在0.1-100.0范围内,默认值为1.0。
- chroma_radius, cr
设置色度模糊滤镜的强度,必须介于-0.9-4.0之间。 更大的值会产生更模糊的图像,并且处理速度较慢。
- chroma_pre_filter_radius, cpfr
设置色度预滤镜半径,必须在-0.9-2.0范围内。
- chroma_strength, cs
设置像素之间仍被考虑的色度最大差异值,必须在-0.9-100.0范围内。
如果未明确指定,每个色度选项值将设置为对应亮度选项值。
32.217 缩放
使用libswscale库对输入视频进行缩放(调整大小)。
缩放滤镜通过更改输出样本纵横比强制输出显示纵横比与输入相同。
如果输入图像格式与下一个滤镜请求的格式不同,缩放滤镜将把输入转换为请求的格式。
32.217.1 选项
该滤镜接受以下选项,包括libswscale缩放器支持的任何选项,以及任何framesync选项。
参见(ffmpeg-scaler)ffmpeg-scaler手册以获取所有缩放器选项的完整列表。
- width, w
- height, h
设置输出视频尺寸表达式。默认值为输入尺寸。
如果宽度或w值为0,则使用输入宽度作为输出宽度。如果高度或h值为0,则使用输入高度作为输出高度。
如果仅有一个值为-n且n >= 1,则缩放滤镜将使用一个值,以保持输入图像的纵横比, 从其他指定尺寸计算得出。之后,它会确保计算的维度可以被n整除,并在必要时调整值。
如果两个值都为-n且n >= 1,则行为与两者都设置为0完全相同,如上所述。
参见下方可用于尺寸表达式的常量列表。
- eval
指定何时评估宽度和高度表达式。可接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时评估表达式一次。
- ‘frame’
对每个输入帧评估表达式。
默认值为‘init’.
- interl
设置交错模式。可接受以下值:
- ‘1’
强制交错感知缩放。
- ‘0’
不应用交错缩放。
- ‘-1’
根据源帧是否标记为交错来选择交错感知缩放。
默认值为‘0’.
- flags
设置libswscale缩放标志。参见(ffmpeg-scaler)ffmpeg-scaler手册以获取值的完整列表。如果未明确指定,滤镜将应用默认标志。
- param0, param1
设置libswscale输入参数,对于需要这些参数的缩放算法。参见(ffmpeg-scaler)ffmpeg-scaler手册以获取完整文档。如果未明确指定,滤镜将应用空参数。
- size, s
设置视频尺寸。有关此选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils手册中的"视频尺寸"部分.
- in_color_matrix
- out_color_matrix
设置输入/输出YCbCr颜色空间类型。
这允许覆盖自动检测到的值,也可以强制使用用于输出和编码的特定值。
如果未指定,颜色空间类型依赖于像素格式。
可能的值:
- ‘auto’
自动选择。
- ‘bt709’
符合国际电信联盟(ITU)BT.709推荐的格式。
- ‘fcc’
设置符合美国联邦通讯委员会(FCC)《联邦法规汇编》(CFR)标题47(2003)第73.682(a)条的颜色空间。
- ‘bt601’
- ‘bt470’
- ‘smpte170m’
设置符合以下标准的颜色空间:
- ITU-R BT.601推荐标准
- ITU-R Rec. BT.470-6(1998)系统B、B1和G
- 美国电影和电视工程师协会(SMPTE)ST 170:2004标准
- ‘smpte240m’
设置符合SMPTE ST 240:1999标准的颜色空间。
- ‘bt2020’
设置符合ITU-R BT.2020非恒定亮度系统的颜色空间。
- in_range
- out_range
设置输入/输出YCbCr样本范围。
这允许覆盖自动检测到的值,也可以强制使用用于输出和编码的特定值。如果未指定,范围依赖于像素格式。可能的值:
- ‘auto/unknown’
自动选择。
- ‘jpeg/full/pc’
设置全范围(在8位亮度情况下为0-255)。
- ‘mpeg/limited/tv’
设置"MPEG"范围(在8位亮度情况下为16-235)。
- in_chroma_loc
- out_chroma_loc
设置输入/输出色度样本位置。如果未指定,默认使用中心位置。可能的值:
- ‘auto, unknown’
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
- force_original_aspect_ratio
在必要时启用减少或增加输出视频宽度或高度,以保持原始纵横比。可能的值:
- ‘disable’
按指定的视频尺寸进行缩放,并禁用此功能。
- ‘decrease’
如果需要,输出视频宽度自动减小。
- ‘increase’
如果需要,输出视频宽度自动增加。
此选项的一个有用实例是,当您知道某个设备支持的最大允许分辨率时, 可以使用此选项限制输出视频,同时保留纵横比。例如,设备A允许1280x720播放,且您的视频为1920x800。 使用此选项(设置为减少)并在命令行中指定1280x720,输出视频变为1280x533。
请注意,这与指定-1给w或h不同,您仍需要指定输出分辨率才能使此选项生效。
- force_divisible_by
确保在与force_original_aspect_ratio一起使用时,输出尺寸(宽度和高度)可以被给定整数整除。 这与
-n
在w和h选项中使用类似。此选项尊重force_original_aspect_ratio指定的值,根据需要增加或减少分辨率。 视频的纵横比可能会稍微修改。
此选项对于视频需要使用force_original_aspect_ratio调整以符合或超过定义的分辨率,并且编码器对宽度或高度可整除性有要求时非常有帮助。
选项的值是包含以下常量的表达式:w and h options are expressions containing the following constants:
- in_w
- in_h
输入宽度和高度
- iw
- ih
与in_w和in_h.
- 相同。
- out_h
out_w
- out_h
- ow
ohout_w and out_h
- a
与iw / ih
- sar
输入样本纵横比
- dar
输入显示纵横比。从
(iw / ih) * sar
.- hsub
- vsub
输入色度的水平和垂直子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。
- ohsub
- ovsub
输出色度的水平和垂直子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。
- n
输入帧的顺序号,从0开始。 仅与
eval=frame
.- 一起可用。
输入帧的展示时间戳,以秒为单位。 仅与
eval=frame
.- pos
输入流中帧的位置(字节偏移量),或为NaN(如果该信息不可用和/或无意义,例如对于合成视频)。 仅与
eval=frame
一起可用。 已弃用,请勿使用。- 参考宽度,rw
- 参考高度,rh
- 参考长宽比
- 参考显示长宽比,rdar
- 参考帧数
- 参考时间戳
- 参考位置
与上述等效,但用于第二个参考输入。如果这些变量中的任何一个存在,此过滤器将接受两个输入。
32.217.2 示例
- 将输入视频缩放到大小为200x100
scale=w=200:h=100
这等效于:
scale=200:100
或:
scale=200x100
- 为输出大小指定尺寸缩写:
scale=qcif
也可以写成:
scale=size=qcif
- 将输入缩放到2倍:
scale=w=2*iw:h=2*ih
- 上述等同于:
scale=2*in_w:2*in_h
- 将输入缩放到2倍并强制使用交错缩放:
scale=2*iw:2*ih:interl=1
- 将输入缩放到一半大小:
scale=w=iw/2:h=ih/2
- 增加宽度,并将高度设置为相同的大小:
scale=3/2*iw:ow
- 追求希腊式和谐:
scale=iw:1/PHI*iw scale=ih*PHI:ih
- 增加高度,将宽度设为高度的3/2:
scale=w=3/2*oh:h=3/5*ih
- 增加尺寸,使尺寸为色度抽样值的倍数:
scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
- 将宽度增加到最多500像素,同时保持输入的长宽比:
scale=w='min(500\, iw*3/2):h=-1'
- 通过结合缩放和设置SAR使像素为正方形:
scale='trunc(ih*dar):ih',setsar=1/1
- 通过结合缩放和设置SAR,使像素为正方形,同时确保生成分辨率为偶数(某些编解码器需要):
scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
- 在叠加前,将字幕流(sub)缩放以匹配主视频(main)的大小。("scale2ref")
'[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
- 将标志缩放为视频高度的1/10,同时保留其显示长宽比。
[logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
32.217.3 命令
此过滤器支持以下命令:
- width, w
- height, h
设置输出视频尺寸表达式。命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值不变。
32.218 scale_cuda
使用加速的CUDA内核缩放(调整大小)和转换(像素格式)输入视频。 设置输出宽度和高度的方式与scale过滤器的方式相同。
该过滤器接受以下选项:
- w
- h
设置输出视频尺寸表达式。默认值为输入尺寸。
允许使用与scale过滤器相同的表达式。
- interp_algo
设置用于缩放的算法:
- 最近邻
最邻近算法
如果输入参数与所需输出匹配,则默认使用。
- 双线性
双线性插值
- 双三次
双三次插值
这是默认值。
- 兰佐斯
兰佐斯算法
- format
控制输出像素格式。默认情况下,如果未指定,则使用输入像素格式。
该过滤器不支持在YUV和RGB像素格式之间的转换。
- passthrough
如果设置为0,则每帧都处理,即使没有必要的转换。这种模式在用于作为一个下游帧消费者缓冲区时可能有用,避免耗尽有限的解码器帧池。
如果设置为1,在帧与所需输出参数匹配时将按原样传递帧。这是默认行为。
- param
算法特定参数。
影响双三次算法的曲线。
- force_original_aspect_ratio
- force_divisible_by
与scale过滤器选项的工作方式相同。
32.218.1 示例
- 将输入缩放到720p,保持长宽比,并确保输出为yuv420p。
scale_cuda=-2:720:format=yuv420p
- 使用最近邻算法放大到4K。
scale_cuda=4096:2160:interp_algo=nearest
- 不进行任何转换或缩放,但将所有输入帧复制到新分配的帧中。这在处理否则会耗尽解码器帧池的过滤器和编码链时可能有用。
scale_cuda=passthrough=0
32.219 scale_npp
使用NVIDIA性能原语(libnpp)对CUDA视频帧进行缩放和/或像素格式转换。 设置输出宽度和高度的方式与scale过滤器方式相同。
接受以下附加选项:
- format
输出CUDA帧的像素格式。如果设置为字符串"same"(默认),则保持输入格式。 请注意,目前尚不支持硬件帧的自动格式协商和转换。
- interp_algo
用于调整大小的插值算法之一:
- nn
最近邻。
- linear
- cubic
- cubic2p_bspline
2参数双三次(B=1, C=0)
- cubic2p_catmullrom
2参数双三次(B=0, C=1/2)
- cubic2p_b05c03
2参数双三次(B=1/2, C=3/10)
- super
超采样
- lanczos
- force_original_aspect_ratio
启用或禁用根据需要调整输出视频宽度或高度以保持原始长宽比的功能。可能的值:
- ‘disable’
按指定的方式缩放视频,并禁用此功能。
- ‘decrease’
如果需要,输出视频的尺寸将自动减小。
- ‘increase’
如果需要,输出视频的尺寸将自动增加。
此选项的一个有用实例是,当您知道特定设备的最大允许分辨率时,可以使用它限制输出视频以适应该分辨率,同时保持长宽比。例如,设备A允许1280x720的播放,而您的视频是1920x800。使用此选项(设置为减少),并在命令行中指定1280x720,将输出为1280x533。
请注意,这与为w或h指定-1不同,您仍需指定输出分辨率以使此选项工作。
- force_divisible_by
确保输出尺寸,宽度和高度,都能被指定的整数整除,当与force_original_aspect_ratio一起使用时。
-n
在w与h选项中类似使用。该选项尊重为force_original_aspect_ratio设置的值,相应地增加或减小分辨率。视频的长宽比可能会略有修改。
如果您需要视频适应或超出force_original_aspect_ratio定义的分辨率,但编码器在宽度或高度的可整除性上有限制,这个选项可能会很方便。
- eval
指定何时评估宽度和高度表达式。它接受以下值:
- ‘init’
仅在过滤器初始化期间或处理命令时评估表达式。
- ‘frame’
对每个传入帧评估表达式。
值w和h选项是包含以下常量的表达式:
- in_w
- in_h
输入宽度和高度
- iw
- ih
它们与in_w和in_h.
- out_w
- out_h
输出(缩放后)的宽度和高度
- ow
- oh
它们与out_w和out_h
- a
等同于iw / ih
- sar
输入的采样长宽比
- dar
输入的显示长宽比。由
(iw / ih) * sar
.- n
从0开始输入帧的(连续)编号。仅当使用
eval=frame
.- t
输入帧的显示时间戳,以秒为单位表示。仅当使用
eval=frame
.- pos
帧在输入流中的位置(字节偏移量),如果此信息不可用和/或无意义(例如在合成视频的情况下),则为NaN。仅当使用
eval=frame
。 已弃用,请勿使用。
32.220 scale2ref_npp
使用NVIDIA性能原语(libnpp)根据参考视频缩放(调整尺寸)输入视频。
请参阅scale_npp过滤器以获取可用选项,scale2ref_npp支持相同的选项,但使用参考视频而不是主输入作为基础。scale2ref_npp还支持以下附加的常量用于w和h选项:
- main_w
- main_h
主输入视频的宽度和高度
- main_a
等同于main_w / main_h
- main_sar
主输入视频的采样长宽比
- main_dar, mdar
主输入视频的显示长宽比。由
(main_w / main_h) * main_sar
.- main_n
从0开始主输入帧的(连续)编号。仅当使用
eval=frame
.- main_t
主输入帧的显示时间戳,以秒为单位表示。仅当使用
eval=frame
.- main_pos
帧在主输入流中的位置(字节偏移量),如果此信息不可用和/或无意义(例如在合成视频的情况下),则为NaN。仅当使用
eval=frame
.
32.220.1 示例
- 将字幕流(b)缩放以匹配主视频(a)的大小,然后叠加。
'scale2ref_npp[b][a];[a][b]overlay_cuda'
- 将标志缩放为视频高度的1/10,同时保留其显示长宽比。
[logo-in][video-in]scale2ref_npp=w=oh*mdar:h=ih/10[logo-out][video-out]
32.221 scale_vt
使用VTPixelTransferSession进行缩放和颜色参数转换。
过滤器接受以下选项:
- w
- h
设置输出视频尺寸表达式。默认值为输入尺寸。
- color_matrix
设置输出颜色空间矩阵。
- color_primaries
设置输出颜色原色。
- color_transfer
设置输出传输特性。
32.222 scharr
对输入视频流应用Scharr算子。
过滤器接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被复制。默认值为0xf,所有平面将被处理。
- scale
设置将与过滤结果相乘的值。
- delta
设置将添加到过滤结果的值。
32.222.1 命令
此过滤器支持所有上述选项作为命令.
32.223 scroll
以恒定速度水平和/或垂直滚动输入视频。
过滤器支持以下选项:
- horizontal, h
设置水平滚动速度。默认值为0。允许范围是-1到1。负值更改滚动方向。
- vertical, v
设置垂直滚动速度。默认值为0。允许范围是-1到1。负值更改滚动方向。
- hpos
设置初始水平滚动位置。默认值为0。允许范围是0到1。
- vpos
设置初始垂直滚动位置。默认值为0。允许范围是0到1。
32.223.1 命令
此过滤器支持以下命令:
- horizontal, h
设置水平滚动速度。
- vertical, v
设置垂直滚动速度。
32.224 scdet
检测视频场景变化。
该过滤器设置帧元数据与帧之间的MAFD、场景分数,并将帧转发到下一个过滤器,以便它们可以使用这些元数据检测场景变化或其他。
此外,当检测到场景变化时,该过滤器记录一条消息并设置帧元数据threshold.
lavfi.scd.mafd
每一帧的MAFD设置为元数据键。
lavfi.scd.score
每帧的场景分数设置为元数据键以检测场景变化。
lavfi.scd.time
通过threshold.
检测到场景变化时,当前过滤帧时间设置为元数据键。
- threshold, t
将场景变化检测阈值设置为最大变化的百分比。好的值在
[8.0, 14.0]
范围内。threshold范围是[0., 100.]
.默认值是
10.
.- sc_pass, s
设置标志以将场景变化帧传递到下一个过滤器。默认值是
0
如果您希望仅获取场景变化帧的快照,可以启用它。
32.225 selectivecolor
将青色、品红、黄色和黑色(CMYK)调整到某些颜色范围(例如"红色"、"黄色"、"绿色"、"青色"等)。调整范围由颜色的"纯度"定义(即其已经饱和的程度)。
此过滤器类似于Adobe Photoshop的选择性调色工具。
过滤器接受以下选项:
- correction_method
选择颜色校正方法。
可用的值是:
- ‘absolute’
指定的调整"按原样"应用(添加/减去到原始像素分量值)。
- ‘relative’
指定的调整相对于原始分量值。
默认是
absolute
.- reds
红色像素的调整(像素的红色分量为最大值时)
- yellows
黄色像素的调整(像素的蓝色分量为最小值时)
- greens
绿色像素的调整(像素的绿色分量为最大值时)
- cyans
青色像素的调整(像素的红色分量为最小值时)
- blues
蓝色像素的调整(像素的蓝色分量为最大值时)
- magentas
调整品红像素(绿色分量为最小值的像素)的设置
- whites
调整白色像素(所有分量大于128的像素)的设置
- neutrals
调整除纯黑色和纯白色之外的所有像素的设置
- blacks
调整黑色像素(所有分量小于128的像素)的设置
- psfile
指定一个Photoshop选择性颜色文件(
.asv
)以导入设置。
所有调整设置(reds, yellows, ...)最多接受4个以空格分隔的浮点调整值,范围为[-1,1],依次调整其范围内像素的青色、品红、黄色和黑色的量。
32.225.1 示例
- 在所有绿色区域增加50%的青色量并减少33%的黄色量,同时在蓝色区域增加27%的品红量:
selectivecolor=greens=.5 0 -.33 0:blues=0 .27
- 使用Photoshop的选择性颜色预设:
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
32.226 separatefields
该separatefields
接受基于帧的视频输入,并将每帧分割为其组成字段,生成一个高度减半的剪辑,同时将帧速率和帧数加倍。
此滤镜使用帧中的场优先级信息来决定输出中的每对字段中哪个字段先出现。如果它出错,请使用setfield滤镜在separatefields
滤镜之前。
32.227 setdar, setsar
该setdar
滤镜为滤镜输出视频设置显示长宽比。
这是通过根据以下公式更改指定的样本(又称像素)长宽比来完成的:
DAR = 水平分辨率 / 垂直分辨率 * SAR
请注意,该setdar
滤镜不会修改视频帧的像素尺寸。此外,该滤镜设置的显示长宽比可能会被滤镜链中的后续滤镜更改,例如在缩放的情况下,或者如果应用了另一个"setdar"或"setsar"滤镜。
该setsar
滤镜为滤镜输出视频设置样本(又称像素)长宽比。
请注意,由于应用此滤镜的结果,输出显示长宽比将根据上述公式发生变化。
请记住,由setsar
滤镜设置的样本长宽比可能会被滤镜链中的后续滤镜更改,例如如果应用了另一个"setsar"或"setdar"滤镜。
接受以下参数:
- r, ratio, dar (
setdar
only), sar (setsar
only) 设置滤镜使用的长宽比。
参数可以是浮点数字符串或表达式。如果未指定参数,则假设值为"0",意味着使用相同的输入值。
- max
设置在将表达的长宽比缩小到有理数时,用于表达分子和分母的最大整数值。默认值是
100
.
参数sar是一个包含以下常量的表达式:
- w, h
输入宽度和高度。
- a
与w / h.
- sar
输入样本长宽比。
- dar
输入显示长宽比,它与(w / h) * sar.
- hsub, vsub
水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub为2,vsub为1。
32.227.1 示例
- 要将显示长宽比更改为16:9,请指定以下选项之一:
setdar=dar=1.77777 setdar=dar=16/9
- 要将样本长宽比更改为10:11,请指定:
setsar=sar=10/11
- 要设置显示长宽比为16:9,并在长宽比缩减时指定最大整数值为1000,请使用以下命令:
setdar=ratio=16/9:max=1000
32.228 setfield
强制输出视频帧的字段。
该setfield
滤镜标记输出帧的隔行扫描类型字段。它不会更改输入帧,而只是设置相关属性,这会影响后续滤镜如何处理帧(例如fieldorder
或yadif
).
)。
- mode
可用值为:
- ‘auto’
保持字段属性不变。
- ‘bff’
将帧标记为底场优先。
- ‘tff’
将帧标记为顶场优先。
- ‘prog’
将帧标记为渐进式。
32.229 setparams
强制输出视频帧的帧参数。
该setparams
滤镜标记输出帧的隔行扫描和色彩范围。它不会更改输入帧,而只是设置相关属性,这会影响滤镜/编码器如何处理帧。
- field_mode
可用值为:
- ‘auto’
保持字段属性不变(默认)。
- ‘bff’
将帧标记为底场优先。
- ‘tff’
将帧标记为顶场优先。
- ‘prog’
将帧标记为渐进式。
- range
可用值为:
- ‘auto’
保持色彩范围属性不变(默认)。
- ‘unspecified, unknown’
将帧标记为未指定的色彩范围。
- ‘limited, tv, mpeg’
将帧标记为受限范围。
- ‘full, pc, jpeg’
将帧标记为全范围。
- color_primaries
设置颜色基准。 可用值为:
- ‘auto’
保持颜色基准属性不变(默认)。
- ‘bt709’
- ‘unknown’
- ‘bt470m’
- ‘bt470bg’
- ‘smpte170m’
- ‘smpte240m’
- ‘film’
- ‘bt2020’
- ‘smpte428’
- ‘smpte431’
- ‘smpte432’
- ‘jedec-p22’
- color_trc
设置颜色传递。 可用值为:
- ‘auto’
保持颜色TRC属性不变(默认)。
- ‘bt709’
- ‘unknown’
- ‘bt470m’
- ‘bt470bg’
- ‘smpte170m’
- ‘smpte240m’
- ‘linear’
- ‘log100’
- ‘log316’
- ‘iec61966-2-4’
- ‘bt1361e’
- ‘iec61966-2-1’
- ‘bt2020-10’
- ‘bt2020-12’
- ‘smpte2084’
- ‘smpte428’
- ‘arib-std-b67’
- colorspace
设置色彩空间。 可用值为:
- ‘auto’
保持色彩空间属性不变(默认)。
- ‘gbr’
- ‘bt709’
- ‘unknown’
- ‘fcc’
- ‘bt470bg’
- ‘smpte170m’
- ‘smpte240m’
- ‘ycgco’
- ‘bt2020nc’
- ‘bt2020c’
- ‘smpte2085’
- ‘chroma-derived-nc’
- ‘chroma-derived-c’
- ‘ictcp’
- chroma_location
设置色度样本位置。 可用值为:
- ‘auto’
保持色度位置不变(默认)。
- ‘unspecified, unknown’
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
32.230 sharpen_npp
使用NVIDIA性能原语(libnpp)进行边界控制和图像锐化。
接受以下额外选项:
- border_type
在帧边界使用的采样类型。以下选项之一:
- replicate
复制像素值。
32.231 shear
对输入视频应用剪切变换。
此滤镜支持以下选项:
- shx
X方向的剪切因子。默认值是0。 允许范围是-2到2。
- shy
Y方向的剪切因子。默认值是0。 允许范围是-2到2。
- fillcolor, c
设置用于填充未被变换视频覆盖的输出区域的颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的ffmpeg-utils手册。 如果选择特殊值"none",则不会绘制背景(例如,如果背景从未显示出来,这很有用)。
默认值是"black"。
- interp
设置插值类型。可以是
bilinear
或nearest
。默认值是bilinear
.
32.231.1 命令
此滤镜支持上述所有选项作为命令.
32.232 showinfo
显示每个输入视频帧的各种信息。输入视频未被修改。
此滤镜支持以下选项:
- checksum
计算每个平面的校验和。默认启用。
- udu_sei_as_ascii
如果可能,尝试以ASCII字符打印用户数据非注册SEI;否则以十六进制格式显示。
显示的行包含一系列键值对,格式为key:value.
输出中显示以下值:
- n
输入帧的(顺序)编号,从0开始。
- pts
输入帧的表示时间戳,以时间基单位表示。时间基单位取决于滤镜的输入端。
- pts_time
输入帧的表示时间戳,以秒数表示。
- fmt
像素格式名称。
- sar
输入帧的样本长宽比,以num/den.
- s
输入帧的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册.
- i
隔行扫描模式的类型("P"表示"渐进式","T"表示"顶场优先","B"表示"底场优先")。
- iskey
如果帧是关键帧,则为1,否则为0。
- type
输入帧的图片类型("I"表示I帧,"P"表示P帧,"B"表示B帧,"?"表示未知类型)。 另请参阅文档
AVPictureType
enum和av_get_picture_type_char
函数定义在libavutil/avutil.h.- checksum
输入帧所有平面的Adler-32校验和(以十六进制打印)。
- plane_checksum
输入帧每个平面的Adler-32校验和(以十六进制打印),格式为"[c0 c1 c2 c3]".
- mean
输入帧每个平面的平均像素值,格式为"[mean0 mean1 mean2 mean3]".
- stdev
输入帧每个平面的像素值标准差,格式为"[stdev0 stdev1 stdev2 stdev3]".
32.233 showpalette
显示每帧的256色调色板。此滤镜仅适用于pal8像素格式帧。
接受以下选项:
- s
设置用于表示调色板颜色条目的框的大小。默认是
30
(用于30x30
像素框)。
32.234 shuffleframes
重新排序和/或重复和/或丢弃视频帧。
接受以下参数:
- mapping
设置输入帧的目标索引。这是一个空间或"|"分隔的索引列表,将输入帧映射到输出帧。索引的数量也设置每个索引可能具有的最大值。索引"-1"具有特殊意义,表示丢帧。
第一帧的索引是0。默认情况下保持输入不变。
32.234.1 示例
- 在输入的每三个帧中交换第二帧和第三帧:
ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
- 在输入的每十帧中交换第10帧和第1帧:
ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
32.235 shufflepixels
重新排列视频帧中的像素。
接受以下选项:
- direction, d
设置随机方向。可以是正向或反向方向。默认方向是正向。
- mode, m
设置随机模式。可以是水平、垂直或块模式。
- width, w
- height, h
设置随机块大小。在水平随机模式下,只有宽度部分用于大小,而在垂直随机模式下,只有高度部分用于大小。
- seed, s
设置随机种子,用于随机排列像素。主要用于可以设置以反转过滤过程以获得原始输入。例如,要反转正向随机排列,您需要使用相同的参数和完全相同的种子,并设置方向为反向。
32.236 shuffleplanes
重新排序和/或重复视频平面。
接受以下参数:
- map0
要用作第一个输出平面的输入平面的索引。
- map1
要用作第二个输出平面的输入平面的索引。
- map2
要用作第三个输出平面的输入平面的索引。
- map3
要用作第四个输出平面的输入平面的索引。
第一个平面的索引是0。默认情况下保持输入不变。
32.236.1 示例
- 交换输入的第二个和第三个平面:
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
32.237 signalstats
评估协助确定与模拟视频媒体数字化相关的问题的各种视觉指标。
默认情况下,滤镜将记录以下元数据值:
- YMIN
显示输入帧内包含的最小Y值。范围为[0-255]。
- YLOW
显示输入帧内10%百分位数的Y值。范围为[0-255]。
- YAVG
显示输入帧内平均Y值。范围为[0-255]。
- YHIGH
显示输入帧内90%百分位数的Y值。范围为[0-255]。
- YMAX
显示输入帧内包含的最大Y值。范围为[0-255]。
- UMIN
显示输入帧内包含的最小U值。范围为[0-255]。
- ULOW
显示输入帧内10%百分位数的U值。范围为[0-255]。
- UAVG
显示输入帧内平均U值。范围为[0-255]。
- UHIGH
显示输入帧内90%百分位数的U值。范围为[0-255]。
- UMAX
显示输入帧内包含的最大U值。范围为[0-255]。
- VMIN
显示输入帧中包含的最小V值。范围为[0-255]。
- VLOW
显示输入帧中10%分位的V值。范围为[0-255]。
- VAVG
显示输入帧中的平均V值。范围为[0-255]。
- VHIGH
显示输入帧中90%分位的V值。范围为[0-255]。
- VMAX
显示输入帧中包含的最大V值。范围为[0-255]。
- SATMIN
显示输入帧中包含的最小饱和度值。范围为[0-~181.02]。
- SATLOW
显示输入帧中10%分位的饱和度值。范围为[0-~181.02]。
- SATAVG
显示输入帧中的平均饱和度值。范围为[0-~181.02]。
- SATHIGH
显示输入帧中90%分位的饱和度值。范围为[0-~181.02]。
- SATMAX
显示输入帧中包含的最大饱和度值。范围为[0-~181.02]。
- HUEMED
显示输入帧中色调的中位值。范围为[0-360]。
- HUEAVG
显示输入帧中色调的平均值。范围为[0-360]。
- YDIF
显示当前帧中Y平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。
- UDIF
显示当前帧中U平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。
- VDIF
显示当前帧中V平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。
- YBITDEPTH
显示当前帧中Y平面的位深。范围为[0-16]。
- UBITDEPTH
显示当前帧中U平面的位深。范围为[0-16]。
- VBITDEPTH
显示当前帧中V平面的位深。范围为[0-16]。
该滤镜接受以下选项:
- stat
- out
-
stat指定额外的图像分析形式。out以指定的类型高亮输出视频中的像素。
两个选项接受以下值:
- ‘tout’
识别时间异常像素。像素。时间异常像素是与同场邻近像素不相似的像素。时间异常像素的例子包括视频信号丢失、磁头堵塞或磁带跟踪问题的结果。
- ‘vrep’
识别垂直线重复。垂直线重复包括帧内相似的像素行。在生成数字视频时通常会出现垂直线重复,但在从模拟源数字化的视频中这种模式不常见。如果这种情况发生在数字化的模拟源视频中,可能指示从信号丢失补偿器隐藏问题。
- ‘brng’
识别落在合法广播范围之外的像素。
- color, c
设置用于out选项的高亮颜色。默认颜色是黄色。
32.237.1 示例
- 输出各种视频指标的数据:
ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
- 输出每帧的Y平面的最小值和最大值的特定数据:
ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
- 以红色高亮显示落在广播范围之外的像素来播放视频。
ffplay example.mov -vf signalstats="out=brng:color=red"
- 播放视频并在帧上绘制信号统计元数据。
ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
用于命令的signalstat_drawtext.txt的内容是:
time %{pts:hms} Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX}) U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX}) V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX}) saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
32.238 签名
计算MPEG-7视频签名。滤镜可以处理多个输入。在这种情况下,还可以计算输入之间的匹配。滤镜总是通过第一个输入,通过的每个流的签名可以写入文件。
它接受以下选项:
- detectmode
启用或禁用匹配过程。
可用值是:
- ‘off’
禁用匹配计算(默认)。
- ‘full’
计算整个视频的匹配并输出整个视频是否匹配或仅部分匹配。
- ‘fast’
仅计算直到找到匹配或视频结束。在某些情况下可能更快。
- nb_inputs
设置输入数量。选项值必须是非负整数。默认值为1。
- filename
设置输出文件路径。如果有多个输入,路径必须是一个原型,即必须包含%d或%0nd(其中n是一个正整数),将替换为输入编号。如果未指定文件名,则不会写入输出。这是默认值。
- format
选择输出格式。
可用值是:
- ‘binary’
使用指定的二进制表示(默认)。
- ‘xml’
使用指定的XML表示。
- th_d
设置检测一个词组类似性的阈值。选项值必须是大于零的整数。默认值为9000。
- th_dc
设置检测所有词组类似性的阈值。选项值必须是大于零的整数。默认值为60000。
- th_xh
设置检测帧类似性的阈值。选项值必须是大于零的整数。默认值为116。
- th_di
设置识别为匹配序列的最小帧长度。选项值必须是非负整数值。默认值为0。
- th_it
设置匹配帧与所有帧的比例必须达到的最低值。选项值必须是0到1之间的双精度值。默认值为0.5。
32.238.1 示例
- 计算输入视频的签名并将其存储在signature.bin中:
ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
- 检测两个视频是否匹配并将签名以XML格式存储在signature0.xml和signature1.xml中:
ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
32.239 siti
计算视频的空间信息(SI)和时间信息(TI)分数,如ITU-T Rec. P.910 (11/21)定义:适用于多媒体应用的主观视频质量评估方法。可用PDF下载地址https://www.itu.int/rec/T-REC-P.910-202111-S/en。请注意,这是一个对应于已被取代推荐的遗留实现。请参考ITU-T Rec. P.910 (07/22)的最新版本:https://www.itu.int/rec/T-REC-P.910-202207-I/en
它接受以下选项:
- print_summary
如果设置为1,将会在控制台输出汇总统计信息。默认值为0。
32.239.1 示例
- 计算SI/TI指标并打印汇总:
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
32.240 smartblur
模糊输入视频但不影响轮廓。
它接受以下选项:
- luma_radius, lr
设置亮度半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为1.0。
- luma_strength, ls
设置亮度强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为1.0。
- luma_threshold, lt
设置用于决定是否模糊像素的亮度阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为0。
- chroma_radius, cr
设置色度半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为luma_radius.
- chroma_strength, cs
设置色度强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为luma_strength.
- chroma_threshold, ct
设置用于决定是否模糊像素的色度阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为luma_threshold.
- alpha_radius, ar
设置Alpha半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为luma_radius.
- alpha_strength, as
设置Alpha强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为luma_strength.
- alpha_threshold, at
设置用于决定是否模糊像素的Alpha阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为luma_threshold.
如果未显式设置色度或Alpha选项,则对应的亮度值将被设置。
32.241 sobel
对输入视频流应用Sobel算子。
过滤接受以下选项:
- planes
设置将被处理的平面,未处理的平面将被复制。默认值为0xf,所有平面将被处理。
- scale
设置乘以滤波结果的值。
- delta
设置添加到滤波结果上的值。
32.241.1 命令
该过滤器支持以上所有选项作为命令.
32.242 spp
应用一个简单的后处理滤镜,通过在多个(或在quality级别6
-所有)位移处压缩和解压缩图像并平均结果。
过滤接受以下选项:
- quality
设置质量。此选项定义平均的级别数量。它接受范围0-6的整数。如果设置为
0
,过滤器将没有效果。值为6
表示更高的质量。该值的每次递增速度大约会降低一个因子为2。默认值是3
.- qp
强制使用恒定的量化参数。如果未设置,过滤器将使用视频流中的QP(如果可用)。
- mode
设置阈值模式。可用模式是:
- ‘hard’
设置硬阈值(默认)。
- ‘soft’
设置软阈值(效果更好的去环效应,但可能更模糊)。
- use_bframe_qp
启用来自B帧的QP的使用,如果设置为
1
。使用此选项可能会引起闪烁,因为B帧通常具有较大的QP。默认不启用。0
(未启用)。
32.242.1 命令
此过滤器支持以下命令:
- quality, level
设置质量级别。值
max
可用于设置最高级别,目前6
.
32.243 sr
通过应用基于卷积神经网络的超分辨率方法对输入进行缩放。支持的模型:
- 超分辨率卷积神经网络模型(SRCNN)。详细见https://arxiv.org/abs/1501.00092.
- 高效子像素卷积神经网络模型(ESPCN)。详细见https://arxiv.org/abs/1609.05158.
可在以下位置找到训练脚本以及用于保存模型文件 (.pb) 的脚本https://github.com/XueweiMeng/sr/tree/sr_dnn_native。原始存储库位于https://github.com/HighVoltageRocknRoll/sr.git.
过滤器接受以下选项:
- dnn_backend
指定使用哪个 DNN 后端加载和执行模型。此选项接受以下值:
- ‘tensorflow’
TensorFlow 后端。启用此后端需要安装 TensorFlow for C 库(参见https://www.tensorflow.org/install/lang_c)并使用以下配置 FFmpeg
--enable-libtensorflow
- model
设置到指定网络架构及其参数的模型文件路径。请注意,不同的后端使用不同的文件格式。TensorFlow、OpenVINO 后端只能加载其格式的文件。
- scale_factor
为 SRCNN 模型设置缩放因子。允许的值为
2
,3
和4
。 默认值为2
。缩放因子是 SRCNN 模型所必需的,因为其需要输入使用正确缩放因子的双三次上采样进行了放大的数据。
要获得全部功能(如异步执行),请使用dnn_processing过滤器。
32.244 ssim
获取两个输入视频之间的 SSIM(结构相似度指标)。
此过滤器接受两个输入视频,第一个输入被视为“主”源并不进行改变地传递到输出。第二个输入被用作计算 SSIM 的“参考”视频。
两个视频输入必须具有相同的分辨率和像素格式,以使此过滤器正常工作。此外,它假设两个输入具有相同的帧数,并逐帧进行比较。
过滤器存储每帧计算出的 SSIM。
以下是接受的参数描述。
- stats_file, f
如果指定,过滤器将使用指定的文件保存每帧的 SSIM。当文件名为"-"时,数据将被发送到标准输出。
选择时打印的文件stats_file包含一对对格式为键:值的键值对,用于每一对比较的帧。
以下是每个显示参数的描述:
- n
输入帧的顺序编号,从 1 开始
- Y, U, V, R, G, B
指定后缀组件的比较帧的 SSIM。
- All
整个帧的比较帧的 SSIM。
- dB
与上述相同,但以 dB 表示。
此过滤器还支持framesync选项。
32.244.1 实例
- 例如:
movie=ref_movie.mpg, setpts=PTS-STARTPTS [main]; [main][ref] ssim="stats_file=stats.log" [out]
在此示例中,正在处理的输入文件与参考文件ref_movie.mpg进行比较。 每帧的 SSIM 存储在stats.log.
- 另一个同时使用 psnr 和 ssim 的示例:
ffmpeg -i main.mpg -i ref.mpg -lavfi "ssim;[0:v][1:v]psnr" -f null -
- 另一个使用不同容器的示例:
ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
32.245 stereo3d
在不同的立体图像格式之间进行转换。
过滤器接受以下选项:
- in
设置输入的立体图像格式。
输入图像格式的可用值包括:
- ‘sbsl’
并排平行(左眼为左,右眼为右)
- ‘sbsr’
并排交叉眼(右眼为左,左眼为右)
- ‘sbs2l’
并排平行,分辨率减半(左眼为左,右眼为右)
- ‘sbs2r’
并排交叉眼,分辨率减半(右眼为左,左眼为右)
- ‘abl’
- ‘tbl’
上下(左眼在上,右眼在下)
- ‘abr’
- ‘tbr’
上下(右眼在上,左眼在下)
- ‘ab2l’
- ‘tb2l’
上下,分辨率减半(左眼在上,右眼在下)
- ‘ab2r’
- ‘tb2r’
上下,分辨率减半(右眼在上,左眼在下)
- ‘al’
交替帧(左眼在第一帧,右眼在第二帧)
- ‘ar’
交替帧(右眼在第一帧,左眼在第二帧)
- ‘irl’
交错行(左眼从顶行开始,右眼从下一行开始)
- ‘irr’
交错行(右眼从顶行开始,左眼从下一行开始)
- ‘icl’
交错列,左眼优先
- ‘icr’
交错列,右眼优先
默认值是 'sbsl’.
- out
设置输出的立体图像格式。
- ‘sbsl’
并排平行(左眼为左,右眼为右)
- ‘sbsr’
并排交叉眼(右眼为左,左眼为右)
- ‘sbs2l’
并排平行,分辨率减半(左眼为左,右眼为右)
- ‘sbs2r’
并排交叉眼,分辨率减半(右眼为左,左眼为右)
- ‘abl’
- ‘tbl’
上下(左眼在上,右眼在下)
- ‘abr’
- ‘tbr’
上下(右眼在上,左眼在下)
- ‘ab2l’
- ‘tb2l’
上下,分辨率减半(左眼在上,右眼在下)
- ‘ab2r’
- ‘tb2r’
上下,分辨率减半(右眼在上,左眼在下)
- ‘al’
交替帧(左眼在第一帧,右眼在第二帧)
- ‘ar’
交替帧(右眼在第一帧,左眼在第二帧)
- ‘irl’
交错行(左眼从顶行开始,右眼从下一行开始)
- ‘irr’
交错行(右眼从顶行开始,左眼从下一行开始)
- ‘arbg’
红蓝灰色立体(左眼使用红色滤镜,右眼使用蓝色滤镜)
- ‘argg’
红绿灰色立体(左眼使用红色滤镜,右眼使用绿色滤镜)
- ‘arcg’
红青灰色立体(左眼使用红色滤镜,右眼使用青色滤镜)
- ‘arch’
红青半彩色立体(左眼使用红色滤镜,右眼使用青色滤镜)
- ‘arcc’
红青彩色立体(左眼使用红色滤镜,右眼使用青色滤镜)
- ‘arcd’
红青彩色立体,经过 Dubois 最小二乘投影优化(左眼使用红色滤镜,右眼使用青色滤镜)
- ‘agmg’
绿洋红灰色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)
- ‘agmh’
绿洋红半彩色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)
- ‘agmc’
绿洋红彩色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)
- ‘agmd’
绿洋红彩色立体,经过 Dubois 最小二乘投影优化(左眼使用绿色滤镜,右眼使用洋红色滤镜)
- ‘aybg’
黄蓝灰色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)
- ‘aybh’
黄蓝半彩色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)
- ‘aybc’
黄蓝彩色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)
- ‘aybd’
黄蓝彩色立体,经过 Dubois 最小二乘投影优化(左眼使用黄色滤镜,右眼使用蓝色滤镜)
- ‘ml’
单眼输出(左眼)
- ‘mr’
单眼输出(右眼)
- ‘chl’
棋盘格,左眼优先
- ‘chr’
棋盘格,右眼优先
- ‘icl’
交错列,左眼优先
- ‘icr’
交错列,右眼优先
- ‘hdmi’
HDMI 帧包
默认值是 'arcd’.
32.245.1 示例
- 将输入视频从并排平行转换为黄色/蓝色 Dubois 立体格式:
stereo3d=sbsl:aybd
- 将输入视频从上下(左眼在上,右眼在下)转换为并排交叉眼。
stereo3d=abl:sbsr
32.246 streamselect, astreamselect
选择视频或音频流。
过滤器接受以下选项:
- inputs
设置输入数量。默认值为 2。
- map
设置输入索引以重新映射到输出。
32.246.1 命令
此streamselect
和astreamselect
过滤器支持以下命令:
- map
设置输入索引以重新映射到输出。
32.246.2 示例
- 选择前 5 秒的第一个流,其余时间选择第二个流:
sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
- 与上面的相同,但用于音频:
asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
32.247 subtitles
使用 libass 库在输入视频顶部绘制字幕。
要启用此过滤器的编译功能,您需要使用以下方式配置 FFmpeg--enable-libass
。此过滤器还需要包含 libavcodec 和
libavformat 的构建,用于将传递的字幕文件转换为 ASS(高级子站
Alpha)字幕格式。
过滤器接受以下选项:
- filename, f
设置字幕文件的文件名以供读取。必须指定。
- original_size
指定原始视频的大小,即 ASS 文件的内容所用视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"章节,在 ffmpeg-utils 手册中的。 由于 ASS 比例计算存在设计问题,如果长宽比发生了更改,则必须进行此调整以正确缩放字体。
- fontsdir
设置一个包含可由过滤器使用的字体的目录路径。除了字体提供程序所使用的字体外,这些字体还会被使用。
- alpha
处理 alpha 通道,默认情况下 alpha 通道将保持不变。
- charenc
设置字幕输入字符编码。
subtitles
过滤器仅适用。仅在不是 UTF-8 时有用。- stream_index, si
设置字幕流索引。
subtitles
过滤器仅适用。- force_style
覆盖字幕的默认样式或脚本信息参数。它接受一个包含 ASS 样式格式的字符串
KEY=VALUE
键值对,用", "分隔。- wrap_unicode
根据 Unicode 换行算法换行。可用性要求至少为 libass 0.17.0 版本(或 LIBASS_VERSION 0x01600010),和libass 必须用 libunibreak 构建。
默认情况下启用此选项,除非是内置 ASS 格式。
如果没有指定初始键,则假设第一个值指定filename.
例如,要将文件sub.srt渲染到输入视频顶部,请使用命令:
subtitles=sub.srt
这相当于:
subtitles=filename=sub.srt
要从文件渲染默认的字幕流video.mkv,请使用:
subtitles=video.mkv
要渲染文件中的第二个字幕流
subtitles=video.mkv:si=1
请使用:sub.srt使文件中的字幕流DejaVu Serif
以 80% 透明的蓝色显示
subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
32.248 super2xsai
通过 Super2xSaI(Scale and Interpolate)像素艺术放大算法,以 2x 缩放并平滑输入内容。
用于放大像素艺术图像而不会降低清晰度。
32.249 swaprect
交换视频中的两个矩形对象。
过滤器接受以下选项:
- w
设置对象宽度。
- h
设置对象高度。
- x1
设置第一个矩形的 x 坐标。
- y1
设置第一个矩形的 y 坐标。
- x2
设置第二个矩形的 x 坐标。
- y2
设置第二个矩形的 y 坐标。
所有表达式会为每帧评估一次。
所有选项都为包含以下常量的表达式:
- w
- h
输入宽度和高度。
- a
与w / h
- sar
输入样本宽高比。
- dar
输入显示宽高比,与 (w / h) * sar
- n
输入帧的编号,从 0 开始。
- t
时间戳,以秒为单位表示。如果输入时间戳未知,则为 NAN。
- pos
文件中的输入帧位置,如果未知则为 NAN;已废弃,不推荐使用
32.249.1 命令
此过滤器支持所有上述选项作为命令.
32.250 swapuv
交换 U 和 V 平面。
32.251 tblend
混合连续的视频帧。
参见blend
32.252 telecine
对视频应用电影化处理。
过滤器接受以下选项:
- first_field
- ‘top, t’
顶字段优先
- ‘bottom, b’
底字段优先 默认值是
top
.
- pattern
表示所要应用的抽帧模式的一串数字。 默认值是
23
.
Some typical patterns: NTSC output (30i): 27.5p: 32222 24p: 23 (classic) 24p: 2332 (preferred) 20p: 33 18p: 334 16p: 3444 PAL output (25i): 27.5p: 12222 24p: 222222222223 ("Euro pulldown") 16.67p: 33 16p: 33333334
32.253 thistogram
计算并绘制输入视频的颜色分布随时间变化的直方图。
与histogram视频滤镜仅显示某些时间点的单帧直方图
不同,此滤镜还会显示定义的帧数量的过去历史直方图由width
选项。
计算出的直方图是图像中颜色分量分布的表示。
过滤器接受以下选项:
- width, w
设置单个颜色分量输出的宽度。默认值为
0
。 值0
意味着宽度将从输入视频中选取。 这也设置经过的直方图数量。 允许范围是 [0, 8192]。- display_mode, d
设置显示模式。 它接受以下值:
- ‘stack’
每个颜色分量的图表放置在彼此之下。
- ‘parade’
每个颜色分量的图像并排放置。
- ‘overlay’
显示与下文内容相同的信息
parade
,除了代表颜色分量的图表直接叠加在彼此之上。
默认值为
stack
.- levels_mode, m
设置模式。可以是
linear
,或logarithmic
。 默认值为linear
.- components, c
设置要显示的颜色分量。 默认值为
7
.- bgopacity, b
设置背景透明度。默认值为
0.9
.- envelope, e
显示包络线。默认情况下未启用。
- ecolor, ec
设置包络线颜色。默认值为
gold
.- slide
设置幻灯片模式。
幻灯片可用值为:
- ‘frame’
当到达右边界时绘制新帧。
- ‘replace’
用新列替换旧列。
- ‘scroll’
从右向左滚动。
- ‘rscroll’
从左向右滚动。
- ‘picture’
绘制单个图像。
默认值为
replace
.
32.254 阈值
对视频流应用阈值效果。
此滤镜需要四个视频流进行阈值处理。 第一个流是我们正在过滤的流。 第二个流是持有阈值的流,第三个流持有最小值,最后,第四个流持有最大值。
滤镜接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面都将被处理。
例如,如果第一个流像素的分量值小于第二个阈值流的像素分量阈值,则使用第三个流的值, 否则使用第四个流像素分量值。
使用颜色源滤镜可以执行各种类型的阈值处理:
32.254.1 命令
此滤镜支持与命令相同的所有选项.
32.254.2 示例
- 二进制阈值,使用灰色作为阈值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
- 反转二进制阈值,使用灰色作为阈值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
- 截断二进制阈值,使用灰色作为阈值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
- 阈值为零,使用灰色作为阈值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
- 反转阈值为零,使用灰色作为阈值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
32.255 缩略图
在给定的一系列连续帧中选择最具代表性的帧。
滤镜接受以下选项:
- n
设置要分析的帧批处理大小;在一个n帧集,滤镜 将从中选择其中一帧,然后处理接下来的n帧直到结束。 默认值为
100
.- log
设置日志级别以显示挑选的帧统计信息。 默认值为
info
.
由于滤镜会跟踪整个帧序列,较大的n值将导致更高的内存使用,因此不建议使用较高值。
32.255.1 示例
- 每50帧提取一张图片:
thumbnail=50
- 使用完整的缩略图创建示例
ffmpeg
:ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
32.256 拼图
将多张连续帧拼到一起。
滤镜untile可以反向操作。
滤镜接受以下选项:
- layout
以以下形式设置网格大小
COLUMNSxROWS
。范围最高为UINT_MAX单元格。 默认值为6x5
.- nb_frames
设置要在给定区域中渲染的最大帧数。必须小于等于wxh。 默认值为
0
,表示整个区域将被使用。- margin
设置外边框边距(以像素为单位)。范围为0到1024。 默认值为
0
.- padding
设置内边框厚度(即帧之间的像素数)。 对于更高级的填充选项(例如边缘具有不同值), 请参考pad视频滤镜。 范围为0到1024。 默认值为
0
.- color
指定未使用区域的颜色。有关此选项的语法,请检查在ffmpeg-utils手册中的“颜色”部分。 默认值为color为“黑色”。
- overlap
设置多个连续帧拼图时的重叠帧数。 值必须介于
0
和nb_frames - 1之间。 默认值为0
.- init_padding
设置开始显示第一个输出帧之前最初为空的帧数。 这可控制获得第一个输出帧的时间。 值必须介于
0
和nb_frames - 1之间。 默认值为0
.
32.256.1 示例
- 以8x8 PNG图块显示电影中的所有关键帧(-skip_frame nokey):
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
必要时使用-vsync 0避免
ffmpeg
重复每个输出帧以适应原始检测帧率。 - 显示
5
图片在一个帧区域中3x2
frames, 之间有7
像素的间距, 初始边距为2
像素,使用混合的直接和命名选项:tile=3x2:nb_frames=5:padding=7:margin=2
32.257 倾斜与迁移
应用倾斜与移效果。
当你反转时间和空间会发生什么?
通常视频由几个帧组成,这些帧表示时间的不同瞬间, 并显示由帧捕获的空间演变场景。 此滤镜是这种概念的反面,灵感源于倾斜和移摄影。
过滤框架包含了组成序列事件的整个时间线, 这是通过将每个帧中的像素切片放入单个框架中获得的。然而, 由于没有无限宽度的框架,这个过程截至输入框架宽度,视频通过在每个后续帧中 滑动一个列而重新构成。为了将空间映射到时间,滤镜还对每个输入帧进行倾斜, 以保持运动。这是通过逐步地从每个输入帧中选择一个不同列来实现的。
最终结果是一种反转视差,因此远处的物体移动速度比前方的物体快。 这种视频效果的理想条件是运动非常少且背景静止, 或者运动非常快并且景深非常宽(例如乘坐火车时的宽泛的全景)。
滤镜接受以下参数:
- tilt
在视频移动时进行倾斜(默认)。如果未设置,视频将根据每帧的第一列组成一个静态图像。
- start
过滤开始时的处理方式(见下文)。
- end
过滤结束时的处理方式(见下文)。
- hold
在开始过滤之前应通过的列数。
- pad
在过滤结束之前应插入的列数。
通常情况下,滤镜从第一帧开始进行移位和倾斜,并在收到最后一帧时结束。 然而,过滤开始之前,可以保留正常的视频。 以便效果逐渐被取代。同样,最后的视频帧也可以在结束时重建。 或者,也可以选择开始和结束时都只显示黑色。
- ‘none’
过滤从收到第一帧立即开始,并在收到最后一帧时结束。
- ‘frame’
第一帧或最后一帧在处理期间保持完整。
- ‘black’
过滤开始或结束时用黑色填充。
32.258 时序交织
执行各种类型的时间场交织。
帧从1开始计数,因此第一个输入帧被视为奇数。
滤镜接受以下选项:
- mode
指定交织模式。 此选项也可以仅作为一个值指定。 请参阅下方此选项的值列表。
可用值为:
- ‘merge, 0’
将奇数帧移动到上场,将偶数帧移动到下场,生成一个双倍高度的帧,帧速率减半。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444
- ‘drop_even, 1’
仅输出奇数帧,丢弃偶数帧,生成一个保持高度不变帧,帧速率减半。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 11111 33333 11111 33333 11111 33333
- ‘drop_odd, 2’
仅输出偶帧,丢弃奇数帧,生成一个保持高度不变帧,帧速率减半。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 22222 44444 22222 44444 22222 44444 22222 44444
- ‘pad, 3’
扩展每帧至全高度,但用黑色填充交替行,生成一个双倍高度帧,帧速率与输入帧率一致。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444
- ‘interleave_top, 4’
交织奇数帧的上场与偶数帧的下场,生成一个保持高度不变帧,帧速率减半。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- Output: 11111 33333 22222 44444 11111 33333 22222 44444
- ‘interleave_bottom, 5’
交织奇数帧的下场与偶数帧的上场,生成一个保持高度不变帧,帧速率减半。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 Output: 22222 44444 11111 33333 22222 44444 11111 33333
- ‘interlacex2, 6’
保持高度不变的双倍帧速率。插入的帧包括 从先前输入帧的第二个时间字段和从下一输入帧的第一个时间字段。 此模式依赖于top_field_first标志。 适用于无场同步的交织视频显示。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444
- ‘mergex2, 7’
将奇数帧移动到上场,将偶数帧移动到下场, 生成一个双倍高度帧,相同的帧速率。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444
数值值已弃用,但可接受以与以前版本兼容。
默认模式为
merge
.- flags
指定影响滤镜处理过程的标志。
可用值为flags:
- low_pass_filter, vlpf
在滤镜中启用线性垂直低通滤波。 当从包含高频垂直细节的进步源中创建交织目的地时, 垂直低通滤波是必需的。 滤波会减少交织‘闪烁’和产生莫奈图案。
- complex_filter, cvlpf
启用复杂垂直低通滤波。 这会略微减少交织‘闪烁’和莫奈图案,但更好地保留细节和主观清晰度印象。
- bypass_il
绕过已交织的帧,仅调整帧速率。
垂直低通滤波和绕过已交织帧只能mode 允许应用于interleave_top与.
interleave_bottom
32.259 时序中值
从多个连续输入视频帧中取中值像素。
- radius
设置中值滤镜的半径。 默认值为1。 允许范围为1到127。
- planes
设置要滤镜的平面。 默认值为
15
,将处理所有平面。- percentile
设置中值百分位。 默认值为
0.5
。 默认值0.5
总是取中值,而0
将取最小值,1
将取最大值。
32.259.1 命令
此滤镜支持上述所有选项作为命令,除选项之外radius
.
32.260 中间均衡器
应用时序视频中间均衡效果。
中间视频均衡器调整一系列视频帧具有相同的直方图, 同时尽可能保持其动态性。 例如,这用于匹配一系列视频帧的曝光。
此滤镜接受以下选项:
- radius
设置过滤半径。 默认值为
5
。 允许范围从1到127。- sigma
设置过滤精度。 默认值为
0.5
。 这将控制过滤的强度。 将此选项设置为0实际上不会产生影响。- planes
设置要处理的平面。 默认值为
15
,即所有可用平面。
32.261 混音
混合连续视频帧。
以下是接受的选项描述。
- frames
要混合的连续帧的数量。 如果未指定,则默认为3。
- weights
指定每个输入视频帧的权重。 每个权重用空格分隔。 如果指定的权重数小于帧数最后指定的权重将用于所有剩下未设置的权重。
- scale
指定缩放值,若设置,它将与每个权重乘以像素值之和相乘, 以达到最终的目标像素值。 默认情况下缩放会根据权重的总和自动进行缩放。
- planes
设置要滤镜的平面。 默认值是所有平面。 范围允许从0到15。
32.261.1 示例
- 对7个连续帧进行平均:
tmix=frames=7:weights="1 1 1 1 1 1 1"
- 应用简单时序卷积:
tmix=frames=3:weights="-1 3 -1"
- 类似上例,但仅显示时序差异:
tmix=frames=3:weights="-1 2 -1":scale=1
32.261.2 命令
此滤镜支持以下命令:
- weights
- scale
- planes
语法与具有相同名称的选项相同。
32.262 色调映射
对来自不同动态范围的颜色进行色调映射。
此滤镜需要使用单精度浮点数据,因为它需要操作(并且可以输出)超出范围的值。需要另一个滤镜,例如zscale,将结果帧转换为可用格式。
实施的色调映射算法仅适用于线性光,因此输入数据应事先线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
32.262.1 选项
滤镜接受以下选项。
- tonemap
设置要使用的色调映射算法。
可能的值为:
- 无
不应用任何色调映射,仅对过亮像素进行去饱和处理。
- 剪辑
硬剪辑任何超出范围的值。用于提供范围内值的完美颜色准确性,同时扭曲超出范围的值。
- 线性
将整个参考色域拉伸到显示器的线性倍数。
- 伽马
在色调曲线间拟合对数传递。
- Reinhard
通过简单曲线保持整体图像亮度,使用非线性对比度,导致细节扁平化和颜色准确性下降。
- Hable
比Reinhard更好地保留暗部和亮部细节,但会略微使整体变暗。当细节保留比颜色和亮度准确性更重要时使用。
- Mobius
平滑地映射超范围值,同时尽可能保留范围内材质的对比度和颜色。当颜色准确性比细节保留更重要时使用。
默认值为无。
- param
调整色调映射算法。
这会影响以下算法:
- 无
忽略。
- 线性
指定拉伸时使用的比例因子。默认值为 1.0。
- 伽马
指定函数的指数。默认值为 1.8。
- 剪辑
指定在剪辑前信号上乘以的额外线性系数。默认值为 1.0。
- Reinhard
指定显示峰值时的局部对比度系数。默认值为 0.5,这意味着在色域值将在剪辑时约亮度的一半。
- Hable
忽略。
- Mobius
指定从线性到 Mobius 变换的过渡点。低于此点的所有值均确保映射为 1:1。值越高,结果越准确,但代价是失去亮部细节。默认值为 0.3,由于初始坡度陡峭,仍可以相当准确地保留色域内颜色。
- desat
对超过此亮度水平的高光应用去饱和处理。参数越高,保留的颜色信息越多。此设置有助于防止超级高光的非自然泛白,将其(平滑地)变为白色。这使图像更自然,但代价是减少超范围颜色的信息。
默认值为 2.0,相对保守,主要适用于天空或直接日光照射的表面。设置为 0.0 禁用此选项。
此选项仅在输入帧具有受支持的颜色标签时有效。
- peak
使用此值覆盖信号/标称/参考峰值。当显示元数据中嵌入的峰值信息不可靠或从较低范围到较高范围进行色调映射时很有用。
32.263 tpad
临时填充视频帧。
滤镜接受以下选项:
- start
指定输入视频流之前的延迟帧数。默认值为 0。
- stop
指定输入视频流之后的填充帧数。设置为 -1 表示无限填充。默认值为 0。
- start_mode
设置添加到流开始时的帧类型。可以是添加或克隆。使用添加时添加实色帧。使用克隆时添加第一帧的克隆帧。默认值为添加.
- stop_mode
设置添加到流末尾的帧类型。可以是添加或克隆。使用添加时添加实色帧。使用克隆时添加最后帧的克隆帧。默认值为添加.
- start_duration, stop_duration
指定开始/停止延迟的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间持续时间”部分以获取接受的语法。这些选项覆盖开始和停止。默认值为 0。
- color
指定填充区域的颜色。有关此选项的语法,请查看(ffmpeg-utils)ffmpeg-utils 手册中的“颜色”部分.
默认值为颜色是"黑色"。
32.264 转置
在输入视频中将行与列进行转置,并可选进行翻转。
它接受以下参数:
- dir
指定转置方向。
可以假设以下值:
- ‘0, 4, cclock_flip’
逆时针旋转 90 度并垂直翻转(默认值),即:
L.R L.l . . -> . . l.r R.r
- ‘1, 5, clock’
顺时针旋转 90 度,即:
L.R l.L . . -> . . l.r r.R
- ‘2, 6, cclock’
逆时针旋转 90 度,即:
L.R R.r . . -> . . l.r L.l
- ‘3, 7, clock_flip’
顺时针旋转 90 度并垂直翻转,即:
L.R r.R . . -> . . l.r l.L
值在 4-7 之间时,仅在输入视频几何为纵向而非横向时才进行转置。这些值已弃用,应改用
passthrough
选项。数值已弃用,应该改用符号常量。
- passthrough
如果输入几何与指定值匹配,则不进行转置。它接受以下值:
- ‘none’
始终进行转置。
- ‘portrait’
保留纵向几何(当高度 >= 宽度).
- ‘landscape’
保留横向几何(当宽度 >= 高度).
默认值为
none
.
例如,顺时针旋转 90 度并保留纵向布局:
transpose=dir=1:passthrough=portrait
上述命令也可以指定为:
transpose=1:portrait
32.265 transpose_npp
在输入视频中将行与列进行转置,并可选进行翻转。有关更详细的示例,请参阅transpose视频滤镜,它与此滤镜的选项基本相同。
它接受以下参数:
- dir
指定转置方向。
可以假设以下值:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认值)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- passthrough
如果输入几何与指定值匹配,则不进行转置。它接受以下值:
- ‘none’
始终进行转置。(默认值)
- ‘portrait’
保留纵向几何(当高度 >= 宽度).
- ‘landscape’
保留横向几何(当宽度 >= 高度).
32.266 修剪
对输入进行修剪,以便输出包含输入的一个连续子部分。
它接受以下参数:
- start
指定保留部分的起始时间点,即时间戳为开始的帧将是输出中的第一帧。
- end
指定将被丢弃的第一帧的时间点,即时间戳为结束的帧的前一帧将是输出中的最后一帧。
- start_pts
这与开始相同,只有这个选项以时间基单位而不是秒设置起始时间戳。
- end_pts
这与结束相同,只有这个选项以时间基单位而不是秒设置结束时间戳。
- duration
输出的最大持续时间(以秒表示)。
- start_frame
应该传递到输出的第一帧的编号。
- end_frame
应该丢弃的第一帧的编号。
start, end、和duration以时长规格表示;请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间持续时间”部分以获取接受的语法。
注意,前两组开始/结束选项和duration选项会查看帧时间戳,而_frame 变体则只是计数过滤器通过的帧。此外,请注意,此滤镜不会修改时间戳。如果希望输出时间戳从零开始,请在修剪滤镜之后插入 setpts 滤镜。
如果设置了多个开始或结束选项,此滤镜会尝试贪婪地保留与至少一个指定约束匹配的所有帧。要只保留同时匹配所有约束的部分,请链接多个修剪滤镜。
默认值是保留所有输入。因此,可以仅设置例如结束值,以保留指定时间之前的所有内容。
示例:
- 删除除输入的第二分钟外的所有内容:
ffmpeg -i INPUT -vf trim=60:120
- 仅保留前一秒:
ffmpeg -i INPUT -vf trim=duration=1
32.267 去预乘
使用第二流的第一平面作为 alpha 对输入视频流应用 alpha 去预乘效果。
两个流必须具有相同的维度和像素格式。
滤镜接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被复制。默认值为 0xf,所有平面都将被处理。
如果格式有 1 或 2 个组件,则亮度为第 0 位。如果格式有 3 或 4 个组件:对于 RGB 格式,第 0 位是绿色,第 1 位是蓝色,第 2 位是红色;对于 YUV 格式,第 0 位是亮度,第 1 位是色度-U,第 2 位是色度-V。如果存在 alpha 通道,则始终为最后一位。
- inplace
处理不需要第二个输入,而是使用输入流中的 alpha 平面。
32.268 非锐化
对输入视频进行锐化或模糊处理。
它接受以下参数:
- luma_msize_x, lx
设置亮度矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- luma_msize_y, ly
设置亮度矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- luma_amount, la
设置亮度效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。
负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。
默认值为 1.0。
- chroma_msize_x, cx
设置色度矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- chroma_msize_y, cy
设置色度矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- chroma_amount, ca
设置色度效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。
负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。
默认值为 0.0。
- alpha_msize_x, ax
设置 alpha 矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- alpha_msize_y, ay
设置 alpha 矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。
- alpha_amount, aa
设置 alpha 效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。
负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。
默认值为 0.0。
所有参数均为可选,且默认为等价于字符串 '5:5:1.0:5:5:0.0' 的值。
32.268.1 示例
- 应用强烈的亮度锐化效果:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
- 对亮度和色度参数应用强烈模糊效果:
unsharp=7:7:-2:7:7:-2
32.269 去拼贴
将由拼贴图像组成的视频分解为单个图像。
输出视频的帧率是输入视频的帧率乘以图块的数量。
此过滤器与其相反平铺.
该过滤器接受以下选项:
- layout
设置网格大小(即线和列的数量)。有关此选项的语法,请查阅(ffmpeg-utils)"视频尺寸"部分在ffmpeg-utils手册中.
32.269.1 示例
- 从由25帧纵向叠加组成的静态图像文件生成1秒的视频,类似于模拟电影胶片:
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
32.270 uspp
应用超慢/简单后处理滤镜,它在几个(或 - 在quality级别8
- 全部)
移位时进行图像压缩和解压缩,并对结果进行平均。
与spp的行为不同,uspp实际上使用libavcodec Snow对每种情况进行编码和解码,而spp使用类似于MJPEG的简化的仅内部8x8 DCT。
此过滤器在5.0到6.0之间的ffmpeg版本中不可用。
该过滤器接受以下选项:
- quality
设置质量。此选项定义平均化的级别数量。接受范围为0-8的整数。如果设置为
0
,过滤器将无效果。值为8
表示较高质量。每增加一个该值,速度下降约为2倍。默认值为3
.- qp
强制使用固定量化参数。如果未设置,过滤器将使用视频流中的QP(如果可用)。
- codec
使用指定的编解码器而不是snow。
32.271 v360
在各种格式之间转换360视频。
该过滤器接受以下选项:
- input
- output
设置输入/输出视频的格式。
可用格式:
- ‘e’
- ‘equirect’
等距圆柱投影。
- ‘c3x2’
- ‘c6x1’
- ‘c1x6’
3x2/6x1/1x6布局的立方图。
格式特定选项:
- in_pad
- out_pad
为输入/输出立方图设置填充比例,值为小数。
示例值:
- ‘0’
无填充。
- ‘0.01’
面填充比例为1%。例如,对于1920x1280分辨率,面尺寸为640x640,填充为每侧3像素。(640 * 0.01 = 6像素)
默认值为‘0’。 最大值为‘0.1’.
- fin_pad
- fout_pad
为输入/输出立方图设置固定填充,值为像素。
默认值为‘0’。如果大于零,它将覆盖其他填充选项。
- in_forder
- out_forder
设置输入/输出立方图的面排列顺序。为每个位置选择一个方向。
方向的指定:
- ‘r’
右
- ‘l’
左
- ‘u’
上
- ‘d’
下
- ‘f’
前
- ‘b’
后
默认值为‘rludfb’.
- in_frot
- out_frot
为输入/输出立方图设置面旋转。为每个位置选择一个角度。
角度的指定:
- ‘0’
顺时针0度
- ‘1’
顺时针90度
- ‘2’
顺时针180度
- ‘3’
顺时针270度
默认值为‘000000’.
- ‘eac’
等角立方图(Equi-Angular Cubemap)。
- ‘flat’
- ‘gnomonic’
- ‘rectilinear’
普通视频。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘dfisheye’
双鱼眼。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘barrel’
- ‘fb’
- ‘barrelsplit’
Facebook的360格式。
- ‘sg’
正交格式。
格式特性选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘mercator’
墨卡托格式。
- ‘ball’
球体格式,在后面方向产生显著失真作用。
- ‘hammer’
Hammer-Aitoff地图投影格式。
- ‘sinusoidal’
正弦地图投影格式。
- ‘fisheye’
鱼眼投影。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘pannini’
Pannini投影。
格式特定选项:
- h_fov
设置输出pannini参数。
- ih_fov
设置输入pannini参数。
- ‘cylindrical’
圆柱投影。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘perspective’
透视投影。(仅用于输出)
格式特定选项:
- v_fov
设置透视参数。
- ‘tetrahedron’
四面体投影。
- ‘tsp’
截短方形金字塔投影。
- ‘he’
- ‘hequirect’
一半等距圆柱投影。
- ‘equisolid’
等实心格式。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘og’
正交格式。
格式特定选项:
- h_fov
- v_fov
- d_fov
设置输出的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ih_fov
- iv_fov
- id_fov
设置输入的水平/垂直/对角视场。值为度。
如果设置了对角视场,它将覆盖水平和垂直视场。
- ‘octahedron’
八面体投影。
- ‘cylindricalea’
圆柱等面积投影。
- interp
设置插值方法。
注意:更复杂的插值方法需要更多的内存运行。可用的方法:
- ‘near’
- ‘nearest’
最近邻法。
- ‘line’
- ‘linear’
双线性插值。
- ‘lagrange9’
拉格朗日9次插值。
- ‘cube’
- ‘cubic’
双三次插值。
- ‘lanc’
- ‘lanczos’
Lanczos插值。
- ‘sp16’
- ‘spline16’
Spline16插值。
- ‘gauss’
- ‘gaussian’
高斯插值。
- ‘mitchell’
Mitchell插值。
默认值为‘line’.
- w
- h
设置输出视频的分辨率。
默认分辨率取决于格式。
- in_stereo
- out_stereo
设置输入/输出立体格式。
- ‘2d’
2D单通道
- ‘sbs’
并排显示
- ‘tb’
上下显示
默认值为‘2d’用于输入和输出格式。
- yaw
- pitch
- roll
为输出视频设置旋转。值为度。
- rorder
为输出视频设置旋转顺序。为每个位置选择一个项目。
- ‘y, Y’
航向角(yaw)
- ‘p, P’
俯仰角(pitch)
- ‘r, R’
翻滚角(roll)
默认值为‘ypr’.
- h_flip
- v_flip
- d_flip
水平(交换左右)/垂直(交换上下)/深度(交换前后)翻转输出视频。布尔值。
- ih_flip
- iv_flip
设置输入视频是否水平/垂直翻转。布尔值。
- in_trans
设置输入视频是否被转置。布尔值,默认禁用。
- out_trans
设置输出视频是否需要转置。布尔值,默认禁用。
- h_offset
- v_offset
设置输出水平/垂直偏移量。默认为0。 允许范围为-1到1。
- alpha_mask
在alpha平面中为所有未映射像素构建遮罩,并将它们标记为完全透明。布尔值,默认禁用。
- reset_rot
重置输出视频的旋转。布尔值,默认禁用。
32.271.1 示例
- 使用双三次插值将等距圆柱视频转换为具有3x2布局和1%填充的立方图:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
- 提取等角立方体(Equi-Angular Cubemap)后视图:
ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
- 将转置和水平翻转的等角立方体(Equi-Angular Cubemap)以并排立体格式转换为等距圆柱顶部底部立体格式:
v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
32.271.2 命令
此过滤器支持部分上述选项作为命令.
32.272 vaguedenoiser
应用基于小波的去噪器。
它将视频输入的每一帧转换为小波域, 使用Cohen-Daubechies-Feauveau 9/7。然后将一些过滤应用于 得到的系数。之后进行反小波变换。 由于小波属性,它可以产生平滑的结果, 减少图像噪声,而不模糊图像特征。
此过滤器接受以下选项:
- threshold
过滤强度。数值越高,视频过滤效果越强。 硬阈值可以使用更高的阈值比软阈值 而不会导致视频显得过度过滤。默认值为2。
- method
过滤器将使用的过滤方法。
它接受以下值:
- ‘hard’
所有小于阈值的值将被归零。
- ‘soft’
所有小于阈值的值将被归零。所有大于阈值的值将 减少阈值值。
- ‘garrote’
缩放或归零系数——在(更多)软和(较少)硬阈值之间的中间项。
默认值为garrote。
- nsteps
图像的分解次数。图像无法超越某个点进行分解(通常为,640x480 视频帧为8 - 由于2^9 = 512 > 480)。有效值为1到32之间的整数。默认值为6。
- percent
部分或完全去噪(限制系数缩减),从0到100。默认值为85。
- planes
要处理的平面列表。默认情况下处理所有平面。
- type
滤镜将使用的阈值类型。
它接受以下值:
- ‘universal’
用于所有分解相同的阈值。
- ‘bayes’
使用的阈值也依赖于每种分解系数。
默认值是universal。
32.273 varblur
通过使用第二视频流设置模糊半径应用变量模糊滤镜。 第二流必须具备相同的尺寸。
此过滤器接受以下选项:
- min_r
设置允许的最小半径。允许范围为0到254。默认值为0。
- max_r
设置允许的最大半径。允许范围为1到255。默认值为8。
- planes
设置要处理的平面。默认情况下使用所有平面。
此varblur
过滤器还支持帧同步(frame sync)选项。
32.273.1 命令
此过滤器支持所有上述选项作为命令.
32.274 vectorscope
在二维图表(称为向量示波器)中显示2个颜色分量值。
此过滤器接受以下选项:
- mode, m
设置向量示波器模式。
它接受以下值:
- ‘gray’
- ‘tint’
图表上的灰色值显示,亮度越高,具有相同 颜色分量值的像素在图中位置更频繁。这是默认模式。
- ‘color’
图表上的灰色值显示。未出现在视频帧中的周围像素值 以由选项设置的两个颜色分量渐变形式绘制。
x
和y
。第三个颜色分量是静态的。- ‘color2’
实际颜色分量值在视频帧中显示在图中。
- ‘color3’
类似于color2,但是同一值的频率越高,
x
和y
在图中的值会增加另一个颜色分量,默认情况下是亮度,值取决于x
和y
.- ‘color4’
实际视频帧中的颜色会显示在图中。如果两个不同颜色映射到相同图中位置,则选择不在图组件中的更大值的颜色。
- ‘color5’
图表上的灰色值显示。类似于
color
但是从径向渐变中选取第三个颜色分量。
- x
设置将由X轴表示的颜色分量。默认值为
1
.- y
设置将在Y轴上表示的颜色分量。默认值为
2
.- intensity, i
设置强度,用于模式:灰色、彩色、color3和color5,以增加图形中(X,Y)位置频率所代表的颜色分量的亮度。
- envelope, e
- ‘none’
无包络,这是默认设置。
- ‘instant’
即时包络,即使最暗的单像素也将被清楚地突出显示。
- ‘peak’
随时间保持图中呈现的最大和最小值。这样可以在不不断查看矢量范围的情况下仍发现超出范围的值。
- ‘peak+instant’
峰值和即时包络相结合。
- graticule, g
设置要绘制的参考框类型。
- ‘none’
- ‘green’
- ‘color’
- ‘invert’
- opacity, o
设置参考框的透明度。
- flags, f
设置参考框标志。
- ‘white’
为白点绘制参考框。
- ‘black’
为黑点绘制参考框。
- ‘name’
绘制颜色点简短名称。
- bgopacity, b
设置背景透明度。
- lthreshold, l
为未在X轴或Y轴上表示的颜色分量设置低阈值。低于此值的值将被忽略。默认值为0。 注意,该值与实际每个像素分量可能具有的最大值相乘。因此,对于8位输入和低阈值为0.1的情况,实际阈值为0.1 * 255 = 25。
- hthreshold, h
为未在X轴或Y轴上表示的颜色分量设置高阈值。高于此值的值将被忽略。默认值为1。 注意,该值与实际每个像素分量可能具有的最大值相乘。因此,对于8位输入和高阈值为0.9的情况,实际阈值为0.9 * 255 = 230。
- colorspace, c
设置绘制参考框时使用的色彩空间类型。
- ‘auto’
- ‘601’
- ‘709’
默认值为自动。
- tint0, t0
- tint1, t1
设置灰色/色彩矢量模式的颜色染色。默认情况下两个选项均为零。 这意味着没有染色,输出将保持灰色。
32.275 vidstabdetect
分析视频稳定性/防抖动。执行第1步(共2步),详见vidstabtransform第2步。
此滤镜生成一个文件,其中包含有关后续帧的相对平移和旋转变换信息,然后由vidstabtransform滤镜使用。
要启用此滤镜的编译,需要使用以下方式配置FFmpeg:--enable-libvidstab
.
该滤镜接受以下选项:
- result
设置用于写入变换信息的文件路径。默认值为transforms.trf.
- shakiness
设置视频的抖动和摄像机的快慢程度。接受范围为1-10的整数,值为1表示轻微抖动,值为10表示强烈抖动。默认值为5。
- accuracy
设置检测过程的准确性。必须是范围1-15的值。值为1表示低准确性,值为15表示高准确性。默认值为15。
- stepsize
设置搜索过程的步长。最低点附近的区域以1像素分辨率扫描。默认值为6。
- mincontrast
设置最小对比度。低于该值的局部测量字段将被舍弃。必须是0-1范围内的浮点值。默认值为0.3。
- tripod
设置三脚架模式的参考帧编号。
如果启用,则对过滤流中的指定帧号进行比较。其目的是在几乎静止的场景中补偿所有运动并保持相机视野绝对静止。
如果设置为0,则禁用。帧的计数从1开始。
- show
在结果帧中显示字段和变换。接受范围是0-2的整数。默认值为0,即禁用任何可视化。
- fileformat
写入变换数据文件的格式。 可接受值为
- ‘ascii’
可读的纯文本格式
- ‘binary’
二进制格式,大约比
ascii
. (默认)
小40%。
- 使用默认值:
vidstabdetect
- 分析非常抖动的电影,并将结果存放到文件中mytransforms.trf:
vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
- 在结果视频中可视化内部变换的结果:
vidstabdetect=show=1
- 使用中等抖动性分析一个视频,使用
ffmpeg
:ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
32.276 vidstabtransform
视频稳定性/防抖:第2步(共2步), 详见vidstabdetect第1步。
读取每帧的变换信息文件并应用/补偿。配合vidstabdetect滤镜使用,可以用于视频防抖。详见http://public.hronopik.de/vid.stab。重要的是还要使用unsharp滤镜,下文详解。
要启用此滤镜的编译,需要使用以下方式配置FFmpeg:--enable-libvidstab
.
32.276.1 Options
- input
设置用于读取变换的文件路径。默认值为transforms.trf.
- smoothing
设置用于对相机运动进行低通滤波的帧数(值*2 + 1)。默认值为10。
例如,值为10意味着使用21帧(过去10帧和未来10帧)来使视频运动更加平稳。值越大视频越平滑,但会限制相机加速(平移/倾斜运动)。值为0是一个特殊情况,其中模拟静态相机。
- optalgo
设置相机路径优化算法。
可接受的值为:
- ‘gauss’
基于高斯核的低通滤波器应用于相机运动(默认)
- ‘avg’
对变换进行平均计算
- maxshift
设置帧平移的最大像素数。默认值为-1,表示无限制。
- maxangle
设置帧旋转的最大角度(弧度,度数*PI/180)。默认值为-1,表示无限制。
- crop
指定如何处理由于运动补偿可能可见的边框。
可用值为:
- ‘keep’
保留上一帧的图像信息(默认)
- ‘black’
将边框填充为黑色
- invert
如果设置为1,则反转变换。默认值为0。
- relative
按上一帧的相对值处理变换(如果设置为1),按绝对值处理变换(如果设置为0)。默认值为0。
- zoom
设置百分比缩放。正值会导致缩放效果为放大,负值会导致缩小效果。默认值为0(无缩放)。
- optzoom
设置为避免边框的最佳缩放。
可接受值为:
- ‘0’
禁用
- ‘1’
确定最佳静态缩放值(只有非常强的运动会导致边框可见)(默认)
- ‘2’
确定最佳自适应缩放值(没有边框会可见),详见zoomspeed
注意,缩放处给定的值会加到此处计算出的值。
- zoomspeed
设置每帧的最大百分比分缩(在optzoom设置为2时启用)。范围为0到5,默认值为0.25。
- interpol
指定插值类型。
可用值为:
- ‘no’
无插值
- ‘linear’
仅横向线性插值
- ‘bilinear’
双向线性插值(默认)
- ‘bicubic’
双向三次插值(较慢)
- tripod
如果设置为1,则启用虚拟三脚架模式,相当于
relative=0:smoothing=0
。默认值为0。还可以使用
tripod
选项在vidstabdetect.- debug
如果设置为1,则增加日志详细等级。还会将检测到的全局运动写入临时文件global_motions.trf。默认值为0。
32.276.2 Examples
- 使用
ffmpeg
进行典型稳定性处理,使用默认值:ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
注意使用unsharp滤镜,始终推荐使用。
- 略微放大并从指定文件加载变换数据:
vidstabtransform=zoom=5:input="mytransforms.trf"
- 使视频更加平稳:
vidstabtransform=smoothing=30
32.277 vflip
垂直翻转输入视频。
例如,用以下方式垂直翻转一个视频ffmpeg
:
ffmpeg -i in.avi -vf "vflip" out.avi
32.278 vfrdet
检测是否为可变帧率视频。
此滤镜尝试检测输入是否为可变或恒定帧率。
最后将输出检测到的具有可变delta pts的帧数和具有恒定delta pts的帧数。 如果存在具有可变delta的帧,则还会显示遇到的最小值、最大值和平均delta值。
32.279 vibrance
增强或调节饱和度。
该滤镜接受以下选项:
- intensity
设置增强强度(正值)或调节强度(负值)。默认值为0。允许范围为-2到2。
- rbal
设置红色平衡。默认值为1。允许范围为-10到10。
- gbal
设置绿色平衡。默认值为1。允许范围为-10到10。
- bbal
设置蓝色平衡。默认值为1。允许范围为-10到10。
- rlum
设置红色亮度系数。
- glum
设置绿色亮度系数。
- blum
设置蓝色亮度系数。
- alternate
如果
intensity
为负并且此值设置为1,则颜色将更改, 否则,颜色将变得不那么饱和,更趋向于灰色。
32.279.1 Commands
此滤镜支持以上所有选项作为命令.
32.280 vif
获取两个输入视频之间的平均视觉信息保真度(VIF)。
此滤镜需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式,才能使此滤镜正常工作。此外,它假定两个输入具有相同数量的帧,并逐帧进行比较。
获得的平均VIF分数通过日志系统打印出来。
滤镜存储每一帧的计算VIF分数。
此滤镜还支持framesync选项。
在下面的示例中,处理的输入文件main.mpg与参考文件进行对比。ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
32.281 vignette
创建或反转自然渐晕效果。
该滤镜接受以下选项:
- angle, a
设置镜头角度表达式为弧度数。
该值在
[0,PI/2]
范围内裁剪。默认值:
"PI/5"
- x0
- y0
设置中心坐标表达式。分别是
"w/2"
和"h/2"
默认值。- mode
设置前进/后退模式。
可用模式为:
- ‘forward’
距离中心点越远,图像变得越暗。
- ‘backward’
距离中心点越远,图像变得越亮。 这可以用来反转渐晕效果,尽管没有自动检测来提取镜头angle和其他设置(尚未实现)。也可以用来创建燃烧效果。
默认值为‘forward’.
- eval
设置表达式评估模式(angle, x0, y0).
接受以下值:
- ‘init’
在滤镜初始化时仅评估表达式一次。
- ‘frame’
为每个输入帧评估表达式。这比‘init’模式慢得多,因为需要重新计算所有缩放器,但允许高级动态表达式。
默认值为‘init’.
- dither
设置抖动以减少圆形条纹效果。默认值为
1
(启用)。- aspect
设置渐晕效果的纵横比。此设置允许调整渐晕效果的形状。 将此值设置为输入的SAR会使渐晕效果呈矩形,并遵循视频的尺寸。
默认值为
1/1
.
32.281.1 Expressions
表达式可以使用以下参数:alpha, x0和y0分别。
- w
- h
输入宽度和高度
- n
输入的帧数,从0开始
- pts
过滤后的视频帧的PTS(显示时间戳),以TB单位表示,如果未定义则为NAN。
- r
输入视频的帧率,如果未知则为NAN。
- t
过滤后的视频帧的PTS(显示时间戳),以秒为单位表示,如果未定义则为NAN。
- tb
输入视频的时间基数
32.281.2 Examples
- 应用简单强烈的渐晕效果:
vignette=PI/4
- 制作闪烁的渐晕效果:
vignette='PI/4+random(1)*PI/50':eval=frame
32.282 vmafmotion
获取视频的平均VMAF运动分数。 它是VMAF的组件指标之一。
获得的平均运动分数通过日志系统打印。
该滤镜接受以下选项:
- stats_file
如果指定,滤镜将使用指定文件保存每一帧与上一帧的运动分数。 当文件名称为"-"时,数据发送到标准输出。
示例:
ffmpeg -i ref.mpg -vf vmafmotion -f null -
32.283 竖向堆叠
将输入视频竖直堆叠。
所有流必须具有相同的像素格式和相同的宽度。
请注意,使用此滤镜比使用叠加和填充滤镜创建相同输出的速度更快。
此滤镜接受以下选项:
- inputs
设置输入流的数量,默认值为2。
- shortest
如果设置为1,则当最短输入终止时强制输出终止。默认值为0。
32.284 w3fdif
对输入视频进行去隔行处理(“w3fdif”代表“Weston三区域去隔行滤镜”)。
基于Martin Weston为BBC研发描述的过程,并根据Jim Easterbrook为BBC研发编写的去隔行算法实现,Weston三区域去隔行滤镜使用BBC研发计算的滤镜系数。
此滤镜使用帧中的场优势信息来决定每对场中的哪个场要在输出中放置在前。如果结果错误,请使用setfield滤镜在w3fdif
滤镜之前。
有两套滤镜系数,分别称为“简单”和“复杂”。可以通过传递可选参数设置使用哪一套滤镜系数:
- filter
设置隔行滤镜系数。接受以下值之一:
- ‘simple’
简单滤镜系数集。
- ‘complex’
更复杂的滤镜系数集。
默认值为‘complex’.
- mode
要采用的隔行模式。它接受以下值之一:
- frame
每帧输出一个帧。
- field
每个场输出一个帧。
默认值为
field
.- parity
假设输入隔行视频的画面场奇偶性。它接受以下值之一:
- tff
假设顶场为第一个。
- bff
假设底场为第一个。
- auto
启用自动检测场奇偶性。
默认值为
auto
。 如果隔行信息未知或解码器未导出此信息,则假定顶场为第一个。- deint
指定要去隔行处理的帧。接受以下值之一:
- ‘all’
去隔行处理所有帧,
- ‘interlaced’
仅去隔行处理标记为隔行的帧。
默认值为‘all’.
32.284.1 命令
此滤镜支持与选项相同的命令。
32.285 波形
视频波形监视器。
波形监视器绘制颜色成分强度。默认情况下仅绘制亮度。波形的每一列对应于源视频中的像素列。
它接受以下选项:
- mode, m
可以是
row
,或column
。默认是column
。 在行模式下,左侧的图表示颜色成分值为0,右侧表示为255。在列模式下,上侧表示颜色成分值为0,下侧表示为255。- intensity, i
设置强度。较小的值有助于了解具有相同亮度的值如何分布在输入的行/列中。 默认值为
0.04
。允许范围是[0, 1]。- mirror, r
设置镜像模式。
0
表示未镜像,1
表示镜像。 在镜像模式下,更高的值将在row
模式中显示在左侧,在column
模式中显示在顶部。默认是1
(镜像)。- display, d
设置显示模式。 它接受以下值:
- ‘overlay’
显示的信息与
parade
中的信息相同, 只不过代表颜色成分的图直接叠加在一起。这种显示模式使得更容易发现颜色成分在重叠区域相对于彼此的差异或相似之处, 例如中性色白、灰色或黑色。
- ‘stack’
在
row
模式中,颜色成分的单独图形分别并列显示或在column
模式中上下显示。- ‘parade’
在
column
模式中,颜色成分的单独图形分别并列显示或在row
模式中上下显示。使用此显示模式可以通过比较每个波形顶部和底部图的轮廓轻松识别图像高光和阴影中的颜色偏移。 由于白色、灰色和黑色的特点是红色、绿色和蓝色的量完全相等,图像的中性色区域应该显示三个波形大致宽度/高度相等。 如果不是这样,可以通过调整三个波形的水平轻松进行修正。
默认是
stack
.- components, c
设置显示哪些颜色成分。默认值为1,这意味着仅显示亮度或红色成分(如果输入为RGB颜色空间)。如果例如设置为7, 它将显示所有3个(如果存在)可用颜色成分。
- envelope, e
- ‘none’
没有包络,这是默认值。
- ‘instant’
瞬时包络,图中显示的最小和最大值即使
step
值较小也会清楚可见。- ‘peak’
跨时间保持图中显示的最小和最大值。这样您可以在无需不断查看波形的情况下仍然发现超出范围的值。
- ‘peak+instant’
峰值和瞬时包络结合在一起。
- filter, f
- ‘lowpass’
无过滤,这是默认值。
- ‘flat’
亮度和色度组合在一起。
- ‘aflat’
与上面类似,但显示蓝色与红色色度之间的差异。
- ‘xflat’
与上面类似,但使用不同的颜色。
- ‘yflat’
与上面类似,但再次使用不同的颜色。
- ‘chroma’
仅显示色度。
- ‘color’
在波形上显示实际颜色值。
- ‘acolor’
与上面类似,但亮度显示色度值的频率。
- graticule, g
设置显示哪些标线。
- ‘none’
不显示标线。
- ‘green’
显示绿色标线以显示合法广播范围。
- ‘orange’
显示橙色标线以显示合法广播范围。
- ‘invert’
显示反转标线以显示合法广播范围。
- opacity, o
设置标线透明度。
- flags, fl
设置标线标记。
- ‘numbers’
在标线上方绘制数字。默认启用。
- ‘dots’
使用点而不是线进行绘制。
- scale, s
设置用于显示标线的缩放比例。
- ‘digital’
- ‘millivolts’
- ‘ire’
默认是数字。
- bgopacity, b
设置背景透明度。
- tint0, t0
- tint1, t1
设置输出的色调。 仅在使用低通滤波器且显示非叠加并且输入像素格式不是RGB时使用。
- fitmode, fm
设置视频输出帧的采样宽高比。 可以用来配置波形,以避免在某一方向上拉伸过多。
- ‘none’
将采样宽高比设置为1/1。
- ‘size’
将采样宽高比设置为匹配视频的输入尺寸。
默认值是‘none’.
- input
设置供滤镜选择的输入格式。 可以是‘all’,代表从所有可用格式中进行选择, 或‘first’,代表选择第一个可用格式。 默认值是‘first’.
32.286 编织,双编织
‘编织’滤镜接受基于场的视频输入,将每两个连续的场合并为单一帧,生成一个新的双高度剪辑,帧率和帧数减半。weave
takes a field-based video input and join
each two sequential fields into single frame, producing a new double
height clip with half the frame rate and half the frame count.
‘双编织’滤镜的工作方式与‘编织’相同,但没有减半帧率和帧数。doubleweave
works same as weave
but without
halving frame rate and frame count.
它接受以下选项:
- first_field
设置首个场。可用值为:
- ‘top, t’
将帧设置为顶场优先。
- ‘bottom, b’
将帧设置为底场优先。
32.286.1 示例
32.287 xbr
应用xBR高质量放大滤镜,它专为像素艺术设计。它遵循一组边缘检测规则,参见https://forums.libretro.com/t/xbr-algorithm-tutorial/123.
它接受以下选项:
- n
设置缩放维度:
2
为2xBR
,3
为3xBR
和4
为4xBR
。 默认值是3
.
32.288 xcorrelate
应用归一化交叉相关性滤镜到第一和第二视频流。
第二视频流的尺寸必须比第一视频流的尺寸小。
此滤镜接受以下选项:
- planes
设置要处理的平面。
- secondary
设置从第二输入视频流处理中要处理的次级视频帧,可以是首个或全部。默认值是全部.
‘xcorrelate’滤镜也支持xcorrelate
帧同步framesync选项。
32.289 淡入淡出
应用淡入淡出效果,从一个输入视频流到另一个输入视频流。效果将在指定持续时间内完成。
两个输入必须是恒定帧率,并具有相同的分辨率、像素格式、帧率和时间基。
此滤镜接受以下选项:
- transition
设置可用的过渡效果之一:
- ‘custom’
- ‘fade’
- ‘wipeleft’
- ‘wiperight’
- ‘wipeup’
- ‘wipedown’
- ‘slideleft’
- ‘slideright’
- ‘slideup’
- ‘slidedown’
- ‘circlecrop’
- ‘rectcrop’
- ‘distance’
- ‘fadeblack’
- ‘fadewhite’
- ‘radial’
- ‘smoothleft’
- ‘smoothright’
- ‘smoothup’
- ‘smoothdown’
- ‘circleopen’
- ‘circleclose’
- ‘vertopen’
- ‘vertclose’
- ‘horzopen’
- ‘horzclose’
- ‘dissolve’
- ‘pixelize’
- ‘diagtl’
- ‘diagtr’
- ‘diagbl’
- ‘diagbr’
- ‘hlslice’
- ‘hrslice’
- ‘vuslice’
- ‘vdslice’
- ‘hblur’
- ‘fadegrays’
- ‘wipetl’
- ‘wipetr’
- ‘wipebl’
- ‘wipebr’
- ‘squeezeh’
- ‘squeezev’
- ‘zoomin’
- ‘fadefast’
- ‘fadeslow’
- ‘hlwind’
- ‘hrwind’
- ‘vuwind’
- ‘vdwind’
- ‘coverleft’
- ‘coverright’
- ‘coverup’
- ‘coverdown’
- ‘revealleft’
- ‘revealright’
- ‘revealup’
- ‘revealdown’
默认过渡效果是淡化。
- duration
设置淡入淡出的持续时间,以秒为单位。 范围是0到60秒。 默认持续时间为1秒。
- offset
设置淡入淡出的开始时间,相对于第一个输入流,以秒为单位。 默认偏移量为0。
- expr
为定制的过渡效果设置表达式。
表达式可以使用以下变量和函数:
- X
- Y
当前样本的坐标。
- W
- H
图像的宽度和高度。
- P
过渡效果的进度。
- PLANE
当前处理的平面。
- A
返回当前位置和平面的第一个输入值。
- B
返回当前位置和平面的第二个输入值。
- a0(x, y)
- a1(x, y)
- a2(x, y)
- a3(x, y)
返回像素值(位置x,y)的第 一/第二/第三/第四个成分的第一个输入。
- b0(x, y)
- b1(x, y)
- b2(x, y)
- b3(x, y)
返回像素值(位置x,y)的第 一/第二/第三/第四个成分的第二个输入。
32.289.1 示例
- 从一个视频输入到另一个视频输入进行交叉淡化,使用淡化过渡效果,持续时间为2秒,起始时间偏移为5秒:
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
32.290 xmedian
从多个输入视频中挑选中值像素。
此滤镜接受以下选项:
- inputs
设置输入数量。 默认值为3。允许范围是从3到255。 如果输入数量为偶数,则结果将是两个中值之间的平均值。
- planes
设置要过滤的平面。默认值为
15
,表示所有平面均处理。- percentile
设置中值百分位值。默认值为
0.5
。 默认值为0.5
总是选择中值值,而0
选择最小值,1
选择最大值。
32.290.1 命令
此滤镜支持以上所有选项作为命令,不包括选项inputs
.
32.291 xpsnr
获取两输入视频之间的平均(跨所有输入帧)和最小(跨所有颜色平面平均值)的扩展感知加权峰值信噪比(XPSNR)。
XPSNR是一种低复杂度、心理视觉导向的失真测量算法,用于评估两个视频流或图像之间的差异。 这对于客观量化视频和图像编解码器造成的失真非常有用,是正式主观测试的替代方案。 对数XPSNR输出值范围与传统的PSNR评估值相似,但更反映视觉编码质量的人类印象。 关于XPSNR测量的详细信息,可以在以下公开可用的文章中找到:
- C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, 和 T. Wiegand, "XPSNR: 高分辨率视频质量评估的扩展感知加权峰值信噪比",ICIEEEProc Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020.www.ecodis.de/xpsnr.htm
- C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, 和 T. Wiegand, "关于扩展感知加权峰值信噪比(XPSNR)的视频压缩研究",具有不同的分辨率和比特深度,ITU 期刊: ICT Discoveries, 第3卷,第1期,第65 - 72页,2020年5月。http://handle.itu.int/11.1002/pub/8153d78b-en
当发布使用该FFmpeg过滤器获得的XPSNR评估结果时,强烈建议参考上述论文作为文档说明。该过滤器需要两个输入视频。第一个输入被视为通常未失真的参考源,并不经任何改变地传递到输出,而第二个输入为(失真)测试信号。除了位深度外,这两个视频输入必须具有相同的像素格式。此外,为了获得最佳性能,比较的两个输入视频应该采用YCbCr颜色格式。
上述提到的整体XPSNR值通过日志系统打印出来。如果输入有多个颜色平面,我们建议报告最低的XPSNR平均值。
以下参数与psnr过滤器类似,可以接受:
- stats_file, f
如果指定了文件名,过滤器将使用指定的文件名保存每个独立帧和色彩平面的XPSNR值。当文件名为“-”时,该数据将发送到标准输出。
此过滤器还支持framesync选项。
32.291.1 示例
- 对两个1080p高清视频ref_source.yuv和test_video.yuv进行XPSNR分析,均为4:2:0颜色格式,位深度为8,每秒24帧,生成日志文件“xpsnr.log”:
ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
- 对两个2160p超高清视频ref_source.yuv(位深度为8)和test_video.yuv(位深度为10)进行XPSNR分析,均为4:2:0颜色格式,每秒60帧,不生成日志文件:
ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate 60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
32.292 xstack
将视频输入堆叠到自定义布局中。
所有流必须具有相同的像素格式。
过滤器接受以下选项:
- inputs
设置输入流数量。默认值为2。
- layout
指定输入布局。该选项要求用户显式设置所需的布局配置。这将设置输出中每个视频输入的位置。每个输入由‘|’分隔。第一个数字代表列,第二个数字代表行。数字从0开始,由‘_’分隔。您可以选择使用wX和hX,其中X表示从视频输入中取宽度或高度。当用‘+’分隔时,可以使用多个值。在这种情况下,值将进行求和。
注意,如果输入的大小不同,可能会出现间隙,因为不会填满整个输出视频帧。同样,如果其位置不足以容纳邻近视频的完整帧,则视频可能会相互重叠。
对于两个输入,默认布局为
0_0|w0_0
(与grid=2x1
等效)。在所有其他情况下,用户必须设置布局或网格。只能同时指定grid
或layout
之一。如果同时指定两者,则会导致错误。- grid
指定输入的固定大小网格。此选项用于创建输入流的固定大小网格。以形式设置网格大小
COLUMNSxROWS
。必须有ROWS * COLUMNS
输入流,它们将被排列为具有ROWS
行和COLUMNS
列的网格。在使用此选项时,行内的每个输入流必须具有相同的高度,并且所有行必须具有相同的宽度。如果设置
grid
,则inputs
选项将被忽略,并且隐式设置为ROWS * COLUMNS
.对于两个输入,默认网格为
2x1
(与layout=0_0|w0_0
等效)。在所有其他情况下,用户必须设置布局或网格。只能同时指定grid
或layout
之一。如果同时指定两者,则会导致错误。- shortest
如果设置为1,则在最短输入终止时强制输出终止。默认值为0。
- fill
如果设置为有效颜色,所有未使用的像素将被填充为该颜色。默认填充设置为无,因此禁用该功能。
32.292.1 示例
- 将4个输入显示为2x2网格。
布局:
input1(0, 0) | input3(w0, 0) input2(0, h0) | input4(w0, h0)
xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
注意,如果输入大小不同,可能会出现间隙或重叠。
- 将4个输入显示为1x4网格。
布局:
input1(0, 0) input2(0, h0) input3(0, h0+h1) input4(0, h0+h1+h2)
xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
注意,如果输入宽度不同,将会出现未使用的空间。
- 将9个输入显示为3x3网格。
布局:
input1(0, 0) | input4(w0, 0) | input7(w0+w3, 0) input2(0, h0) | input5(w0, h0) | input8(w0+w3, h0) input3(0, h0+h1) | input6(w0, h0+h1) | input9(w0+w3, h0+h1)
xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
注意,如果输入大小不同,可能会出现间隙或重叠。
- 将16个输入显示为4x4网格。
布局:
input1(0, 0) | input5(w0, 0) | input9 (w0+w4, 0) | input13(w0+w4+w8, 0) input2(0, h0) | input6(w0, h0) | input10(w0+w4, h0) | input14(w0+w4+w8, h0) input3(0, h0+h1) | input7(w0, h0+h1) | input11(w0+w4, h0+h1) | input15(w0+w4+w8, h0+h1) input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0| w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
注意,如果输入大小不同,可能会出现间隙或重叠。
32.293 yadif
对输入视频进行去隔行处理("yadif"指的是"另外一种去隔行过滤器")。
它可以接受以下参数:
- mode
采用的去隔行模式。可以接受以下值之一:
- 0, send_frame
每帧输出一帧。
- 1, send_field
每个场输出一帧。
- 2, send_frame_nospatial
与
send_frame
相同,但跳过空间隔行检查。- 3, send_field_nospatial
与
send_field
相同,但跳过空间隔行检查。
默认值为
send_frame
.- parity
为输入隔行视频假定的图像场优先级。可以接受以下值之一:
- 0, tff
假定上场为第一场。
- 1, bff
假定下场为第一场。
- -1, auto
启用自动检测场优先级。
默认值为
auto
。如果隔行状态未知或解码器不导出此信息,则默认假定上场优先。- deint
指定要去隔行的帧。接受以下值之一:
- 0, all
去隔行处理所有帧。
- 1, interlaced
仅去隔行处理标记为隔行的帧。
默认值为
all
.
32.294 yadif_cuda
使用yadif算法对输入视频去隔行处理,但通过CUDA来实现,因此可以作为与nvdec和/或nvenc的GPU加速管道的一部分工作。
它可以接受以下参数:
- mode
采用的去隔行模式。可以接受以下值之一:
- 0, send_frame
每帧输出一帧。
- 1, send_field
每个场输出一帧。
- 2, send_frame_nospatial
与
send_frame
相同,但跳过空间隔行检查。- 3, send_field_nospatial
与
send_field
相同,但跳过空间隔行检查。
默认值为
send_frame
.- parity
为输入隔行视频假定的图像场优先级。可以接受以下值之一:
- 0, tff
假定上场为第一场。
- 1, bff
假定下场为第一场。
- -1, auto
启用自动检测场优先级。
默认值为
auto
。如果隔行状态未知或解码器不导出此信息,则默认假定上场优先。- deint
指定要去隔行的帧。接受以下值之一:
- 0, all
去隔行处理所有帧。
- 1, interlaced
仅去隔行处理标记为隔行的帧。
默认值为
all
.
32.295 yaepblur
应用模糊滤镜,同时保留边缘("yaepblur"指的是"另外一种边缘保留模糊滤镜")。算法描述如下: "J. S. Lee,使用局部统计的数字图像增强与噪声过滤,IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2,1980."
它接受以下参数:
- radius, r
设置窗口半径。默认值为3。
- planes, p
设置过滤哪些平面。默认仅过滤第一平面。
- sigma, s
设置模糊强度。默认值为128。
32.295.1 命令
此过滤器支持与选项相同的命令。
32.296 zoompan
应用缩放与平移效果。
此过滤器接受以下选项:
- zoom, z
设置缩放表达式。范围为1-10。默认值为1。
- x
- y
设置x和y表达式。默认值为0。
- d
以帧数设置持续时间表达式。此选项设置效果在单个输入图像上持续的帧数。默认值为90。
- s
设置输出图像大小,默认值为 'hd720'。
- fps
设置输出帧率,默认值为 '25'。
每个表达式可以包含以下常量:
- in_w, iw
输入宽度。
- in_h, ih
输入高度。
- out_w, ow
输出宽度。
- out_h, oh
输出高度。
- in
输入帧计数。
- on
输出帧计数。
- in_time, it
以秒为单位表达的输入时间戳。如果输入时间戳未知,则为NAN。
- out_time, time, ot
以秒为单位表达的输出时间戳。
- x
- y
对当前输入帧计算的最后一个 'x' 和 'y' 位置。
- px
- py
上一输入帧的最后一个输出帧的 'x' 和 'y' 或0(对于第一输入帧)。
- zoom
对当前输入帧计算的最后一个缩放。
- pzoom
上一输入帧最后一个输出帧的最后一个计算缩放。
- duration
当前输入帧的输出帧数。从每个输入帧的 'd' 表达式计算。
- pduration
为上一输入帧创建的输出帧数量。
- a
有理数:输入宽度 / 输入高度。
- sar
采样纵横比。
- dar
显示纵横比。
32.296.1 示例
- 放大至1.5倍,同时平移到图片中心附近某个位置:
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
- 放大至1.5倍,同时始终平移到图片中心:
zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
- 与上述相同,但不暂停:
zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
- 仅对输入视频的第一秒放大至图片中央2倍:
zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
32.297 zscale
使用z.lib库缩放(调整大小)输入视频:https://github.com/sekrit-twc/zimg。要启用此过滤器的编译,需要将FFmpeg配置为--enable-libzimg
.
zscale过滤器强制输出显示纵横比与输入一致,通过更改输出采样纵横比。
如果输入图像格式与下一个过滤器请求的格式不同,zscale过滤器会将输入转换为请求的格式。
32.297.1 选项
过滤器接受以下选项。
- width, w
- height, h
设置输出视频尺寸表达式。默认值为输入尺寸。
如果宽度或w值为0,则使用输入宽度作为输出。如果高度或h值为0,则使用输入高度作为输出。
如果仅有一个值是-n且n >= 1,zscale过滤器将使用维持输入图像纵横比的值,从其他指定维度计算。之后,它将确保计算的维度可以被n整除,并必要时调整该值。
如果两个值都是-n且n >= 1,行为将与两个值设置为0时相同,如上所述。
以下是可用于尺寸表达式的常量列表。
- size, s
设置视频大小。关于此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分。.
- dither, d
设置抖动类型。
可能的值为:
- 无
- 有序
- 随机
- 误差扩散
默认值为无。
- filter, f
设置调整大小过滤器的类型。
可能的值为:
- 点
- 双线性
- 三次插值
- 样条16
- 样条36
- Lanczos
默认值为双线性。
- range, r
设置颜色范围。
可能的值为:
- 输入
- 有限
- 完全
默认值与输入相同。
- primaries, p
设置颜色原点。
可能的值为:
- 输入
- 709
- 未指定
- 170m
- 240m
- 2020
默认值与输入相同。
- transfer, t
设置传输特性。
可能的值为:
- 输入
- 709
- 未指定
- 601
- 线性
- 2020_10
- 2020_12
- smpte2084
- iec61966-2-1
- arib-std-b67
默认值与输入相同。
- matrix, m
设置色彩空间矩阵。
可能的值为:
- 输入
- 709
- 未指定
- 470bg
- 170m
- 2020_ncl
- 2020_cl
默认值与输入相同。
- rangein, rin
设置输入颜色范围。
可能的值为:
- 输入
- 有限
- 完全
默认值与输入相同。
- primariesin, pin
设置输入颜色原点。
可能的值为:
- 输入
- 709
- 未指定
- 170m
- 240m
- 2020
默认值与输入相同。
- transferin, tin
设置输入传输特性。
可能的值为:
- 输入
- 709
- 未指定
- 601
- 线性
- 2020_10
- 2020_12
默认值与输入相同。
- matrixin, min
设置输入色彩空间矩阵。
可能的值为:
- 输入
- 709
- 未指定
- 470bg
- 170m
- 2020_ncl
- 2020_cl
- chromal, c
设置输出颜色位置。
可能的值是:
- 输入
- 左
- 中心
- 左上
- 顶部
- 左下
- 底部
- chromalin, cin
设置输入颜色位置。
可能的值是:
- 输入
- 左
- 中心
- 左上
- 顶部
- 左下
- 底部
- npl
设置标称峰值亮度。
- param_a
缩放过滤器的参数A。对于双三次为“b”参数,对于Lanczos为滤波器抽头数量。
- param_b
缩放过滤器的参数B。对于双三次为“c”参数。
这些值w和h选项是包含以下常量的表达式:
- in_w
- in_h
输入的宽度和高度
- iw
- ih
这些与in_w和in_h.
- out_w
- out_h
输出(缩放后)的宽度和高度
- ow
- oh
这些与out_w和out_h
- a
与iw / ih
- sar
输入样本纵横比
- dar
输入显示纵横比。从计算得出
(iw / ih) * sar
.- hsub
- vsub
输入颜色水平和垂直抽样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。
- ohsub
- ovsub
输出颜色水平和垂直抽样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。
32.297.2 命令
此过滤器支持以下命令:
- width, w
- height, h
设置输出视频维度表达式。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
33 OpenCL视频过滤器
以下是当前可用的OpenCL视频过滤器的描述。
若要启用这些过滤器的编译,您需要通过以下方式配置FFmpeg--enable-opencl
.
运行OpenCL过滤器需要您初始化硬件设备并将该设备传递给任何过滤图中的所有过滤器。
- -init_hw_device opencl[=名称][:设备[,键=值...]]
初始化类型为opencl的新的硬件设备,称为名称, 使用给定的设备参数。
- -filter_hw_device 名称
将名为名称的硬件设备传递给任何过滤图中的所有过滤器。
有关更详细信息,请参阅https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options
- 选择第二个平台上的第一个设备,并使用默认参数运行avgblur_opencl滤波器的示例。
-init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
由于OpenCL过滤器无法访问普通内存中的帧数据,因此所有帧数据都需要上传(hwupload)到连接到合适设备的硬件表面,然后下载(hwdownload)回普通内存。注意hwupload将上传到与软件帧相同布局的表面,因此可能需要在之前立即添加一个format过滤器以使输入进入正确的格式,并且hwdownload不支持所有格式输出——可能需要在图中随后插入一个额外的format过滤器以使输出处于支持的格式中。
33.1 avgblur_opencl
应用平均模糊过滤器。
过滤器接受以下选项:
- sizeX
设置水平半径大小。 范围为
[1, 1024]
默认值为1
.- planes
设置要过滤的平面。默认值为
0xf
,表示对所有平面进行处理。- sizeY
设置垂直半径大小。范围为
[1, 1024]
默认值为0
。如果为零,sizeX
值将被使用。
33.1.1 示例
- 应用平均模糊过滤器,水平和垂直尺寸均为3,将输出的每个像素设置为输入中以该像素为中心的7x7区域的平均值。对于图像边缘上的像素,该区域不会超出图像边界,因此不使用超范围的坐标进行计算。
-i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
33.2 boxblur_opencl
对输入视频应用箱模糊算法。
它接受以下参数:
- luma_radius, lr
- luma_power, lp
- chroma_radius, cr
- chroma_power, cp
- alpha_radius, ar
- alpha_power, ap
以下是接受选项的说明。
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
设置用于模糊对应输入平面的框半径的表达式。
半径值必须是非负数,且不得大于表达式的值
min(w,h)/2
对应于亮度和透明度平面,并且对于色度平面的值不得超过min(cw,ch)/2
表达式的值。默认值为luma_radius“2”。如果未指定,则chroma_radius和alpha_radius默认值为为对应于设置的值。luma_radius.
表达式可以包含以下常量:
- w
- h
以像素为单位的输入宽度和高度。
- cw
- ch
以像素为单位的输入色度图像宽度和高度。
- hsub
- vsub
水平和垂直色度抽样值。例如,对于像素格式“yuv422p”,hsub为2,vsub为1。
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
指定箱模糊过滤器应用于对应平面的次数。
的默认值为2。如果未指定,则luma_power is 2. If not specified, chroma_power和alpha_power默认值为为对应于设置的值。luma_power.
值为0将关闭该效果。
33.2.1 示例
应用箱模糊过滤器,将输出的每个像素设置为每个平面对应的箱半径的平均值luma_radius, chroma_radius, alpha_radius。过滤器将对对应的平面应用luma_power, chroma_power, alpha_power次。对于图像边缘上的像素,箱半径不会超出图像边界,因此不使用超范围的坐标进行计算。
- 应用箱模糊过滤器,亮度、色度和透明度半径设置为2,亮度、色度和透明度功率设置为3。过滤器将运行3次,每次的箱半径为2,应用于图像的所有平面。
-i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
- 应用箱模糊过滤器,亮度半径设置为2,亮度功率设置为1,色度半径设置为4,色度功率设置为5,透明度半径设置为3,透明度功率设置为7。
对于亮度平面,将运行一次2x2箱半径。
对于色度平面,将运行5次4x4箱半径。
对于透明度平面,将运行7次3x3箱半径。
-i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
33.3 colorkey_opencl
RGB颜色空间色键操作。
过滤器接受以下选项:
- color
将被替换为透明的颜色。
- similarity
与键颜色的相似度百分比。
0.01仅匹配确切键颜色,而1.0匹配所有颜色。
- blend
混合百分比。
0.0使像素完全透明或完全不透明。
更高的值会导致半透明像素,像素颜色与键颜色越相似,透明度越高。
33.3.1 示例
- 将输入中每个接近绿色的像素设置为透明,并稍微进行混合:
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
33.4 convolution_opencl
应用3x3,5x5,7x7矩阵的卷积。
过滤器接受以下选项:
- 0m
- 1m
- 2m
- 3m
设置每个平面的矩阵。 矩阵是9, 25 或 49 个有符号数字的序列。 每个平面的默认值是
0 0 0 0 1 0 0 0 0
.- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
设置每个平面的计算值的乘数。 如果未设置或为0,将使用所有矩阵元素的和。 选项值必须是大于或等于的浮点数
0.0
。默认值是1.0
.- 0bias
- 1bias
- 2bias
- 3bias
设置每个平面的偏移值。此值将加到乘积结果上。 对于使整个图像更亮或更暗很有用。 选项值必须是大于或等于的浮点数
0.0
。默认值是0.0
.
33.4.1 示例
- 应用锐化:
-i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
- 应用模糊:
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
- 应用边缘增强:
-i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
- 应用边缘检测:
-i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
- 应用包含对角线的拉普拉斯边缘检测:
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
- 应用浮雕效果:
-i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
33.5 erosion_opencl
对视频应用侵蚀效果。
此过滤器将像素替换为局部(3x3)最小值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
每个平面的最大改变限制。范围是
[0, 65535]
默认值是65535
。 如果0
,平面将保持不变。- coordinates
指定参考像素的标志。 范围是
[0, 255]
默认值是255
,即使用所有八个像素。标志对以为中心的局部3x3坐标区域
x
:1 2 3
4 x 5
6 7 8
33.5.1 示例
- 应用侵蚀过滤器,threshold0设置为30,threshold1设置为40,threshold2设置为50,坐标设置为231,将输出的每个像素设置为输入中以该像素为中心的3x3区域像素(1,2,3,6,7,8)的局部最小值。 如果输入像素和局部最小值之间的差异超过对应平面的阈值,输出像素将设置为输入像素减去对应平面的阈值。
-i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
33.6 deshake_opencl
基于特征点的视频稳定过滤器。
过滤器接受以下选项:
- tripod
通过防止原始帧的任何相机移动来模拟三脚架。默认值是
0
.- debug
是否显示额外的调试信息,无论是在处理后的输出中还是在控制台中。
注意,要查看控制台调试输出,还需要传递
-v verbose
给ffmpeg。在输出视频中查看点匹配仅支持RGB输入。
默认值是
0
.- adaptive_crop
是否在边界处进行一点裁剪以减少镜像像素的数量。
默认值是
1
.- refine_features
是否在亚像素级别上精细化特征点。
可以关闭此选项以稍微提高性能,但会降低精度。
默认值是
1
.- smooth_strength
从中应用平滑路径强度
0.0
到1.0
.1.0
是最大平滑强度,而小于该值的值则减少平滑强度。0.0
导致过滤器基于每帧自适应选择平滑强度。默认值是
0.0
.- smooth_window_multiplier
控制平滑窗口的大小(缓冲以确定运动信息的帧数)。
平滑窗口的大小通过将视频帧率乘以此数字来确定。
可接受的范围为
0.1
到10.0
.更大的值增加了可用于确定如何平滑相机路径的运动数据,使其可能改善平滑性,但也增加了延迟和内存使用。
默认值是
2.0
.
33.6.1 示例
- 以固定的中等平滑强度稳定视频:
-i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
- 使用调试(无论是在控制台还是渲染视频中)稳定视频:
-i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
33.7 dilation_opencl
对视频应用膨胀效果。
此过滤器将像素替换为局部(3x3)最大值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
每个平面的最大改变限制。范围是
[0, 65535]
默认值是65535
。 如果0
,平面将保持不变。- coordinates
指定参考像素的标志。 范围是
[0, 255]
默认值是255
,即使用所有八个像素。标志对以为中心的局部3x3坐标区域
x
:1 2 3
4 x 5
6 7 8
33.7.1 示例
- 应用膨胀过滤器,threshold0设置为30,threshold1设置为40,threshold2设置为50,坐标设置为231,将输出的每个像素设置为输入中以该像素为中心的3x3区域像素(1,2,3,6,7,8)的局部最大值。如果输入像素和局部最大值之间的差异超过对应平面的阈值,输出像素将设置为输入像素加上对应平面的阈值。
-i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
33.8 nlmeans_opencl
通过OpenCL实现的非局部均值去噪过滤器,此过滤器接受与nlmeans.
33.9 overlay_opencl
将一个视频覆盖在另一个视频之上。
它接收两个输入并生成一个输出。第一个输入是“主体”视频,第二个输入覆盖在第一输入之上。 此过滤器要求所有输入具有相同的内存布局。因此,可能需要进行格式转换。
过滤器接受以下选项:
- x
设置叠加视频在主视频上的 x 坐标。 默认值是
0
.- y
设置叠加视频在主视频上的 y 坐标。 默认值是
0
.
33.9.1 示例
- 将图片 LOGO 覆盖在输入视频的左上角。两个输入都是 yuv420p 格式。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
- 输入的颜色通道具有相同的内存布局,但覆盖层有额外的 Alpha 平面,例如 INPUT 是 yuv420p,而 LOGO 是 yuva420p。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
33.10 pad_opencl
为输入图像添加填充,并将原始输入放置在指定的x, y坐标。
它接受以下选项:
- width, w
- height, h
指定添加填充后的输出图像大小的表达式。如果width或height的值为 0,则输出使用相应的输入大小。
width表达式可以引用 expression can reference the value set by the height表达式设置的值,反之亦然。
默认值为width和height为 0。
- x
- y
指定在填充区域内放置输入图像的偏移量,以相对于输出图像顶部/左侧边框进行计算。
x表达式可以引用 expression can reference the value set by the y表达式设置的值,反之亦然。
默认值为x和y为 0。
如果x或y的值为负数,它们会被更改为使输入图像居中于填充区域。
- color
指定填充区域的颜色。关于该选项的语法,请检查(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中.
- aspect
与其填充到分辨率,不如按比例填充。
对于width, height, x和y选项,它们的值是包含以下常量的表达式:
- in_w
- in_h
输入视频的宽度和高度。
- iw
- ih
这些与in_w和in_h.
- out_w
- out_h
输出宽度和高度(填充区域大小),即由width和height表达式指定的值。
- ow
- oh
这些与out_w和out_h.
- x
- y
x 和 y 偏移量,由x和y表达式指定,或者是 NAN(如果尚未指定)。
- a
与iw / ih
- sar
输入采样宽高比
- dar
输入显示宽高比,与 (iw / ih) * sar
33.11 prewitt_opencl
对输入视频流应用 Prewitt 算子(https://en.wikipedia.org/wiki/Prewitt_operator)。
此滤镜接受以下选项:
- planes
设置要过滤的平面。默认值是
0xf
,表示处理所有平面。- scale
设置与过滤结果相乘的值。 取值范围为
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的值。 取值范围为
[-65535, 65535]
,默认值为0.0
.
33.11.1 示例
- 应用 Prewitt 算子,比例设置为 2,偏移量设置为 10。
-i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
33.12 program_opencl
使用 OpenCL 程序过滤视频。
- source
OpenCL 程序源文件。
- kernel
程序中的内核名称。
- inputs
滤镜的输入数量。默认为 1。
- size, s
输出帧的尺寸。默认为与第一个输入相同。
该program_opencl
滤镜还支持framesync选项。
程序源文件必须包含带有提供名称的内核函数,该函数将对每个输出平面运行一次。每个平面上的运行都将在一个单独的二维全局 NDRange 中排队,每个要生成的像素都有一个工作项。每个工作项的全局 ID 偏移因此是目标图像中像素的坐标。
内核函数需要提供以下参数:
- 目标图像,__write_only image2d_t.
此图像将成为输出;内核应写入所有内容。
- 帧索引,unsigned int.
这是从零开始的计数器,每帧递增 1。
- 源图像,__read_only image2d_t.
这些是每个输入的最新图像。内核可以从中读取以生成输出,但不能写入它们。
示例程序:
- 将输入复制到输出(输出必须与输入大小相同)。
__kernel void copy(__write_only image2d_t destination, unsigned int index, __read_only image2d_t source) { const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE; int2 location = (int2)(get_global_id(0), get_global_id(1)); float4 value = read_imagef(source, sampler, location); write_imagef(destination, location, value); }
- 应用一个简单的转换,通过增加索引计数器来旋转输入。像素值通过采样器线性插值,输出不需要与输入具有相同的尺寸。
__kernel void rotate_image(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float angle = (float)index / 100.0f; float2 dst_dim = convert_float2(get_image_dim(dst)); float2 src_dim = convert_float2(get_image_dim(src)); float2 dst_cen = dst_dim / 2.0f; float2 src_cen = src_dim / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); float2 dst_pos = convert_float2(dst_loc) - dst_cen; float2 src_pos = { cos(angle) * dst_pos.x - sin(angle) * dst_pos.y, sin(angle) * dst_pos.x + cos(angle) * dst_pos.y }; src_pos = src_pos * src_dim / dst_dim; float2 src_loc = src_pos + src_cen; if (src_loc.x < 0.0f || src_loc.y < 0.0f || src_loc.x > src_dim.x || src_loc.y > src_dim.y) write_imagef(dst, dst_loc, 0.5f); else write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc)); }
- 将两个输入混合,使用的每个输入的量随着索引计数器而变化。
__kernel void blend_images(__write_only image2d_t dst, unsigned int index, __read_only image2d_t src1, __read_only image2d_t src2) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f; int2 dst_loc = (int2)(get_global_id(0), get_global_id(1)); int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst); int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst); float4 val1 = read_imagef(src1, sampler, src1_loc); float4 val2 = read_imagef(src2, sampler, src2_loc); write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend)); }
33.13 remap_opencl
使用第二个:Xmap 和第三个:Ymap 输入视频流重新映射像素。
目标像素在位置 (X, Y) 的值将从源位置 (x, y) 提取,其中 x = Xmap(X, Y),y = Ymap(X, Y)。如果映射值超出范围,则目标像素使用零值。
Xmap 和 Ymap 输入视频流的尺寸必须相同。输出视频流将具有与 Xmap/Ymap 视频流相同的尺寸。 Xmap 和 Ymap 输入视频流为 32 位浮点像素格式,单通道。
- interp
指定用于像素重新映射的插值方法。 允许的值为
near
和linear
。 默认值为linear
.- fill
指定未映射像素的颜色。关于此选项的语法,请检查(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中。默认颜色为
black
.
33.14 roberts_opencl
对输入视频流应用 Roberts 交叉算子(https://en.wikipedia.org/wiki/Roberts_cross)。
此滤镜接受以下选项:
- planes
设置要过滤的平面。默认值是
0xf
,表示处理所有平面。- scale
设置与过滤结果相乘的值。 取值范围为
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的值。 取值范围为
[-65535, 65535]
,默认值为0.0
.
33.14.1 示例
- 应用 Roberts 交叉算子,比例设置为 2,偏移量设置为 10。
-i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
33.15 sobel_opencl
对输入视频流应用 Sobel 算子(https://en.wikipedia.org/wiki/Sobel_operator)。
此滤镜接受以下选项:
- planes
设置要过滤的平面。默认值是
0xf
,表示处理所有平面。- scale
设置与过滤结果相乘的值。 取值范围为
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的值。 取值范围为
[-65535, 65535]
,默认值为0.0
.
33.15.1 示例
- 应用 Sobel 算子,比例设置为 2,偏移量设置为 10。
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
33.16 tonemap_opencl
通过色调映射进行 HDR(PQ/HLG)到 SDR 的转换。
它接受以下参数:
- tonemap
指定要使用的色调映射算子。与tonemap.
- param
中色调映射选项相同。tonemap.
- desat
针对超出此亮度级别的高光应用去饱和处理。参数越高,将保留越多的颜色信息。此设置可以防止超高亮高光的颜色失真,从而(平滑地)转变为白色。这使得图像更加自然,但代价是降低了超出范围颜色的信息。
默认值为 0.5,此算法与目前的 CPU 版本 tonemap 略有不同。设置为 0.0 将禁用此选项。
- threshold
色调映射算法参数会针对每个场景进行优化。使用一个阈值来检测场景是否发生变化。如果当前帧平均亮度与当前运行平均值之间的距离超过阈值,则会重新计算场景平均和峰值亮度。 默认值为 0.2。
- format
指定输出像素格式。
当前支持的格式有:
- p010
- nv12
- range, r
设置输出颜色范围。
可能的值是:
- tv/mpeg
- pc/jpeg
默认与输入相同。
- primaries, p
设置输出颜色主色调。
可能的值是:
- bt709
- bt2020
默认与输入相同。
- transfer, t
设置输出传输特性。
可能的值是:
- bt709
- bt2020
默认值为 bt709。
- matrix, m
设置输出颜色空间矩阵。
可能的值是:
- bt709
- bt2020
默认与输入相同。
33.16.1 示例
- 使用线性算子将 HDR(PQ/HLG) 视频转换为 bt2020 传输特性 p010 格式。
-i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
33.17 unsharp_opencl
锐化或模糊输入视频。
它接受以下参数:
- luma_msize_x, lx
设置亮度矩阵的水平大小。 取值范围是
[1, 23]
,默认值是5
.- luma_msize_y, ly
设置亮度矩阵的垂直大小。 取值范围是
[1, 23]
,默认值是5
.- luma_amount, la
设置亮度效果的强度。 取值范围是
[-10, 10]
,默认值是1.0
.负值会模糊输入视频,正值会锐化视频,值为零则禁用效果。
- chroma_msize_x, cx
设置色度矩阵的水平大小。 取值范围是
[1, 23]
,默认值是5
.- chroma_msize_y, cy
设置色度矩阵的垂直大小。 取值范围是
[1, 23]
,默认值是5
.- chroma_amount, ca
设置色度效果的强度。 取值范围是
[-10, 10]
,默认值是0.0
.负值会模糊输入视频,正值会锐化视频,值为零则禁用效果。
所有参数都是可选的,默认值为字符串 '5:5:1.0:5:5:0.0' 的等效值。
33.17.1 示例
- 应用强烈的亮度锐化效果:
-i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
- 同时对亮度和色度进行强烈的模糊处理:
-i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
33.18 xfade_opencl
通过使用 OpenCL 跨帧融合两个视频,实现自定义过渡效果。
它接受以下选项:
- transition
设置一个可能的过渡效果。
- custom
选择自定义过渡效果,实际的过渡描述会从源和内核选项中获取。
- fade
- wipeleft
- wiperight
- wipeup
- wipedown
- slideleft
- slideright
- slideup
- slidedown
-
默认过渡效果是 fade。
- source
自定义过渡的 OpenCL 程序源文件。
- kernel
设置要从程序源文件中使用的内核名称。
- duration
设置视频过渡的持续时间。
- offset
相对于第一个视频设置过渡开始的时间。
程序源文件必须包含带有提供名称的内核函数,该函数将对每个输出平面运行一次。每个平面上的运行都将在一个单独的二维全局 NDRange 中排队,每个要生成的像素都有一个工作项。每个工作项的全局 ID 偏移因此是目标图像中像素的坐标。
内核函数需要提供以下参数:
- 目标图像,__write_only image2d_t.
此图像将成为输出;内核应写入所有内容。
- 第一个源图像,__read_only image2d_t。
第二个源图像,__read_only image2d_t.
这些是每个输入的最新图像。内核可以从中读取以生成输出,但不能写入它们。
- 过渡进度值,float。此值总是在 0 和 1 之间(含)。
示例程序:
- 应用网点帷幕过渡效果:
__kernel void blend_images(__write_only image2d_t dst, __read_only image2d_t src1, __read_only image2d_t src2, float progress) { const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | CLK_FILTER_LINEAR); int2 p = (int2)(get_global_id(0), get_global_id(1)); float2 rp = (float2)(get_global_id(0), get_global_id(1)); float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y); rp = rp / dim; float2 dots = (float2)(20.0, 20.0); float2 center = (float2)(0,0); float2 unused; float4 val1 = read_imagef(src1, sampler, p); float4 val2 = read_imagef(src2, sampler, p); bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center)); write_imagef(dst, p, next ? val1 : val2); }
34 VAAPI 视频滤镜
VAAPI 视频滤镜通常与 VAAPI 解码器和 VAAPI 编码器一起使用。以下是 VAAPI 视频滤镜的说明。
要启用这些滤镜的编译,您需要将 FFmpeg 配置为--enable-vaapi
.
要使用 vaapi 滤镜,您需要正确设置 vaapi 设备。有关更多信息,请阅读https://trac.ffmpeg.org/wiki/Hardware/VAAPI
34.1 overlay_vaapi
将一个视频覆盖在另一个视频的顶部。
它需要两个输入,并有一个输出。第一个输入是“主”视频,第二个输入被叠加。
该滤镜接受以下选项:
- x
- y
设置覆盖视频在主视频上的 x 和 y 坐标表达式。
默认值是 "0"。
- w
- h
设置表达式来指定主视频上覆盖视频的宽度和高度。
默认值是'w'使用'overlay_iw',而'h'使用'overlay_ih*w/overlay_iw'。
表达式可以包含以下参数:
- main_w, W
- main_h, H
主输入视频的宽度和高度。
- overlay_iw
- overlay_ih
覆盖输入视频的宽度和高度。
- overlay_w, w
- overlay_h, h
覆盖输出视频的宽度和高度。
- overlay_x, x
- overlay_y, y
覆盖层在主视频中的位置。
- alpha
设置覆盖视频的透明度。允许范围是0.0到1.0。 值越大,透明度越低。 默认值是
1.0
.- eof_action
参见framesync.
- shortest
参见framesync.
- repeatlast
参见framesync.
此滤镜还支持framesync选项。
34.1.1 示例
- 在INPUT视频的左上角覆盖LOGO图像。此滤镜的两个输入均为yuv420p格式。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
- 在INPUT视频左上角的偏移位置(200, 100)覆盖LOGO图像。
输入的颜色通道布局相同,LOGO有额外的alpha平面,例如INPUT为yuv420p,LOGO为yuva420p。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
34.2 tonemap_vaapi
执行HDR到SDR或HDR到HDR的色调映射。 它当前仅接受HDR10作为输入。
它接受以下参数:
- format
指定输出像素格式。
HDR到SDR色调映射的默认值是nv12,HDR到HDR色调映射的默认值是p010。
- primaries, p
设置输出颜色基准。
HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。
- transfer, t
设置输出传输特性。
HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。
- matrix, m
设置输出色彩空间矩阵。
HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。
- display
设置输出主显示颜色卷。使用'|'分隔的 两组值列表。这些值分别设置显示主色x和y按照G、B、R的顺序,然后设置白点x和y,以及名义的显示亮度的最小和最大值。
当设置此选项时,将执行HDR到HDR色调映射。
- light
设置输出内容亮度信息。接受2个以空格分隔的值,第一个值是最大亮度,第二个值是最大平均亮度。
对于HDR到SDR色调映射将忽略,对于HDR到HDR色调映射是可选的。
34.2.1 示例
- 转换HDR(HDR10)视频为bt2020转移特性p010格式。
tonemap_vaapi=format=p010:t=bt2020-10
- 转换HDR视频为HDR视频。
tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
34.3 hstack_vaapi
水平堆叠输入视频。
这是hstack滤镜的VA-API变体,每个输入流可能有不同的高度,此滤镜将缩小/放大每个输入流,同时保持原始比例。
它接受以下选项:
34.4 vstack_vaapi
垂直堆叠输入视频。
这是vstack滤镜的VA-API变体,每个输入流可能有不同的宽度,此滤镜将缩小/放大每个输入流,同时保持原始比例。
它接受以下选项:
34.5 xstack_vaapi
以自定义布局堆叠视频输入。
这是xstack滤镜的VA-API变体,每个输入流可能有不同的大小,此滤镜将缩小/放大每个输入流到给定的输出大小或第一个输入流的大小。
它接受以下选项:
- inputs
参见xstack.
- shortest
参见xstack.
- layout
参见xstack同时,允许用户为每个输入流提供输出大小。
xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
- grid
参见xstack.
- grid_tile_size
为每个输入流设置输出大小,当grid被设置时。如果未设置此选项,此滤镜默认将输出大小设置为第一个输入流的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分ffmpeg-utils文档。.
- fill
参见xstack.
34.6 pad_vaapi
向输入图像添加填充,并将原始输入放置在提供的x, y坐标。
它接受以下选项:
- width, w
- height, h
为添加填充后的输出图像大小指定表达式。如果宽度或高度的值是0,则使用相应的输入大小作为输出。
The 宽度表达式可以引用由高度表达式设置的值,反之亦然。
The default value of 宽度和高度的默认值是0。
- x
- y
指定将输入图像放置在填充区域内的位置偏移值, 相对于输出图像的顶部/左边框。
The x表达式可以引用由y表达式设置的值,反之亦然。
The default value of x和y的默认值是0。
如果x或y计算为负数,它们会被更改为使输入图像居中于填充区域。
- color
指定填充区域的颜色。有关选项语法,请检查(ffmpeg-utils)"颜色"部分ffmpeg-utils文档。.
- aspect
填充到宽高比而不是分辨率。
对于宽度, 高度, x, 和y选项的值是包含以下常量的表达式:
- in_w
- in_h
输入视频的宽度和高度。
- iw
- ih
它们与in_w和in_h.
- out_w
- out_h
输出的宽度和高度(填充区域的大小),如宽度和高度表达式中指定。
- ow
- oh
它们与out_w和out_h.
- x
- y
x和y偏移值,如x和y表达式中指定,或者未指定时为NAN。
- a
与iw / ih
- sar
输入样本宽高比。
- dar
输入显示宽高比,它与iw / ih) * sar
34.7 drawbox_vaapi
在输入图像上绘制一个彩色框。
它接受以下参数:
- x
- y
指定框的左上角坐标的表达式。默认值为0。
- width, w
- height, h
指定框的宽度和高度的表达式;如果为0,则解释为输入宽度和高度。默认值为0。
- color, c
指定要绘制框的颜色。有关此选项的一般语法,请检查(ffmpeg-utils)"颜色"部分ffmpeg-utils文档。.
- thickness, t
设置框边缘厚度的表达式。 为
fill
将创建填充框。默认值为3
.请参阅以下接受的常量列表。
- replace
使用
1
值绘制的框的像素将覆盖视频的颜色和alpha像素。 默认值为0
它将框与输入视频组合。
参数x, y, w和h和t是包含以下常量的表达式:
- in_h, ih
- in_w, iw
输入宽度和高度。
- x
- y
绘制框的x和y偏移坐标。
- w
- h
绘制框的宽度和高度。
- t
绘制框的厚度。
34.7.1 示例
- 在输入图像周围绘制一个黑色框:
drawbox
- 用红色绘制一个框并设置50%不透明度:
drawbox=10:20:200:60:red@0.5
前面的示例可以指定为:
drawbox=x=10:y=20:w=200:h=60:color=red@0.5
- 使用粉红色填充框:
drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
- 绘制一个2像素红色的2.40:1遮罩:
drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
35 Vulkan 视频滤镜
以下是当前可用Vulkan视频滤镜的描述。
要启用这些滤镜的编译,您需要使用以下配置FFmpeg--enable-vulkan
和--enable-libglslang
或--enable-libshaderc
.
运行Vulkan滤镜需要您初始化硬件设备并将该设备传递给任何滤镜图中的所有滤镜。
- -init_hw_device vulkan[=名称][:设备[,键=值...]]
初始化一个名为vulkan的新硬件设备,使用名称和键=值中给定的设备参数和选项。支持以下选项:
- debug
如果设置为1,则启用验证层。
- linear_images
分配线性图像。不适用于解码。
- disable_multiplane
禁用多平面图像。不适用于解码。
- -filter_hw_device 名称
将名为名称的硬件设备传递给任何滤镜图中的所有滤镜。
有关更详细的信息,请参见https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options
- 选择第一个设备并在其上运行nlmeans_vulkan滤镜的默认参数的示例。
-init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
由于Vulkan滤镜无法访问普通内存中的帧数据,所有帧数据在使用之前都需要上传到连接到相应设备的硬件表面(hwupload),然后下载回普通内存(hwdownload)。请注意,hwupload将上传到与软件帧相同布局的帧,因此可能需要在前面添加一个format滤镜以使输入进入正确的格式,而hwdownload不支持输出的所有格式——通常需要在图中紧接其后添加一个额外的format滤镜以将输出设为支持的格式。
35.1 avgblur_vulkan
应用一个由Vulkan在GPU上实现的平均模糊滤镜。
滤镜接受以下选项:
- sizeX
设置水平半径尺寸。 范围为
[1, 32]
默认值为3
.- sizeY
设置垂直半径尺寸。范围为
[1, 32]
默认值为3
.- planes
设置要过滤的平面。默认值为
0xf
,处理所有平面。
35.2 blend_vulkan
将两个Vulkan帧混合在一起。
The blend
滤镜接受两个输入流并输出一个
流,第一个输入是"顶部"层,第二个输入是"底部"层。
默认情况下,输出在最长输入终止时终止。
以下是接受的选项描述。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
为特定像素组件或所有像素组件设置混合模式,如果是all_mode。默认值为
normal
.组件模式的可用值有:
- ‘normal’
- ‘multiply’
35.3 bwdif_vulkan
使用bwdif,即"Bob Weaver解交错滤镜"算法,由Vulkan在GPU上实现的解交错器。
它接受以下参数:
- mode
要采用的交错模式。它接受以下值之一:
- 0, send_frame
为每帧输出一个帧。
- 1, send_field
为每个场输出一个帧。
默认值为
send_field
.- parity
输入交错视频的画面场奇偶性假定。它接受以下值之一:
- 0, tff
假定顶部场是第一。
- 1, bff
假定底部场是第一。
- -1, auto
启用自动检测场奇偶性。
默认值为
auto
。 如果交错模式未知或解码器未导出此信息,则将假定顶部场是第一。- deint
指定要解交错的帧。接受以下值之一:
- 0, all
解交错所有帧。
- 1, interlaced
仅解交错标记为交错的帧。
默认值为
all
.
35.4 chromaber_vulkan
应用一种模拟色差的效果。在RGB输入上效果最佳,但对YCbCr输入也提供类似效果。
- dist_x
水平位移倍率。每个色度像素的位置将从图像中心开始乘以此值。默认值是
0
.- dist_y
类似地,设置垂直位移倍率。默认值是
0
.
35.5 color_vulkan
生成一个实色的Vulkan帧的视频源。 用于基准测试或叠加。
它接受以下参数:
- color
使用的颜色。可以是名称,也可以是十六进制值。 默认值是
black
.- size
输出帧的大小。默认值是
1920x1080
.- rate
输出的帧率。默认值为
60
每秒帧数。- duration
视频时长。默认值为
-0.000001
.- sar
视频信号的宽高比。默认值为
1/1
.- format
输出 Vulkan 帧的像素格式。默认值为
yuv444p
.- out_range
设置输出的 YCbCr 样本范围。
这允许覆盖自动检测的值,并允许强制使用特定的输出和编码器值。如果未指定,范围取决于像素格式。可能的值:
- ‘auto/unknown’
自动选择。
- ‘jpeg/full/pc’
设置全范围(在 8 位亮度的情况下为 0-255)。
- ‘mpeg/limited/tv’
设置“MPEG”范围(在 8 位亮度的情况下为 16-235)。
35.6 vflip_vulkan
垂直翻转图像。
35.7 hflip_vulkan
水平翻转图像。
35.8 flip_vulkan
同时沿垂直轴和水平轴翻转图像。
35.9 gblur_vulkan
对 Vulkan 帧应用高斯模糊滤镜。
滤镜接受以下选项:
- sigma
设置水平标准差(sigma),即高斯模糊的标准偏差。默认值为
0.5
.- sigmaV
设置垂直标准差,如果为负值,则与
sigma
相同。 默认值为-1
.- planes
设置要过滤的图像平面。默认情况下,所有平面都将被过滤。
- size
设置水平轴上的核大小。默认值为
19
.- sizeV
设置垂直轴上的核大小。默认值为
0
,与相同的值。.
35.10 nlmeans_vulkan
使用非局部均值算法对帧进行去噪,算法在 GPU 上使用 Vulkan 实现。 支持比nlmeans或nlmeans_opencl更多的像素格式,并支持透明通道。
滤镜接受以下选项。
- s
为所有分量设置去噪强度。默认值为 1.0。必须在 [1.0, 100.0] 范围内。
- p
设置所有平面的补丁大小。默认值为 7。必须为 [0, 99] 范围内的奇数。
- r
设置搜索大小。默认值为 15。必须为 [0, 99] 范围内的奇数。
- t
设置并行度。默认值为 36。必须在 [1, 168] 范围内。 更大的值可能加快处理速度,但会占用更多 VRAM; 较小的值会减慢速度,但减少 VRAM 使用。 仅支持具有原子浮点操作的 GPU(如 RDNA3+, Ampere+)。
- s0
- s1
- s2
- s3
为特定分量设置去噪强度。默认值为1,等于s。 必须为 [1, 100] 范围内的奇数。
- p0
- p1
- p2
- p3
为特定分量设置补丁大小。默认值为7,等于p。 必须为 [0, 99] 范围内的奇数。
35.11 overlay_vulkan
将一个视频叠加在另一个视频上。
它接受两个输入并生成一个输出。第一个输入为“主”视频,第二个输入叠加在其上。 此滤镜要求所有输入使用相同的像素格式,因此可能需要格式转换。
滤镜接受以下选项:
- x
设置叠加视频在主视频上的 x 坐标。 默认值为
0
.- y
设置叠加视频在主视频上的 y 坐标。 默认值为
0
.
35.12 transpose_vt
转置输入视频的行和列,并可选择翻转。 有关更深入的示例,请参阅transpose视频滤镜,具有大多数相同的选项。
它接受以下参数:
- dir
指定转置方向。
可能的值为:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- ‘hflip’
水平翻转输入视频。
- ‘vflip’
垂直翻转输入视频。
- passthrough
如果输入几何形状与指定值匹配,则不应用转置。接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保持纵向几何形状(当高度 >= 宽度).
- ‘landscape’
保持横向几何形状(当宽度 >= 高度).
35.13 transpose_vulkan
转置输入视频的行和列,并可选择翻转。 有关更深入的示例,请参阅transpose视频滤镜,具有大多数相同的选项。
它接受以下参数:
- dir
指定转置方向。
可能的值为:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- passthrough
如果输入几何形状与指定值匹配,则不应用转置。接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保持纵向几何形状(当高度 >= 宽度).
- ‘landscape’
保持横向几何形状(当宽度 >= 高度).
36 QSV 视频滤镜
以下是当前可用的 QSV 视频滤镜的描述。
要启用这些滤镜的编译,你需要使用--enable-libmfx
或--enable-libvpl
.
正确配置 QSV 设备以使用 QSV 滤镜。有关更多信息,请阅读https://trac.ffmpeg.org/wiki/Hardware/QuickSync
36.1 hstack_qsv
水平堆叠输入视频。
这是hstack滤镜的 QSV 变体,每个输入流可以有不同的高度,该滤镜将在保持原始纵横比的情况下向下/向上缩放每个输入流。
它接受以下选项:
36.2 vstack_qsv
垂直堆叠输入视频。
这是vstack滤镜的 QSV 变体,每个输入流可以有不同的宽度,该滤镜将在保持原始纵横比的情况下向下/向上缩放每个输入流。
它接受以下选项:
36.3 xstack_qsv
将视频输入堆叠到自定义布局中。
这是xstack滤镜的 QSV 变体。
它接受以下选项:
- inputs
参见xstack.
- shortest
参见xstack.
- layout
参见xstack。 此外,这允许用户为每个输入流提供输出大小。
xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
- grid
参见xstack.
- grid_tile_size
设置每个输入流的输出大小当grid被设置。如果未设置此选项,此滤镜将默认将输出大小设置为第一个输入流的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.
- fill
参见xstack.
37 视频源
以下是目前可用的视频源的描述。
37.1 buffer
缓冲视频帧,并使其可用于滤镜链。
此源主要用于编程方式使用,特别是通过libavfilter/buffersrc.h.
中定义的接口。
- video_size
指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.
- width
输入视频宽度。
- height
输入视频高度。
- pix_fmt
表示缓冲视频帧的像素格式的字符串。 它可以是不对应像素格式的数字,也可以是像素格式的名称。
- time_base
指定缓冲帧时间戳的时间基。
- frame_rate
指定期望的视频流帧率。
- colorspace
表示缓冲视频帧色彩空间的字符串。 它可以是不对应色彩空间的数字,也可以是色彩空间的名称。
- range
表示缓冲视频帧色彩范围的字符串。 它可以是不对应色彩范围的数字,也可以是色彩范围的名称。
- pixel_aspect, sar
输入视频的像素(样本)宽高比。
- hw_frames_ctx
使用硬件像素格式时,这应是描述输入帧的 AVHWFramesContext 的引用。
例如:
buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
将指示源接受尺寸为 320x240 的视频帧,格式为 "yuv410p",时间戳时间基为 1/24 并且是正方形像素(1:1 的样本宽高比)。 由于名称为 "yuv410p" 的像素格式对应编号 6 (请查看libavutil/pixfmt.h中的 AVPixelFormat 枚举定义) 此示例等价于:
buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
或者,可以指定为简单字符串,但此语法已弃用:
宽度:高度:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den
37.2 cellauto
创建由基本细胞自动机生成的模式。
可以通过以下选项定义细胞自动机的初始状态:filename和pattern选项。如果没有指定这些,初始状态将随机创建。
每生成一个新帧,视频中的一行将被填充为细胞自动机下一代的结果。当整个帧被填满时,行为由scroll选项定义。
此源接受以下选项:
- filename, f
从指定的文件中读取细胞自动机的初始状态(即开始行)。 在文件中,每个非空白字符都被视为活单元格,新行会终止该行,文件中的其他字符将会被忽略。
- pattern, p
从指定的字符串中读取细胞自动机的初始状态,即开始行。
字符串中的每个非空白字符都被视为活单元格,新行会终止该行,字符串中的其他字符将会被忽略。
- rate, r
设置视频速率,即每秒生成的帧数。默认值为 25。
- random_fill_ratio, ratio
设置初始细胞自动机行的随机填充比率。取值范围是 0 到 1 的浮点值,默认值是 1/PHI。
当指定文件或模式时,此选项将被忽略。
- random_seed, seed
设置随机填充初始行的种子,必须是 0 到 UINT32_MAX 范围内的整数。如果未指定,或显式设置为 -1,滤镜将尽力使用一个良好的随机种子。
- rule
设置细胞自动机的规则,范围为 0 到 255 的数字。默认值为 110。
- size, s
设置输出视频的大小。有关此选项语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.
若filename或pattern被指定,默认情况下大小将设置为指定的初始状态行的宽度,并且高度为宽度* PHI。
如果size被设置,它必须包含指定模式字符串的宽度,并且指定的模式将居中于较大的行中。
如果未指定文件名或模式字符串,大小值默认为 "320x518"(用于随机生成的初始状态)。
- scroll
如果设置为 1,当输出中的所有行已填满时,滚动输出向上。如果设置为 0,在底部行填满后,新生成的行将写入顶部行。默认值为 1。
- start_full, full
如果设置为 1,在输出第一帧之前完全用生成的行填满输出。这是默认行为,若禁用可将值设置为 0。
- stitch
如果设置为 1,将左侧和右侧行边缘缝合在一起。这是默认行为,若禁用可将值设置为 0。
37.2.1 示例
- 从初始状态读取pattern并指定输出大小为200x400。
cellauto=f=pattern:s=200x400
- 生成一个宽度为200个单元格的随机初始行,填充比例为2/3:
cellauto=ratio=2/3:s=200x200
- 创建一个由规则18生成的图案,以一个居中的单个活跃细胞为初始行,宽度为100:
cellauto=p=@:s=100x400:full=0:rule=18
- 指定一个更复杂的初始图案:
cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
37.3 coreimagesrc
使用Apple的CoreImage API在OSX上的GPU生成的视频来源。
此视频来源是coreimage视频滤镜的一个特定版本。 在应用的滤镜链开始时使用核心图像生成器来生成内容。
coreimagesrc视频来源接受以下选项:
- list_generators
列出所有可用的生成器及其各自的选项,以及可能的最小值和最大值以及默认值。
list_generators=true
- size, s
指定视频来源的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为
320x240
.- rate, r
指定视频来源的帧率,即每秒生成的帧数。格式必须为帧率分子/帧率分母,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。
- sar
设置视频来源的样本宽高比。
- duration, d
设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。
如果未指定或持续时间为负值,视频应无限生成。
此外,还接受coreimage视频滤镜的所有选项。 可以使用完整的滤镜链对生成的输入进行进一步处理,而无需CPU-HOST传输。参见coreimage文档和示例以了解详细信息。
37.3.1 示例
- 使用CIQRCodeGenerator为FFmpeg主页创建QR码,给出Apple标准bash外壳的完整转义命令行:
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
此示例与coreimageQRCode示例等同,无需使用nullsrc视频来源。
37.4 ddagrab
通过桌面复制API捕获Windows桌面。
滤镜仅返回D3D11硬件帧,用于GPU编码或处理。 因此需要显式hwdownload进行任何类型的软件处理。
它接受以下选项:
- output_idx
捕获的DXGI输出索引。
通常对应Windows给屏幕的索引减去1,从0开始。
默认为输出0。
- draw_mouse
是否绘制鼠标光标。
默认为true。
仅影响硬件光标。如果游戏或应用程序渲染了自己的光标,它将始终被捕获。
- framerate
桌面捕获的最大帧速率——连续帧之间的间隔不会小于帧速率的倒数。当dup_frames为true(默认值)且桌面没有足够频繁更新时,滤镜将复制之前的帧。请注意,没有后台缓冲区,因此当滤镜没有足够频繁轮询时,实际的帧间间隔可能会显著增大。
默认为30 FPS。
- video_size
指定捕获视频的大小。
默认值为完整屏幕大小。
如果小于屏幕大小,则从底部/右侧裁剪。
- offset_x
捕获视频的水平偏移。
- offset_y
捕获视频的垂直偏移。
- output_fmt
期望的滤镜输出格式。 默认为8位BGRA。
它接受以下值:
- ‘auto’
将所有支持的输出格式传递给DDA并返回DDA决定使用的格式。
- ‘8bit’
- ‘bgra’
8位格式始终有效,DDA如果必要会将其转换为8位格式。
- ‘10bit’
- ‘x2bgr10’
如果请求了10位格式但不可用,则滤镜初始化将失败。
- dup_frames
当此选项设置为true(默认值)时,滤镜将在桌面未更新时复制帧,以保持大约恒定的目标帧速率。当此选项设置为false时,滤镜将等待桌面更新(帧间间隔在这种情况下可能显著变化)。
37.4.1 示例
捕获主屏幕并使用nvenc进行编码:
ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4
您也可以跳过lavfi设备并直接使用滤镜。 还展示了下载帧并使用libx264进行编码。 在这种情况下需要显式的输出格式指定:
ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4
如果您只想捕获桌面的一个子部分,可以通过指定较小的大小及其屏幕偏移来实现:
ddagrab=video_size=800x600:offset_x=100:offset_y=100
37.5 gradients
生成多个渐变。
- size, s
设置帧大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为"640x480"。
- rate, r
设置帧速率,以每秒的帧数表示。 默认值为"25"。
- c0, c1, c2, c3, c4, c5, c6, c7
设置8种颜色。颜色的默认值是随机选择。
- x0, y0, y0, y1
设置渐变线源和目标点。如果为负值或超出范围,则会随机选择。
- nb_colors, n
设置同时使用的颜色数量。允许范围为2到8。默认值为2。
- seed
设置用于选择渐变线点的种子。
- duration, d
设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。
如果未指定或持续时间为负值,则视频应无限生成。
- speed
设置渐变旋转的速度。
- type, t
设置渐变类型。 可用值为:
- ‘linear’
- ‘radial’
- ‘circular’
- ‘spiral’
- ‘square’
默认类型为线性.
37.5.1 命令
此来源支持以下选项作为命令.
37.6 mandelbrot
生成曼德布罗特集分形,并逐步缩放到用start_x和start_y.
指定的点。
- end_pts
设置终端pts值。默认值为400。
- end_scale
设置终端缩放值。 必须为浮点值。默认值为0.3。
- inner
设置内部着色模式,即用于绘制曼德布罗特分形内部区域的算法。
它应采用以下值之一:
- black
设置黑色模式。
- convergence
显示收敛所需的时间。
- mincol
根据距离原点最近的点设置颜色。
- period
设置周期模式。
默认值为mincol.
- bailout
设置截断值。默认值为10.0。
- maxiter
设置渲染算法执行的最大迭代次数。默认值为7189。
- outer
设置外部着色模式。 它应采用以下值之一:
- iteration_count
设置迭代计数模式。
- normalized_iteration_count
设置标准化迭代计数模式。
默认值为normalized_iteration_count.
- rate, r
设置帧率,以每秒的帧数表示。默认值为"25"。
- size, s
设置帧大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为"640x480"。
- start_scale
设置初始缩放值。默认值为3.0。
- start_x
设置初始x坐标。必须为-100到100之间的浮点值。默认值为-0.743643887037158704752191506114774。
- start_y
设置初始y坐标。必须为-100到100之间的浮点值。默认值为-0.131825904205311970493132056385139。
37.7 mptestsrc
生成MPlayer测试滤镜生成的各种测试图案。
生成的视频大小是固定的,为256x256。 此来源特别适用于测试编码功能。
此来源接受以下选项:
- rate, r
指定视频来源的帧率,即每秒生成的帧数。格式必须为帧率分子/帧率分母,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。
- duration, d
设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。
如果未指定或持续时间为负值,则视频应无限生成。
- test, t
-
设置要执行的测试的编号或名称。支持的测试包括:
- dc_luma
- dc_chroma
- freq_luma
- freq_chroma
- amp_luma
- amp_chroma
- cbp
- mv
- ring1
- ring2
- all
- max_frames, m
设置每次测试生成的最大帧数,默认值为30。
默认值为"所有",将循环列出所有测试。
一些示例:
mptestsrc=t=dc_luma
将生成一个"dc_luma"测试图案。
37.8 frei0r_src
提供一个frei0r来源。
要启用此滤镜的编译,您需要安装frei0r头文件并使用以下配置FFmpeg:--enable-frei0r
.
此来源接受以下参数:
- size
要生成的视频大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册.
- framerate
生成视频的帧速率。它可以是"形分子/分母或帧速率缩写的字符串。
- filter_name
要加载的frei0r来源的名称。有关frei0r及如何设置参数的更多信息,请参阅frei0r视频滤镜文档中的部分。
- filter_params
用于传递给frei0r来源的参数的'|'分隔列表。
例如,要生成一个自由0r partik0l来源,其大小为200x200,帧速率为10,并且覆盖在overlay滤镜主输入上:
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
37.9 life
生成一个life图案。
此来源基于约翰·康威的生命游戏的推广。
来源的输入表示一个生命网格,每个像素表示一个单元格, 单元格可以处于两种可能状态之一,活着或死去。 每个单元格与其八个邻居交互,这些是 横向、纵向或斜对角相邻的单元格。
在每次交互时,网格将根据选定的规则演化, 规则定义了有多少个邻居活细胞会使单元格保持活跃或出生。 选项允许指定采用的规则。rule option allows one to specify the rule to adopt.
此来源接受以下选项:
- filename, f
设置要从中读取初始网格状态的文件。在文件中, 每个非空字符都被视为一个活细胞,新行被用来分隔每个行的结束。
如果未指定此选项,则初始网格将随机生成。
- rate, r
设置视频速率,即每秒生成的帧数。 默认值为25。
- random_fill_ratio, ratio
设置初始随机网格的随机填充比。它是一个 从0到1的浮点数值,默认值为1/PHI。 当指定了文件时将被忽略。
- random_seed, seed
设置填充初始随机网格的种子,必须为0到UINT32_MAX之间的整数。 如果未指定或明确设置为-1,滤镜将尝试在最佳努力基础上使用良好的随机种子。
- rule
设置生命规则。
可以使用"SNS/BNB"类型的代码来指定规则,NS和NB是范围0-8的数字序列。NS指定活细胞邻居的数量,使活细胞保持活跃。NB邻居细胞的存活数量 决定死细胞是否会复活(即被“生成”)。 可以用"s"和"b"代替"S"和"B"。
或者,可以通过一个18位整数指定规则。高9位用于编码如果细胞存活时的状态,低9位用于"生成"新细胞的规则。高位编码代表更高邻居细胞数量。 例如数字6153 =
(12<<9)+9
指定存活规则为12,生成规则为9,对应于"S23/B03"。默认值为"S23/B3",这是原始康威生命游戏规则规则,将保持细胞存活,如果有2或3个存活的邻居细胞,以及在死细胞周围有3个存活细胞时生成新的细胞。
- size, s
设置输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分.
如果filename指定,则输出视频大小默认为输入文件的大小。如果size设置,则其必须包含在输入文件中指定的大小,输入文件定义的初始网格将在更大的结果区域中居中。
如果未指定文件名,大小值默认为"320x240"(用于随机生成初始网格)。
- stitch
如果设置为1,则将左边和右边的网格边缘缝合在一起,同时也缝合顶部和底部边缘。默认值为1。
- mold
设置细胞腐坏速度。如果设置,死细胞将从death_color变为mold_color,步长为mold. mold可以有0到255的值。
- life_color
设置存活(或新生)细胞的颜色。
- death_color
设置死细胞的颜色。如果mold设置,这是用于表示死细胞的第一种颜色。
- mold_color
设置腐坏颜色,用于永久死亡和腐坏的细胞。
有关这三个颜色选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.
37.9.1 示例
- 从pattern读取网格,并将其居中在大小为300x300像素的网格上:
life=f=pattern:s=300x300
- 生成大小为200x200,填充比例为2/3的随机网格:
life=ratio=2/3:s=200x200
- 为随机生成的网格指定自定义规则:
life=rule=S14/B34
- 使用慢速死亡效果(腐坏)的完整示例
ffplay
:ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
37.10 perlin
生成柏林噪声。
柏林噪声是一种空间连续性的噪声。这可用于生成具有空间和时间连续性模式,例如模拟烟雾、液体或地形。
如果通过octaves选项指定了多个倍频,柏林噪声将作为组件的和生成,每个组件具有两倍的频率。在这种情况下,persistence选项指定相对于之前组件振幅的比率。更多倍频组件允许生成噪声中更高频的细节(例如生成地形时小尺寸变化)。
37.10.1 选项
- size, s
指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分。 默认值为
320x240
.- rate, r
指定视频流的期望帧率,以每秒帧数表示。默认值为
25
.- octaves
指定组成噪声的总组件数,每个组件具有两倍的频率。默认值为
1
.- persistence
设置用于计算下一倍频组件振幅相对于上一组件振幅比例的比率。默认值为
1
.- xscale
- yscale
定义用于乘以x,y坐标的比例。这可以用于定义沿x或y轴拉伸模式效果。默认值为
1
.- tscale
定义用于乘以时间坐标的比例。这可以用于更改时间变化的速度。默认值为
1
.- random_mode
设置随机模式,用于计算初始模式。
支持的值有:
- random
计算并使用随机种子。
- ken
使用Ken Perlin在原始文章中定义的预定义初始模式,可用于与其他来源比较输出。
- seed
使用由random_seed选项指定的值。
默认值为
random
.- random_seed, seed
当random_mode设置为随机种子时,使用此值计算初始模式。默认值为
0
.
37.10.2 示例
- 生成单一组件:
perlin
- 使用柏林噪声生成7个组件,每个组件的总振幅贡献减半:
perlin=octaves=7:persistence=0.5
- 将柏林噪声与lutyuv链接以生成黑白效果:
perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
- 沿y轴拉伸噪声,并将灰度级转换为仅红色信号:
perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
37.11 qrencodesrc
使用libqrencode库生成二维码(参见https://fukuchi.org/works/qrencode/).
要启用此源的编译,需要配置FFmpeg系统--enable-libqrencode
.
二维码是根据提供的文本或文本模式生成的。根据指定的输出大小选项,二维码会被缩放并放置在视频输出中。
如果未指定文本,则不会生成二维码,而是返回一个空的彩色输出。
此源接受以下选项:
- qrcode_width, q
- padded_qrcode_width, Q
为二维码的宽度(带或不带填充)指定表达式。二维码宽度表达式可以引用由带填充宽度表达式设置的值,反之亦然。 默认情况下带填充宽度设置为二维码宽度,即没有填充。
这些表达式仅在初始化源时评估一次。 详细信息请参见qrencode表达式部分。
请注意,有些常量在源中丢失(例如x或t或n),因为它们只在每帧评估表达式时有意义,而不是在初始化时。
- rate, r
指定源视频帧率,以生成的每秒帧数表示。它必须是格式帧率分子/帧率分母的字符串,可以是整数、浮点数或有效的视频帧率缩写。默认值是"25"。
- case_sensitive, cs
指示libqrencode使用区分大小写编码。默认启用。可以禁用以减少二维码编码大小。
- level, l
指定二维码编码的纠错级别。更高的纠错级别增加编码大小但使代码更耐损坏。低级别为L.
其接受以下值:
- ‘L’
- ‘M’
- ‘Q’
- ‘H’
- expansion
选择如何展开输入文本。可以是
none
,或者normal
(默认)。详见qrencode文本展开部分。- text
- textfile
定义要呈现的文本。如果没有定义,则不会生成二维码(仅生成一个空的彩色框)。
如果启用了展开,文本将被视为文本模板,使用qrencode展开机制。详见qrencode 文本展开部分。
- background_color, bc
- foreground_color, fc
设置二维码和背景颜色。前景色默认值为"黑色",背景色默认值为"白色"。
有关颜色选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.
37.11.1 示例
- 通过指定的文本生成二维码,使用默认大小:
qrencodesrc=text=www.ffmpeg.org
- 与上述类似,但选择蓝色和粉色颜色:
qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
- 生成宽度为200像素的二维码并添加填充,使填充后的宽度为二维码宽度的4/3:
qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
- 生成填充后宽度为200像素并添加填充,使二维码宽度为填充后宽度的3/4:
qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
- 生成编码帧号的二维码:
qrencodesrc=text=%{n}
- 生成编码GMT时间戳的二维码:
qrencodesrc=text=%{gmtime}
- 生成编码为浮点数表达的时间戳的二维码:
qrencodesrc=text=%{pts}
37.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
来源返回大小为4096x4096的所有RGB颜色帧。allrgb
source returns frames of size 4096x4096 of all rgb colors.
来源返回大小为4096x4096的所有YUV颜色帧。allyuv
source returns frames of size 4096x4096 of all yuv colors.
提供统一颜色的输入。color
source provides an uniformly colored input.
来源提供颜色检查表。colorchart
source provides a colors checker chart.
来源提供颜色频谱输入。colorspectrum
source provides a color spectrum input.
来源提供身份Hald CLUT。参见haldclutsrc
source provides an identity Hald CLUT. See also
haldclut滤镜。
来源返回未处理的视频帧。其主要用途是在分析/调试工具中使用或作为忽略输入数据的滤镜来源。nullsrc
source returns unprocessed video frames. It is
mainly useful to be employed in analysis / debugging tools, or as the
source for filters which ignore the input data.
来源生成颜色条图案,基于EBU PAL建议,颜色水平为75%。pal75bars
source generates a color bars pattern, based on
EBU PAL recommendations with 75% color levels.
来源生成颜色条图案,基于EBU PAL建议,颜色水平为100%。pal100bars
source generates a color bars pattern, based on
EBU PAL recommendations with 100% color levels.
来源生成一个RGB测试图案,用于检测RGB与BGR问题。你应该看到从上到下的红色、绿色和蓝色条纹。rgbtestsrc
source generates an RGB test pattern useful for
detecting RGB vs BGR issues. You should see a red, green and blue
stripe from top to bottom.
来源生成颜色条图案,基于SMPTE工程指南EG 1-1990。smptebars
source generates a color bars pattern, based on
the SMPTE Engineering Guideline EG 1-1990.
来源生成颜色条图案,基于SMPTE RP 219-2002。smptehdbars
source generates a color bars pattern, based on
the SMPTE RP 219-2002.
来源生成测试视频图案,显示颜色图案、滚动渐变和时间戳。这主要用于测试目的。testsrc
source generates a test video pattern, showing a
color pattern, a scrolling gradient and a timestamp. This is mainly
intended for testing purposes.
来源类似于testsrc,但支持更多像素格式,而不仅仅是testsrc2
source is similar to testsrc, but supports more
pixel formats instead of just rgb24
。这允许使用它作为其他测试的输入而无需格式转换。
来源生成YUV测试图案。你应该看到从上到下的Y, CB和CR条纹。yuvtestsrc
source generates an YUV test pattern. You should
see a y, cb and cr stripe from top to bottom.
来源接受以下参数:
- level
指定Hald CLUT的级别,仅可用在
haldclutsrc
来源。级别N
生成一个大小为N*N*N
xN*N*N
像素的图片,用作3D查找表的身份矩阵。每个组件以1/(N*N)
标度编码。- color, c
指定来源的颜色,仅可用在
color
来源。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.- size, s
指定来源视频的大小。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分。 默认值为
320x240
.此选项不可用于
allrgb
,allyuv
,和haldclutsrc
滤镜。- rate, r
指定来源视频帧率,以生成的每秒帧数表示。它必须是格式帧率分子/帧率分母的字符串,可以是整数、浮点数或有效的视频帧率缩写。默认值是"25"。
- duration, d
设置来源视频的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中时间持续部分了解可接受的语法。
如果未指定,或者表达的持续时间为负,则视频应永远生成。
由于帧率用作时间基准,包括最后一帧的所有帧都会有其完整的持续时间。如果指定的持续时间不是帧持续时间的倍数,它将被向上舍入。
- sar
设置来源视频的样本纵横比。
- alpha
指定背景的透明度,仅可用在
testsrc2
来源。值必须在0(完全透明)到255(完全不透明,默认值)之间。- decimals, n
设置时间戳显示的小数位数,仅可用在
testsrc
来源。显示的时间戳值将对应于原始时间戳值乘以指定值的10的幂。默认值为0。
- type
设置色谱类型,仅在
colorspectrum
来源。可以是以下之一:- ‘black’
- ‘white’
- ‘all’
- patch_size
设置单色块的块大小,仅在
colorchart
来源中。默认值为64x64
.- preset
设置色卡颜色预置,仅在
colorchart
来源。可用的值是:
- ‘reference’
- ‘skintones’
默认值为
reference
.
37.12.1 示例
- 生成持续时间为5.3秒的视频,大小为176x144,帧率为每秒10帧:
testsrc=duration=5.3:size=qcif:rate=10
- 以下图形描述将生成一个红色来源,透明度为0.2,大小为"qcif",帧率为每秒10帧:
color=c=red@0.2:s=qcif:r=10
- 如果要忽略输入内容,
nullsrc
可以使用。 以下命令通过使用geq
滤镜在亮度平面生成噪声:nullsrc=s=256x256, geq=random(1)*255:128:128
37.12.2 命令
该color
来源支持以下命令:
- c, color
设置创建图像的颜色。接受对应的color选项的相同语法。
37.13 openclsrc
使用OpenCL程序生成视频。
- source
OpenCL程序源文件。
- kernel
程序中的内核名称。
- size, s
要生成的帧的大小。必须设置。
- format
用于生成帧的像素格式。必须设置。
- rate, r
每秒生成的帧数。默认值为'25'。
有关程序加载如何工作的详细信息,请参见program_opencl滤镜。
示例程序:
- 通过从输出图像中像素的位置设置像素值生成颜色渐变。(请注意,这将适用于所有像素格式,但生成的输出将不同。)
__kernel void ramp(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 val; val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst)); write_imagef(dst, loc, val); }
- 生成Sierpinski地毯图案,每帧平移一个像素。
__kernel void sierpinski_carpet(__write_only image2d_t dst, unsigned int index) { int2 loc = (int2)(get_global_id(0), get_global_id(1)); float4 value = 0.0f; int x = loc.x + index; int y = loc.y + index; while (x > 0 || y > 0) { if (x % 3 == 1 && y % 3 == 1) { value = 1.0f; break; } x /= 3; y /= 3; } write_imagef(dst, loc, value); }
37.14 sierpinski
生成Sierpinski地毯/三角形分形,并随机平移。
该来源接受以下选项:
- size, s
设置帧尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。默认值是“640x480”。
- rate, r
设置帧率,以每秒的帧数表示。默认值是“25”。
- seed
设置用于随机平移的种子。
- jump
设置单次平移目标的最大跳跃值。允许范围是1到10000。
- type
设置分形类型,可以是默认
carpet
或者triangle
.
37.15 zoneplate
生成一个zoneplate测试视频模式。
该来源接受以下选项:
- size, s
设置帧尺寸。有关此选项的语法,请查看(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。默认值是“320x240”。
- rate, r
设置帧率,以每秒的帧数表示。默认值是“25”。
- duration, d
设置生成视频的时长。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以获取接受的语法。
如果未指定,或表达的时长为负,则假定视频将无限生成。
- sar
设置生成视频的样本宽高比。
- precision
设置用于正弦计算的查找表精度,以位为单位。默认值为10。允许范围是4到16。
- xo
设置输出信号的水平轴偏移量。默认值是0。
- yo
设置输出信号的垂直轴偏移量。默认值是0。
- to
设置输出信号的时间轴偏移量。默认值是0。
- k0
设置零阶常量,用于添加到信号相位。默认值是0。
- kx
设置一级相位因子,用于乘以水平轴。默认值是0。
- ky
设置一级相位因子,用于乘以垂直轴。默认值是0。
- kt
设置一级相位因子,用于乘以时间轴。默认值是0。
- kxt, kyt, kxy
为空间和时间轴的组合设置相位因子倍数。默认值是0。
- kx2
设置二阶相位因子,用于乘以水平轴。默认值是0。
- ky2
设置二阶相位因子,用于乘以垂直轴。默认值是0。
- kt2
设置二阶相位因子,用于乘以时间轴。默认值是0。
- ku
设置常量以生成信号的蓝色色度分量的最终相位。默认值是0。
- kv
设置常量以生成信号的红色色度分量的最终相位。默认值是0。
37.15.1 命令
该来源支持部分上述选项作为命令.
37.15.2 示例
- 生成水平颜色正弦波:
zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
- 生成垂直颜色正弦波:
zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
- 生成圆形zoneplate:
zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
38 视频接收器
以下是当前可用的视频接收器的说明。
38.1 buffersink
缓冲视频帧,并使其在滤镜图的末尾可用。
此接收器主要用于编程用途,特别是通过接口定义libavfilter/buffersink.h或选项系统。
它接受AVBufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,用作传递给avfilter_init_filter
的opaque参数以进行初始化。
38.2 nullsink
空视频接收器:对输入视频绝对不做任何处理。它主要用作模板以及分析/调试工具中的使用。
39 多媒体滤镜
以下是当前可用的多媒体滤镜的说明。
39.1 a3dscope
将输入音频转换为3d示波视频输出。
滤镜接受以下选项:
- rate, r
设置帧率,以每秒的帧数表示。默认值是“25”。
- size, s
指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是
hd720
.- fov
设置摄像机视场角度。默认是90度。 允许范围是40到150。
- roll
设置摄像机滚动。
- pitch
设置摄像机俯仰。
- yaw
设置摄像机偏转。
- xzoom
设置摄像机在X轴的变焦。
- yzoom
设置摄像机在Y轴的变焦。
- zzoom
设置摄像机在Z轴的变焦。
- xpos
设置摄像机在X轴上的位置。
- ypos
设置摄像机在Y轴上的位置。
- zpos
设置摄像机在Z轴上的位置。
- length
设置显示音频波形的长度,以帧数表示。
39.1.1 命令
滤镜支持部分上述选项为命令.
39.2 abitscope
将输入音频转换为视频输出,显示音频位示波器。
滤镜接受以下选项:
- rate, r
设置帧率,以每帧每秒的数量表示。默认值是“25”。
- size, s
指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是
1024x256
.- colors
指定由空格或“|”分隔的颜色列表,这些颜色将用于绘制通道。无法识别或缺少的颜色将替换为白色。
- mode, m
设置输出模式。可以是
bars
或trace
。默认是bars
.
39.3 adrawgraph
使用输入音频元数据绘制图表。
39.4 agraphmonitor
参见graphmonitor.
39.5 ahistogram
将输入音频转换为视频输出,显示音量直方图。
滤镜接受以下选项:
- dmode
指定直方图的计算方式。
它接受以下值:
- ‘single’
对所有通道使用单一直方图。
- ‘separate’
对每个通道使用单独的直方图。
默认是
single
.- rate, r
设置帧率,以每帧每秒的数量表示。默认值是“25”。
- size, s
指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是
hd720
.- scale
设置显示比例。
它接受以下值:
- ‘log’
对数
- ‘sqrt’
平方根
- ‘cbrt’
立方根
- ‘lin’
线性
- ‘rlog’
反对数
默认是
log
.- ascale
设置振幅比例。
它接受以下值:
- ‘log’
对数
- ‘lin’
线性
默认是
log
.- acount
设置在直方图中累积的帧量。默认是1。将此设置为-1会累积所有帧。
- rheight
设置直方图窗口高度的比例。
- slide
设置声谱滑动。
它接受以下值:
- ‘replace’
将旧行替换为新行。
- ‘scroll’
从顶部滚动到底部。
默认是
replace
.- hmode
设置直方图模式。
它接受以下值:
- ‘abs’
使用样本的绝对值。
- ‘sign’
使用未处理的样本值。
默认是
abs
.
39.6 aphasemeter
测量输入音频的相位,并将其导出为元数据lavfi.aphasemeter.phase
,表示当前音频帧的平均相位值。视频输出也可以生成,并且默认启用。音频作为第一输出通过。
如果音频具有不同的通道布局,则会重新混合为立体声。相位值范围为[-1, 1]
其中-1
表示左右声道完全反相,而1
表示声道同相。
滤镜接受与其视频输出相关的以下选项:
- rate, r
设置输出帧率。默认值是
25
.- size, s
为输出设置视频尺寸。有关该选项语法的信息,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是
800x400
.- rc
- gc
- bc
指定红、绿、蓝对比度。默认值是
2
,7
和1
。 允许范围是[0, 255]
.- mpc
设置用于绘制中值相位的颜色。如果颜色为
none
,这是默认值,则不会绘制中值相位值。- video
启用视频输出。默认是启用。
39.6.1 相位检测
滤镜还检测立体声流中的失相和单声道序列。 当序列持续时间超过或等于设定最小值时,它会记录序列的开始、结束和持续时间。
此检测的滤镜接受以下选项:
- phasing
启用单声道和失相检测。默认是禁用。
- tolerance, t
设置单声道检测的相位容差,单位为振幅比率。默认值是
0
。 允许范围是[0, 1]
.- angle, a
设置失相检测的角度阈值,单位为度数。默认值是
170
。 允许范围是[90, 180]
.- duration, d
设置单声道或失相通知的持续时间,以秒为单位。默认值是
2
.
39.6.2 示例
- 使用完整示例
ffmpeg
检测具有0.001相位容差的1秒单声道:ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
39.7 avectorscope
将输入音频转换为视频输出,表示音频矢量示波器。
该滤镜用于测量立体声音频流通道之间的差异。单声道信号,由相同的左右信号组成,会产生垂直的直线。 任何立体声分离可见为偏离此直线,形成Lissajous图形。 如果显示直线(或与其的偏离),但水平线出现,则表示左右声道是失相的。
滤镜接受以下选项:
- mode, m
设置矢量示波模式。
可用值是:
- ‘lissajous’
Lissajous旋转45度。
- ‘lissajous_xy’
与上述相同,但未旋转。
- ‘polar’
形状类似于半个圆。
默认值是‘lissajous’.
- size, s
为输出设置视频尺寸。有关选项语法的信息,请检查(ffmpeg-utils)“视频尺寸”部分,在ffmpeg-utils手册中。 默认值是
400x400
.- rate, r
设置输出帧率。默认值是
25
.- rc
- gc
- bc
- ac
指定红、绿、蓝和alpha对比度。默认值是
40
,160
,80
和255
。 允许范围是[0, 255]
.- rf
- gf
- bf
- af
指定红、绿、蓝和alpha渐变。默认值是
15
,10
,5
和5
。 允许范围是[0, 255]
.- zoom
设置缩放因子。默认值是
1
。允许范围是[0, 10]
。 值低于1将自动调整到最大可能的缩放因子。- draw
设置矢量示波绘图模式。
可用值为:
- ‘dot’
为每个样本绘制点。
- ‘line’
在前一个样本和当前样本之间绘制线条。
- ‘aaline’
在前一个样本和当前样本之间绘制抗锯齿线条。
默认值是 'dot’.
- scale
指定音频样本的振幅比例。
可用值为:
- ‘lin’
线性。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
- ‘log’
对数。
- swap
交换左声道轴和右声道轴。
- mirror
镜像轴。
- ‘none’
无镜像。
- ‘x’
仅镜像 x 轴。
- ‘y’
仅镜像 y 轴。
- ‘xy’
同时镜像两个轴。
39.7.1 示例
- 使用完整示例
ffplay
:ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
39.7.2 命令
此滤镜支持除选项size
和rate
.
39.8 bench, abench
过滤图的基准测试部分。
过滤器接受以下选项:
- action
启动或停止计时器。
可用值为:
- ‘start’
获取当前时间,将其设置为帧元数据 (使用键
lavfi.bench.start_time
),并将帧转发到下一个过滤器。- ‘stop’
获取当前时间并从输入帧元数据中提取
lavfi.bench.start_time
元数据以获得时间差。时间差值、平均值、最大值 和最小值(分别为t
,avg
,max
和min
)然后打印。时间戳以秒为单位表示。
39.8.1 示例
- 基准测试选择性颜色过滤器:
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
39.9 合并
连接音频和视频流,将它们一个接一个地连接在一起。
过滤器处理同步的视频和音频流片段。所有片段必须具有相同数量的每种类型的流,并且输出的流数量将保持不变。
过滤器接受以下选项:
- n
设置片段数量。默认值为 2。
- v
设置输出视频流的数量,也就是每个片段中的视频流数量。默认值为 1。
- a
设置输出音频流的数量,也就是每个片段中的音频流数量。默认值为 0。
- unsafe
激活不安全模式:如果片段具有不同的格式,则不要失败。
过滤器有v+a输出:首先是v视频输出,然后是a音频输出。
有nx(v+a) 输入:首先是第一个片段的输入,以与输出相同的顺序,然后是第二个片段的输入,依此类推。
相关流并不总是有完全相同的持续时间,原因包括编解码器帧大小或松散的创作。因此,相关的同步流(例如,视频及其音轨)应该一次连接起来。合并过滤器将在每个片段中使用最长流的持续时间(除最后一个片段外),如果需要,会用静音填充较短的音频流。
要使此过滤器正常工作,所有片段必须从时间戳 0 开始。
所有对应的流在所有片段中的参数必须相同;过滤系统将自动为视频流选择一种通用的像素格式,为音频流选择一种通用的样本格式、采样率和通道布局,但其他设置(例如分辨率)必须由用户显式转换。
不同的帧速率是可以接受的,但会导致输出的帧速率变化;请确保配置输出文件以处理该情况。
39.9.1 示例
- 连接一个开场,一个剧集和一个结尾,全部为双语版本(视频为流 0,音频为流 1 和流 2):
ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \ '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2] concat=n=3:v=1:a=2 [v] [a1] [a2]' \ -map '[v]' -map '[a1]' -map '[a2]' output.mkv
- 连接两个部分,分别处理音频和视频,使用 (a)movie 源,并调整分辨率:
movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ; movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ; [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
请注意,如果音频和视频流在第一个文件中没有完全相同的持续时间,则在连接处可能会发生不同步。
39.9.2 命令
此滤镜支持以下命令:
- next
关闭当前片段并移动到下一个片段
39.10 ebur128
EBU R128 扫描过滤器。此过滤器处理音频流并分析其响度水平。默认情况下,它会以 10Hz 的频率记录一条消息,其中包含瞬时响度(由M
标识)、短时响度(S
)、集成响度(I
)和响度范围(LRA
).
该过滤器只能分析样本格式为双精度浮点的流。输入流会根据需要转换为此规格。用户可能需要在此过滤器之后插入 aformat 和/或 aresample 过滤器以获得原始参数。
此过滤器还有视频输出(参见video选项),带有实时图表以观察响度变化。图表包含上述已记录的消息,因此当设置此选项时不会再打印消息,除非启用详细日志记录。主图表区域包含短时响度(3 秒分析结果),右边的量表用于瞬时响度(400 毫秒),但可以选择配置为显示短时响度(参见量表).
绿色区域标记为目标响度(默认为 -23LUFS,除非通过目标).
更多关于响度建议 EBU R128 的信息请见http://tech.ebu.ch/loudness.
该过滤器接受以下选项:
- video
激活视频输出。无论是否设置此选项,音频流都会保持不变。激活时视频流将成为第一个输出流。默认值为
0
.- size
设置视频大小。此选项仅适用于视频。关于该选项的语法,请查看(ffmpeg-utils) "视频大小" 部分在 ffmpeg-utils 手册中。。默认和最小分辨率为
640x480
.- meter
设置 EBU 音量计量尺度。默认值为
9
。常用值是9
和18
,分别适用于 EBU 音量计量尺度 +9 和 EBU 音量计量尺度 +18。在这个范围之间的任意其他整数值都是允许的。- metadata
设置元数据注入。如果设置为
1
,音频输入将被分割为 100ms 的输出帧,每个帧中包含各种响度信息的元数据。所有元数据键均以lavfi.r128.
.作为前缀。默认值
0
.- framelog
强制帧日志记录级别。
可用值为:
- ‘quiet’
禁用日志记录
- ‘info’
信息日志记录级别
- ‘verbose’
详细日志记录级别
默认情况下,日志记录级别设置为信息。如果video或metadata选项已设置,则会切换到详细.
- peak
设置峰值模式。
可用的模式可以累积(该选项是
flag
类型)。可能的值是:- ‘none’
禁用任何峰值模式(默认)。
- ‘sample’
启用样例峰值模式。
简单的峰值模式用于查找最高的样本值。它会记录一个样例峰值的消息(由
SPK
).- ‘true’
启用真实峰值模式。
如果启用,峰值查找将在输入流的超采样版本上进行以提高峰值精度。它会记录一个真实峰值的消息(由
TPK
标识)和每帧的真实峰值(由FTPK
标识)。这种模式需要使用libswresample
.
- dualmono
将单声道输入文件视为“双声道单声”。如果单声道文件用于立体声系统播放,它的 EBU R128 测量在感知上将是不正确的。如果设置为
true
,此选项将补偿这种影响。多声道输入文件不受此选项影响。- panlaw
设置用于“双声道单声”文件测量的特定平移律。此参数是可选的,默认值为 -3.01dB。
- target
设置用于可视化的特定目标电平(以 LUFS 为单位)。此参数是可选的,默认值为 -23LUFS,如 EBU R128 所指定。然而,在线发布的材料可能更喜欢 -16LUFS 的电平(例如,用于播客或视频平台)。
- gauge
设置量表显示的值。有效值为
momentary
momentaryshortterm
和短时- scale
设置响度的显示比例。有效参数为
absolute
(以 LUFS 为单位) 或relative
(LU) 相对于目标。这仅影响视频输出,不影响摘要或连续日志输出。- integrated
导出的只读值,用于测量集成响度,以 LUFS 为单位。
- range
导出的只读值,用于测量响度范围,以 LU 为单位。
- lra_low
导出的只读值,用于测量 LRA 低值,以 LUFS 为单位。
- lra_high
导出的只读值,用于测量 LRA 高值,以 LUFS 为单位。
- sample_peak
导出的只读值,用于测量样例峰值,以 dBFS 为单位。
- true_peak
导出的只读值,用于测量真实峰值,以 dBFS 为单位。
39.10.1 示例
- 实时图表使用
ffplay
,带有 EBU 音量计量尺度 +18:ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
- 运行分析使用
ffmpeg
:ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
39.11 interleave, ainterleave
临时交织来自多个输入的帧。
interleave
适用于视频输入,ainterleave
适用于音频。
这些过滤器从多个输入读取帧并将最早的排队帧发送到输出。
输入流必须具有明确的、单调递增的帧时间戳值。
为了向输出提交一个帧,这些过滤器需要至少为每个输入排队一个帧,因此它们无法处理一个输入未完成且不会接收输入帧的情况。
例如,考虑一个输入是select
过滤器,它始终丢弃输入帧。这个interleave
过滤器将继续从该输入读取,但直到该输入发送一个流结束信号之前,它永远无法发送新帧到输出。
此外,根据输入之间的同步,过滤器将丢弃帧,如果一个输入接收到的帧多于其他输入,并且队列已满。
这些过滤器接受以下选项:
- nb_inputs, n
设置不同输入的数量,默认值是 2。
- duration
如何确定流结束。
- longest
最长输入的持续时间。(默认)
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
39.11.1 示例
- 交织属于不同流的帧使用
ffmpeg
:ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
- 添加闪烁模糊效果:
select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
39.12 latency, alatency
测量过滤延迟。
报告之前过滤器的过滤延迟,对于音频过滤器来说是音频样例的数量,对于视频过滤器来说是视频帧的数量。
在输入流结束时,过滤器将报告过滤图中之前运行过滤器的最小和最大测量延迟。
39.13 metadata, ametadata
操作帧元数据。
该过滤器接受以下选项:
- mode
设置过滤器的操作模式。
可以是以下之一:
- ‘select’
如果同时设置
value
和key
,选择具有此类元数据的帧。如果只设置key
,选择每帧中包含此键的帧。- ‘add’
添加新元数据
key
和value
如果键已存在则不执行操作。- ‘modify’
修改已存在键的值。
- ‘delete’
如果
value
被设置,只删除具有此值的键。否则删除键。如果key
未设置,则删除帧中的所有元数据值。- ‘print’
打印键及其值,如果找到元数据。 如果未设置
key
则打印帧中可用的所有元数据值。
- key
设置用于所有模式的键。对于所有模式必须设置,除了
print
和delete
.- value
设置将使用的元数据值。此选项是
modify
和add
模式的必需。- function
用于比较元数据值与
value
.的功能可以是以下之一:
- ‘same_str’
值被解释为字符串,如果元数据值与
value
.- ‘starts_with’
开始则返回 true。
value
选项字符串。- ‘less’
将值解释为浮点数,如果元数据值小于,则返回true。
value
.- ‘equal’
将值解释为浮点数,如果...
value
与元数据值相等。- ‘greater’
将值解释为浮点数,如果元数据值大于,则返回true。
value
.- ‘expr’
将值解释为浮点数,如果选项中的表达式
expr
求值为true,则返回true。- ‘ends_with’
将值解释为字符串,如果元数据值以选项字符串结尾,则返回true。
value
选项字符串。
- expr
设置表达式,当...
function
设置为...expr
时使用。 该表达式通过eval API进行评估,可包含以下常量:- VALUE1, FRAMEVAL
元数据键的浮点表示。
value
用户在选项中提供的浮点表示。- VALUE2, USERVAL
Float representation of
value
作为用户提供的值。value
option.
- file
在模式中指定时,输出内容会写入指定的名称文件。除普通文件名外,任何可写URL都可以指定。文件名“-”是标准输出的简写。如果选项未设置,输出内容会以AV_LOG_INFO日志级别输出到日志中。
print
mode, output is written to the named file. Instead of plain filename any writable url can be specified. Filename “-” is a shorthand for standard output. Iffile
如果未设置选项,输出内容会以AV_LOG_INFO日志级别输出到日志中。- direct
在打印模式下,当使用文件时通过减少缓冲区写入URL可以加快速度。文件.
39.13.1 示例
- 打印所有帧对应键值在0到1间的元数据值。
lavfi.signalstats.YDIF
值signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
- 将检测到的静音输出打印到文件内。metadata.txt.
silencedetect,ametadata=mode=print:file=metadata.txt
- 将所有元数据定向到文件描述符为4的管道中。
metadata=mode=print:file='pipe\:4'
39.14 perms,aperms
为输出帧设置读写权限。
这些滤镜主要用于开发者测试滤镜图中路径直接性。
滤镜接受以下选项:
- mode
选择权限模式。
接受以下值:
- ‘none’
不执行任何操作。这是默认设置。
- ‘ro’
将所有输出帧设为只读。
- ‘rw’
将所有输出帧设为可写。
- ‘toggle’
如果帧为可写则将其设为只读,如果帧为只读则将其设为可写。
- ‘random’
随机设定每个输出帧为只读或可写。
- seed
为随机模式设置种子,必须是介于...随机模式的种子必须为介于
0
和UINT32_MAX
之间的整数。如果未指定,或显式设置为...-1
"-1"...
注意:在权限滤镜与后续滤镜之间自动插入滤镜的情况下,权限可能未能如预期传递到后续滤镜。插入格式化(format)或音频格式化(aformat)滤镜可以避免此问题。format or aformat filter before the perms/aperms filter can avoid this problem.
39.15 realtime,arealtime
减慢过滤速度以大致匹配实时。
这些滤镜将会暂停一定时间以使输入时间戳与输出速率匹配。re类似于选项ffmpeg
.
这些滤镜接受以下选项:
- limit
暂停时间的限制。任何超过此限制的暂停将被视为时间戳不连续并重置计时器。默认为2秒。
- speed
处理的速度因子。该值必须大于零。例如值大于1.0时处理速度会比实时更快,值小于1.0时处理速度会减慢。限值将根据情况自动调整。
不能通过这些滤镜实现比它们处理能力所允许的更快速度。
39.15.1 命令
这些滤镜支持所有上述选项作为命令命令.
39.16 segment,asegment
将单个输入流分割成多个流。
此滤镜是连接(concat)滤镜的反向操作。
segment
视频帧上的操作。asegment
音频样本上的操作。
此滤镜接受以下选项:
- timestamps
输出片段的时间戳,用‘|’间隔开。第一个片段将从输入流开始,而最后一个片段将持续至输入流结束。
- frames, samples
精确的帧数/样本数以分割片段。
在所有情况下以’+’前缀每个片段可使其相对于上个片段。
39.16.1 示例
- 将输入音频流分为三个输出音频流,从输入开始,把第一部分保存在第一个输出流,从第60秒开始为第二部分保存在第二个输出流,从输入流的第150秒开始保存至第三个输出流:
asegment=timestamps="60|150"
39.17 select,aselect
选择帧以供输出。
此滤镜接受以下选项:
- expr, e
设置表达式,该表达式会对每个输入帧进行评估。
如果表达式评估结果为零,则该帧将被丢弃。
如果评估结果为负值或NaN,则该帧会发送到第一个输出;否则,它将发送到索引为...
ceil(val)-1
的输出。例如一个值...
1.2
对应索引为...ceil(1.2)-1 = 2-1 = 1
的输出,即第二个输出。- outputs, n
设置输出数量。选定帧要发送到的目标输出基于评估结果。默认值为1。
该表达式可包含以下常量:
- n
过滤后的帧的顺序编号,从0开始。
- selected_n
选定帧的顺序编号,从0开始。
- prev_selected_n
上一个选定帧的顺序编号。如果未定义,则为NaN。
- TB
输入时间戳的时间基准。
- pts
过滤帧的PTS(显示时间戳),以时间基准...TB单位表示。如果未定义,则为NaN。
- t
过滤帧的PTS,以秒表示。如果未定义,则为NaN。
- prev_pts
上一个过滤帧的PTS。如果未定义,则为NaN。
- prev_selected_pts
最后一个过滤帧的PTS。如果未定义,则为NaN。
- prev_selected_t
最后一个选定帧的PTS,以秒表示。如果未定义,则为NaN。
- start_pts
流中的第一个PTS值不是NaN。如果未找到,则仍为NaN。
- start_t
流中的第一个PTS值,以秒表示,不是NaN。如果未找到,则仍为NaN。
- pict_type (仅适用于视频)
过滤帧的类型。可能值为:
- I
- P
- B
- S
- SI
- SP
- BI
- interlace_type (仅适用于视频)
帧隔行类型。可能值为:
- PROGRESSIVE
此帧是渐进的(非隔行)。
- TOPFIRST
此帧是顶场优先。
- BOTTOMFIRST
此帧是底场优先。
- consumed_sample_n (仅适用于音频)
当前帧之前选择的样本数量。
- samples_n (仅适用于音频)
当前帧中的样本数量。
- sample_rate (仅适用于音频)
输入的样本速率。
- key
如果过滤帧是关键帧,则值为1,否则为0。
- pos
过滤帧在文件中的位置,如果信息不可用(例如对于合成视频),则为-1;已弃用,不要使用。
- scene (仅适用于视频)
值介于0到1之间,用于表示新场景。较低值反映当前帧引入新场景的可能性较低,而较高值表示可能性较高(参见示例)。
- concatdec_select
Concat复合解复用器可以通过设置起点和终点来选择Concat输入文件的一部分,但输出数据包可能并不完全包含在选定的时间间隔中。通过使用此变量,可以跳过某些由Concat复合解复用器生成但未完全包含在所选时间间隔中的帧。
此工作的实现方式是比较帧的pts与lavf.concat.start_time和lavf.concat.duration的元数据值,这些值也出现在解码的帧中。
变量concatdec_select为-1,表示帧pts至少大于等于start_time,并且duration元数据缺失或帧pts小于start_time + duration,若不符合此条件则为0,如果start_time元数据缺失则为NaN。
这基本意味着如果帧的pts在Concat复合解复用器设定的区间内,该帧就会被选中。
- iw (仅适用于视频)
表示输入视频帧的宽度。
- ih (仅适用于视频)
表示输入视频帧的高度。
- view (仅适用于视频)
多视图视频的视图ID。
select表达式的默认值是"1"。
39.17.1 示例
- 选择所有输入帧:
select
以上示例与以下示例相同:
select=1
- 跳过所有帧:
select=0
- 仅选择I帧:
select='eq(pict_type\,I)'
- 每100帧选择一个:
select='not(mod(n\,100))'
- 仅选择包含在10到20秒时间间隔内的帧:
select=between(t\,10\,20)
- 仅选择包含在10到20秒时间间隔内的I帧:
select=between(t\,10\,20)*eq(pict_type\,I)
- 选择帧与帧间至少相隔10秒:
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
- 使用aselect选择样本数 > 100的音频帧:
aselect='gt(samples_n\,100)'
- 创建第一个场景的拼图:
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
比较场景与0.3和0.5之间的值通常是合理的选择。
- 将偶数帧和奇数帧分别发送到不同输出,并合成这两组帧:
select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
- 从一个ffconcat文件中选择有用的帧,该文件正在使用启始点和终止点,但其中的源文件不是仅关键帧的。
ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
39.18 sendcmd,asendcmd
向滤镜图中的滤镜发送命令。
这些滤镜读取命令并将其发送到滤镜图中的其他滤镜。
sendcmd
必须插入到两个视频滤镜之间,asendcmd
必须插入到两个音频滤镜之间,但除此之外两者行为相同。
命令的规范可通过过滤器参数命令选项提供,或通过指定文件名...选项。 option.
这些滤镜接受以下选项:
- commands, c
设置要读取并发送到其他滤镜的命令。
- filename, f
设置文件名,以从中读取并发送到其他滤镜的命令。
39.18.1 命令语法
一个命令描述由一系列间隔规范组成,包括一系列在事件发生时特定间隔内应该执行的命令。这些发生事件通常是当前帧时间进入或离开一个给定时间间隔。
一个间隔通过以下语法指定:
起点[-终点] 命令;
时间间隔由起点和...起点终点...终点时间设定。终点是可选的,默认值为最大时间。
当前帧时间被认为包含在指定时间间隔中,如果它在区间[起点...起点, 终点)之内的时间,即时间大于或等于起点且小于终点。起点和终点...终点.
命令由一个或多个命令的定义组成,按逗号间隔,与该间隔相关联。 命令定义的语法如下:
[标志] 目标 命令 参数
标志是可选的,指定与时间间隔相关的事件类型并决定发送该命令。必须是一个非空的标志序列,用+或|间隔开并用方括号括起。
以下标志是被识别的:
- enter
在当前帧时间戳进入指定间隔时发送命令。换句话说,当上一次帧时间戳不在指定间隔内,而当前帧时间戳在间隔内时发送命令。
- leave
在当前帧时间戳离开指定间隔时发送命令。换句话说,当上一次帧时间戳在指定间隔内,而当前帧时间戳不在间隔内时发送命令。
- expr
命令参数被解释为表达式,表达式结果将作为参数传递。参数.
表达式通过eval API评估,表达式可以包含以下常量:
- POS
帧在文件中的原始位置,如果当前帧未定义,则为未定义;已弃用,请勿使用。
- PTS
输入中的显示时间戳。
- N
视频或音频输入帧的计数,从0开始。
- T
当前帧的秒数。
- TS
当前命令区间的开始时间(秒)。
- TE
当前命令区间的结束时间(秒)。
- TI
当前命令区间的插值时间,TI = (T - TS) / (TE - TS)。
- W
视频帧宽度。
- H
视频帧高度。
如果FLAGS未指定,则默认值为[enter]
假定。
TARGET指定命令的目标,通常是滤镜类的名称或特定滤镜实例名称。
COMMAND指定目标滤镜的命令名称。
ARG是可选的,用于指定给定COMMAND.
的参数列表。#
在一个区间规范和另一个之间,空格或以
命令规范语法的简化BNF描述如下:
COMMAND_FLAG ::= "enter" | "leave" COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG] COMMAND ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG] COMMANDS ::= COMMAND [,COMMANDS] INTERVAL ::= START[-END] COMMANDS INTERVALS ::= INTERVAL[;INTERVALS]
39.18.2 示例
- 在第4秒指定音频节奏变化:
asendcmd=c='4.0 atempo tempo 1.5',atempo
- 定位到特定的滤镜实例:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
- 在文件中指定drawtext和hue命令列表。
# show text in the interval 5-10 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world', [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text='; # desaturate the image in the interval 15-20 15.0-20.0 [enter] hue s 0, [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor', [leave] hue s 1, [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color'; # apply an exponential saturation fade-out effect, starting from time 25 25 [enter] hue s exp(25-t)
一个允许读取并处理上述命令列表的滤镜图可以通过以下方式指定:test.cmd存储在文件
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
39.19 setpts, asetpts
更改输入帧的PTS(呈现时间戳)。
setpts
适用于视频帧,asetpts
适用于音频帧。
此滤镜接受以下选项:
- expr
为每帧评估的表达式以构建其时间戳。
通过eval API评估表达式,可以包含以下常量:
- FRAME_RATE, FR
帧率,仅为恒定帧率视频定义。
- PTS
输入中的显示时间戳
- N
输入视频帧计数或消耗的音频样本数(不包括当前帧),从0开始。
- NB_CONSUMED_SAMPLES
消耗的样本数,不包括当前帧(仅音频)。
- NB_SAMPLES, S
当前帧的样本数(仅音频)。
- SAMPLE_RATE, SR
音频采样率。
- STARTPTS
第一帧的PTS。
- STARTT
第一帧的时间(秒)。
- INTERLACED
声明当前帧是否隔行扫描。
- T
当前帧的时间(秒)。
- POS
帧在文件中的原始位置,若未定义则未定义;已废弃,请勿使用。
- PREV_INPTS
先前的输入PTS。
- PREV_INT
先前的输入时间(秒)。
- PREV_OUTPTS
先前的输出PTS。
- PREV_OUTT
先前的输出时间(秒)。
- RTCTIME
墙钟(RTC)时间(微秒)。此项已废弃,请改用time(0)。
- RTCSTART
电影开始时的墙钟(RTC)时间(微秒)。
- TB
输入时间戳的时间基。
- T_CHANGE
命令应用后的第一帧时间或没有命令时的第一帧时间。
39.19.1 示例
- 从零开始计算PTS
setpts=PTS-STARTPTS
- 应用快速动作效果:
setpts=0.5*PTS
- 应用慢动作效果:
setpts=2.0*PTS
- 设置固定的每秒25帧速率:
setpts=N/(25*TB)
- 应用+/-100 TB单位的随机抖动效果:
setpts=PTS+randomi(0, -100\,100)
- 设定固定25 fps速率并带有一些抖动:
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
- 将输入PTS偏移10秒:
setpts=PTS+10/TB
- 从“实时源”生成时间戳并重新基于当前时间基:
setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
- 通过计数样本生成时间戳:
asetpts=N/SR/TB
39.19.2 命令
两种滤镜均支持前述所有选项作为命令。.
39.20 setrange
为输出视频帧强制设置色彩范围。
此setrange
滤镜标记输出帧的色彩范围属性。它不会更改输入帧,但仅设置相关属性,影响后续滤镜如何处理该帧。
滤镜接受以下选项:
- range
可用值包括:
- ‘auto’
保持相同的色彩范围属性。
- ‘unspecified, unknown’
将色彩范围设置为不确定。
- ‘limited, tv, mpeg’
将色彩范围设置为受限。
- ‘full, pc, jpeg’
将色彩范围设置为全范围。
39.21 settb, asettb
设置用于输出帧时间戳的时间基。 主要用于测试时间基配置。
它接受以下参数:
- expr, tb
评估为输出时间基的表达式。
值为tb的算术表达式,表示一个有理数。表达式可以包含常量"AVTB"(默认时间基)、"intb"(输入时间基)和"sr"(采样率,仅音频)。默认值为"intb"。
39.21.1 示例
- 将时间基设置为1/25:
settb=expr=1/25
- 将时间基设置为1/10:
settb=expr=0.1
- 将时间基设置为1001/1000:
settb=1+0.001
- 将时间基设置为2*intb:
settb=2*intb
- 设置默认时间基值:
settb=AVTB
39.22 showcqt
使用Brown-Puckette常Q变换算法将输入音频转换为表示频谱(对数式)的视频输出。
The filter accepts the following options:
- size, s
Specify the video size for the output. It must be even. For the syntax of this option, check the (ffmpeg-utils)"Video size" section in the ffmpeg-utils manual. Default value is
1920x1080
.- fps, rate, r
Set the output frame rate. Default value is
25
.- bar_h
Set the bargraph height. It must be even. Default value is
-1
which computes the bargraph height automatically.- axis_h
Set the axis height. It must be even. Default value is
-1
which computes the axis height automatically.- sono_h
Set the sonogram height. It must be even. Default value is
-1
which computes the sonogram height automatically.- fullhd
Set the fullhd resolution. This option is deprecated, use size, s instead. Default value is
1
.- sono_v, volume
Specify the sonogram volume expression. It can contain variables:
- bar_v
the bar_v evaluated expression
- frequency, freq, f
the frequency where it is evaluated
- timeclamp, tc
the value of timeclamp option
and functions:
- a_weighting(f)
A-weighting of equal loudness
- b_weighting(f)
B-weighting of equal loudness
- c_weighting(f)
C-weighting of equal loudness.
Default value is
16
.- bar_v, volume2
Specify the bargraph volume expression. It can contain variables:
- sono_v
the sono_v evaluated expression
- frequency, freq, f
the frequency where it is evaluated
- timeclamp, tc
the value of timeclamp option
and functions:
- a_weighting(f)
A-weighting of equal loudness
- b_weighting(f)
B-weighting of equal loudness
- c_weighting(f)
C-weighting of equal loudness.
Default value is
sono_v
.- sono_g, gamma
Specify the sonogram gamma. Lower gamma makes the spectrum more contrast, higher gamma makes the spectrum having more range. Default value is
3
. Acceptable range is[1, 7]
.- bar_g, gamma2
Specify the bargraph gamma. Default value is
1
. Acceptable range is[1, 7]
.- bar_t
Specify the bargraph transparency level. Lower value makes the bargraph sharper. Default value is
1
. Acceptable range is[0, 1]
.- timeclamp, tc
Specify the transform timeclamp. At low frequency, there is trade-off between accuracy in time domain and frequency domain. If timeclamp is lower, event in time domain is represented more accurately (such as fast bass drum), otherwise event in frequency domain is represented more accurately (such as bass guitar). Acceptable range is
[0.002, 1]
. Default value is0.17
.- attack
Set attack time in seconds. The default is
0
(disabled). Otherwise, it limits future samples by applying asymmetric windowing in time domain, useful when low latency is required. Accepted range is[0, 1]
.- basefreq
Specify the transform base frequency. Default value is
20.01523126408007475
, which is frequency 50 cents below E0. Acceptable range is[10, 100000]
.- endfreq
Specify the transform end frequency. Default value is
20495.59681441799654
, which is frequency 50 cents above D#10. Acceptable range is[10, 100000]
.- coeffclamp
This option is deprecated and ignored.
- tlength
Specify the transform length in time domain. Use this option to control accuracy trade-off between time domain and frequency domain at every frequency sample. It can contain variables:
- frequency, freq, f
the frequency where it is evaluated
- timeclamp, tc
the value of timeclamp option.
Default value is
384*tc/(384+tc*f)
.- count
Specify the transform count for every video frame. Default value is
6
. Acceptable range is[1, 30]
.- fcount
Specify the transform count for every single pixel. Default value is
0
, which makes it computed automatically. Acceptable range is[0, 10]
.- fontfile
Specify font file for use with freetype to draw the axis. If not specified, use embedded font. Note that drawing with font file or embedded font is not implemented with custom basefreq and endfreq, use axisfile option instead.
- font
Specify fontconfig pattern. This has lower priority than fontfile. The
:
in the pattern may be replaced by|
to avoid unnecessary escaping.- fontcolor
Specify font color expression. This is arithmetic expression that should return integer value 0xRRGGBB. It can contain variables:
- frequency, freq, f
the frequency where it is evaluated
- timeclamp, tc
the value of timeclamp option
and functions:
- midi(f)
midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
- r(x), g(x), b(x)
red, green, and blue value of intensity x.
Default value is
st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1))
.- axisfile
Specify image file to draw the axis. This option override fontfile and fontcolor option.
- axis, text
Enable/disable drawing text to the axis. If it is set to
0
, drawing to the axis is disabled, ignoring fontfile and axisfile option. Default value is1
.- csp
Set colorspace. The accepted values are:
- ‘unspecified’
Unspecified (default)
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470BG or BT.601-6 625
- ‘smpte170m’
SMPTE-170M or BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘bt2020ncl’
BT.2020 with non-constant luminance
- cscheme
Set spectrogram color scheme. This is list of floating point values with format
left_r|left_g|left_b|right_r|right_g|right_b
. The default is1|0.5|0|0|0.5|1
.
39.22.1 Examples
- Playing audio while showing the spectrum:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
- Same as above, but with frame rate 30 fps:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
- Playing at 1280x720:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
- Disable sonogram display:
sono_h=0
- A1 and its harmonics: A1, A2, (near)E3, A3:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt [out0]'
- Same as above, but with more accuracy in frequency domain:
ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t), asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
- Custom volume:
bar_v=10:sono_v=bar_v*a_weighting(f)
- Custom gamma, now spectrum is linear to the amplitude.
bar_g=2:sono_g=2
- Custom tlength equation:
tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
- Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
- Custom font using fontconfig:
font='Courier New,Monospace,mono|bold'
- Custom frequency range with custom axis using image file:
axisfile=myaxis.png:basefreq=40:endfreq=10000
39.23 showcwt
Convert input audio to video output representing frequency spectrum using Continuous Wavelet Transform and Morlet wavelet.
The filter accepts the following options:
- size, s
Specify the video size for the output. For the syntax of this option, check the (ffmpeg-utils)"Video size" section in the ffmpeg-utils manual. Default value is
640x512
.- rate, r
Set the output frame rate. Default value is
25
.- scale
Set the frequency scale used. Allowed values are:
- linear
- log
- bark
- mel
- erbs
- sqrt
- cbrt
- qdrt
- fm
Default value is
linear
.- iscale
Set the intensity scale used. Allowed values are:
- linear
- log
- sqrt
- cbrt
- qdrt
Default value is
log
.- min
Set the minimum frequency that will be used in output. Default is
20
Hz.- max
Set the maximum frequency that will be used in output. Default is
20000
Hz. The real frequency upper limit depends on input audio’s sample rate and such will be enforced on this value when it is set to value greater than Nyquist frequency.- imin
Set the minimum intensity that will be used in output.
- imax
Set the maximum intensity that will be used in output.
- logb
Set the logarithmic basis for brightness strength when mapping calculated magnitude values to pixel values. Allowed range is from
0
to1
. 默认值是0.0001
.- deviation
设置频率偏差。 小于
1
的值更注重频率, 而大于1
的值更注重时间。 允许范围是从0
到10
。 默认值是1
.- pps
设置每行每秒输出的像素数量。 允许范围是从
1
到1024
。 默认值是64
.- mode
设置输出可视模式。允许的值是:
- magnitude
显示幅度。
- phase
仅显示相位。
- magphase
显示幅度和相位的组合。 幅度映射为亮度,相位映射为颜色。
- channel
显示每个通道幅度的独特颜色。
- stereo
显示立体声差异的独特颜色。
默认值是
magnitude
.- slide
设置输出滑动方法。允许的值是:
- replace
- scroll
- frame
- direction
设置输出滑动方法的方向。允许的值是:
- lr
从左到右的方向。
- rl
从右到左的方向。
- ud
从上到下的方向。
- du
从下到上的方向。
- bar
设置条形图显示与显示尺寸的比例。默认值是 0。
- rotation
设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是
0
.
39.24 显示频率
将输入音频转换为表示音频功率谱的视频输出。 音频振幅在 Y 轴上,频率在 X 轴上。
该滤镜接受以下选项:
- size, s
指定视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是
1024x512
.- rate, r
设置视频帧率。默认值是
25
.- mode
设置显示模式。 这将设置每个频率条的表示方式。
它接受以下值:
- ‘line’
- ‘bar’
- ‘dot’
默认值是
bar
.- ascale
设置振幅刻度。
它接受以下值:
- ‘lin’
线性刻度。
- ‘sqrt’
平方根刻度。
- ‘cbrt’
立方根刻度。
- ‘log’
对数刻度。
默认值是
log
.- fscale
设置频率刻度。
它接受以下值:
- ‘lin’
线性刻度。
- ‘log’
对数刻度。
- ‘rlog’
反对数刻度。
默认值是
lin
.- win_size
设置窗口大小。允许范围是从 16 到 65536。
默认值是
2048
- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hanning
.- overlap
设置窗口重叠。范围为
[0, 1]
。默认值是1
, 这意味着将选择为所选窗口函数最佳的重叠。- averaging
设置时间平均值。将其设为 0 将显示当前最大峰值。 默认值是
1
,这意味着时间平均值已禁用。- colors
指定由空格或‘|’分隔的颜色列表,这些颜色将用于 绘制通道频率。无法识别或缺失的颜色将替换为 白色。
- cmode
设置通道显示模式。
它接受以下值:
- ‘combined’
- ‘separate’
默认值是
combined
.- minamp
设置在
log
振幅缩放器中使用的最小振幅。- data
设置数据的显示模式。
它接受以下值:
- ‘magnitude’
- ‘phase’
- ‘delay’
默认值是
magnitude
.- channels
设置处理音频时要使用的通道。默认情况下处理所有通道。
39.25 显示空间
将立体声音频输入转换为视频输出,表示两个通道之间的空间关系。
该滤镜接受以下选项:
- size, s
指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是
512x512
.- win_size
设置窗口大小。允许范围是从1024到65536。默认大小是4096.
- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann’
- ‘hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hann
.- rate, r
设置输出帧率。
39.26 显示频谱
将输入音频转换为视频输出,表示音频频率谱。
该滤镜接受以下选项:
- size, s
指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是
640x512
.- slide
指定频谱在窗口中的滑动方式。
它接受以下值:
- ‘replace’
当样本到达右侧时重新从左侧开始
- ‘scroll’
样本从右向左滚动
- ‘fullframe’
仅当样本到达右侧时制作帧
- ‘rscroll’
样本从左向右滚动
- ‘lreplace’
当样本到达左侧时重新从右侧开始
默认值是
replace
.- mode
指定显示模式。
它接受以下值:
- ‘combined’
所有通道显示在同一行中
- ‘separate’
所有通道显示在单独的行中
默认值是‘combined’.
- color
指定显示颜色模式。
它接受以下值:
- ‘channel’
每个通道以单独的颜色显示
- ‘intensity’
每个通道使用相同的颜色方案显示
- ‘rainbow’
每个通道使用彩虹颜色方案显示
- ‘moreland’
每个通道使用莫尔兰颜色方案显示
- ‘nebulae’
每个通道使用星云颜色方案显示
- ‘fire’
每个通道使用火焰颜色方案显示
- ‘fiery’
每个通道使用炽热颜色方案显示
- ‘fruit’
每个通道使用水果颜色方案显示
- ‘cool’
每个通道使用冷色颜色方案显示
- ‘magma’
每个通道使用岩浆颜色方案显示
- ‘green’
每个通道使用绿色颜色方案显示
- ‘viridis’
每个通道使用维里迪斯颜色方案显示
- ‘plasma’
每个通道使用等离子颜色方案显示
- ‘cividis’
每个通道使用色盲友好颜色方案显示
- ‘terrain’
每个通道使用地形颜色方案显示
默认值是‘channel’.
- scale
指定用于计算强度颜色值的刻度。
它接受以下值:
- ‘lin’
线性
- ‘sqrt’
平方根,默认
- ‘cbrt’
立方根
- ‘log’
对数
- ‘4thrt’
四次根
- ‘5thrt’
五次根
默认值是‘sqrt’.
- fscale
指定频率刻度。
它接受以下值:
- ‘lin’
线性
- ‘log’
对数
默认值是‘lin’.
- saturation
设置显示颜色的饱和度修饰符。负值提供 替代颜色方案。
0
没有饱和度。 饱和度必须在 [-10.0, 10.0] 范围内。 默认值是1
.- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann’
- ‘hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hann
.- orientation
设置时间轴与频率轴的方向。可以是
vertical
或horizontal
。默认是vertical
.- overlap
设置窗口重叠比例。默认值是
0
。 当值为1
时,重叠设置为目前使用的特定 窗口函数的推荐大小。- gain
设置用于计算强度颜色值的刻度增益。 默认值是
1
.- data
设置显示哪些数据。可以是
magnitude
,默认或phase
, 或者展开的相位:uphase
.- rotation
设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是
0
.- start
设置显示频谱图的起始频率。默认是
0
.- stop
设置显示频谱图的结束频率。默认是
0
.- fps
设置帧速率上限。默认是
auto
,无限制。- legend
绘制时间和频率轴及图例。默认是未启用。
- drange
设置用于计算强度颜色值的动态范围。默认是 120 dBFS。 允许范围是从 10 到 200。
- limit
设置输入音频样本音量的上限 (dBFS)。默认是 0 dBFS。 允许范围是从 -100 到 100。
- opacity
在使用带有 alpha 分量的像素格式输出时设置不透明度强度。
用法与 showwaves 滤镜非常相似;请参阅该章节中的示例。
39.26.1 示例
- 使用对数颜色刻度的大窗口示例:
showspectrum=s=1280x480:scale=log
- 为每个通道使用彩色和滑动频谱的完整示例
ffplay
:ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1]; [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
39.27 显示频谱图
将输入音频转换为包含音频频谱的单帧视频。
该滤镜接受以下选项:
- size, s
指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是
4096x2048
.- mode
指定显示模式。
它接受以下值:
- ‘combined’
所有通道显示在同一行中
- ‘separate’
所有通道显示在不同的行中
默认值是‘combined’.
- color
指定显示颜色模式。
它接受以下值:
- ‘channel’
每个通道使用单独的颜色显示
- ‘intensity’
每个通道使用相同的颜色方案显示
- ‘rainbow’
每个通道使用彩虹颜色方案显示
- ‘moreland’
每个通道使用莫尔兰颜色方案显示
- ‘nebulae’
每个通道使用星云颜色方案显示
- ‘fire’
每个通道使用火焰颜色方案显示
- ‘fiery’
每个通道使用炽热颜色方案显示
- ‘fruit’
每个通道使用水果颜色方案显示
- ‘cool’
每个通道使用冷色颜色方案显示
- ‘magma’
每个通道使用岩浆颜色方案显示
- ‘green’
每个通道使用绿色颜色方案显示
- ‘viridis’
每个通道使用维里迪斯颜色方案显示
- ‘plasma’
每个通道使用等离子颜色方案显示
- ‘cividis’
每个通道使用色盲友好颜色方案显示
- ‘terrain’
每个通道使用地形颜色方案显示
默认值是‘intensity’.
- scale
指定用于计算强度颜色值的刻度。
它接受以下值:
- ‘lin’
线性
- ‘sqrt’
平方根,默认
- ‘cbrt’
立方根
- ‘log’
对数
- ‘4thrt’
四次根
- ‘5thrt’
五次根
默认值是‘log’.
- fscale
指定频率刻度。
它接受以下值:
- ‘lin’
线性
- ‘log’
对数
默认值是‘lin’.
- saturation
设置显示颜色的饱和度修饰符。负值提供 替代颜色方案。
0
没有饱和度。 饱和度必须在 [-10.0, 10.0] 范围内。 默认值是1
.- win_func
设置窗口函数。
它接受以下值:
- ‘rect’
- ‘bartlett’
- ‘hann’
- ‘hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
默认值是
hann
.- orientation
设置时间轴与频率轴的方向。可以是
vertical
或horizontal
。默认是vertical
.- gain
设置用于计算强度颜色值的刻度增益。 默认值是
1
.- legend
绘制时间和频率轴及图例。默认是已启用。
- rotation
设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是
0
.- start
设置显示频谱图的起始频率。默认是
0
.- stop
设置显示频谱图的结束频率。默认是
0
.- drange
设置用于计算强度颜色值的动态范围。默认是 120 dBFS。 允许范围是从 10 到 200。
- limit
设置输入音频样本音量的上限 (dBFS)。默认是 0 dBFS。 允许范围是从 -100 到 100。
- opacity
在使用带有 alpha 分量的像素格式输出时设置不透明度强度。
39.27.1 示例
- 提取整个音频曲目的音频频谱
到 1024x1024 图片中
ffmpeg
:ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
39.28 显示音量
将输入音频的音量转换为视频输出。
该滤镜接受以下选项:
- rate, r
设置视频帧率。
- b
设置边框宽度,允许范围是 [0, 5]。默认值是 1。
- w
设置通道宽度,允许范围是 [80, 8192]。默认值是 400。
- h
设置通道高度,允许范围是 [1, 900]。默认值是 20。
- f
设置渐隐效果,允许范围是 [0, 1]。默认值是 0.95。
- c
设置音量颜色表达式。
表达式可以使用以下变量:
- VOLUME
当前通道的最大音量 (dB)。
- PEAK
当前峰值。
- CHANNEL
当前通道号,从 0 开始。
- t
如果设置,则显示通道名称。默认启用。
- v
如果设置,则显示音量值。默认启用。
- o
设置方向,可以是水平:
h
或垂直:v
, 默认是h
.- s
设置步长大小,允许范围是 [0, 5]。默认值是 0,这意味着 步长被禁用。
- p
设置背景不透明度,允许范围是 [0, 1]。默认值是 0。
- m
设置测量模式,可以是峰值:
p
或均方根:r
, 默认是p
.- ds
设置显示刻度,可以是线性:
lin
或对数:log
, 默认是lin
.- dm
以秒为单位。 如果设置为 > 0,则显示前几秒内的最大音量线。 默认是禁用。
0.
- dmc
最大线的颜色。使用时
dm
选项设置为 > 0。 默认是:orange
39.29 显示波形
将输入音频转换为代表音频波形的视频输出。
该滤镜接受以下选项:
- size, s
指定输出视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分,在ffmpeg-utils手册中。 默认值为
600x240
.- mode
设置显示模式。
可用值有:
- ‘point’
为每个样本绘制一个点。
- ‘line’
为每个样本绘制一条垂直线。
- ‘p2p’
为每个样本绘制一个点,并在它们之间绘制线。
- ‘cline’
为每个样本绘制一条居中的垂直线。
默认值为
point
.- n
设置打印在同一列上的样本数量。较大的值会降低帧率。必须为正整数。只有当rate未明确指定时才能设置此选项。
- rate, r
设置(大约的)输出帧率。这是通过设置选项n来完成的。默认值为"25"。
- split_channels
设置是否单独绘制通道或重叠绘制通道。默认值为0。
- colors
设置用’|’分隔的颜色,将用于绘制每个通道。
- scale
设置振幅比例。
可用值有:
- ‘lin’
线性。
- ‘log’
对数。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
默认值为线性。
- draw
设置绘图模式。这主要用于高n.
时设置。
- ‘scale’
为每个绘制的样本缩放像素值。
- ‘full’
直接绘制每个样本。
默认值为
scale
.
39.29.1 示例
- 同时输出输入文件音频及对应的视频表示:
amovie=a.mp3,asplit[out0],showwaves[out1]
- 创建合成信号并用showwaves显示,强制以每秒30帧的帧率:
aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
39.30 showwavespic
将输入音频转换为单个视频帧,表示样本波形。
滤镜接受以下选项:
- size, s
指定输出视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分,在ffmpeg-utils手册中。 默认值为
600x240
.- split_channels
设置是否单独绘制通道或重叠绘制通道。默认值为0。
- colors
设置用’|’分隔的颜色,将用于绘制每个通道。
- scale
设置振幅比例。
可用值有:
- ‘lin’
线性。
- ‘log’
对数。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
默认值为线性。
- draw
设置绘图模式。
可用值有:
- ‘scale’
为每个绘制的样本缩放像素值。
- ‘full’
直接绘制每个样本。
默认值为
scale
.- filter
设置过滤模式。
可用值有:
- ‘average’
对每个绘制样本使用平均样本值。
- ‘peak’
对每个绘制样本使用峰值样本值。
默认值为
average
.
39.30.1 示例
- 从整个音轨提取频道分裂表示的波形到一个1024x800的图片中
ffmpeg
:ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
39.31 sidedata, asidedata
删除帧副数据,或基于副数据选择帧。
此滤镜接受以下选项:
- mode
设置滤镜的操作模式。
可以是以下之一:
- ‘select’
选择每一帧具有
type
.- ‘delete’
删除
type
的副数据。如果type
未设置,则删除帧中的所有副数据。
- type
设置所有模式使用的副数据类型。必须为
select
模式设置。有关帧副数据类型的列表,请参阅AVFrameSideDataType
枚举 在libavutil/frame.h中。例如,要选择AV_FRAME_DATA_PANSCAN
副数据,您必须指定PANSCAN
.
39.32 spectrumsynth
从两个输入视频频谱中合成音频,第一个输入流表示跨时间的幅值,第二个表示跨时间的相位。 滤镜将从视频中展示的频域转换回音频输出展示的时间域。
该滤镜主要用于反向处理showspectrum滤镜输出,但也可以从其他频谱图合成声音。
但在这种情况下,如果没有可用的相位数据,结果会很差,因为没有相位数据时需要重新生成相位,通常只是从随机噪声中重新生成。
要获得最佳结果,请仅使用灰度输出(channel
颜色模式在showspectrum滤镜中)和log
幅值视频的比例,以及lin
相位视频的比例。要生成相位,对于第二个视频,使用data
选项。输入视频通常应该使用fullframe
幻灯片模式,因为这样可以节省解码视频所需的资源。
此滤镜接受以下选项:
- sample_rate
指定输出音频的采样率,生成频谱所用音频的采样率可能不同。
- channels
设置在输入视频频谱中表示的通道数量。
- scale
设置生成幅值输入频谱时使用的比例。 可以是
lin
或log
。默认值为log
.- slide
设置生成输入频谱时使用的幻灯片。 可以是
replace
,scroll
,fullframe
或rscroll
。 默认值为fullframe
.- win_func
设置用于重新合成的窗口函数。
- overlap
设置窗口重叠。在范围内
[0, 1]
。默认值为1
,这意味着将选择适合所选窗口函数的最佳重叠。- orientation
设置输入视频的方向。可以是
vertical
或horizontal
。 默认值为vertical
.
39.32.1 示例
- 首先从音频创建幅值和相位视频,假设音频为立体声,采样率为44100,然后用spectrumsynth将视频重新合成回音频:
ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
39.33 split, asplit
将输入分割成多个相同的输出。
asplit
用于音频输入,split
用于视频。
滤镜接受一个参数,该参数指定输出的数量。如果未指定,则默认为2。
39.33.1 示例
- 从同一输入创建两个单独输出:
[in] split [out0][out1]
- 要创建3个或更多输出,您需要指定输出的数量,例如:
[in] asplit=3 [out0][out1][out2]
- 从同一输入创建两个单独输出,一个裁剪,一个填充:
[in] split [splitout1][splitout2]; [splitout1] crop=100:100:0:0 [cropout]; [splitout2] pad=200:200:100:100 [padout];
- 用
ffmpeg
:ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
创建输入音频的5份副本。
通过libzmq客户端接收发送的命令,并将其转发到过滤器图中的过滤器。
zmq
和azmq
作为穿透式滤镜工作。zmq
必须插入两个视频滤镜之间,azmq
插入两个音频滤镜之间。两者都能够向任何类型的滤镜发送消息。
要启用这些滤镜,您需要安装libzmq库和头文件,并用--enable-libzmq
.
配置FFmpeg。有关libzmq的更多信息,请参阅:
The zmq
和azmq
滤镜充当libzmq服务器,通过定义的网络接口接收消息bind_address(或缩写为"b")选项。
此选项的默认值为tcp://localhost:5555。您可能需要根据需要更改此值,但请不要忘了转义任何
’:`符号(参见过滤器图转义).
接收到的消息必须采用以下形式:
目标 命令 [参数]
目标指定命令的目标,通常是过滤器类的名称或特定过滤器实例名称。默认 过滤器实例名称使用模式‘Parsed_<filter_name>_<index>’, 但您可以通过使用‘filter_name@id’语法来覆盖此模式(参见过滤器图语法).
命令指定目标过滤器的命令名称。
参数是可选的,用于指定给定命令.
的可选参数列表。
错误代码 错误原因 消息
消息是可选的。
39.34.1 示例
请参阅tools/zmqsend以获取zmq客户端示例,此客户端可用于发送这些滤镜处理的命令。
考虑以下由ffplay
生成的过滤器图。
在此示例中,最后的叠加过滤器具有实例名称。所有其他过滤器将具有默认实例名称。
ffplay -dumpgraph 1 -f lavfi " color=s=100x100:c=red [l]; color=s=100x100:c=blue [r]; nullsrc=s=200x100, zmq [bg]; [bg][l] overlay [bg+l]; [bg+l][r] overlay@my=x=100 "
要更改视频左侧的颜色,可以使用以下命令:
echo Parsed_color_0 c yellow | tools/zmqsend
要更改右侧的内容:
echo Parsed_color_1 c pink | tools/zmqsend
要更改右侧的位置:
echo overlay@my x 150 | tools/zmqsend
40 多媒体来源
以下是当前可用的多媒体来源的描述。
40.1 amovie
这与movie来源相同,只是它默认选择音频流。
40.2 avsynctest
生成音频/视频同步测试。
生成的流会周期性显示闪烁的视频帧,并在音频中发出哔哔声。 用于检查音频/视频不同步问题。
它接受以下选项:
- size, s
设置输出视频尺寸。默认值为
hd720
.- framerate, fr
设置输出视频帧率。默认值为
30
.- samplerate, sr
设置输出音频采样率。默认值为
44100
.- amplitude, a
设置输出音频哔哔声的振幅。默认值为
0.7
.- period, p
设置输出音频哔哔声的周期(以秒计)。默认值为
3
.- delay, dl
设置输出视频闪烁延迟(以帧数计)。默认值为
0
.- cycle, c
启用视频延迟循环,默认情况下禁用。
- duration, d
设置流输出持续时间。默认为无限制。
- fg, bg, ag
设置前景色/背景色/附加色。
40.2.1 命令
此来源支持一些上述选项作为命令.
40.3 movie
从电影容器读取音频和/或视频流。
它接受以下参数:
- filename
要读取的资源名称(不一定是文件;它也可以是通过某种协议访问的设备或流)。
- format_name, f
指定假定的电影格式,可以是容器的名称或输入设备名称。如果未指定, 则格式将从movie_name推断或通过探测来确定。
- seek_point, sp
指定以秒为单位的查找点。从此查找点开始输出帧。此参数使用
av_strtod
评估,因此数值可以后缀加上IS后缀。默认值是"0"。- streams, s
指定要读取的流。可以用’+’分隔指定多个流。源 将有许多输出,顺序相同。语法在(ffmpeg)"流说明" 部分,并在ffmpeg手册中解释。两个特别的名称"dv"和"da"分别指定默认(最适合的) 视频和音频流。默认是"dv",如果过滤器称为"amovie",则为"da"。
- stream_index, si
指定要读取的视频流的索引。如果值为-1, 将会自动选择最适合的视频流。默认值为"-1"。 已弃用。如果过滤器名为"amovie",它将选择音频而非视频。
- loop
指定按顺序读取流的次数。 如果值为0,则无限循环读取流。 默认值是"1"。
请注意,当电影循环播放时,源时间戳不会 更改,因此将生成非单调递增时间戳。
- discontinuity
指定帧之间的时间差,以确定是否为时间戳不连续, 通过调整后续时间戳来删除。
- dec_threads
指定解码时的线程数。
- format_opts
为打开的文件指定格式选项。格式选项可以用冒号分隔的键=值对的列表指定。以下示例显示了如何添加协议白名单和协议黑名单选项:
ffplay -f lavfi "movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"
它允许在滤镜图主输入之外覆盖第二个视频,如此图所示:
input -----------> deltapts0 --> overlay --> output ^ | movie --> scale--> deltapts1 -------+
40.3.1 示例
- 跳过in.avi文件开头的3.2秒,并将其叠加到名为"in"的输入之上:
movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out]
- 从video4linux2设备读取,并将其叠加在名为"in"的输入之上:
movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over]; [in] setpts=PTS-STARTPTS [main]; [main][over] overlay=16:16 [out]
- 从dvd.vob读取第一个视频流以及ID为0x81的音频流;视频连接到名为"video"的pad,音频连接到名为"audio"的pad:
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
40.3.2 命令
电影和amovie都支持以下命令:
- seek
使用"av_seek_frame"进行搜索。 语法是:seek流索引|时间戳|标志
- 流索引: 如果流索引是 -1,将选择默认流,并且时间戳会自动从 AV_TIME_BASE 单位转换为流特定的 time_base。
- 时间戳: 时间戳以 AVStream.time_base 单位表示,或者在没有指定流的情况下,以 AV_TIME_BASE 单位表示。
- 标志: 选择方向和搜索模式的标志。
- get_duration
获取电影时长,以 AV_TIME_BASE 单位表示。
41 外部库
FFmpeg 可以与多种外部库结合使用,以增加对更多格式的支持。这些库默认不使用,必须通过传递适当的标志显式请求使用。./configure
.
41.1 Alliance for Open Media (AOM)
FFmpeg 可以使用 AOM 库进行 AV1 的解码与编码。
访问http://aomedia.org/并按照指示安装库。然后传递--enable-libaom
到 configure 启用它。
41.2 AMD AMF/VCE
FFmpeg 可以使用 AMD 高级多媒体框架库,利用视频编码引擎 (VCE) 加速 H.264 和 HEVC(仅限 Windows)编码。
要启用支持,您必须从https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git.
创建一个AMF/
目录在系统 include 路径中。将AMF/amf/public/include/
的内容复制到该目录。然后用以下命令配置 FFmpeg:--enable-amf
.
amf 编码器初始化顺序如下: 1) 尝试通过 dx11 初始化(仅限 Windows) 2) 尝试通过 dx9 初始化(仅限 Windows) 3) 尝试通过 vulkan 初始化
在 Linux 上使用 h.264 (AMD VCE) 编码器需要 amdgru-pro版本 19.20+ 和 amf-amdgpu-pro 包(amdgru-pro 包含但不会自动安装)。
此驱动程序可以通过官方 AMD 驱动程序档案中的 amdgpu-pro-install 脚本安装。
41.3 AviSynth
FFmpeg 可以将 AviSynth 脚本作为输入读取。要启用支持,在安装--enable-avisynth
AviSynth+ 提供的头文件后,传递来配置。AviSynth+ 可以配置为仅安装头文件,通过正常的基于 CMake 的构建系统传递-DHEADERS_ONLY:bool=on
,或使用提供的GNUmakefile
.
对于 Windows,支持的 AviSynth 变体是AviSynth 2.6 RC1 或更高版本适用于 32 位构建,以及AviSynth+ r1718 或更高版本适用于 32 位和 64 位构建。
对于 Linux、macOS 和 BSD,唯一支持的 AviSynth 变体是AviSynth+,从 3.5 版本开始。
2016 年,AviSynth+ 添加了对使用 GCC 构建的支持。但是,由于 Windows 调用约定的特殊性,32 位 GCC 构建的 AviSynth+ 与典型 32 位 FFmpeg 构建不兼容。
默认情况下,FFmpeg 假定与 32 位 MSVC 构建的 AviSynth+ 兼容,因为这是最广泛使用和根深蒂固的构建配置。用户可以通过传递-DAVSC_WIN32_GCC32
来覆盖此行为--extra-cflags
在配置 FFmpeg 时。
64 位构建的 FFmpeg 不受影响,可以使用 MSVC 或 GCC 构建的 AviSynth+,无需任何特殊标志。
AviSynth(+) 是动态加载的。分发者可以通过设置--enable-avisynth
构建 FFmpeg,这样即使最终用户未安装 AviSynth,二进制文件也能正常工作。如果/当最终用户希望使用 AviSynth 脚本时,他们可以安装 AviSynth(+) 并让 FFmpeg 找到并使用它以打开脚本。
41.4 Chromaprint
FFmpeg 可以使用 Chromaprint 库生成音频指纹。
传递--enable-chromaprint
到 configure 启用它。参见https://acoustid.org/chromaprint.
41.5 codec2
FFmpeg 可以使用 codec2 库进行 codec2 的解码与编码。 目前还没有原生解码器,因此解码必须使用 libcodec2。
访问http://freedv.org/,下载“Codec 2 源代码档案”。
使用 CMake 构建并安装。Debian 用户可以改为安装 libcodec2-dev 软件包。
安装完 libcodec2 后,可以传递--enable-libcodec2
到 configure 来启用它。
使用 codec2 最简单的方法是使用 .c2 文件,因为它们包含解码所需的模式信息。
要编码这样的文件,请使用 .c2 文件扩展名并向 libcodec2 编码器提供 -mode 选项:ffmpeg -i input.wav -mode 700C output.c2
。
播放非常简单,例如ffplay output.c2
。
有关支持模式的列表,运行ffmpeg -h encoder=libcodec2
。
也支持原始 codec2 文件。
为了理解它们,使用的模式需要作为格式选项指定:ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav
.
41.6 dav1d
FFmpeg 可以使用 dav1d 库进行 AV1 视频解码。
访问https://code.videolan.org/videolan/dav1d并按照指示安装库。然后传递--enable-libdav1d
到 configure 来启用它。
41.7 davs2
FFmpeg 可以使用 davs2 库进行 AVS2-P2/IEEE1857.4 视频解码。
访问https://github.com/pkuvcl/davs2并按照指示安装库。然后传递--enable-libdavs2
到 configure 来启用它。
libdavs2 遵循 GNU 公共许可证第 2 版或更高版本 (参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详情),因此您必须将 FFmpeg 的许可证升级到 GPL 才能使用它。
41.8 uavs3d
FFmpeg 可以使用 uavs3d 库进行 AVS3-P2/IEEE1857.10 视频解码。
访问https://github.com/uavs3/uavs3d并按照指示安装库。然后传递--enable-libuavs3d
到 configure 来启用它。
41.9 游戏音乐仿真
FFmpeg 可以使用 Game Music Emu 库读取受支持的视频游戏音乐文件格式中的音频。
传递--enable-libgme
到 configure 来启用它。更多信息见https://bitbucket.org/mpyne/game-music-emu/overview.
41.10 英特尔 QuickSync 视频
FFmpeg 可以使用英特尔 QuickSync 视频 (QSV) 进行多个编解码器的加速解码和编码。
要使用 QSV,需将 FFmpeg 链接到libmfx
分发程序,它加载实际的解码库。
分发程序是开源的,可从https://github.com/lu-zero/mfx_dispatch.git下载。FFmpeg 需要配置为启用--enable-libmfx
选项,同时pkg-config
需要能够定位分发程序的.pc
文件。
41.11 Kvazaar
FFmpeg 可以使用 Kvazaar 库进行 HEVC 编码。
访问https://github.com/ultravideo/kvazaar并按照安装库的指示进行操作。然后传递--enable-libkvazaar
到 configure 来启用它。
41.12 LAME
FFmpeg 可以使用 LAME 库进行 MP3 编码。
访问http://lame.sourceforge.net/并按照安装库的指示进行操作。
然后传递--enable-libmp3lame
到 configure 来启用它。
41.13 LCEVCdec
FFmpeg 可以使用 liblcevc_dec 库对支持的比特流进行 LCEVC 增强层解码。
访问https://github.com/v-novaltd/LCEVCdec并按照安装库的指示进行操作。然后传递--enable-liblcevc-dec
到 configure 来启用它。
LCEVCdec 使用 BSD-3-Clause-Clear 许可证。
41.14 libilbc
iLBC 是一种窄带语音编解码器,由 Google 作为 WebRTC 项目的一部分免费提供。libilbc 是 iLBC 编解码器的一个便于打包的版本。FFmpeg 可以使用 libilbc 库进行 iLBC 的解码和编码。
访问https://github.com/TimothyGu/libilbc并按照安装库的指示工作。然后传递--enable-libilbc
到 configure 来启用它。
41.15 libjxl
JPEG XL 是一种图像格式,旨在全面替代传统 JPEG 并延长其寿命。参见https://jpegxl.info/了解更多信息,并参见https://github.com/libjxl/libjxl了解库的源代码。您可以传递--enable-libjxl
到 configure 来启用 libjxl 包装器。
41.16 libvpx
FFmpeg 可以使用 libvpx 库对 VP8/VP9 进行解码和编码。
访问http://www.webmproject.org/并按照安装库的要求工作。然后传递--enable-libvpx
到 configure 来启用它。
41.17 ModPlug
FFmpeg 可以使用这个来自 Modplug-XMMS 的库读取从 MOD 类音乐文件。参见https://github.com/Konstanty/libmodplug。传递--enable-libmodplug
到 configure 来启用它。
41.18 OpenCORE,VisualOn 和 Fraunhofer 库
从 Google Android 源代码中衍生,OpenCore、VisualOn 和 Fraunhofer 库为许多音频编解码器提供了编码器。
OpenCORE 和 VisualOn 库使用 Apache 许可证 2.0
(参见http://www.apache.org/licenses/LICENSE-2.0了解详情),它与 LGPL 版本 2.1 和 GPL 版本 2 不兼容。您必须通过传递--enable-version3
到 configure 将 FFmpeg 的许可证升级至 LGPL 版本 3(或者如果启用了 GPL 组件,则升级至 GPL 版本 3)以使用它。
Fraunhofer AAC 库的许可证与 GPL 不兼容。
因此,对于 GPL 构建,您必须传递--enable-nonfree
到 configure 才能使用它。据我们所知,它与 LGPL 兼容。
41.18.1 OpenCORE AMR
FFmpeg 可以使用 OpenCORE 库进行 AMR-NB 解码/编码和 AMR-WB 解码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明操作。
然后传递--enable-libopencore-amrnb
和/或--enable-libopencore-amrwb
到 configure 来启用它们。
41.18.2 VisualOn AMR-WB 编码库
FFmpeg 可以使用 VisualOn AMR-WBenc 库进行 AMR-WB 编码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明进行操作。
然后传递--enable-libvo-amrwbenc
到 configure 来启用它。
41.18.3 Fraunhofer AAC 库
FFmpeg 可以使用 Fraunhofer AAC 库进行 AAC 解码和编码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的指示操作。
然后传递--enable-libfdk-aac
到 configure 来启用它。
41.18.4 LC3 库
FFmpeg 可以使用 Google LC3 库进行 LC3 解码和编码。
访问https://github.com/google/liblc3/并按照安装库的说明进行操作。
然后传递--enable-liblc3
到 configure 来启用它。
41.19 OpenH264
FFmpeg 可以使用 OpenH264 库进行 H.264 解码和编码。
访问http://www.openh264.org/并按照安装库的说明进行操作。然后传递--enable-libopenh264
到 configure 来启用它。
对于解码,与 libavcodec 的内置解码器相比,该库受到更多限制;目前,该库缺少 B 帧解码及某些主/高配置文件特性的支持。(它目前仅支持约束基线配置文件和 CABAC。)使用它主要适用于测试以及利用 Cisco 的专利组合许可证(http://www.openh264.org/BINARY_LICENSE.txt).
41.20 OpenJPEG
FFmpeg 可以使用 OpenJPEG 库进行 J2K 视频的解码/编码。访问http://www.openjpeg.org/获取这些库并按照安装说明操作。要在 FFmpeg 中启用使用 OpenJPEG,传递--enable-libopenjpeg
给./configure.
41.21 rav1e
FFmpeg 可以通过其 C 绑定使用 rav1e(Rust AV1 编码器)编码视频。
访问https://github.com/xiph/rav1e/并按照说明构建 C 库。要在 FFmpeg 中启用使用 rav1e,传递--enable-librav1e
给./configure.
41.22 SVT-AV1
FFmpeg 可以使用用于 AV1 编码的可扩展视频技术库。
转到https://gitlab.com/AOMediaCodec/SVT-AV1/并按照安装该库的说明进行操作。然后传递--enable-libsvtav1
为配置启用它。
41.23 TwoLAME
FFmpeg 可以使用 TwoLAME 库进行 MP2 编码。
转到http://www.twolame.org/并按照安装该库的说明进行操作。然后传递--enable-libtwolame
为配置启用它。
41.24 VapourSynth
FFmpeg 可以作为输入读 VapourSynth 脚本。若要启用支持,请传递--enable-vapoursynth
为配置。通过检测 Vapoursynthpkg-config
支持版本 42 或更高版本。参见http://www.vapoursynth.com/.
由于安全问题,Vapoursynth 脚本不会自动检测,因此需要强制指定输入格式。对于 ff* CLI 工具,添加-f vapoursynth
在输入之前。-i yourscript.vpy
.
41.25 x264
FFmpeg 可以使用 x264 库进行 H.264 编码。
转到http://www.videolan.org/developers/x264.html并按照安装该库的说明进行操作。然后传递--enable-libx264
为配置启用它。
x264 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。
41.26 x265
FFmpeg 可以使用 x265 库进行 HEVC 编码。
转到http://x265.org/developers.html并按照安装该库的说明进行操作。然后传递--enable-libx265
为配置启用它。
x265 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。
41.27 xavs
FFmpeg 可以使用 xavs 库进行 AVS 编码。
转到http://xavs.sf.net/并按照安装该库的说明进行操作。然后传递--enable-libxavs
为配置启用它。
41.28 xavs2
FFmpeg 可以使用 xavs2 库进行 AVS2-P2/IEEE1857.4 视频编码。
转到https://github.com/pkuvcl/xavs2并按照安装该库的说明进行操作。然后传递--enable-libxavs2
为配置启用它。
libxavs2 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。
41.29 eXtra-fast Essential Video Encoder (XEVE)
FFmpeg 可以使用 XEVE 库进行 EVC 视频编码。
转到https://github.com/mpeg5/xeve并按照安装 XEVE 库的说明进行操作。然后传递--enable-libxeve
为配置启用它。
41.30 eXtra-fast Essential Video Decoder (XEVD)
FFmpeg 可以使用 XEVD 库进行 EVC 视频解码。
转到https://github.com/mpeg5/xevd并按照安装 XEVD 库的说明进行操作。然后传递--enable-libxevd
为配置启用它。
41.31 ZVBI
ZVBI 是一个 VBI 解码库,FFmpeg 可以用它解码 DVB 图文电视页面和 DVB 图文电视字幕。
转到http://sourceforge.net/projects/zapping/并按照安装该库的说明进行操作。然后传递--enable-libzvbi
为配置启用它。
42 支持的文件格式、编解码器或功能
您可以使用-formats
和-codecs
选项列出详细列表。
42.1 文件格式
FFmpeg 通过以下库支持的文件格式有:libavformat
库:
名称 | 编码 | 解码 | 备注 |
3dostr | X | ||
4xm | X | 4X 技术格式,使用于一些游戏。 | |
8088flex TMV | X | ||
AAX | X | Audible 增强音频格式,用于有声书。 | |
AA | X | Audible 格式 2、3 和 4,用于有声书。 | |
ACT Voice | X | 包含 G.729 音频 | |
Adobe Filmstrip | X | X | |
音频 IFF (AIFF) | X | X | |
American Laser Games MM | X | QuickTimeium,提高游戏性能。 | |
3GPP AMR | X | X | |
Amazing Studio Packed Animation File | X | Multimedia format used in game Heart Of Darkness. | |
Apple HTTP Live Streaming | X | ||
Artworx Data Format | X | ||
Interplay ACM | X | Audio only format used in some Interplay games. | |
ADP | X | Audio format used on the Nintendo Gamecube. | |
AFC | X | Audio format used on the Nintendo Gamecube. | |
ADS/SS2 | X | Audio format used on the PS2. | |
APNG | X | X | |
ASF | X | X | Advanced / Active Streaming Format. |
AST | X | X | Audio format used on the Nintendo Wii. |
AVI | X | X | |
AviSynth | X | ||
AVR | X | Audio format used on Mac. | |
AVS | X | Multimedia format used by the Creature Shock game. | |
Beam Software SIFF | X | Audio and video format used in some games by Beam Software. | |
Bethesda Softworks VID | X | Used in some games from Bethesda Softworks. | |
Binary text | X | ||
Bink | X | Multimedia format used by many games. | |
Bink Audio | X | Audio only multimedia format used by some games. | |
Bitmap Brothers JV | X | Used in Z and Z95 games. | |
BRP | X | Argonaut Games format. | |
Brute Force & Ignorance | X | Used in the game Flash Traffic: City of Angels. | |
BFSTM | X | Audio format used on the Nintendo WiiU (based on BRSTM). | |
BRSTM | X | Audio format used on the Nintendo Wii. | |
BW64 | X | Broadcast Wave 64bit. | |
BWF | X | X | |
codec2 (raw) | X | X | Must be given -mode format option to decode correctly. |
codec2 (.c2 files) | X | X | Contains header with version and mode info, simplifying playback. |
CRI ADX | X | X | Audio-only format used in console video games. |
CRI AIX | X | ||
CRI HCA | X | Audio-only format used in console video games. | |
Discworld II BMV | X | ||
Interplay C93 | X | Used in the game Cyberia from Interplay. | |
Delphine Software International CIN | X | Multimedia format used by Delphine Software games. | |
Digital Speech Standard (DSS) | X | ||
CD+G | X | Video format used by CD+G karaoke disks | |
Phantom Cine | X | ||
Commodore CDXL | X | Amiga CD video format | |
Core Audio Format | X | X | Apple Core Audio Format |
CRC testing format | X | ||
Creative Voice | X | X | Created for the Sound Blaster Pro. |
CRYO APC | X | Audio format used in some games by CRYO Interactive Entertainment. | |
D-Cinema audio | X | X | |
Deluxe Paint Animation | X | ||
DCSTR | X | ||
DFA | X | This format is used in Chronomaster game | |
DirectDraw Surface | X | ||
DSD Stream File (DSF) | X | ||
DV video | X | X | |
DXA | X | This format is used in the non-Windows version of the Feeble Files game and different game cutscenes repacked for use with ScummVM. | |
Electronic Arts cdata | X | ||
Electronic Arts Multimedia | X | Used in various EA games; files have extensions like WVE and UV2. | |
Ensoniq Paris Audio File | X | ||
FFM (FFserver live feed) | X | X | |
Flash (SWF) | X | X | |
Flash 9 (AVM2) | X | X | Only embedded audio is decoded. |
FLI/FLC/FLX animation | X | .fli/.flc files | |
Flash Video (FLV) | X | X | Macromedia Flash video files |
framecrc testing format | X | ||
FunCom ISS | X | Audio format used in various games from FunCom like The Longest Journey. | |
G.723.1 | X | X | |
G.726 | X | Both left- and right-justified. | |
G.729 BIT | X | X | |
G.729 raw | X | ||
GENH | X | Audio format for various games. | |
GIF Animation | X | X | |
GXF | X | X | General eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers. |
HNM | X | Only version 4 supported, used in some games from Cryo Interactive | |
iCEDraw File | X | ||
ICO | X | X | Microsoft Windows ICO |
id Quake II CIN video | X | ||
id RoQ | X | X | Used in Quake III, Jedi Knight 2 and other computer games. |
IEC61937 encapsulation | X | X | |
IFF | X | Interchange File Format | |
IFV | X | A format used by some old CCTV DVRs. | |
iLBC | X | X | |
Interplay MVE | X | Format used in various Interplay computer games. | |
Iterated Systems ClearVideo | X | I-frames only | |
IV8 | X | A format generated by IndigoVision 8000 video server. | |
IVF (On2) | X | X | A format used by libvpx |
Internet Video Recording | X | ||
IRCAM | X | X | |
LAF | X | Limitless Audio Format | |
LATM | X | X | |
LMLM4 | X | Used by Linux Media Labs MPEG-4 PCI boards | |
LOAS | X | contains LATM multiplexed AAC audio | |
LRC | X | X | |
LVF | X | ||
LXF | X | VR native stream format, used by Leitch/Harris’ video servers. | |
Magic Lantern Video (MLV) | X | ||
Matroska | X | X | |
Matroska audio | X | ||
FFmpeg metadata | X | X | Metadata in text format. |
MAXIS XA | X | Used in Sim City 3000; file extension .xa. | |
MCA | X | Used in some games from Capcom; file extension .mca. | |
MD Studio | X | ||
Metal Gear Solid: The Twin Snakes | X | ||
Megalux Frame | X | Used by Megalux Ultimate Paint | |
MobiClip MODS | X | ||
MobiClip MOFLEX | X | ||
Mobotix .mxg | X | ||
Monkey’s Audio | X | ||
Motion Pixels MVI | X | ||
MOV/QuickTime/MP4 | X | X | 3GP, 3GP2, PSP, iPod variants supported |
MP2 | X | X | |
MP3 | X | X | |
MPEG-1 System | X | X | muxed audio and video, VCD format supported |
MPEG-PS (program stream) | X | X | also known as VOB file, SVCD and DVD format supported |
MPEG-TS (transport stream) | X | X | also known as DVB Transport Stream |
MPEG-4 | X | X | MPEG-4 is a variant of QuickTime. |
MSF | X | Audio format used on the PS3. | |
Mirillis FIC video | X | No cursor rendering. | |
MIDI Sample Dump Standard | X | ||
MIME multipart JPEG | X | ||
MSN TCP webcam | X | Used by MSN Messenger webcam streams. | |
MTV | X | ||
Musepack | X | ||
Musepack SV8 | X | ||
Material eXchange Format (MXF) | X | X | SMPTE 377M, used by D-Cinema, broadcast industry. |
Material eXchange Format (MXF), D-10 Mapping | X | X | SMPTE 386M, D-10/IMX Mapping. |
NC camera feed | X | NC (AVIP NC4600) camera streams | |
NIST SPeech HEader REsources | X | ||
Computerized Speech Lab NSP | X | ||
NTT TwinVQ (VQF) | X | Nippon Telegraph and Telephone Corporation TwinVQ. | |
Nullsoft Streaming Video | X | ||
NuppelVideo | X | ||
NUT | X | X | NUT Open Container Format |
Ogg | X | X | |
Playstation Portable PMP | X | ||
Portable Voice Format | X | ||
RK Audio (RKA) | X | ||
TechnoTrend PVA | X | Used by TechnoTrend DVB PCI boards. | |
QCP | X | ||
raw ADTS (AAC) | X | X | |
raw AC-3 | X | X | |
raw AMR-NB | X | ||
raw AMR-WB | X | ||
raw APAC | X | ||
raw aptX | X | X | |
raw aptX HD | X | X | |
raw Bonk | X | ||
raw Chinese AVS video | X | X | |
raw DFPWM | X | X | |
raw Dirac | X | X | |
raw DNxHD | X | X | |
raw DTS | X | X | |
raw DTS-HD | X | ||
raw E-AC-3 | X | X | |
raw EVC | X | X | |
raw FLAC | X | X | |
raw GSM | X | ||
raw H.261 | X | X | |
raw H.263 | X | X | |
raw H.264 | X | X | |
raw HEVC | X | X | |
raw Ingenient MJPEG | X | ||
raw MJPEG | X | X | |
raw MLP | X | ||
raw MPEG | X | ||
raw MPEG-1 | X | ||
raw MPEG-2 | X | ||
raw MPEG-4 | X | X | |
raw NULL | X | ||
raw video | X | X | |
raw id RoQ | X | ||
raw OBU | X | X | |
raw OSQ | X | ||
raw SBC | X | X | |
raw Shorten | X | ||
raw TAK | X | ||
raw TrueHD | X | X | |
raw VC-1 | X | X | |
raw PCM A-law | X | X | |
raw PCM mu-law | X | X | |
raw PCM Archimedes VIDC | X | X | |
raw PCM signed 8 bit | X | X | |
raw PCM signed 16 bit big-endian | X | X | |
raw PCM signed 16 bit little-endian | X | X | |
raw PCM signed 24 bit big-endian | X | X | |
raw PCM signed 24 bit little-endian | X | X | |
raw PCM signed 32 bit big-endian | X | X | |
raw PCM signed 32 bit little-endian | X | X | |
raw PCM signed 64 bit big-endian | X | X | |
raw PCM signed 64 bit little-endian | X | X | |
raw PCM unsigned 8 bit | X | X | |
raw PCM unsigned 16 bit big-endian | X | X | |
raw PCM unsigned 16 bit little-endian | X | X | |
raw PCM unsigned 24 bit big-endian | X | X | |
raw PCM unsigned 24 bit little-endian | X | X | |
raw PCM unsigned 32 bit big-endian | X | X | |
raw PCM unsigned 32 bit little-endian | X | X | |
raw PCM 16.8 floating point little-endian | X | ||
raw PCM 24.0 floating point little-endian | X | ||
raw PCM floating-point 32 bit big-endian | X | X | |
raw PCM floating-point 32 bit little-endian | X | X | |
raw PCM floating-point 64 bit big-endian | X | X | |
raw PCM floating-point 64 bit little-endian | X | X | |
RDT | X | ||
REDCODE R3D | X | File format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio. | |
RealMedia | X | X | |
Redirector | X | ||
RedSpark | X | ||
Renderware TeXture Dictionary | X | ||
Resolume DXV | X | X | Encoding is only supported for the DXT1 (Normal Quality, No Alpha) texture format. |
RF64 | X | ||
RL2 | X | Audio and video format used in some games by Entertainment Software Partners. | |
RPL/ARMovie | X | ||
Lego Mindstorms RSO | X | X | |
RSD | X | ||
RTMP | X | X | Output is performed by publishing stream to RTMP server |
RTP | X | X | |
RTSP | X | X | |
Sample Dump eXchange | X | ||
SAP | X | X | |
SBG | X | ||
SDNS | X | ||
SDP | X | ||
SER | X | ||
Digital Pictures SGA | X | ||
Sega FILM/CPK | X | X | 用于许多 Sega Saturn 主机游戏。 |
硅图电影 | X | ||
Sierra SOL | X | Sierra Online 游戏中使用的 .sol 文件。 | |
Sierra VMD | X | 用于 Sierra CD-ROM 游戏。 | |
Smacker | X | 许多游戏中使用的多媒体格式。 | |
SMJPEG | X | X | 用于某些 Loki 游戏移植版。 |
SMPTE 337M 封装 | X | ||
Smush | X | 一些 LucasArts 游戏中使用的多媒体格式。 | |
Sony OpenMG (OMA) | X | X | Sony Sonic Stage 和 Sony Vegas 中使用的音频格式。 |
Sony PlayStation STR | X | ||
Sony Wave64 (W64) | X | X | |
SoX 原生格式 | X | X | |
SUN AU 格式 | X | X | |
SUP 原始 PGS 字幕 | X | X | |
SVAG | X | 在 Konami PS2 游戏中使用的音频格式。 | |
TDSC | X | ||
文本文件 | X | ||
THP | X | 用于任天堂 GameCube。 | |
Tiertex Limited SEQ | X | Tiertex .seq 文件用于游戏 Flashback 的 DOS CD-ROM 版本。 | |
True Audio | X | X | |
VAG | X | 在许多 Sony PS2 游戏中使用的音频格式。 | |
VC-1 测试比特流 | X | X | |
Vidvox Hap | X | X | |
Vivo | X | ||
VPK | X | Sony PS 游戏中使用的音频格式。 | |
Marble WADY | X | ||
WAV | X | X | |
波形存档器 | X | ||
WavPack | X | X | |
WebM | X | X | |
Windows 电视 (WTV) | X | X | |
Wing Commander III 电影 | X | 在 Origin 的 Wing Commander III 电脑游戏中使用的多媒体格式。 | |
Westwood Studios 音频 | X | X | 在 Westwood Studios 游戏中使用的多媒体格式。 |
Westwood Studios VQA | X | 在 Westwood Studios 游戏中使用的多媒体格式。 | |
宽带单比特数据(WSD) | X | ||
WVE | X | ||
Konami XMD | X | ||
XMV | X | Xbox 游戏中使用的 Microsoft 视频容器。 | |
XVAG | X | 在 PS3 上使用的音频格式。 | |
xWMA | X | Microsoft 音频容器,用于 XAudio 2。 | |
扩展二进制文本 (XBIN) | X | ||
YUV4MPEG 管道 | X | X | |
Psygnosis YOP | X |
X
表示该列(编码/解码)的功能受支持。
42.2 图像格式
FFmpeg 可以读取和写入视频序列每帧的图像。 支持以下图像格式:
名称 | 编码 | 解码 | 说明 |
.Y.U.V | X | X | 每个分量一个原始文件 |
Alias PIX | X | X | Alias/Wavefront PIX 图像格式 |
动画 GIF | X | X | |
APNG | X | X | 动画便携式网络图形 |
BMP | X | X | Microsoft BMP 图像 |
BRender PIX | X | Argonaut BRender 3D 引擎图像格式。 | |
CRI | X | Cintel RAW | |
DPX | X | X | 数字图片交换 |
EXR | X | OpenEXR | |
FITS | X | X | 灵活图像传输系统 |
HDR | X | X | Radiance HDR RGBE 图像格式 |
IMG | X | GEM 光栅图像 | |
JPEG | X | X | 不支持渐进式 JPEG。 |
JPEG 2000 | X | X | |
JPEG-LS | X | X | |
LJPEG | X | 无损 JPEG | |
Media 100 | X | ||
MSP | X | Microsoft Paint 图像 | |
PAM | X | X | PAM 是一个支持 Alpha 的 PNM 扩展。 |
PBM | X | X | 可移植位图图像 |
PCD | X | PhotoCD | |
PCX | X | X | PC 画刷 |
PFM | X | X | 可移植浮点地图图像 |
PGM | X | X | 可移植灰度地图图像 |
PGMYUV | X | X | PGM 与 YUV 4:2:0 中的 U 和 V 分量 |
PGX | X | PGX 文件解码器 | |
PHM | X | X | 便携式半浮点地图图像 |
PIC | X | Pictor/PC 画 | |
PNG | X | X | 可移式网络图形图像 |
PPM | X | X | 可移式像素图图像 |
PSD | X | Photoshop | |
PTX | X | V.Flash PTX 格式 | |
QOI | X | X | 相当好的图像格式 |
SGI | X | X | SGI RGB 图像格式 |
Sun 光栅文件 | X | X | Sun RAS 图像格式 |
TIFF | X | X | YUV、JPEG 和某些扩展尚不支持。 |
Truevision Targa | X | X | Targa (.TGA) 图像格式 |
VBN | X | X | Vizrt 二进制图像格式 |
WBMP | X | X | 无线应用协议位图图像格式 |
WebP | E | X | WebP 图像格式,编码支持通过外部库 libwebp 实现 |
XBM | X | X | X 位图图像格式 |
XFace | X | X | X-Face 图像格式 |
XPM | X | X PixMap 图像格式 | |
XWD | X | X | X 窗口转储图像格式 |
X
means that the feature in that column (encoding / decoding) is supported.
E
means that support is provided through an external library.
42.3 Video Codecs
Name | Encoding | Decoding | Comments |
4X Movie | X | Used in certain computer games. | |
8088flex TMV | X | ||
A64 multicolor | X | Creates video suitable to be played on a commodore 64 (multicolor mode). | |
Amazing Studio PAF Video | X | ||
American Laser Games MM | X | Used in games like Mad Dog McCree. | |
Amuse Graphics Movie | X | ||
AMV Video | X | X | Used in Chinese MP3 players. |
ANSI/ASCII art | X | ||
Apple Intermediate Codec | X | ||
Apple MJPEG-B | X | ||
Apple Pixlet | X | ||
Apple ProRes | X | X | fourcc: apch,apcn,apcs,apco,ap4h,ap4x |
Apple QuickDraw | X | fourcc: qdrw | |
Argonaut Video | X | Used in some Argonaut games. | |
Asus v1 | X | X | fourcc: ASV1 |
Asus v2 | X | X | fourcc: ASV2 |
ATI VCR1 | X | fourcc: VCR1 | |
ATI VCR2 | X | fourcc: VCR2 | |
Auravision Aura | X | ||
Auravision Aura 2 | X | ||
Autodesk Animator Flic video | X | ||
Autodesk RLE | X | fourcc: AASC | |
AV1 | E | E | Supported through external libraries libaom, libdav1d, librav1e and libsvtav1 |
Avid 1:1 10-bit RGB Packer | X | X | fourcc: AVrp |
AVS (Audio Video Standard) video | X | Video encoding used by the Creature Shock game. | |
AVS2-P2/IEEE1857.4 | E | E | Supported through external libraries libxavs2 and libdavs2 |
AVS3-P2/IEEE1857.10 | E | Supported through external library libuavs3d | |
AYUV | X | X | Microsoft uncompressed packed 4:4:4:4 |
Beam Software VB | X | ||
Bethesda VID video | X | Used in some games from Bethesda Softworks. | |
Bink Video | X | ||
BitJazz SheerVideo | X | ||
Bitmap Brothers JV video | X | ||
y41p Brooktree uncompressed 4:1:1 12-bit | X | X | |
Brooktree ProSumer Video | X | fourcc: BT20 | |
Brute Force & Ignorance | X | Used in the game Flash Traffic: City of Angels. | |
C93 video | X | Codec used in Cyberia game. | |
CamStudio | X | fourcc: CSCD | |
CD+G | X | Video codec for CD+G karaoke disks | |
CDXL | X | Amiga CD video codec | |
Chinese AVS video | E | X | AVS1-P2, JiZhun profile, encoding through external library libxavs |
Delphine Software International CIN video | X | Codec used in Delphine Software International games. | |
Discworld II BMV Video | X | ||
CineForm HD | X | X | |
Canopus HQ | X | ||
Canopus HQA | X | ||
Canopus HQX | X | ||
Canopus Lossless Codec | X | ||
CDToons | X | Codec used in various Broderbund games. | |
Cinepak | X | ||
Cirrus Logic AccuPak | X | X | fourcc: CLJR |
CPiA Video Format | X | ||
Creative YUV (CYUV) | X | ||
DFA | X | Codec used in Chronomaster game. | |
Dirac | E | X | supported though the native vc2 (Dirac Pro) encoder |
Deluxe Paint Animation | X | ||
DNxHD | X | X | aka SMPTE VC3 |
Duck TrueMotion 1.0 | X | fourcc: DUCK | |
Duck TrueMotion 2.0 | X | fourcc: TM20 | |
Duck TrueMotion 2.0 RT | X | fourcc: TR20 | |
DV (Digital Video) | X | X | |
Dxtory capture format | X | ||
Feeble Files/ScummVM DXA | X | Codec originally used in Feeble Files game. | |
Electronic Arts CMV video | X | Used in NHL 95 game. | |
Electronic Arts Madcow video | X | ||
Electronic Arts TGV video | X | ||
Electronic Arts TGQ video | X | ||
Electronic Arts TQI video | X | ||
Escape 124 | X | ||
Escape 130 | X | ||
EVC / MPEG-5 Part 1 | E | E | encoding and decoding supported through external libraries libxeve and libxevd |
FFmpeg video codec #1 | X | X | lossless codec (fourcc: FFV1) |
Flash Screen Video v1 | X | X | fourcc: FSV1 |
Flash Screen Video v2 | X | X | |
Flash Video (FLV) | X | X | Sorenson H.263 used in Flash |
FM Screen Capture Codec | X | ||
Forward Uncompressed | X | ||
Fraps | X | ||
Go2Meeting | X | fourcc: G2M2, G2M3 | |
Go2Webinar | X | fourcc: G2M4 | |
Gremlin Digital Video | X | ||
H.261 | X | X | |
H.263 / H.263-1996 | X | X | |
H.263+ / H.263-1998 / H.263 version 2 | X | X | |
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 | E | X | encoding supported through external library libx264 and OpenH264 |
HEVC | X | X | encoding supported through external library libx265 and libkvazaar |
HNM version 4 | X | ||
HuffYUV | X | X | |
HuffYUV FFmpeg variant | X | X | |
IBM Ultimotion | X | fourcc: ULTI | |
id Cinematic video | X | Used in Quake II. | |
id RoQ video | X | X | Used in Quake III, Jedi Knight 2, other computer games. |
IFF ILBM | X | IFF interleaved bitmap | |
IFF ByteRun1 | X | IFF run length encoded bitmap | |
Infinity IMM4 | X | ||
Intel H.263 | X | ||
Intel Indeo 2 | X | ||
Intel Indeo 3 | X | ||
Intel Indeo 4 | X | ||
Intel Indeo 5 | X | ||
Interplay C93 | X | Used in the game Cyberia from Interplay. | |
Interplay MVE video | X | Used in Interplay .MVE files. | |
J2K | X | X | |
Karl Morton’s video codec | X | Codec used in Worms games. | |
Kega Game Video (KGV1) | X | Kega emulator screen capture codec. | |
Lagarith | X | ||
LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2 | E | decoding supported through external library liblcevc-dec | |
LCL (LossLess Codec Library) MSZH | X | ||
LCL (LossLess Codec Library) ZLIB | E | E | |
LEAD MCMP | X | ||
LOCO | X | ||
LucasArts SANM/Smush | X | Used in LucasArts games / SMUSH animations. | |
lossless MJPEG | X | X | |
MagicYUV Video | X | X | |
Mandsoft Screen Capture Codec | X | ||
Microsoft ATC Screen | X | Also known as Microsoft Screen 3. | |
Microsoft Expression Encoder Screen | X | Also known as Microsoft Titanium Screen 2. | |
Microsoft RLE | X | X | |
Microsoft Screen 1 | X | Also known as Windows Media Video V7 Screen. | |
Microsoft Screen 2 | X | Also known as Windows Media Video V9 Screen. | |
Microsoft Video 1 | X | ||
Mimic | X | Used in MSN Messenger Webcam streams. | |
Miro VideoXL | X | fourcc: VIXL | |
MJPEG (Motion JPEG) | X | X | |
Mobotix MxPEG video | X | ||
Motion Pixels video | X | ||
MPEG-1 video | X | X | |
MPEG-2 video | X | X | |
MPEG-4 part 2 | X | X | libxvidcore can be used alternatively for encoding. |
MPEG-4 part 2 Microsoft variant version 1 | X | ||
MPEG-4 part 2 Microsoft variant version 2 | X | X | |
MPEG-4 part 2 Microsoft variant version 3 | X | X | |
Newtek SpeedHQ | X | X | |
Nintendo Gamecube THP video | X | ||
NotchLC | X | ||
NuppelVideo/RTjpeg | X | Video encoding used in NuppelVideo files. | |
On2 VP3 | X | still experimental | |
On2 VP4 | X | fourcc: VP40 | |
On2 VP5 | X | fourcc: VP50 | |
On2 VP6 | X | fourcc: VP60,VP61,VP62 | |
On2 VP7 | X | fourcc: VP70,VP71 | |
VP8 | E | X | fourcc: VP80, encoding supported through external library libvpx |
VP9 | E | X | encoding supported through external library libvpx |
Pinnacle TARGA CineWave YUV16 | X | fourcc: Y216 | |
Q-team QPEG | X | fourccs: QPEG, Q1.0, Q1.1 | |
QuickTime 8BPS video | X | ||
QuickTime Animation (RLE) video | X | X | fourcc: ’rle ’ |
QuickTime Graphics (SMC) | X | X | fourcc: ’smc ’ |
QuickTime video (RPZA) | X | X | fourcc: rpza |
R10K AJA Kona 10-bit RGB Codec | X | X | |
R210 Quicktime Uncompressed RGB 10-bit | X | X | |
Raw Video | X | X | |
RealVideo 1.0 | X | X | |
RealVideo 2.0 | X | X | |
RealVideo 3.0 | X | still far from ideal | |
RealVideo 4.0 | X | ||
Renderware TXD (TeXture Dictionary) | X | Texture dictionaries used by the Renderware Engine. | |
RivaTuner Video | X | fourcc: ’RTV1’ | |
RL2 video | X | used in some games by Entertainment Software Partners | |
ScreenPressor | X | ||
Screenpresso | X | ||
Screen Recorder Gold Codec | X | ||
Sierra VMD video | X | Used in Sierra VMD files. | |
Silicon Graphics Motion Video Compressor 1 (MVC1) | X | ||
Silicon Graphics Motion Video Compressor 2 (MVC2) | X | ||
Silicon Graphics RLE 8-bit video | X | ||
Smacker video | X | Video encoding used in Smacker. | |
SMPTE VC-1 | X | ||
Snow | X | X | experimental wavelet codec (fourcc: SNOW) |
Sony PlayStation MDEC (Motion DECoder) | X | ||
Sorenson Vector Quantizer 1 | X | X | fourcc: SVQ1 |
Sorenson Vector Quantizer 3 | X | fourcc: SVQ3 | |
Sunplus JPEG (SP5X) | X | fourcc: SP5X | |
TechSmith Screen Capture Codec | X | fourcc: TSCC | |
TechSmith Screen Capture Codec 2 | X | fourcc: TSC2 | |
Theora | E | X | encoding supported through external library libtheora |
Tiertex Limited SEQ video | X | Codec used in DOS CD-ROM FlashBack game. | |
Ut Video | X | X | |
v210 QuickTime uncompressed 4:2:2 10-bit | X | X | |
v308 QuickTime uncompressed 4:4:4 | X | X | |
v408 QuickTime uncompressed 4:4:4:4 | X | X | |
v410 QuickTime uncompressed 4:4:4 10-bit | X | X | |
VBLE Lossless Codec | X | ||
vMix Video | X | fourcc: ’VMX1’ | |
VMware Screen Codec / VMware Video | X | Codec used in videos captured by VMware. | |
Westwood Studios VQA (Vector Quantized Animation) video | X | ||
Windows Media Image | X | ||
Windows Media Video 7 | X | X | |
Windows Media Video 8 | X | X | |
Windows Media Video 9 | X | not completely working | |
Wing Commander III / Xan | X | Used in Wing Commander III .MVE files. | |
Wing Commander IV / Xan | X | Used in Wing Commander IV. | |
Winnov WNV1 | X | ||
WMV7 | X | X | |
YAMAHA SMAF | X | X | |
Psygnosis YOP Video | X | ||
yuv4 | X | X | libquicktime uncompressed packed 4:2:0 |
ZeroCodec Lossless Video | X | ||
ZLIB | X | X | part of LCL, encoder experimental |
Zip Motion Blocks Video | X | X | Encoder works only in PAL8. |
X
means that the feature in that column (encoding / decoding) is supported.
E
means that support is provided through an external library.
42.4 音频编解码器
名称 | 编码 | 解码 | 说明 |
8SVX 指数 | X | ||
8SVX 斐波那契 | X | ||
AAC | EX | X | 通过内部编码器和外部库 libfdk-aac 支持编码 |
AAC+ | E | IX | 通过外部库 libfdk-aac 支持编码 |
AC-3 | IX | IX | |
ACELP.KELVIN | X | ||
ADPCM 4X 电影 | X | ||
ADPCM Yamaha AICA | X | ||
ADPCM AmuseGraphics 电影 | X | ||
ADPCM Argonaut 游戏 | X | X | |
ADPCM CDROM XA | X | ||
ADPCM 创意技术 | X | 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2 | |
ADPCM 电子艺术 | X | 用于各种 EA 游戏。 | |
ADPCM 电子艺术 Maxis CDROM XS | X | 用于 Sim City 3000。 | |
ADPCM 电子艺术 R1 | X | ||
ADPCM 电子艺术 R2 | X | ||
ADPCM 电子艺术 R3 | X | ||
ADPCM 电子艺术 XAS | X | ||
ADPCM G.722 | X | X | |
ADPCM G.726 | X | X | |
ADPCM IMA Acorn Replay | X | ||
ADPCM IMA AMV | X | X | 用于 AMV 文件 |
ADPCM IMA Cunning Developments | X | ||
ADPCM IMA 电子艺术 EACS | X | ||
ADPCM IMA 电子艺术 SEAD | X | ||
ADPCM IMA Funcom | X | ||
ADPCM IMA High Voltage Software ALP | X | X | |
ADPCM IMA Mobiclip MOFLEX | X | ||
ADPCM IMA QuickTime | X | X | |
ADPCM IMA Simon & Schuster Interactive | X | X | |
ADPCM IMA Ubisoft APM | X | X | |
ADPCM IMA Loki SDL MJPEG | X | ||
ADPCM IMA WAV | X | X | |
ADPCM IMA Westwood | X | ||
ADPCM ISS IMA | X | 用于 FunCom 游戏。 | |
ADPCM IMA Dialogic | X | ||
ADPCM IMA Duck DK3 | X | 用于部分世嘉 Saturn 游戏。 | |
ADPCM IMA Duck DK4 | X | 用于部分世嘉 Saturn 游戏。 | |
ADPCM IMA Radical | X | ||
ADPCM Microsoft | X | X | |
ADPCM MS IMA | X | X | |
ADPCM 任天堂 Gamecube AFC | X | ||
ADPCM 任天堂 Gamecube DTK | X | ||
ADPCM 任天堂 THP | X | ||
ADPCM Playstation | X | ||
ADPCM QT IMA | X | X | |
ADPCM SEGA CRI ADX | X | X | 用于世嘉 Dreamcast 游戏。 |
ADPCM Shockwave Flash | X | X | |
ADPCM 声霸 2-bit | X | ||
ADPCM 声霸 2.6-bit | X | ||
ADPCM 声霸 4-bit | X | ||
ADPCM VIMA | X | 用于 LucasArts SMUSH 动画。 | |
ADPCM Konami XMD | X | ||
ADPCM Westwood Studios IMA | X | X | 用于 Westwood Studios 游戏比如命令与征服。 |
ADPCM Yamaha | X | X | |
ADPCM Zork | X | ||
AMR-NB | E | X | 通过外部库 libopencore-amrnb 支持编码 |
AMR-WB | E | X | 通过外部库 libvo-amrwbenc 支持编码 |
Amazing Studio PAF 音频 | X | ||
苹果无损音频 | X | X | QuickTime FourCC 'alac' |
aptX | X | X | 用于蓝牙 A2DP |
aptX HD | X | X | 用于蓝牙 A2DP |
ATRAC1 | X | ||
ATRAC3 | X | ||
ATRAC3+ | X | ||
ATRAC9 | X | ||
Bink 音频 | X | 用于许多游戏中的 Bink 和 Smacker 文件。 | |
Bonk 音频 | X | ||
CELT | E | 通过外部库 libcelt 支持解码 | |
codec2 | E | E | 通过外部库 libcodec2 支持编码/解码 |
CRI HCA | X | ||
Delphine Software International CIN 音频 | X | 用于 Delphine Software International 游戏的编解码器。 | |
DFPWM | X | X | |
数字语音标准 - 标准播放模式 (DSS SP) | X | ||
Discworld II BMV 音频 | X | ||
COOK | X | 所有版本除 5.1 外均支持。 | |
DCA (DTS Coherent Acoustics) | X | X | 支持扩展: XCh, XXCH, X96, XBR, XLL, LBR (部分) |
杜比 E | X | ||
DPCM Cuberoot-Delta-Exact | X | 用于少数游戏。 | |
DPCM Gremlin | X | ||
DPCM id RoQ | X | X | 用于 Quake III, Jedi Knight 2 及其他电脑游戏。 |
DPCM Marble WADY | X | ||
DPCM Interplay | X | 用于各种 Interplay 电脑游戏。 | |
DPCM Squareroot-Delta-Exact | X | 用于各种游戏。 | |
DPCM Sierra Online | X | 用于 Sierra Online 游戏音频文件。 | |
DPCM Sol | X | ||
DPCM Xan | X | 用于 Origin 的 Wing Commander IV AVI 文件。 | |
DPCM Xilam DERF | X | ||
DSD (Direct Stream Digital),最不重要位优先 | X | ||
DSD (Direct Stream Digital),最重要位优先 | X | ||
DSD (Direct Stream Digital),最不重要位优先,平面 | X | ||
DSD (Direct Stream Digital),最重要位优先,平面 | X | ||
DSP Group TrueSpeech | X | ||
DST (Direct Stream Transfer) | X | ||
DV 音频 | X | ||
增强型 AC-3 | X | X | |
EVRC (增强型可变速率编解码器) | X | ||
FLAC (自由无损音频编解码器) | X | IX | |
FTR 语音 | X | ||
G.723.1 | X | X | |
G.729 | X | ||
GSM | E | X | 通过外部库 libgsm 支持编码 |
GSM Microsoft 变体 | E | X | 通过外部库 libgsm 支持编码 |
IAC (Indeo 音频编解码器) | X | ||
iLBC (因特网低比特率编解码器) | E | EX | 通过外部库 libilbc 支持编码和解码 |
IMC (英特尔音乐编码器) | X | ||
Interplay ACM | X | ||
LC3 | E | E | 通过外部库 liblc3 支持 |
MACE (Macintosh 音频压缩/扩展) 6:1 | X | ||
Marian 的 A-pac 音频 | X | ||
MI-SC4 (Micronas SC-4 音频) | X | ||
MLP (Meridian 无损打包) | X | X | 用于 DVD 音频光盘。 |
猴子音频 | X | ||
MP1 (MPEG 音频层 1) | IX | ||
MP2 (MPEG 音频层 2) | IX | IX | 也通过外部库 TwoLAME 支持编码 |
MP3 (MPEG 音频层 3) | E | IX | 通过外部库 LAME 支持编码,也支持 ADU MP3 和 MP3onMP4 |
MPEG-4 音频无损编码 (ALS) | X | ||
MobiClip FastAudio | X | ||
Musepack SV7 | X | ||
Musepack SV8 | X | ||
Nellymoser Asao | X | X | |
On2 AVC (视频音频编解码器) | X | ||
Opus | E | X | 通过外部库 libopus 支持编码 |
OSQ (原音质) | X | ||
PCM A-law | X | X | |
PCM mu-law | X | X | |
PCM Archimedes VIDC | X | X | |
PCM 有符号 8 位 平面 | X | X | |
PCM 有符号 16 位 大端 平面 | X | X | |
PCM 有符号 16 位 小端 平面 | X | X | |
PCM 有符号 24 位 小端 平面 | X | X | |
PCM 有符号 32 位 小端 平面 | X | X | |
PCM 32 位 浮点 大端 | X | X | |
PCM 32 位 浮点 小端 | X | X | |
PCM 64 位 浮点 大端 | X | X | |
PCM 64 位 浮点 小端 | X | X | |
PCM D-Cinema 音频 有符号 24 位 | X | X | |
PCM 有符号 8 位 | X | X | |
PCM 有符号 16 位 大端 | X | X | |
PCM 有符号 16 位 小端 | X | X | |
PCM signed 24-bit big-endian | X | X | |
PCM signed 24-bit little-endian | X | X | |
PCM signed 32-bit big-endian | X | X | |
PCM signed 32-bit little-endian | X | X | |
PCM signed 16/20/24-bit big-endian in MPEG-TS | X | ||
PCM unsigned 8-bit | X | X | |
PCM unsigned 16-bit big-endian | X | X | |
PCM unsigned 16-bit little-endian | X | X | |
PCM unsigned 24-bit big-endian | X | X | |
PCM unsigned 24-bit little-endian | X | X | |
PCM unsigned 32-bit big-endian | X | X | |
PCM unsigned 32-bit little-endian | X | X | |
PCM SGA | X | ||
QCELP / PureVoice | X | ||
QDesign Music Codec 1 | X | ||
QDesign Music Codec 2 | X | There are still some distortions. | |
RealAudio 1.0 (14.4K) | X | X | Real 14400 bit/s codec |
RealAudio 2.0 (28.8K) | X | Real 28800 bit/s codec | |
RealAudio 3.0 (dnet) | IX | X | Real low bitrate AC-3 codec |
RealAudio Lossless | X | ||
RealAudio SIPR / ACELP.NET | X | ||
RK Audio (RKA) | X | ||
SBC (low-complexity subband codec) | X | X | Used in Bluetooth A2DP |
Shorten | X | ||
Sierra VMD audio | X | Used in Sierra VMD files. | |
Smacker audio | X | ||
SMPTE 302M AES3 audio | X | X | |
Sonic | X | X | experimental codec |
Sonic lossless | X | X | experimental codec |
Speex | E | EX | supported through external library libspeex |
TAK (Tom’s lossless Audio Kompressor) | X | ||
True Audio (TTA) | X | X | |
TrueHD | X | X | Used in HD-DVD and Blu-Ray discs. |
TwinVQ (VQF flavor) | X | ||
VIMA | X | Used in LucasArts SMUSH animations. | |
ViewQuest VQC | X | ||
Vorbis | E | X | A native but very primitive encoder exists. |
Voxware MetaSound | X | ||
Waveform Archiver | X | ||
WavPack | X | X | |
Westwood Audio (SND1) | X | ||
Windows Media Audio 1 | X | X | |
Windows Media Audio 2 | X | X | |
Windows Media Audio Lossless | X | ||
Windows Media Audio Pro | X | ||
Windows Media Audio Voice | X | ||
Xbox Media Audio 1 | X | ||
Xbox Media Audio 2 | X |
X
means that the feature in that column (encoding / decoding) is supported.
E
means that support is provided through an external library.
I
means that an integer-only version is available, too (ensures high
performance on systems without hardware floating point support).
42.5 Subtitle Formats
Name | Muxing | Demuxing | Encoding | Decoding |
3GPP Timed Text | X | X | ||
AQTitle | X | X | ||
DVB | X | X | X | X |
DVB teletext | X | E | ||
DVD | X | X | X | X |
JACOsub | X | X | X | |
MicroDVD | X | X | X | |
MPL2 | X | X | ||
MPsub (MPlayer) | X | X | ||
PGS | X | |||
PJS (Phoenix) | X | X | ||
RealText | X | X | ||
SAMI | X | X | ||
Spruce format (STL) | X | X | ||
SSA/ASS | X | X | X | X |
SubRip (SRT) | X | X | X | X |
SubViewer v1 | X | X | ||
SubViewer | X | X | ||
TED Talks captions | X | X | ||
TTML | X | X | ||
VobSub (IDX+SUB) | X | X | ||
VPlayer | X | X | ||
WebVTT | X | X | X | X |
XSUB | X | X |
X
means that the feature is supported.
E
means that support is provided through an external library.
42.6 Network Protocols
Name | Support |
AMQP | E |
file | X |
FTP | X |
Gopher | X |
Gophers | X |
HLS | X |
HTTP | X |
HTTPS | X |
Icecast | X |
MMSH | X |
MMST | X |
pipe | X |
Pro-MPEG FEC | X |
RTMP | X |
RTMPE | X |
RTMPS | X |
RTMPT | X |
RTMPTE | X |
RTMPTS | X |
RTP | X |
SAMBA | E |
SCTP | X |
SFTP | E |
TCP | X |
TLS | X |
UDP | X |
ZMQ | E |
X
means that the protocol is supported.
E
means that support is provided through an external library.
42.7 Input/Output Devices
Name | Input | Output |
ALSA | X | X |
BKTR | X | |
caca | X | |
DV1394 | X | |
Lavfi virtual device | X | |
Linux framebuffer | X | X |
JACK | X | |
LIBCDIO | X | |
LIBDC1394 | X | |
OpenAL | X | |
OpenGL | X | |
OSS | X | X |
PulseAudio | X | X |
SDL | X | |
Video4Linux2 | X | X |
VfW capture | X | |
X11 grabbing | X | |
Win32 grabbing | X |
X
means that input/output is supported.
42.8 Timecode
Codec/format | Read | Write |
AVI | X | X |
DV | X | X |
GXF | X | X |
MOV | X | X |
MPEG1/2 | X | X |
MXF | X | X |
43 See Also
ffprobe, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters
44 Authors
The FFmpeg developers.
For details about the authorship, see the Git history of the project
(https://git.ffmpeg.org/ffmpeg), e.g. by typing the command
git log
in the FFmpeg source directory, or browsing the
online repository at https://git.ffmpeg.org/ffmpeg.
Maintainers for the specific components are listed in the file MAINTAINERS in the source code tree.
This document was generated using makeinfo.
托管服务由telepoint.bg