网站翻译由林建有提供支持
目录
- 1 概要
- 2 描述
- 3 选项
- 4 语法
- 5 表达式计算
- 6 编解码器选项
- 7 解码器
- 8 视频解码器
- 9 音频解码器
- 10 字幕解码器
- 11 比特流过滤器
- 11.1 aac_adtstoasc
- 11.2 av1_metadata
- 11.3 chomp
- 11.4 dca_core
- 11.5 dovi_rpu
- 11.6 dump_extra
- 11.7 dv_error_marker
- 11.8 eac3_core
- 11.9 extract_extradata
- 11.10 filter_units
- 11.11 hapqa_extract
- 11.12 h264_metadata
- 11.13 h264_mp4toannexb
- 11.14 h264_redundant_pps
- 11.15 hevc_metadata
- 11.16 hevc_mp4toannexb
- 11.17 imxdump
- 11.18 mjpeg2jpeg
- 11.19 mjpegadump
- 11.20 mov2textsub
- 11.21 mpeg2_metadata
- 11.22 mpeg4_unpack_bframes
- 11.23 noise
- 11.24 null
- 11.25 pcm_rechunk
- 11.26 pgs_frame_merge
- 11.27 prores_metadata
- 11.28 remove_extra
- 11.29 setts
- 11.30 showinfo
- 11.31 text2movsub
- 11.32 trace_headers
- 11.33 truehd_core
- 11.34 vp9_metadata
- 11.35 vp9_superframe
- 11.36 vp9_superframe_split
- 11.37 vp9_raw_reorder
- 12 格式选项
- 13 解复用器
- 13.1 aa
- 13.2 aac
- 13.3 apng
- 13.4 asf
- 13.5 concat
- 13.6 dash
- 13.7 dvdvideo
- 13.8 ea
- 13.9 imf
- 13.10 flv, live_flv, kux
- 13.11 gif
- 13.12 hls
- 13.13 image2
- 13.14 libgme
- 13.15 libmodplug
- 13.16 libopenmpt
- 13.17 mov/mp4/3gp
- 13.18 mpegts
- 13.19 mpjpeg
- 13.20 rawvideo
- 13.21 rcwt
- 13.22 sbg
- 13.23 tedcaptions
- 13.24 vapoursynth
- 13.25 w64
- 13.26 wav
- 14 元数据
- 15 协议选项
- 16 协议
- 16.1 amqp
- 16.2 async
- 16.3 bluray
- 16.4 cache
- 16.5 concat
- 16.6 concatf
- 16.7 crypto
- 16.8 data
- 16.9 fd
- 16.10 file
- 16.11 ftp
- 16.12 gopher
- 16.13 gophers
- 16.14 hls
- 16.15 http
- 16.16 Icecast
- 16.17 ipfs
- 16.18 mmst
- 16.19 mmsh
- 16.20 md5
- 16.21 pipe
- 16.22 prompeg
- 16.23 rist
- 16.24 rtmp
- 16.25 rtmpe
- 16.26 rtmps
- 16.27 rtmpt
- 16.28 rtmpte
- 16.29 rtmpts
- 16.30 libsmbclient
- 16.31 libssh
- 16.32 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte
- 16.33 rtp
- 16.34 rtsp
- 16.35 sap
- 16.36 sctp
- 16.37 srt
- 16.38 srtp
- 16.39 subfile
- 16.40 tee
- 16.41 tcp
- 16.42 tls
- 16.43 udp
- 16.44 unix
- 16.45 zmq
- 17 设备选项
- 18 输入设备
- 19 重采样选项
- 20 缩放器选项
- 21 过滤介绍
- 22 graph2dot
- 23 滤波图描述
- 24 时间轴编辑
- 25 使用命令在运行时更改选项
- 26 多输入滤镜的选项 (framesync)
- 27 音频滤镜
- 27.1 aap
- 27.2 acompressor
- 27.3 acontrast
- 27.4 acopy
- 27.5 acrossfade
- 27.6 acrossover
- 27.7 acrusher
- 27.8 acue
- 27.9 adeclick
- 27.10 adeclip
- 27.11 adecorrelate
- 27.12 adelay
- 27.13 adenorm
- 27.14 aderivative, aintegral
- 27.15 adrc
- 27.16 adynamicequalizer
- 27.17 adynamicsmooth
- 27.18 aecho
- 27.19 aemphasis
- 27.20 aeval
- 27.21 aexciter
- 27.22 afade
- 27.23 afftdn
- 27.24 afftfilt
- 27.25 afir
- 27.26 aformat
- 27.27 afreqshift
- 27.28 afwtdn
- 27.29 agate
- 27.30 aiir
- 27.31 alimiter
- 27.32 allpass
- 27.33 aloop
- 27.34 amerge
- 27.35 amix
- 27.36 amultiply
- 27.37 anequalizer
- 27.38 anlmdn
- 27.39 anlmf, anlms
- 27.40 anull
- 27.41 apad
- 27.42 aphaser
- 27.43 aphaseshift
- 27.44 apsnr
- 27.45 apsyclip
- 27.46 apulsator
- 27.47 aresample
- 27.48 areverse
- 27.49 arls
- 27.50 arnndn
- 27.51 asdr
- 27.52 asetnsamples
- 27.53 asetrate
- 27.54 ashowinfo
- 27.55 asisdr
- 27.56 asoftclip
- 27.57 aspectralstats
- 27.58 asr
- 27.59 astats
- 27.60 asubboost
- 27.61 asubcut
- 27.62 asupercut
- 27.63 asuperpass
- 27.64 asuperstop
- 27.65 atempo
- 27.66 atilt
- 27.67 atrim
- 27.68 axcorrelate
- 27.69 bandpass
- 27.70 bandreject
- 27.71 bass, lowshelf
- 27.72 biquad
- 27.73 bs2b
- 27.74 channelmap
- 27.75 channelsplit
- 27.76 chorus
- 27.77 compand
- 27.78 compensationdelay
- 27.79 crossfeed
- 27.80 crystalizer
- 27.81 dcshift
- 27.82 deesser
- 27.83 dialoguenhance
- 27.84 drmeter
- 27.85 dynaudnorm
- 27.86 earwax
- 27.87 equalizer
- 27.88 extrastereo
- 27.89 firequalizer
- 27.90 flanger
- 27.91 haas
- 27.92 hdcd
- 27.93 headphone
- 27.94 highpass
- 27.95 join
- 27.96 ladspa
- 27.97 loudnorm
- 27.98 lowpass
- 27.99 lv2
- 27.100 mcompand
- 27.101 pan
- 27.102 replaygain
- 27.103 resample
- 27.104 rubberband
- 27.105 sidechaincompress
- 27.106 sidechaingate
- 27.107 silencedetect
- 27.108 silenceremove
- 27.109 sofalizer
- 27.110 speechnorm
- 27.111 stereotools
- 27.112 stereowiden
- 27.113 superequalizer
- 27.114 surround
- 27.115 tiltshelf
- 27.116 treble, highshelf
- 27.117 tremolo
- 27.118 vibrato
- 27.119 virtualbass
- 27.120 volume
- 27.121 volumedetect
- 28 Audio Sources
- 29 Audio Sinks
- 30 Video Filters
- 30.1 addroi
- 30.2 alphaextract
- 30.3 alphamerge
- 30.4 amplify
- 30.5 ass
- 30.6 atadenoise
- 30.7 avgblur
- 30.8 backgroundkey
- 30.9 bbox
- 30.10 bilateral
- 30.11 bilateral_cuda
- 30.12 bitplanenoise
- 30.13 blackdetect
- 30.14 blackframe
- 30.15 blend
- 30.16 blockdetect
- 30.17 blurdetect
- 30.18 bm3d
- 30.19 boxblur
- 30.20 bwdif
- 30.21 bwdif_cuda
- 30.22 ccrepack
- 30.23 cas
- 30.24 chromahold
- 30.25 chromakey
- 30.26 chromakey_cuda
- 30.27 chromanr
- 30.28 chromashift
- 30.29 ciescope
- 30.30 codecview
- 30.31 colorbalance
- 30.32 colorcontrast
- 30.33 colorcorrect
- 30.34 colorchannelmixer
- 30.35 colorize
- 30.36 colorkey
- 30.37 colorhold
- 30.38 colorlevels
- 30.39 colormap
- 30.40 colormatrix
- 30.41 colorspace
- 30.42 colorspace_cuda
- 30.43 colortemperature
- 30.44 convolution
- 30.45 convolve
- 30.46 copy
- 30.47 coreimage
- 30.48 corr
- 30.49 cover_rect
- 30.50 crop
- 30.51 cropdetect
- 30.52 cue
- 30.53 curves
- 30.54 datascope
- 30.55 dblur
- 30.56 dctdnoiz
- 30.57 deband
- 30.58 deblock
- 30.59 decimate
- 30.60 deconvolve
- 30.61 dedot
- 30.62 deflate
- 30.63 deflicker
- 30.64 dejudder
- 30.65 delogo
- 30.66 derain
- 30.67 deshake
- 30.68 despill
- 30.69 detelecine
- 30.70 dilation
- 30.71 displace
- 30.72 dnn_classify
- 30.73 dnn_detect
- 30.74 dnn_processing
- 30.75 drawbox
- 30.76 drawgraph
- 30.77 drawgrid
- 30.78 drawtext
- 30.79 edgedetect
- 30.80 elbg
- 30.81 熵
- 30.82 epx
- 30.83 eq
- 30.84 腐蚀
- 30.85 estdif
- 30.86 曝光
- 30.87 提取平面
- 30.88 衰减
- 30.89 反馈
- 30.90 fft去噪
- 30.91 fft滤波
- 30.92 场
- 30.93 fieldhint
- 30.94 匹配场
- 30.95 场顺序
- 30.96 填充边界
- 30.97 查找矩形
- 30.98 泛洪填充
- 30.99 格式
- 30.100 帧率
- 30.101 帧打包
- 30.102 帧率
- 30.103 步幅帧
- 30.104 冻结检测
- 30.105 冻结帧
- 30.106 frei0r
- 30.107 fspp
- 30.108 fsync
- 30.109 高斯模糊
- 30.110 geq
- 30.111 去噪辅助
- 30.112 图形监控
- 30.113 灰世界
- 30.114 灰色边缘
- 30.115 引导
- 30.116 hald调色板
- 30.117 水平翻转
- 30.118 直方图均衡
- 30.119 直方图
- 30.120 高品质降噪
- 30.121 硬件下载
- 30.122 硬件映射
- 30.123 硬件上传
- 30.124 cuda硬件上传
- 30.125 hqx
- 30.126 水平堆叠
- 30.127 hsv保持
- 30.128 hsv键控
- 30.129 色调
- 30.130 色相和饱和度
- 30.131 滞后
- 30.132 icc检测
- 30.133 icc生成
- 30.134 身份
- 30.135 idet
- 30.136 插入
- 30.137 膨胀
- 30.138 交错
- 30.139 核间隔
- 30.140 克希尔算子
- 30.141 延迟
- 30.142 镜头校正
- 30.143 镜头函数
- 30.144 图像渲染
- 30.145 vmaf库
- 30.146 libvmaf_cuda
- 30.147 limitdiff
- 30.148 limiter
- 30.149 loop
- 30.150 lut1d
- 30.151 lut3d
- 30.152 lumakey
- 30.153 lut, lutrgb, lutyuv
- 30.154 lut2, tlut2
- 30.155 maskedclamp
- 30.156 maskedmax
- 30.157 maskedmerge
- 30.158 maskedmin
- 30.159 maskedthreshold
- 30.160 maskfun
- 30.161 mcdeint
- 30.162 median
- 30.163 mergeplanes
- 30.164 mestimate
- 30.165 midequalizer
- 30.166 minterpolate
- 30.167 mix
- 30.168 monochrome
- 30.169 morpho
- 30.170 mpdecimate
- 30.171 msad
- 30.172 multiply
- 30.173 negate
- 30.174 nlmeans
- 30.175 nnedi
- 30.176 noformat
- 30.177 noise
- 30.178 normalize
- 30.179 null
- 30.180 ocr
- 30.181 ocv
- 30.182 oscilloscope
- 30.183 overlay
- 30.184 overlay_cuda
- 30.185 owdenoise
- 30.186 pad
- 30.187 palettegen
- 30.188 paletteuse
- 30.189 perspective
- 30.190 phase
- 30.191 photosensitivity
- 30.192 pixdesctest
- 30.193 pixelize
- 30.194 pixscope
- 30.195 pp
- 30.196 pp7
- 30.197 premultiply
- 30.198 prewitt
- 30.199 pseudocolor
- 30.200 psnr
- 30.201 pullup
- 30.202 qp
- 30.203 qrencode
- 30.204 quirc
- 30.205 random
- 30.206 readeia608
- 30.207 readvitc
- 30.208 remap
- 30.209 removegrain
- 30.210 removelogo
- 30.211 repeatfields
- 30.212 reverse
- 30.213 rgbashift
- 30.214 roberts
- 30.215 rotate
- 30.216 sab
- 30.217 scale
- 30.218 scale_cuda
- 30.219 scale_npp
- 30.220 scale2ref_npp
- 30.221 scale_vt
- 30.222 scharr
- 30.223 scroll
- 30.224 scdet
- 30.225 selectivecolor
- 30.226 separatefields
- 30.227 setdar, setsar
- 30.228 setfield
- 30.229 setparams
- 30.230 sharpen_npp
- 30.231 shear
- 30.232 showinfo
- 30.233 showpalette
- 30.234 shuffleframes
- 30.235 shufflepixels
- 30.236 shuffleplanes
- 30.237 signalstats
- 30.238 signature
- 30.239 siti
- 30.240 smartblur
- 30.241 sobel
- 30.242 spp
- 30.243 sr
- 30.244 ssim
- 30.245 stereo3d
- 30.246 streamselect, astreamselect
- 30.247 subtitles
- 30.248 super2xsai
- 30.249 swaprect
- 30.250 swapuv
- 30.251 tblend
- 30.252 telecine
- 30.253 thistogram
- 30.254 threshold
- 30.255 thumbnail
- 30.256 tile
- 30.257 tiltandshift
- 30.258 tinterlace
- 30.259 tmedian
- 30.260 tmidequalizer
- 30.261 tmix
- 30.262 tonemap
- 30.263 tpad
- 30.264 transpose
- 30.265 transpose_npp
- 30.266 trim
- 30.267 unpremultiply
- 30.268 unsharp
- 30.269 untile
- 30.270 uspp
- 30.271 v360
- 30.272 vaguedenoiser
- 30.273 varblur
- 30.274 vectorscope
- 30.275 vidstabdetect
- 30.276 vidstabtransform
- 30.277 vflip
- 30.278 vfrdet
- 30.279 vibrance
- 30.280 vif
- 30.281 vignette
- 30.282 vmafmotion
- 30.283 vstack
- 30.284 w3fdif
- 30.285 waveform
- 30.286 weave, doubleweave
- 30.287 xbr
- 30.288 xcorrelate
- 30.289 xfade
- 30.290 xmedian
- 30.291 xpsnr
- 30.292 xstack
- 30.293 yadif
- 30.294 yadif_cuda
- 30.295 yaepblur
- 30.296 zoompan
- 30.297 zscale
- 31 OpenCL Video Filters
- 31.1 avgblur_opencl
- 31.2 boxblur_opencl
- 31.3 colorkey_opencl
- 31.4 convolution_opencl
- 31.5 erosion_opencl
- 31.6 deshake_opencl
- 31.7 dilation_opencl
- 31.8 nlmeans_opencl
- 31.9 overlay_opencl
- 31.10 pad_opencl
- 31.11 prewitt_opencl
- 31.12 program_opencl
- 31.13 remap_opencl
- 31.14 roberts_opencl
- 31.15 sobel_opencl
- 31.16 tonemap_opencl
- 31.17 unsharp_opencl
- 31.18 xfade_opencl
- 32 VAAPI Video Filters
- 33 Vulkan Video Filters
- 34 QSV Video Filters
- 35 Video Sources
- 35.1 buffer
- 35.2 cellauto
- 35.3 coreimagesrc
- 35.4 ddagrab
- 35.5 gradients
- 35.6 mandelbrot
- 35.7 mptestsrc
- 35.8 frei0r_src
- 35.9 life
- 35.10 perlin
- 35.11 qrencodesrc
- 35.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
- 35.13 openclsrc
- 35.14 sierpinski
- 35.15 zoneplate
- 36 Video Sinks
- 37 Multimedia Filters
- 37.1 a3dscope
- 37.2 abitscope
- 37.3 adrawgraph
- 37.4 agraphmonitor
- 37.5 ahistogram
- 37.6 aphasemeter
- 37.7 avectorscope
- 37.8 bench, abench
- 37.9 concat
- 37.10 ebur128
- 37.11 interleave, ainterleave
- 37.12 latency, alatency
- 37.13 metadata, ametadata
- 37.14 perms, aperms
- 37.15 realtime, arealtime
- 37.16 segment, asegment
- 37.17 select, aselect
- 37.18 sendcmd, asendcmd
- 37.19 setpts, asetpts
- 37.20 setrange
- 37.21 settb, asettb
- 37.22 showcqt
- 37.23 showcwt
- 37.24 showfreqs
- 37.25 showspatial
- 37.26 showspectrum
- 37.27 showspectrumpic
- 37.28 showvolume
- 37.29 showwaves
- 37.30 showwavespic
- 37.31 sidedata, asidedata
- 37.32 spectrumsynth
- 37.33 split, asplit
- 37.34 zmq, azmq
- 38 Multimedia Sources
- 39 External libraries
- 39.1 Alliance for Open Media (AOM)
- 39.2 AMD AMF/VCE
- 39.3 AviSynth
- 39.4 Chromaprint
- 39.5 codec2
- 39.6 dav1d
- 39.7 davs2
- 39.8 uavs3d
- 39.9 Game Music Emu
- 39.10 Intel QuickSync Video
- 39.11 Kvazaar
- 39.12 LAME
- 39.13 LCEVCdec
- 39.14 libilbc
- 39.15 libjxl
- 39.16 libvpx
- 39.17 ModPlug
- 39.18 OpenCORE, VisualOn, and Fraunhofer libraries
- 39.19 OpenH264
- 39.20 OpenJPEG
- 39.21 rav1e
- 39.22 SVT-AV1
- 39.23 TwoLAME
- 39.24 VapourSynth
- 39.25 x264
- 39.26 x265
- 39.27 xavs
- 39.28 xavs2
- 39.29 eXtra-fast Essential Video Encoder (XEVE)
- 39.30 eXtra-fast Essential Video Decoder (XEVD)
- 39.31 ZVBI
- 40 Supported File Formats, Codecs or Features
- 41 See Also
- 42 Authors
1 Synopsis
ffplay [options] [input_url]
2 Description
FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a testbed for the various FFmpeg APIs.
3 Options
所有数值选项,如果未另行指定,接受一个代表数字的字符串作为输入,该字符串可以后跟一个SI单位前缀,例如:'K'、'M' 或 'G'。
如果SI单位前缀后附加‘i’,完整前缀将被解释为二进制倍数的单位前缀,这些倍数基于1024的幂而非1000的幂。附加‘B’到SI单位前缀将值乘以8。这允许使用例如:‘KB’、‘MiB’、‘G’ 和 ‘B’作为数字后缀。
不接受参数的选项为布尔选项,并将相应的值设置为true。可通过在选项名称前添加 "no" 来将其设置为false。例如使用 "-nofoo" 会将名称为 "foo" 的布尔选项设置为false。
接受参数的选项支持一种特殊语法,其中命令行上给定的参数被解释为文件路径,并从该文件加载实际的参数值。要使用此功能,请在选项名称前加一个正斜杠 '/'(位于领先的短划线之后)。例如:
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
将复制所有流而不重新编码。
流指定符的可能形式包括:
- 流索引
匹配具有此索引的流。例如:
-threads:1 4
将设置第二个流的线程数为4。如果流索引被用作额外的流指定符(见下文),则它会选择匹配流中的第流索引号流。流编号基于libavformat检测到的流顺序,除非同时指定了流组指定符或节目ID。在这种情况下,它基于组或节目的流顺序。- 流类型[:附加流指定符]
流类型可以是以下之一:‘v’ 或 ‘V’ 代表视频,‘a’ 代表音频,‘s’ 代表字幕,‘d’ 代表数据,‘t’ 代表附件。‘v’ 匹配所有视频流,‘V’ 仅匹配不作为附加图片、视频缩略图或封面艺术的视频流。如果附加流指定符被使用,那么它匹配同时具有此类型并匹配附加流指定符的流。否则,它匹配指定类型的所有流。
- g:组指定符[:附加流指定符]
匹配属于指定组的流组指定符。如果附加流指定符被使用,那么它匹配同时属于该组且匹配附加流指定符. 组指定符可以是以下之一:
- 组索引
匹配具有组索引的流。
- #组ID or i:组ID
匹配具有指定组ID的流。
- p:节目ID[:附加流指定符]
匹配属于指定节目ID的流节目ID。如果附加流指定符被使用,那么它匹配同时属于节目且匹配附加流指定符.
- #流ID or i:流ID
根据流ID(例如MPEG-TS容器中的PID)匹配流。
- m:键[:值]
匹配元数据标签键具有指定值的流。如果值未给定,则匹配包含该标签的任何值的流。
- disp:处置[:附加流指定符]
匹配具有指定处置的流。处置是一个由一个或多个处置组成的列表(由-dispositions选项打印)用‘+’连接。
- u
匹配具有可用配置的流,编解码器必须被定义且必须存在必需信息,例如视频尺寸或音频采样率。
请注意在
ffmpeg
中,通过元数据匹配仅对输入文件正确工作。
3.2 通用选项
这些选项在ff*工具中共享。
- -L
显示许可证。
- -h, -?, -help, --help [参数]
显示帮助。可选的参数可以指定以打印有关特定项目的帮助。如果未指定参数,仅显示基本(非高级)工具选项。
参数的可能值参数包括:
- long
打印高级工具选项及基本工具选项。
- full
打印完整的选项列表,包括编码器、解码器、解复用器、复用器、过滤器等的共享和私有选项。
- decoder=解码器名称
打印有关指定解码器的详细信息解码器名称。使用-decoders选项获取所有解码器的列表。
- encoder=编码器名称
打印有关指定编码器的详细信息编码器名称。使用-encoders选项获取所有编码器的列表。
- demuxer=解复用器名称
打印有关指定解复用器的详细信息解复用器名称。使用-formats选项获取所有解复用器和复用器的列表。
- muxer=复用器名称
打印有关指定复用器的详细信息复用器名称。使用-formats选项获取所有复用器和解复用器的列表。
- filter=过滤器名称
打印有关指定过滤器的详细信息过滤器名称。使用-filters选项获取所有过滤器的列表。
- bsf=比特流过滤器名称
打印有关指定比特流过滤器的详细信息比特流过滤器名称。使用-bsfs选项获取所有比特流过滤器的列表。
- protocol=协议名称
打印有关指定协议的详细信息协议名称。使用-protocols选项获取所有协议的列表。
- -version
显示版本。
- -buildconf
显示构建配置,每行一个选项。
- -formats
显示可用的格式(包括设备)。
- -demuxers
显示可用的解复用器。
- -muxers
显示可用的复用器。
- -devices
显示可用的设备。
- -codecs
显示libavcodec支持的所有编解码器。
请注意,术语'编解码器'在本文档中是作为媒体比特流格式的简写。
- -decoders
显示可用的解码器。
- -encoders
显示所有可用的编码器。
- -bsfs
显示可用的比特流过滤器。
- -protocols
显示可用的协议。
- -filters
显示libavfilter支持的过滤器。
- -pix_fmts
显示可用的像素格式。
- -sample_fmts
显示可用的样本格式。
- -layouts
显示频道名称和标准频道布局。
- -dispositions
显示流处置方式。
- -colors
显示识别的颜色名称。
- -sources 设备[,选项1=值1[,选项2=值2]...]
显示输入设备的自动检测源。 某些设备可能会提供无法通过系统检测到的源名称。 返回的列表不能保证总是完整的。
ffmpeg -sources pulse,server=192.168.0.4
- -sinks 设备[,选项1=值1[,选项2=值2]...]
显示输出设备的自动检测接收器。 某些设备可能会提供无法通过系统检测到的接收器名称。 返回的列表不能保证总是完整的。
ffmpeg -sinks pulse,server=192.168.0.4
- -loglevel [标志+]日志级别 | -v [标志+]日志级别
设置库使用的日志级别和标志。
可选的标志前缀可以由以下值组成:
- ‘repeat’
表示重复的日志输出不应被压缩为第一行,并且"最后消息重复n次"行将被省略。
- ‘level’
表示日志输出应该为每个消息行添加一个
[level]
前缀。这可以作为日志着色的替代方案,例如将日志转储到文件时。
标志也可以单独使用,通过添加‘+’/‘-’前缀设置/重置单个标志而不影响其他标志或更改日志级别。在设置标志和日志级别时,预计在最后一个, a ’+’ separator is expected between the last 标志值和日志级别.
日志级别是一个字符串或包含以下值之一的数字:
- ‘quiet, -8’
完全不显示;保持静默。
- ‘panic, 0’
仅显示可能导致进程崩溃的致命错误,例如断言失败。目前未用于任何内容。
- ‘fatal, 8’
仅显示致命错误。这些是在进程绝对无法继续后发生的错误。
- ‘error, 16’
显示所有错误,包括那些可以恢复的错误。
- ‘warning, 24’
显示所有警告和错误。任何与可能不正确或意外事件相关的消息都会显示。
- ‘info, 32’
在处理期间显示信息性消息。这是对警告和错误的补充。这是默认值。
- ‘verbose, 40’
与
info
相同,但更详细。- ‘debug, 48’
显示所有内容,包括调试信息。
- ‘trace, 56’
例如启用重复日志输出,添加
level
前缀,并设置日志级别为verbose
:ffmpeg -loglevel repeat+level+verbose -i input output
另一个示例启用了重复日志输出而不影响当前
level
前缀标志或日志级别状态:ffmpeg [...] -loglevel +repeat
默认情况下程序记录到stderr。如果终端支持着色,会使用颜色标记错误和警告。日志着色可以通过设置环境变量
AV_LOG_FORCE_NOCOLOR
禁用,也可以通过设置环境变量AV_LOG_FORCE_COLOR
.- -report
将完整的命令行和日志输出转储到一个名为
程序-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的malloc函数系列设置堆上分配块的最大尺寸限制。在使用此选项时请格外小心。如果您没有充分理解这样做的后果,请不要使用。默认值是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
所有编解码器的AV选项都是按流划分的,因此应该附加流说明符:
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语法不能用于布尔型AV选项,使用-option 0/-option 1.
注意:以前未公开的通过在选项名称前附加v/a/s来指定每个流的AV选项的方法现已废弃,并将在不久后移除。
3.4 主要选项
- -x 宽度
强制显示宽度。
- -y 高度
强制显示高度。
- -fs
以全屏模式启动。
- -an
禁用音频。
- -vn
禁用视频。
- -sn
禁用字幕。
- -ss 位置
跳转到位置。请注意,在大多数格式中无法精确跳到指定点,因此
ffplay
将跳到最接近的跳转点到位置.位置必须是一个时间持续量规范,详见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续量部分.
- -t 持续时间
播放持续时间秒的音频/视频。
持续时间必须是一个时间持续量规范,详见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续量部分.
- -bytes
按字节跳转。
- -seek_interval
设置使用左/右键跳转的自定义间隔,单位为秒。默认值为10秒。
- -nodisp
禁用图形显示。
- -noborder
无边窗口。
- -alwaysontop
窗口始终置顶。适用于:SDL >= 2.0.5 的 X11,SDL >= 2.0.6 的 Windows。
- -volume
设置启动音量。0表示静音,100表示无音量减少或放大。负值被视为0,超过100的值被视为100。
- -f 格式
强制格式。
- -window_title 标题
设置窗口标题(默认值为输入文件名)。
- -left 标题
设置窗口左侧的x位置(默认为居中窗口)。
- -top 标题
设置窗口顶部的y位置(默认为居中窗口)。
- -loop 数值
重复播放电影 <number> 次。0表示永久重复。
- -showmode 模式
设置要使用的显示模式。模式的可用值有:
- ‘0, video’
显示视频
- ‘1, waves’
显示音频波形
- ‘2, rdft’
使用RDFT((反)实数离散傅里叶变换)显示音频频率带
默认值为“视频”,如果视频不存在或不能播放,则会自动选择“rdft”。
您可以通过按键w.
- -vf filtergraph
创建由filtergraph指定的过滤图并对视频流进行过滤。
filtergraph是对要应用于流的过滤图的描述,必须具有一个视频输入和一个视频输出。在过滤图中,输入与标签
in
关联,输出与标签out
关联。有关过滤图语法的更多信息,请参见ffmpeg-filters手册。您可以多次指定此参数,并通过按键w.
- -af filtergraph
filtergraph是对要应用于输入音频的过滤图的描述。 使用选项“-filters”显示所有可用的过滤器(包括源和接收器)。
- -i 输入地址
读取输入地址.
3.5 高级选项
- -stats
打印几个播放统计数据,特别是显示流持续时间、编解码器参数、当前流位置以及音频/视频同步漂移。默认情况下会显示,除非日志级别低于
info
。手动指定这个选项可以强制显示该信息。若要禁用它,需指定-nostats
.- -fast
非符合规范的优化。
- -genpts
生成pts(时间戳)。
- -sync 类型
将主时钟设置为音频(
type=audio
)、视频(type=video
)或外部(type=ext
)。默认值为音频。主时钟用于控制音频视频同步。大多数媒体播放器使用音频作为主时钟,但在某些情况下(流媒体或高质量广播)有必要更改它。此选项主要用于调试目的。- -ast 音频流说明符
使用指定的流说明符选择所需的音频流。流说明符在流说明符章节中有描述。如果未指定此选项,则会在已选择的视频流的程序中选择“最佳”音频流。
- -vst 视频流说明符
使用指定的流说明符选择所需的视频流。流说明符在流说明符章节中有描述。如果未指定此选项,则会选择“最佳”视频流。
- -sst 字幕流说明符
使用指定的流说明符选择所需的字幕流。流说明符在流说明符章节中有描述。如果未指定此选项,则会在已选择的视频或音频流的程序中选择“最佳”字幕流。
- -autoexit
视频播放完成后退出。
- -exitonkeydown
按下任何键后退出。
- -exitonmousedown
按下任意鼠标按钮后退出。
- -codec:媒体说明符 编解码器名称
为由媒体说明符标识的流强制指定特定的解码器实现,该说明符可以采用
a
(音频)、v
(视频)和s
字幕。- -acodec 编解码器名称
强制使用特定的音频解码器。
- -vcodec 编解码器名称
强制使用特定的视频解码器。
- -scodec 编解码器名称
强制使用特定的字幕解码器。
- -autorotate
根据文件元数据自动旋转视频。默认启用,使用-noautorotate来禁用它。
- -framedrop
如果视频不同步,则丢弃视频帧。如果主时钟未设置为视频,则默认启用。使用此选项可以为所有主时钟源启用帧丢弃,使用-noframedrop来禁用它。
- -infbuf
不要限制输入缓冲区大小,从输入尽可能快地读取尽可能多的数据。默认情况下为实时流启用此选项,否则如果未及时读取数据可能会丢失。使用此选项可以为所有输入启用无限缓冲区,使用-noinfbuf来禁用它。
- -filter_threads 线程数量
定义用于处理过滤器管道的线程数量。每个管道都会产生一个线程池,其中有这些线程用于并行处理。默认值为0,这意味着线程数量将根据可用的CPU数量决定。
- -enable_vulkan
使用vulkan渲染器,而不是SDL内置的渲染器。依赖于libplacebo。
- -vulkan_params
-
使用一个包含键=值对的vulkan配置,其中各对之间用":"分隔。
- -hwaccel
使用硬件加速解码。启用此选项将自动启用vulkan渲染器。
3.6 播放过程中
- q,ESC
退出。
- f
切换全屏。
- p,空格键
暂停播放。
- m
切换静音。
- 9, 0
- /, *
分别减少和增加音量。
- a
在当前节目中循环切换音频频道。
- v
循环切换视频频道。
- t
在当前节目中循环切换字幕频道。
- c
循环切换节目。
- w
循环切换视频过滤器或显示模式。
- s
步进到下一帧。
如果流尚未暂停,则暂停,步进到下一个视频帧,然后暂停。
- 左/右
向后/向前跳转10秒。
- 下/上
向后/向前跳转1分钟。
- 向下翻页/向上翻页
跳转到上一个/下一个章节。 如果没有章节 向后/向前跳转10分钟。
- 右键单击
跳转到与文件宽度分数对应的百分比位置。
- 左键双击
切换全屏。
4 语法
本节记录了FFmpeg库和工具采用的语法和格式。
4.1 引用和转义
除非另有规定,FFmpeg采用以下引用和转义机制。应用以下规则:
- ‘'‘和‘\’是特殊字符(分别用于引用和转义)。除了它们之外,根据特定语法使用的转义和引用可能还有其他特殊字符。
- 通过在特殊字符前添加‘对其进行转义。\’.
- 所有包裹在‘和‘之间的字符都在解析的字符串中原样包括。引用字符‘本身无法引用,因此您可能需要关闭引用并转义它。''’ are included literally in the parsed string. The quote character ‘'’ itself cannot be quoted, so you may need to close the quote and escape it.
- 除非被转义或引用,解析的字符串中,前导和尾随的空白被移除。
请注意,根据采用的Shell语言语法,使用命令行或脚本可能需要添加第二级转义。
定义的av_get_token
函数可以用来解析一个令牌,按照上面的规则定义引用或转义。libavutil/avstring.h can be used to parse a token quoted or
escaped according to the rules defined above.
工具tools/ffescape在FFmpeg源码树中可以用来自动在脚本中对字符串进行引用或转义。
4.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
4.2 日期
接受的语法为:
[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] now
如果值为“现在”,则表示当前时间。
时间是本地时间,除非附加了“Z”,此时它会被解释为UTC。 如果未指定年月日部分,则取当前年月日。
4.3 时间持续量
表达时间持续量有两种接受的语法。
[-][小时:]分钟:秒[.小数...]
小时表示小时数,分钟表示最多2位数的分钟数,秒表示最多2位数的秒数。在秒数末尾的小数表示值。小数表示秒的小数部分。毫秒.
或
[-]秒+[.毫秒...][s|ms|us]
秒表示秒数,带有可选的小数部分。可用字面后缀毫秒表示秒、毫秒或微秒值。s’, ‘ms’ or ‘us’ indicate to interpret the value as seconds, milliseconds or microseconds, respectively.
在两种表达式中,可选的‘负号’表示负持续时间。-’ indicates negative duration.
4.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秒
4.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
4.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
4.6 比率
比率可以表示为一个表达式,或者形式化为分子:分母.
注意,具有无限(1/0)或负值的比率被视为有效,因此如果想排除这些值,应当检查返回值。
未定义的值可以用“0:0”字符串表示。
4.7 颜色
可以是下方定义的颜色名称(大小写不敏感)或[0x|#]RRGGBB[AA]
序列,后跟@和表示透明度的字符串。
透明度组件可以是由“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
4.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.
5 表达式评估
在评估算术表达式时,FFmpeg 使用内部公式评估器,通过libavutil/eval.h接口实现。
表达式可以包含一元、二元运算符、常数和函数。
两个表达式expr1和expr2可以组合成另一个表达式“expr1;expr2". expr1和expr2依次被评估,新表达式的结果等于expr2.
以下是可用的二元运算符:+
, -
,
*
, /
, ^
.
以下是可用的一元运算符:+
, -
.
一些内部变量可以用来存储和加载中间结果。它们可以通过ld
和st
函数访问,索引参数从 0 到 9 变化,用于指定要访问的内部变量。
以下是可用的函数:
- abs(x)
计算x.
- acos(x)
计算x.
- asin(x)
计算x.
- atan(x)
计算x.
- atan2(y, x)
计算y/x.
- between(x, min, max)
如果x大于或等于min且小于或等于max则返回 1,否则返回 0。
- bitand(x, y)
- bitor(x, y)
计算按位操作x和y.
评估x和y的结果在执行按位操作前被转换为整数。
注意,转换为整数及转换回浮点数可能会丢失精度。对于大数(通常为2^53及以上),需要注意结果可能会出乎预料。
- ceil(expr)
向上取整表达式expr的值到最接近的整数。例如,“ceil(1.5)”为“2.0”。
- clip(x, min, max)
返回x的值,限定在min到max.
- cos(x)
计算x.
- cosh(x)
计算x.
- eq(x, y)
如果x和y相等则返回 1,否则返回 0。
- exp(x)
计算x(以
e
为底的指数)。- floor(expr)
向下取整表达式expr的值到最接近的整数。例如,“floor(-1.5)”为“-2.0”。
- gauss(x)
计算x的高斯函数,对应于
exp(-x*x/2) / sqrt(2*PI)
.- gcd(x, y)
返回x和y的最大公约数。如果x和y均为 0 或者其中之一小于零则行为未定义。
- gt(x, y)
如果x大于y则返回 1,否则返回 0。
- gte(x, y)
如果x大于或等于y则返回 1,否则返回 0。
- hypot(x, y)
此函数类似于 C 函数,同名;它返回“sqrt(x*x + y*y)”,表示长度为x和y的直角三角形的斜边或点(x, y)到原点的距离。
- if(x, y)
评估x,如果结果非零则返回y的评估结果,否则返回 0。
- if(x, y, z)
评估x,如果结果非零则返回y的评估结果,否则返回z.
- ifnot(x, y)
评估x,如果为零则返回y的评估结果,否则返回 0。
- ifnot(x, y, z)
评估x,如果为零则返回y的评估结果,否则返回z.
- isinf(x)
如果x是+/-INFINITY则返回 1.0,否则返回 0.0。
- isnan(x)
如果x是 NAN 则返回 1.0,否则返回 0.0。
- ld(idx)
加载索引为idx的内部变量的值,该值之前通过 st(idx, expr)存储。 函数返回加载的值。
- lerp(x, y, z)
返回x和y之间被z.
- log(x)
计算x.
- lt(x, y)
如果x小于y则返回 1,否则返回 0。
- lte(x, y)
如果x小于或等于y则返回 1,否则返回 0。
- max(x, y)
返回x和y.
- min(x, y)
返回x和y.
- mod(x, y)
计算x除以y.
- not(expr)
如果expr为零则返回 1.0,否则返回 0.0。
- pow(x, y)
计算x的幂y,等价于“(x)^(y)".
- print(t)
- print(t, l)
打印表达式t的值,并记录级别l。如果未指定l则使用默认日志级别。 返回打印的表达式的值。
- random(idx)
返回一个介于 0.0 和 1.0 之间的伪随机值。idx是用于保存种子/状态的内部变量索引,可以通过之前存储
st(idx)
.为了初始化种子,需要将种子值作为 64 位无符号整数存储在索引idx.
的变量中。 例如,将种子值存储为
42
到索引为0
的内部变量中并打印一些随机值:st(0,42); print(random(0)); print(random(0)); print(random(0))
- randomi(idx, min, max)
返回介于min和max. idx是用于保存种子/状态的内部变量索引,可以通过之前存储
st(idx)
.为了初始化种子,需要将种子值作为 64 位无符号整数存储在索引idx.
- root(expr, max)
找到一个输入值,使得表达式expr对参数ld(0)在区间 0..max.
为 0。expr中的表达式必须表示一个连续函数否则结果是未定义。
ld(0)用来表示函数输入值,这意味着给定表达式将通过
ld(0)
多次评估不同的输入值。当表达式评估结果为 0 时,对应的输入值将被返回。- round(expr)
将表达式expr的值四舍五入到最近的整数。例如,“round(1.5)”为“2.0”。
- sgn(x)
计算x.
- sin(x)
计算x.
- sinh(x)
计算x.
- sqrt(expr)
计算表达式expr的平方根。等价于“(expr)^.5".
- squish(x)
计算表达式
1/(1 + exp(4*x))
.- st(idx, expr)
将表达式expr的值存储在一个内部变量中。idx指定存储值的变量索引,范围为 0 到 9。 函数返回存储在内部变量中的值。
存储的值可以通过
ld(var)
.检索。 注意:当前表达式之间的变量不可共享。
- tan(x)
计算x.
- tanh(x)
计算x.
- taylor(expr, x)
- taylor(expr, x, idx)
在点x处评估表达式,给定一个表达式表示函数在 0 处的
ld(idx)
次导数。当系列不收敛时结果未定义。
ld(idx)用于表示表达式中expr的导数阶数,这意味着给定表达式将通过
ld(idx)
多次评估不同的导数阶数。索引如果未指定,则假定为0。注意,当您有y处的导数而不是0时,
taylor(expr, x-y)
可以使用。- time(0)
以秒为单位返回当前(时钟)时间。
- trunc(expr)
将表达式的值四舍五入表达式向零的最近整数。例如,“trunc(-1.5)”为“-1.0”。
- while(cond, expr)
计算表达式表达式而表达式条件为非零时,返回最后一个表达式的计算值,或如果条件始终为假,则返回NAN。
可用的常数如下:
- PI
单位圆的面积,大约为3.14
- E
自然对数的底数(欧拉数),大约为2.718
- PHI
黄金比例(1+sqrt(5))/2,大约为1.618
假设表达式被视为“真”如果其非零值,注意以下几点:
*
类似于AND
+
类似于OR
例如以下结构:
if (A AND B) then C
等同于:
if(A*B, C)
在您的C代码中,您可以扩展一元和二元函数的列表,并定义识别的常量,以便为您的表达式提供服务。
评估器还识别国际单位制前缀。如果在前缀后添加‘i’,则使用二进制前缀,这基于1024的幂,而不是1000的幂。‘B’后缀将值乘以8,可以附加在单位前缀之后或单独使用。这使您能够使用例如'KB','MiB','G'和'B'作为数字后缀。
以下是可用的国际系统前缀列表,指示了对应的10和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
6 编解码器选项
libavcodec提供了一些通用全局选项,这些选项可以在所有编码器和解码器上设置。此外,每种编解码器可能支持所谓的私有选项,这些选项是特定于给定编解码器的。
有时,全局选项可能仅影响某种特定的编码器,并可能对另一个无意义或被忽略,因此您需要了解指定选项的意义。此外,一些选项仅用于解码或编码。
可以通过指定 -选项 值在FFmpeg工具中,或通过在AVCodecContext
选项中显式设置值,或使用libavutil/opt.hAPI进行编程使用。
支持选项列表如下:
- b 整数 (编码,音频,视频)
以比特/秒为单位设置比特率。默认值为200K。
- ab 整数 (编码,音频)
设置音频比特率(以比特/秒为单位)。默认值为128K。
- bt 整数 (编码,视频)
设置视频比特率容差(以比特/秒为单位)。在单次传输模式中,比特率容差指定了速率控制相较于目标平均比特率值的最大偏离程度。这与最小/最大比特率无关。过度降低容差会对质量产生不利影响。
- flags 标志 (解码/编码,音频,视频,字幕)
设置通用标志。
可能的值:
- ‘mv4’
使用四个运动矢量块(mpeg4)。
- ‘qpel’
使用1/4像素运动补偿。
- ‘loop’
使用环路滤波器。
- ‘qscale’
使用固定的质量刻度。
- ‘pass1’
在第一次通过模式下使用内部2pass速率控制。
- ‘pass2’
在第二次通过模式下使用内部2pass速率控制。
- ‘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 有理数
设置编解码器时间基准。
这是以秒为单位的时间的基本单元,帧时间戳是以此为基础表示的。对于固定FPS的内容,时间基准应该是
1 / frame_rate
时间戳增量应该完全为1。- g 整数 (编码,视频)
设置图组(GOP)大小。默认值为12。
- ar 整数 (解码/编码,音频)
设置音频采样率(以Hz为单位)。
- ac 整数 (解码/编码,音频)
设置音频通道数量。
- cutoff 整数 (编码,音频)
设置截止带宽。(仅由选定的编码器支持,请参阅它们各自的文档部分。)
- frame_size 整数 (编码,音频)
设置音频帧大小。
除最后一个外的每个提交的帧必须每个通道的样本数正好是frame_size。当编解码器设置了 CODEC_CAP_VARIABLE_FRAME_SIZE 时,该值可以为0,在这种情况下帧大小不受限制。一些解码器会设置此值以指示恒定帧大小。
- 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’
旧标准四分之一像素(根据fourcc/version自动检测)
- ‘qpel_chroma2’
- ‘direct_blocksize’
直接四分之一像素块大小错误(根据fourcc/version自动检测)
- ‘edge’
边缘填充错误(根据fourcc/version自动检测)
- ‘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 整数 (编码,音频,视频)
设置最大比特率容忍度(以比特/秒为单位)。需要设置缓冲区大小。
- 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 有理数 (编码,视频)
设置样本纵横比。别名为纵横比.
- 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]’
六边形运动估计
- ‘(256, 512]’
L2S菱形运动估计
- ‘[2,256]’
变量菱形运动估计
- ‘(-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 整数 (编码,视频)
设置运动向量范围限制(DivX播放器为1023)。
- global_quality 整数 (编码,音频,视频)
- slice_flags 整数
- mbd 整数 (编码,视频)
设置宏块决策算法(高质量模式)。
可能的值:
- ‘simple’
使用mbcmp(默认)
- ‘bits’
使用最少的比特
- ‘rd’
使用最佳率失真
- rc_init_occupancy 整数 (编码,视频)
设置解码之前应该加载到速率控制缓冲区中的比特数。
- 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 整数 (解码/编码,音频)
参见(ffmpeg-utils)ffmpeg-utils(1)手册中的频道布局部分以获取所需的语法。
- 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 sample_fmt (解码,音频)
设置音频解码器应优先考虑的采样格式。默认值为
none
.- pkt_timebase 有理数
- sub_charenc 编码 (解码,字幕)
设置输入字幕字符编码。
- field_order field_order (视频)
设置/覆盖视频的场序。 可能的值:
- ‘progressive’
渐进视频
- ‘tt’
隔行视频,顶场先编码并显示
- ‘bb’
隔行视频,底场先编码并显示
- ‘tb’
隔行视频,顶场先编码,底场先显示
- ‘bt’
隔行视频,底场先编码,顶场先显示
- skip_alpha 布尔值 (解码,视频)
设置为1以禁用透明度(alpha)处理。这类似于gray选项,它跳过色度信息而不是透明度。默认值为0。flags option which skips chroma information instead of alpha. Default is 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
不能从命令行更改。此外,硬件解码器将不应用左/顶部裁剪。
7 解码器
解码器是FFmpeg中的配置元素,用于解码多媒体流。
当您配置您的FFmpeg构建时,所有支持的本地解码器默认情况下都已启用。需要外部库的解码器必须通过相应的--enable-lib
选项手动启用。您可以使用配置选项列出所有可用的解码器。--list-decoders
.
您可以使用配置选项禁用所有解码器。--disable-decoders
并分别启用/禁用单个解码器,选择性的--enable-decoder=解码器
/
--disable-decoder=解码器
.
工具的选项将显示启用的解码器列表。-decoders
of the ff* tools will display the list of
enabled decoders.
8视频解码器
以下是当前可用的视频解码器中的一些描述。
8.1 AV1
AOMedia视频1(AV1)解码器。
8.1.1 选项
- operating_point
选择可扩展AV1位流的操作点(0-31)。默认值为0。
8.2 HEVC
HEVC(又名ITU-T H.265或ISO/IEC 23008-2)解码器。
解码器支持最多两个视图的MV-HEVC多视流。通过向解码器提供视图ID列表选择输出的视图(view_ids选项)。可以在解码器初始化前静态设置此选项,也可以通过get_format()
回调进行动态设置,这对视图数量或ID在解码期间发生动态变化的情况非常有用。
默认情况下,仅解码基础层。
注意,如果您使用ffmpeg
CLI工具,您应该使用其手册中记录的视图说明,而不是这里记录的选项。
8.2.1 选项
- view_ids (MV-HEVC)
指定应输出的视图ID列表。此选项也可以设置为'−1',这将导致解码和输出VPS中定义的所有视图。
- view_ids_available (MV-HEVC)
调用者可以通过读取此选项获取活动VPS中可用视图ID数组。对于单层视频,数组为空。
当从
get_format()
回调读取时,此选项的值保证准确。它也可以在其他时候设置(例如打开解码器后),但该值仅供信息使用,并可能不准确(例如,当流包含多个不同的VPS NAL单元时)。- view_pos_available (MV-HEVC)
调用者可以通过读取此选项检索在活动VPS中可用的视图位置(左、右或未指定),它们为
AVStereo3DView
值。当数组可用时,它的元素适用于view_ids_available的对应元素,例如view_pos_available[i]
包含ID为view_ids_available[i]
.视图的位置。view_ids_available的限制相同。
8.3 原始视频
原始视频解码器。
此解码器用于解码原始视频流。
8.3.1 选项
- top top_field_first
指定输入视频的假定场类型。
- -1
假定视频为逐行扫描(默认值)
- 0
假定为底场优先
- 1
假定为顶场优先
8.4 libdav1d
dav1d AV1 解码器。
libdav1d允许libavcodec解码AOMedia Video 1 (AV1)编解码器。
需要在配置期间提供libdav1d头文件和库。
您需要明确配置构建方式为--enable-libdav1d
.
8.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。
8.5 libdavs2
AVS2-P2/IEEE1857.4视频解码器包装器。
此解码器允许libavcodec通过davs2库解码AVS2流。
8.6 libuavs3d
AVS3-P2/IEEE1857.10视频解码器。
libuavs3d允许libavcodec解码AVS3流。
需要在配置期间提供libuavs3d头文件和库。
您需要明确配置构建方式为--enable-libuavs3d
.
8.6.1 选项
以下选项由libuavs3d包装器支持。
- frame_threads
设置在解码过程中使用的帧线程数量。默认值为0(自动检测)。
8.7 libxevd
eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC解码器包装器。
此解码器需要在配置期间提供libxevd头文件和库。 您需要明确配置构建方式为--enable-libxevd.
xevd项目网站为https://github.com/mpeg5/xevd.
8.7.1 选项
以下选项由libxevd包装器支持。 列出了对应的xevd选项或值以便于迁移。
要获取更精确和详尽的libxevd选项文档,请执行命令xevd_app --help
或查阅libxevd文档。
- threads (threads)
强制使用特定数量的线程
8.8 QSV解码器
英特尔快速同步视频解码器家族(VC1, MPEG-2, H.264, HEVC, JPEG/MJPEG, VP8, VP9, AV1, VVC)。
8.8.1 通用选项
以下选项由所有qsv解码器支持。
- async_depth
内部并行化深度,值越高延迟越大。
- gpu_copy
视频和系统内存之间的GPU加速复制
- ‘default’
- ‘on’
- ‘off’
8.8.2 HEVC选项
hevc_qsv的额外选项。
- load_plugin
在内部会话中加载的用户插件
- ‘none’
- ‘hevc_sw’
- ‘hevc_hw’
- load_plugins
在内部会话中加载的十六进制插件UID的以':'分隔的列表
8.9 v210
未压缩的4:2:2 10位解码器。
8.9.1 选项
- custom_stride
设置v210数据的行大小(以字节为单位)。默认值为0(自动检测)。您可以使用特殊值-1来处理在BOXX文件中看到的无步幅的v210数据。
9 音频解码器
以下是一些当前可用的音频解码器的描述。
9.1 ac3
AC-3音频解码器。
此解码器实现了ATSC A/52:2010和ETSI TS 102 366的一部分,以及未公开记录的RealAudio 3 (也称为dnet)。
9.1.1 AC-3解码器选项
- -drc_scale 值
动态范围缩放系数。从AC-3流中应用动态范围值的缩放因子。此因子是以指数方式应用的。默认值为1。 以下是3个重要的缩放系数范围:
- drc_scale == 0
禁用DRC。产生全范围音频。
- 0 < drc_scale <= 1
启用DRC。应用流DRC值的一部分。 音频再现介于全范围和完全压缩之间。
- drc_scale > 1
启用DRC。异步应用drc_scale。 响亮声音完全压缩。柔和声音增强。
9.2 flac
FLAC音频解码器。
此解码器旨在实现Xiph的完整FLAC规范。
9.2.1 FLAC解码器选项
- -use_buggy_lpc
lavc FLAC编码器曾使用高lpc值(如默认值)生成有问题的流。 该选项使得可以通过使用lavc的旧有问题lpc逻辑来解码此类流。
9.3 ffwavesynth
内部波形合成器。
此解码器根据预定义序列生成波形模式。其使用纯粹为内部用途,接受的数据格式未公开记录。
9.4 libcelt
libcelt解码器包装器。
libcelt允许libavcodec解码Xiph CELT超低延迟音频编解码器。
需要在配置期间提供libcelt头文件和库。
您需要明确配置构建方式为--enable-libcelt
.
9.5 libgsm
libgsm解码器包装器。
libgsm允许libavcodec解码GSM全速率音频编解码器。
需要在配置期间提供libgsm头文件和库。
您需要明确配置构建方式为--enable-libgsm
.
该解码器支持普通GSM和Microsoft变体。
9.6 libilbc
libilbc解码器包装器。
libilbc允许libavcodec解码因特网低比特率编解码器(iLBC)音频编解码器。
需要在配置期间提供libilbc头文件和库。
您需要明确配置构建方式为--enable-libilbc
.
9.6.1 选项
以下选项由libilbc包装器支持。
- enhance
-
启用解码音频增强功能时设置为1。默认值为0(禁用)。
9.7 libopencore-amrnb
libopencore-amrnb解码器包装器。
libopencore-amrnb允许libavcodec解码自适应多速率窄带音频编解码器。
使用它需要在配置期间提供libopencore-amrnb头文件和库。
您需要明确配置构建方式为--enable-libopencore-amrnb
.
FFmpeg本机AMR-NB解码器已存在,所以用户可以无需该库解码AMR-NB。
9.8 libopencore-amrwb
libopencore-amrwb解码器包装器。
libopencore-amrwb允许libavcodec解码自适应多速率宽带音频编解码器。
使用它需要在配置期间提供libopencore-amrwb头文件和库。
您需要明确配置构建方式为--enable-libopencore-amrwb
.
FFmpeg本机AMR-WB解码器已存在,所以用户可以无需该库解码AMR-WB。
9.9 libopus
libopus解码器包装器。
libopus允许libavcodec解码Opus交互式音频编解码器。
需要在配置期间提供libopus头文件和库。
您需要明确配置构建方式为--enable-libopus
.
FFmpeg本机Opus解码器已存在,所以用户可以无需该库解码Opus。
10 字幕解码器
10.1 libaribb24
ARIB STD-B24字幕解码器。
实现了ARIB STD-B24标准的A和C配置文件。
10.1.1 libaribb24解码器选项
- -aribb24-base-path 路径
设置libaribb24库的基本路径。 用于读取配置文件(用于自定义Unicode转换),以及将非文本符号作为图像输出到该位置。
默认情况下未设置。
- -aribb24-skip-ruby-text 布尔值
告知解码器包装器跳过包含半高注音文字的文本块。
默认情况下启用。
10.2 libaribcaption
另一个使用外部libaribcaption库的ARIB STD-B24字幕解码器。
实现了日本ARIB STD-B24标准的A和C配置文件、巴西ABNT NBR 15606-1以及菲律宾版本的ISDB-T。
需要在配置期间提供libaribcaption头文件和库
(https://github.com/xqq/libaribcaption)。
您需要明确配置构建方式为--enable-libaribcaption
。
如果同时启用了libaribb24和libaribcaption,则优先使用libaribcaption解码器。
10.2.1 libaribcaption解码器选项
- -sub_type 字幕类型
指定解码字幕的格式。
- ‘bitmap’
图像格式字幕。
- ‘ass’
ASS格式的文本。
- ‘text’
无格式的简单文本输出。
默认值为ass与libaribb24解码器相同。 某些播放器(如mpv)期待ARIB字幕为ASS格式。
- -caption_encoding 编码方案
指定输入字幕文本的编码方案。
- ‘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 布尔值
ARIB STD-B24规定某些字幕可能同时显示在不同位置(多矩形字幕)。 由于某些播放器(如旧版mpv)无法处理同一时间戳的一条AVSubtitle中的多个ASS矩形,或者多个持续时间不确定的ASS矩形, 此选项可更改行为使所有文字显示在一个ASS矩形中。
默认值为false.
如果您的播放器无法正确处理具有多个ASS矩形的AVSubtitle, 将此选项设置为true,或定义
ASS_SINGLE_RECT=1
以在编译时更改默认行为。- -force_outline_text 布尔值
指定是否始终为所有字符渲染带轮廓的文本,而不考虑字符样式的指示。
默认值为false.
- -outline_width 数字 (0.0 - 3.0)
指定轮廓文本的宽度(点数,相对值)。
默认值为1.5.
- -ignore_background 布尔值
指定是否忽略背景颜色渲染。
默认值为false.
- -ignore_ruby 布尔值
指定是否忽略对类似注音文字(furigana)字符的渲染。
默认值为false.
- -replace_drcs 布尔值
指定是否将替换的DRCS字符渲染为Unicode字符。
默认值为true.
- -replace_msz_ascii 布尔值
指定是否将MSZ(中宽;半宽)全角字母数字替换为半角字母数字。
默认值为true.
- -replace_msz_japanese 布尔值
指定是否将一些MSZ(中宽;半宽)全角日文特殊字符替换为半角字符。
默认值为true.
- -replace_msz_glyph 布尔值
指定是否将支持的字体的MSZ(中宽;半宽)字符替换为半宽字形。 此选项在支持Adobe-Japan1字体的FreeType或DirectWrite渲染器上有效。 例如IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、 游明朝(Yu Mincho)和微软雅黑(Meiryo)。
默认值为true.
- -canvas_size 图像大小
指定用于渲染字幕的画布分辨率;通常应与输入视频的帧大小一致。 这仅适用于
-subtitle_type
被设置为位图.libaribcaption 解码器在渲染位图时假定的输入帧大小如下:
- PROFILE_A : 1440 x 1080,纵横比(SAR/PAR)为 4:3
- PROFILE_C : 320 x 180,纵横比(SAR/PAR)为 1:1
如果输入视频的实际帧大小与上述假定不匹配, 渲染的字幕可能会失真。 要使字幕不失真,请添加
-canvas_size
选项以指定 实际输入视频大小。请注意
-canvas_size
选项对于尺寸不同但纵横比相同的视频来说并不是必需的。 在这种情况下,如果未指定-canvas_size
选项,字幕将会被拉伸或缩放以适应实际视频大小。 如果-canvas_size
选项被指定了不同的大小, 字幕将按指定的大小被拉伸或缩放,并计算出新的纵横比(SAR)。
10.2.2 libaribcaption 解码器使用示例
使用ffplay
工具显示带有 ARIB 字幕的 MPEG-TS 文件:
ffplay -sub_type bitmap MPEG.TS
使用输入帧大小为 1920x1080 的ffplay
工具显示 MPEG-TS 文件:
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
10.3 DVB 字幕
10.3.1 选项
- compute_clut
- -2
如果流中没有匹配的 CLUT,则计算一次 CLUT。
- -1
如果流中没有匹配的 CLUT,则计算 CLUT。
- 0
从不计算 CLUT
- 1
始终计算 CLUT,并覆盖流中提供的 CLUT。
- dvb_substream
选择 dvb 子流,如果为 -1,则默认选择所有子流。
10.4 DVD 字幕
该解码器解码用于 DVD 的位图字幕;相同的字幕也可以在 VobSub 文件对和一些 Matroska 文件中找到。
10.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
.
10.5 libzvbi-teletext
Libzvbi 允许 libavcodec 解码 DVB 文本页面和 DVB 文本字幕。在配置期间需要 libzvbi 头文件和库的存在。您需要通过--enable-libzvbi
.
明确配置构建。
- 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未设置,则它仅影响起始框和结束框之间的字符,通常是字幕。若txt_transparent被设置,默认值为 0,否则为 255。
11 比特流过滤器
当您配置 FFmpeg 的构建时,所有支持的比特流过滤器默认都是启用的。您可以使用配置选项列出所有可用的过滤器。--list-bsfs
.
您可以通过使用配置选项禁用所有比特流过滤器,--disable-bsfs
并使用选项
有选择地启用任何比特流过滤器,--enable-bsf=BSF
或者可以使用选项
禁用特定的比特流过滤器。--disable-bsf=BSF
.
选项-bsfs
of ff* 工具将显示
构建中包括的所有支持的比特流过滤器的列表。
ff* 工具有一个 -bsf 选项,按流应用,接受以逗号分隔的过滤器列表,其参数跟过滤器名称用 "=" 分隔。
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
以下是当前可用比特流过滤器的说明, 以及它们的参数(如果有)。
11.1 aac_adtstoasc
将 MPEG-2/4 AAC ADTS 转换为 MPEG-4 音频特定配置比特流。
此过滤器从 MPEG-2/4 ADTS 头中创建 MPEG-4 AudioSpecificConfig,并移除 ADTS 头。
例如,将 AAC 流从原始 ADTS AAC 或 MPEG-TS 容器复制到 MP4A-LATM、FLV 文件或 MOV/MP4 文件(及相关格式如 3GP 或 M4A)时需要使用此过滤器。请注意,对于 MP4A-LATM 和 MOV/MP4 及相关格式,它会自动插入。
11.2 av1_metadata
修改嵌入在 AV1 流中的元数据。
- td
在流的所有时间单元中插入或移除时间分隔符 OBU。
- ‘insert’
在每个没有时间分隔符的时间单元前插入 TD。
- ‘remove’
从每个有时间分隔符的时间单元中移除 TD。
- color_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述字段(见 AV1 第 6.4.2 节)。
- color_range
设置流中的颜色范围(见 AV1 第 6.4.2 节;注意,对于使用 BT.709 原色、sRGB 传递特性和 Identity(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
删除填充 OBU。
11.3 chomp
移除数据包末尾的零填充。
11.4 dca_core
从 DCA/DTS 流中提取核心,移除扩展如 DTS-HD。
11.5 dovi_rpu
处理 HEVC/AV1 比特流中的 Dolby Vision 元数据,支持元数据压缩。
- strip
如果启用,从流中移除所有 Dolby Vision 元数据(配置记录 + RPU 数据块)。
- compression
设置启用的压缩级别。
- ‘none’
无元数据压缩。
- ‘limited’
有限的元数据压缩方案,应与大多数设备兼容。 这是默认设置。
- ‘extended’
扩展的元数据压缩。设备无需支持此功能。 注意,目前此级别在 libavcodec 中表现与“limited”相同。
11.6 dump_extra
将额外数据添加到过滤数据包的开头, 除非这些数据包的开头已经完全匹配需要添加的额外数据。
- freq
附加参数指定应该过滤哪些数据包。 接受的值包括:
- ‘k’
- ‘keyframe’
将额外数据添加到所有关键包。
- ‘e’
- ‘all’
将额外数据添加到所有数据包。
如果未指定,则默认值为“k’.
例如,以下ffmpeg
命令强制 H.264 数据包中的全局头(因此禁用单独的数据包头),
但通过为关键包添加存储在额外数据中的头进行修正: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
11.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
11.8 eac3_core
从 E-AC-3 流中提取核心,移除额外通道。
11.9 extract_extradata
提取内嵌额外数据。
某些编解码器允许长期头部(例如 MPEG-2 序列头, 或者 H.264/HEVC(VPS/SPS/PPS))以“内嵌”(即作为包含编码帧的数据流的一部分)或“外部”(例如在容器级别)形式传输。在 FFmpeg 术语中,这后一种形式称为“额外数据”。
此比特流过滤器检测内嵌头部,并使其可作为额外数据使用。
- remove
启用此选项后,长期头部在提取后将从比特流中移除。
11.10 filter_units
从流中移除具有特定类型的单元。
- pass_types
透过的单元类型或单元类型范围列表, 移除所有其他单元。此选项值为由“|”分隔的单元类型值或使用“-”的单元范围。
- remove_types
与pass_types类似, 但指定的类型组中的单元将被移除,其他单元将被保留。
pass_types 和 remove_types 所使用的类型对应于 H.264、HEVC 和 H.266 中的 NAL 单元类型(参见 H.264 和 HEVC 规范中的表 7-1 或 H.266 规范中的表 5)、JPEG 的标记值(不带 0xFF 前缀)以及没有前缀的 MPEG-2 起始码(即 0x000001 后的字节)。 对于 VP8 和 VP9,每个单元的类型均为零。
这种转换不会影响额外数据,但请注意,如果流包含内联参数集, 删除后可能会使输出无法使用。
例如,对 H.264 流移除所有非 VCL 单元:
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
11.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
11.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 参数中设置 tick 率(time_scale / num_units_in_tick)。这是流中可表示的最小时间单位,在许多情况下表示流的场率(帧率的两倍)。
- fixed_frame_rate_flag
设置流是否具有固定帧率——通常这意味着帧率恰好是 tick 率的一半,但具体含义依赖于交错和图像结构(参见 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’)、一个 level_idc 值(例如,‘42’),或特殊名称‘auto’,表示过滤器应尝试根据输入流属性推测级别。
11.13 h264_mp4toannexb
将 H.264 位流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.264 规范的附录 B 中定义)。
某些流媒体格式需要此操作,通常是 MPEG-2 传输流格式(复用器mpegts
).
例如,要使用ffmpeg
将包含 H.264 流的 MP4 文件重新复用为 mpegts 格式,可以使用以下命令:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
请注意,此过滤器会自动插入用于 MPEG-TS(复用器mpegts
)与原始 H.264(复用器h264
)输出格式。
11.14 h264_redundant_pps
对某些 Blu-ray 流应用特定的修正,这些流包含修订不相关参数的冗余 PPS,会干扰需要正确额外数据的其他转换操作。
11.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 参数中设置 tick 率(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’,表示过滤器应尝试根据输入流属性推测级别。
11.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
)输出格式。
11.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
11.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,或者至少是 AVI 中带有 MJPG fourcc 的 MJPEG,是一种有限的——并且*省略了*——霍夫曼表的 JPEG。JPEG 必须是 YCbCr 颜色空间,必须是 4:2:2,并且必须使用基本霍夫曼编码,而不是算术或渐进式编码……确实可以提取 MJPEG 帧并使用常规 JPEG 解码器解码它们,但必须在它们前面添加 DHT 段,否则解码器将无法知道如何解压缩数据。所需的具体表格在 OpenDML 规范中有说明。”
此比特流过滤器修补从 MJPEG 流中提取的帧的头,使其成为完整合格的 JPEG 图像(携带 AVI1 头 ID 并缺少 DHT 段)。
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
11.19 mjpegadump
向比特流添加一个 MJPEG A 头,以便 QuickTime 解码。
11.20 mov2textsub
从 MOV 字幕中提取一个可表示的文本文件,去除每个字幕包中的元数据头。
另见text2movsub过滤器。
11.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)。
11.22 mpeg4_unpack_bframes
解压 DivX 风格的封装 B 帧。
DivX 风格的封装 B 帧不是有效的 MPEG-4,仅是对 Video for Windows 子系统问题的权宜之计。 它们使用更多空间,可能导致轻微的音视频同步问题,需要更多的 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
11.23 noise
破坏数据包的内容或仅删除它们而不破坏容器。可用于模糊测试或测试错误恢复/隐藏。
参数:
- amount
接受一个表达式,每个数据包的评估结果决定该数据包中字节修改的频率。值低于 0 将导致频率可变。默认值为 0,这不会导致修改。然而,如果既未指定 amount 也未指定 drop,则会将 amount 设置为-1。请参阅下面的可接受变量。
- drop
接受一个每包评估的表达式,其值决定该包是否被丢弃。评估为正值会导致数据包被丢弃。评估为负值会导致其被丢弃的几率可变,大致与值的大小成反比。默认值为 0,这不会导致数据包丢弃。请参阅下面的可接受变量。
- dropamount
接受一个非负整数,分配一个变量丢弃几率,大致与该值成反比。默认是 0,这不会导致丢弃。此选项可向后兼容,相当于将 drop 设置为具有相同大小的负值,例如
dropamount=4
等同于drop=-4
。如果还指定 drop,则会忽略此选项。
bothamount
和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’
一个伪随机整数,主要源于数据包负载的内容。
11.23.1 示例
对每个字节应用修改但不丢弃任何数据包。
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
在时间戳 30 秒后丢弃所有未标记为关键帧的视频数据包,但不修改剩余数据包。
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
11.24 null
此位流过滤器未改变数据包,直接通过。
11.25 pcm_rechunk
将 PCM 音频重新分包为固定数量的采样每个数据包或固定数据包速率每秒。这类似于(ffmpeg-filters)asetnsamples 音频滤镜但适用于音频数据包而不是音频帧。
- nb_out_samples, n
设置每个输出音频数据包的采样数量。此数字表示每个通道的采样数量。默认值为 1024。. Default value is 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 -
11.26 pgs_frame_merge
将一个以“显示集结束”段结束的 PGS 字幕段序列合并为一个数据包。
这是某些支持 PGS 字幕的容器(混流器matroska
).
需要的。
修改嵌入在 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
为文件中的每帧设置混合对数伽玛参数。
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
11.28 remove_extra
从数据包中移除附加数据。
它接受以下参数:
- freq
设置从哪个帧类型中移除附加数据。
- ‘k’
仅从非关键帧中移除附加数据。
- ‘keyframe’
仅从关键帧中移除附加数据。
- ‘e, all’
从所有帧中移除附加数据。
11.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
11.30 showinfo
记录基本数据包信息。主要用于测试、调试和开发。
11.31 text2movsub
将文本字幕转换为带元数据头的 MOV 字幕(如mov_text
编解码器使用的)。
另请参见mov2textsub滤镜。
11.32 trace_headers
记录包含编码流头中所有语法元素的跟踪输出(所有高于单独编码块级别的内容)。 这对于调试低级流问题非常有用。
支持 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根据构建可能仅支持其中的子集。
11.33 truehd_core
从 TrueHD 流中提取核心,丢弃 ATMOS 数据。
11.34 vp9_metadata
修改嵌入 VP9 流中的元数据。
- color_space
在帧头中设置色彩空间值。 请注意,任何设置为 RGB 的帧都将隐式设置为 PC 范围,并且 RGB 与配置文件 0 和 2 不兼容。
- ‘unknown’
- ‘bt601’
- ‘bt709’
- ‘smpte170’
- ‘smpte240’
- ‘bt2020’
- ‘rgb’
- color_range
在帧头中设置色彩范围值。 请注意,色彩空间施加的任何值都将优先于此值。
- ‘tv’
- ‘pc’
11.35 vp9_superframe
将 VP9 不可见的(alt-ref)帧重新合并为 VP9 超帧。这修复了拆分/分段的 VP9 流中可见对应帧的 alt-ref 帧拆分问题。
11.36 vp9_superframe_split
将 VP9 超帧拆分为单帧。
11.37 vp9_raw_reorder
对于具有正确时间戳但可能顺序错误的 VP9 流,插入额外的 show-existing-frame 包以纠正顺序。
12 格式选项
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 整数 (输入)
指定分析输入所需要的微秒数量。较高的值将使检测更准确的信息成为可能,但会增加延迟。默认值为 5,000,000 微秒 = 5 秒。
- cryptokey 十六进制字符串 (输入)
设置解密密钥。
- indexmem 整数 (输入)
设置时间戳索引(每流)使用的最大内存。
- rtbufsize 整数 (输入)
设置缓冲实时帧使用的最大内存。
- fdebug 标志 (输入/输出)
打印指定的调试信息。
可能的值:
- ‘ts’
- max_delay 整数 (输入/输出)
设置最大混流或解流延迟,以微秒为单位。
- fpsprobesize 整数 (输入)
设置用于分析帧速率的帧数。
- 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),设定探测大小(字节)。 该选项旨在为对更好时长探测感兴趣的用户,或者间接用于串接解复用器的用户提供服务。 典型使用场景为高码率的MPEG-TS CBR,具有高视频缓冲和结尾清理,视频和音频PTS相似:在这种情况下,最后一个视频数据包与最后一个音频数据包之间的物理间隙较大,需要读取大量字节以获取视频流时长。 另一种使用场景是默认探测行为仅达到单一视频帧而非最后一个流中的帧,导致时长不准确。 设置此选项即使对于小文件也会产生性能影响,因为探测大小是固定的。 默认行为是通用的权衡,大部分是自适应的,但探测大小不会无代价地扩展以获取流时长。 必须是不小于1的整数,或为0以采用默认行为。
- strict, f_strict 整数 (输入/输出)
指定遵循标准的严格程度。
f_strict
已被弃用, 仅应通过ffmpeg
工具使用。可能的值:
- ‘very’
严格遵循旧的更严格版本的规范或参考软件
- ‘strict’
严格遵守规范中的所有事项,无论后果如何
- ‘normal’
- ‘unofficial’
允许非官方扩展
- ‘experimental’
允许非标准化的实验性项目,实验性 (未完成/正在进行中/未经过充分测试)解码器和编码器。 注意:实验性解码器可能会带来安全风险,请不要使用此选项解码不可信输入。
12.1 格式流规格
格式流规格允许选择一个或多个匹配特定属性的流。
流规格的确切语义由avformat_match_stream_specifier()
函数定义,其声明在libavformat/avformat.h头文件中并在ffmpeg手册中的流规格部分中进行了说明.
13 解复用器
解复用器是FFmpeg中配置的元素,可以从特定类型的文件读取多媒体流。
当配置FFmpeg构建时,默认启用所有支持的解复用器。可以使用配置选项列出所有可用项--list-demuxers
.
可以使用配置选项禁用所有解复用器--disable-demuxers
,并使用选项单独启用解复用器--enable-demuxer=解复用器
,或使用选项禁用它--disable-demuxer=解复用器
.
ff*工具的选项将显示已启用解复用器列表。使用-demuxers
查看已启用解复用器和复用器的组合列表。-formats
某些当前可用解复用器的描述如下所示。
13.1 aa
13.1 aa
Audible格式2、3和4解复用器。
此解复用器用于解复用Audible格式2、3和4 (.aa) 文件。
13.2 aac
原始音频数据传输流AAC解复用器。
此解复用器用于解复用包含单一AAC流以及任何ID3v1/2或APE标签的ADTS输入。
13.3 apng
动态PNG图像解复用器。
此解复用器用于解复用APNG文件。 所有头部(但不包括PNG签名)至第一个fcTL块之前的内容作为额外数据传输。 然后帧被拆分为两个fcTL块之间的所有块,或最后一个fcTL与IEND块之间的内容。
- -ignore_loop 布尔值
如果设置,则忽略文件中的循环变量。默认启用。
- -max_fps 整数
每秒最大帧率。默认值为0表示不限制。
- -default_fps 整数
文件中未指定时使用的默认帧率(0表示尽可能快)。默认值为15。
13.4 asf
高级系统格式解复用器。
该解复用器用于解复用ASF文件和MMS网络流。
- -no_resync_search 布尔值
不尝试通过查找特定可选起始码进行重新同步。
13.5 concat
虚拟连接脚本解复用器。
该解复用器从文本文件读取文件列表和其他指令,并一个接一个地将它们解复用,如同它们的所有数据包已被复用到一起。
文件中的时间戳被调整,使第一文件从0开始,每个后续文件从前一个文件结束的地方开始。需要注意,此操作是全局性的,可能会导致间隙,如果所有流的长度不完全相同。
所有文件必须具有相同的流(相同的编解码器、相同的时间基等)。
每个文件的持续时间用于调整下一个文件的时间戳:如果持续时间不正确(例如因为通过比特率计算得出,或者文件被截断),可能会导致伪影。可以使用duration
指令覆盖存储在每个文件中的持续时间。
13.5.1 语法
脚本是一个扩展ASCII文本文件,每行一个指令。 空行、前导空格以及以“#”开头的行将被忽略。 以下指令被识别:
file 路径
文件的路径;特殊字符和空格必须用反斜杠或单引号转义。
所有后续与文件相关的指令均适用于该文件。
ffconcat version 1.0
识别脚本类型和版本。
为了让FFmpeg自动识别格式,该指令必须出现在脚本的第一行,且完全一致(没有额外空格或字节顺序标记)。
duration 持续时间
文件的持续时间。此信息可以从文件中指定;在此处指定可能更有效或在文件中信息不可用或不准确时有所帮助。
如果为所有文件设置了持续时间,则可以在整个连接视频中进行寻址。
inpoint 时间戳
文件的入点。当解复用器打开文件时,它会立即跳转到指定时间戳进行寻址。寻址的方式确保所有流能够在入点成功展现。
对于帧内编码器来说,此指令效果最佳,因为对于非帧内编码器,通常会在实际入点之前获取额外数据包,并且解码内容可能包含入点之前的帧。
对于每个文件,在文件入点之前的数据包时间戳将小于计算出的文件起始时间戳(在第一个文件的情况下为负值),并且文件的持续时间(如果未由
duration
指令指定)将根据其指定的入点减少。由于在指定入点之前可能出现数据包,数据包时间戳可能在两个连接的文件之间重叠。
outpoint 时间戳
文件的出点。当解复用器达到任何流中指定的解码时间戳时,它会将其视为文件结束状态,跳过当前流和所有剩余流的所有数据包。
出点是排他的,这意味着解复用器不会输出解码时间戳大于或等于出点的数据包。
此指令对于帧内编码器和所有流紧密交错的格式效果最佳。对于非帧内编码器,通常会有额外数据包的展示时间戳在出点之后,因此解码内容可能包含出点之后的帧。如果流没有紧密交错,您可能无法在出点之前从所有流中获取数据包,并且可能只能解码最早的流直到出点。
文件的持续时间(如果未由
duration
指令指定)将根据其指定的出点减少。file_packet_metadata 键=值
文件数据包的元数据。指定的元数据将设置为每个文件数据包。可以多次指定该指令以添加多个元数据条目。 此指令已被弃用,请使用
file_packet_meta
替代。file_packet_meta 键 值
文件数据包的元数据。指定的元数据将设置为每个文件数据包。可以多次指定该指令以添加多个元数据条目。
option 键 值
访问、打开和探测文件的选项。 可以存在多次。
stream
在虚拟文件中引入一个流。 所有后续与流相关的指令均适用于最近引入的流。 某些流属性必须设置,以便能够识别子文件中的匹配流。 如果脚本中没有定义流,则从第一个文件复制流。
exact_stream_id 标识
设置流的标识值。 如果提供了此指令,那么将在子文件中使用对应的标识字符串。 这对于MPEG-PS(VOB)文件尤其有用,其中流的顺序不可靠。
stream_meta 键 值
流的元数据。 可以存在多次。
stream_codec 值
流的编解码器。
stream_extradata 十六进制字符串
流的额外数据,以十六进制编码表示。
chapter 标识 起始 结束
添加一个章节。标识是一个唯一的标识符,可能较小且连续。
13.5.2 选项
该解复用器接受以下选项:
- safe
如果设置为1,则拒绝不安全的文件路径和指令。 文件路径被视为安全,条件是它不能包含协议说明,且是相对路径,所有组件只包含便携字符集(字母、数字、点、下划线和连字符)中的字符,且没有以点开始的组件。
如果设置为0,则接受任意文件名。
默认值为1。
- auto_convert
如果设置为1,则尝试对数据包数据执行自动转换,以使流可连接。 默认值为1。
目前,唯一的转换是将h264_mp4toannexb比特流过滤器添加到MP4格式的H.264流中。特别是在存在分辨率变化时,这是必要的。
- segment_time_metadata
如果设置为1,每个数据包将包含lavf.concat.start_time和lavf.concat.duration数据包元数据值,这些值表示连接输出中相应文件段的起始时间和持续时间,以微秒为单位。仅当基于连接文件已知时才设置持续时间元数据。默认值为0。
13.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
13.6 dash
基于HTTP动态自适应流式处理分离器。
此分离器显示清单中找到的所有AV流。通过设置AV流上的丢弃标志,调用方可以决定实际接收哪些流。每个流都镜像id
和bandwidth
从<Representation>
的属性,分别作为名为“id”和“variant_bitrate”的元数据键。
13.6.1 选项
此分离器接受以下选项:
- cenc_decryption_key
16字节密钥(十六进制),用于解密使用ISO通用加密(CENC/AES-128 CTR;ISO/IEC 23001-7)加密的文件。
13.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的问题。
13.7.1 背景
DVD视频不是传统意义上直接可访问的线性容器格式。相反,它允许复杂的编程播放,精心复合的MPEG-PS流存储在无头VOB文件中。对于终用户而言,这些流简单地称为“标题”,但实际的逻辑播放顺序由标题中的一个或多个“PGC”(节目组链)定义。PGC反过来由多个“PG”(程序)组构成,这些是真正的视频片段(对于典型的视频特性,按顺序排列)。PGC结构,以及流布局和元数据,存储在需要解析的IFO文件中。PGC可以更容易地理解为播放列表。
实际的DVD播放器依赖于通过菜单的用户GUI交互和内部VM来驱动分离方向。通常,用户要么通过菜单导航,要么自动重定向到他们选择的PGC。在此过程中以及后续播放期间,DVD播放器的内部VM还维护一个状态,并执行指令,这可能会导致播放期间跳至不同的扇区。这就是为什么需要libdvdnav,因为对于光盘上的MPEG-PS块(VOB)进行线性读取在许多情况下不足以生成正确的播放序列。
存在许多其他DVD结构(还有很长的主题)这里不做讨论。其中,NAV包特别是由此分离器处理以构建准确的时间轴,但不作为流输出。如需高层次的理解,请参考:https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures
13.7.2 选项
此分离器接受以下选项:
- title int
要播放的标题编号。如果pgc和pg未设置,则必须设置。不适用于菜单。默认值为0(自动),当前仅选择第一个可用的标题(标题1),并通知用户相关影响。
- chapter_start int
要开始的章节(PTT,标题的一部分)编号。不适用于菜单。默认值为1。
- chapter_end int
要结束的章节(PTT,标题的一部分)编号。不适用于菜单。默认值为0,这是一个特殊值,表示在最后一个可能的章节结束。
- angle int
视频角度编号,指实际上由交错在VOB中的备用帧组成的附加视频流。不适用于菜单。默认值为1。
- region int
用于播放的区域码。一些光盘可能会使用此值在不同区域默认播放特定角度。此选项不会影响真实DVD驱动器的区域码(如果用作输入)。不适用于菜单。默认值为0,“世界”。
- menu bool
分离菜单资源,而不是导航标题。需要提供菜单的确切坐标(menu_lu, menu_vts, pgc, pg)。默认值为false。
- menu_lu int
要分离的菜单语言。在DVD中,菜单按语言分组。默认值为0,第一个语言单元。
- menu_vts int
菜单所在的VTS,或者0如果是VMG菜单(根级)。默认值为0,VMG菜单。
- pgc int
入口PGC以开始播放,与pg一起使用。设置的替代方法为title。目前不支持章节标记。对于菜单,必须显式设置。默认值为0,根据title.
- pg 的值自动解析。
intpgc入口PG以开始播放,与title一起使用。设置的替代方法为title,或者从菜单的开头(PG 1)开始。
- preindex bool
启用此选项以获得准确的章节(PTT)标记和持续时间测量,这需要一个缓慢的二次读取过程以从NAV包中索引章节标记时间戳。这是对真实光学驱动器的非理想额外工作。建议并更快将此选项与存储在硬盘上的DVD结构备份一起使用。不兼容pgc和pg。不适用于菜单。默认值为0,false。
- trim bool
跳过填充单元(即长度小于1秒的单元)。许多光盘的PGC开头存在填充段,通常包含垃圾数据,用于控制真实DVD播放器的缓冲速度,无其他有数据价值。不适用于菜单。默认值为1,true。
13.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> ...
13.8 ea
电子艺术多媒体格式分离器。
此格式适用于各种电子艺术游戏。
13.8.1 选项
- merge_alpha bool
-
通常,VP6的alpha通道(如果存在)作为第二个视频流返回,通过设置此选项,分离器可以返回一个包含alpha通道的单个视频流,除此之外还有普通视频。
13.9 imf
跨操作母版格式分离器。
该分离器显示IMF组成中找到的音频和视频流,如SMPTE ST 2067-2.
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
未指定时,分离器将在与CPL相同目录中查找名为-assetmaps
is not specified, the demuxer looks for a file called
ASSETMAP.xml的文件。
13.10 flv, live_flv, kux
Adobe Flash视频格式分离器。
此分离器用于拆分FLV文件和RTMP网络流。在直播网络流的情况下,如果强制格式,可以使用live_flv选项代替flv,以应对时间戳不连续情况。KUX是Youku平台使用的FLV变体。
ffmpeg -f flv -i myfile.flv ... ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
- -flv_metadata bool
根据onMetaData数组内容分配流。
- -flv_ignore_prevtag bool
忽略上一个标签值的大小。
- -flv_full_metadata bool
输出onMetadata的所有上下文。
13.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无限循环。
13.12 hls
HLS分离器
Apple HTTP直播流分离器。
此分离器显示来自所有变体流的所有AV流。id字段设置为比特率变体索引编号。通过设置AV流上的丢弃标志(在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。
13.13 image2
图像文件解封装器。
此解封装器从由一个模式指定的图像文件列表中读取。 模式的语法和意义由以下选项指定pattern_type.
模式可能包含一个后缀,用于自动确定文件中图像的格式。
所有文件中的图像的大小、像素格式和格式必须一致。
此解封装器接受以下选项:
- framerate
为视频流设置帧率。默认值为25。
- loop
如果设置为1,则循环输入。默认值为0。
- pattern_type
选择用于解释提供的文件名的模式类型。
pattern_type接受以下值之一。
- none
禁用模式匹配,因此视频将仅包含指定的图像。如果您不希望从多个图像创建序列并且您的文件名可能包含特殊的模式字符,则应使用此选项。
- sequence
选择一个序列模式类型,用于通过连续编号指定一系列文件。
序列模式可能包含字符串“%d”或“%0Nd”,用于指定匹配模式的每个文件名中表示一个顺序编号的位置。如果使用形式“%d0Nd”,则每个文件名中的数字字符串是用0填充的N表示数字的填充位数。可以通过字符串“%%”在模式中指定字面字符‘%’。
如果序列模式包含“%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
选择一个通配符模式类型。
该模式的解释方式类似于
glob()
模式。这仅在libavformat编译时支持通配符匹配的情况下可用。- glob_sequence (已弃用,将被移除)
选择一个混合的通配符/序列模式。
如果您的libavformat版本已编译支持通配符匹配,并且提供的模式包含至少一个未转义的前缀"%"的元字符, 则该模式将被解释为
%*?[]{}
模式,否则将被理解为一个序列模式。glob()
pattern, otherwise it is interpreted like a sequence pattern.所有通配符特殊字符
%*?[]{}
必须以"%"为前缀。要转义一个字面“%”,您应使用"%%"。例如模式
foo-%*.jpeg
将匹配所有以"foo-"为前缀,以“.jpeg”结束的文件名,并且foo-%?%?%?.jpeg
将匹配所有以"foo-"为前缀、后跟三个字符顺序并以“.jpeg”结束的文件名。此模式类型已经过弃用,建议使用glob和sequence.
默认值为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
对应于正在读取的文件名。
13.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
13.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。
13.15 libmodplug
基于ModPlug的模块解封装器。
查看https://github.com/Konstanty/libmodplug
它将导出一个2声道16位44.1 kHz音频流。
可选择导出一个pal8
16色视频流,可以带或不带打印的元数据。
它接受以下选项:
- noise_reduction
应用一个简单的低通滤波器。可以为1(开启)或0(关闭)。默认值为0。
- reverb_depth
设置混响量。范围0-100。默认值为0。
- reverb_delay
设置延迟时间,单位为毫秒,范围限制为40-250毫秒。默认值为0。
- bass_amount
应用低音扩展,即XBass或增强型低音。范围为0(安静)到100(响亮)。默认值为0。
- bass_range
设置低音频率的上限。范围为10-100 Hz。默认值为0。
- surround_depth
应用杜比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。
13.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。
13.17 mov/mp4/3gp
用于Quicktime文件格式和ISO/IEC基础媒体文件格式的解封装器(ISO/IEC 14496-12或MPEG-4 Part 12,ISO/IEC 15444-12或JPEG 2000 Part 12)。
注册的扩展名:mov,mp4,m4a,3gp,3g2,mj2,psp,m4b,ism,ismv,isma,f4v
13.17.1 选项
此解封装器接受以下选项:
- enable_drefs
启用加载外部轨道,默认情况下禁用。 启用此选项在某些用例中可能会理论上泄露信息。
- use_absolute_path
允许通过绝对路径加载外部轨道,默认情况下禁用。 启用此项会构成安全风险。仅在确保来源非恶意时才应启用。
- seek_streams_individually
在寻找时,分别识别每个流中最接近的点并从该点解封装该流中的数据包。这可能导致与从开头逐一解封装相比,产生不同的数据包序列。默认值为true。
- ignore_editlist
忽略任何编辑列表(edit list)原子。默认情况下,解封装器会修改流索引以反映编辑列表所描述的时间线。默认值为false。
- advanced_editlist
修改流索引以反映编辑列表描述的时间线。
ignore_editlist
必须设置为false才能使此选项生效。 如果ignore_editlist
和此选项均设置为false,则仅修改流索引的起始位置以反映初始停顿时间或编辑列表描述的起始时间戳。默认值为true。- ignore_chapters
不解析章节。包括GoPro的“HiLight”标签/时刻。请注意,仅在输入可寻址时才会解析章节。默认值为false。
- use_mfra_for
对于可寻址的片段化输入,从媒体片段随机访问框(mfra)中设置片段的起始时间戳(如果存在)。
可用的选项如下:
- ‘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
设为true而此选项为空,则XMP_框的内容仍作为键导出。默认值为false。 box are still exported but with keyXMP_
. Default is false.- activation_bytes
用于解密Audible AAX和AAX+文件的4字节密钥。请参阅以下Audible AAX子部分。
- audible_fixed_key
用于处理Audible AAX/AAX+文件的固定密钥。已经预设,因此通常不需要指定。
- decryption_key
16字节密钥(十六进制)用于解密使用ISO常用加密加密的文件(CENC/AES-128 CTR;ISO/IEC 23001-7)。
- max_stts_delta
写入track stts框中的非常高的采样间隔可能偶尔是有意的,但通常这些是错误写入或用于存储负值以用于dts校正的。当以32位有符号整数处理并为负数时,用户可以通过此选项设定上限,超出此值的间隔将改为设置为1。 单位为轨道时间比例。默认值为
Unit is the track time scale. Range is 0 to UINT_MAX. Default is
UINT_MAX - 48000*10
允许对48 kHz音频流进行最长10秒的DTS校正,同时适用于99.9%的情况。uint32
范围。- interleaved_read
在解复用器级别交错来自多个轨道的包。对于交错不良的文件,此操作可防止由于不同轨道之间的包间隔较大而引起的播放问题,因为MOV/MP4对包的放置没有要求。然而,由于轨道之间的搜索,此操作可能会导致对交错非常差的文件进行过多的搜索,因此禁用它可能会导致I/O问题,但会以播放为代价。
13.17.2 Audible AAX
Audible AAX文件是加密的M4B文件,可以通过指定4字节激活密钥进行解密。
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
13.18 mpegts
MPEG-2传输流解复用器。
此解复用器接受以下选项:
- resync_size
设置寻找新同步的大小限制。默认值为65536。
- skip_unknown_pmt
跳过PAT中未定义节目的PMT。默认值为0。
- fix_teletext_pts
覆盖电报文本包的PTS和DTS值,使用第一程序的PCR计算时间戳,该程序电报文本流属于且未被丢弃。如果您希望电报文本包的PTS和DTS值不变,请将此选项设置为0,默认值为1。
- ts_packetsize
输出选项包含以字节为单位的原始包大小。显示检测到的原始包大小,用户无法设置。
- scan_all_pmts
扫描并合并所有PMT。该值为-1到1之间的整数(-1表示自动设置,1表示启用,0表示禁用)。默认值为-1。
- merge_pmt_versions
当PMT的版本更新且基本流移动到不同的PID时,重新使用现有流。默认值为0。
- max_packet_size
设置解复用器发出的包的最大大小(字节)。超过此大小的有效载荷将分割到多个包中。范围为1到INT_MAX/2。默认值为204800字节。
13.19 mpjpeg
多部分MIME解复用器中的MJPEG。
此解复用器允许读取MJPEG,其中每帧表示为multipart/x-mixed-replace流的一部分。
- strict_mime_boundary
默认实现为多部分MIME边界检测应用宽松标准,以防止针对未正确生成MIME MJPEG流的多个现有端点引起的回归。通过将此选项设置为1,该选项将会对边界值进行更严格的检查。
13.20 rawvideo
原始视频解复用器。
此解复用器允许读取原始视频数据。由于没有指定假定视频参数的头,因此用户必须指定这些参数才能正确解码数据。
此解复用器接受以下选项:
- framerate
设置输入视频帧速率。默认值为25。
- pixel_format
设置输入视频的像素格式。默认值为
yuv420p
.- video_size
设置输入视频的大小。此值必须明确指定。
例如,读取一个rawvideo文件input.raw使用ffplay
,假定像素格式为rgb24
,视频大小为320x240
并且帧速率为每秒10帧,使用命令:
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
13.21 rcwt
RCWT(带时间的原始字幕)是一种由ccextractor使用的本地格式,ccextractor是处理608/708闭目字幕(CC)源的常用开源工具。有关格式的更多信息,请参见(ffmpeg-formats)rcwtenc.
此解复用器实现了截至2024年3月的规范,该规范自2014年4月以来保持稳定且未改变。
13.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)。
13.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相对于相对时间戳的参考点将取自读取脚本时的当前时间,并且脚本布局将根据该参考点被冻结。这意味着如果直接播放脚本,实际时间将与绝对时间戳匹配,但如果用户暂停播放或搜索,所有时间将相应地移动。
13.23 tedcaptions
TED演讲使用的JSON字幕。TED演讲.
TED不提供字幕的链接,但可以从网页猜测。FFmpeg源代码中的文件tools/bookmarklets.html包含一个书签小工具以显示它们。
此解复用器接受以下选项:
- start_time
设置TED演讲的开始时间(毫秒)。默认值为15000(15秒)。此选项用于将字幕与可下载视频同步,因为它们包括15秒的介绍。
示例:将字幕转换为大多数播放器可以理解的格式:
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
13.24 vapoursynth
Vapoursynth包装器。
由于安全问题,Vapoursynth脚本不会自动检测,因此必须强制输入格式。对于ff*命令行工具,在输入前添加-f vapoursynth
。-i yourscript.vpy
.
此解复用器接受以下选项:
- max_script_size
解复用器将整个脚本缓冲到内存中。调整此值以设置最大缓冲区大小,这反过来作为可以读取脚本的大小限制。默认值为1 MiB。
13.25 w64
Sony Wave64音频解复用器。
此解复用器接受以下选项:
- max_size
参见wav解复用器的相同选项。
13.26 wav
RIFF Wave音频解复用器。
此解复用器接受以下选项:
- max_size
指定解复用的包的最大包大小(字节)。默认情况下,此值设置为0,这意味着根据输入格式选择一个合理的值。
14 元数据
FFmpeg可以将媒体文件中的元数据转储到简单的UTF-8编码INI样式文本文件中,然后使用元数据复用器/解复用器将其加载回来。
文件格式如下所示:
- 文件由一个标头和一系列元数据标签构成,每行一个,分为几个部分。
- 标头是一个“;FFMETADATA”字符串,后接版本号(当前为1)。
- 元数据标签的格式为“key=value’
- 紧接标头之后是全局元数据。
- 在全局元数据之后可能有每流/每章节元数据部分。
- 章节以括号括起来的章节名称开头(例如,STREAM或CHAPTER),并以下一个章节或文件结束。[’, ‘]在章节部分开头可能有一个可选的时间基,用于开始/结束值。格式必须是“
- At the beginning of a chapter section there may be an optional timebase to be
used for start/end values. It must be in form
‘TIMEBASE=num/den”,其中num和den是整数。如果时间基丢失,则默认假定开始/结束时间以纳秒为单位。
接下来的章节部分必须包含格式为“START=num’, ‘END=num”的章节开始和结束时间,其中num是正整数。
- 空行和以“;”或“#”开头的行会被忽略。
- 包含特殊字符(“=’, ‘;’, ‘#’, ‘\”和换行符)的元数据键或值必须用反斜杠“\’.
- 转义。例如,“foo = bar”中的空格将被视为标签的一部分(上述示例中键为“foo ”,值为“ bar’).
)。
;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如下所示:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
将编辑后的元数据信息从FFMETADATAFILE文件中重新插入可以按如下方式完成:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
15 协议选项
libavformat库提供了一些通用的全局选项,可以设置在所有协议上。此外,每个协议还可能支持所谓的私有选项,这是特定于该组件的。
选项可以通过在FFmpeg工具中指定 -选项 值来设置,或者通过在AVFormatContext
选项中明确设置值,或者使用libavutil/opt.hAPI编程使用。
支持的选项如下:
- protocol_whitelist 列表 (输入)
设置一个以","分隔的允许协议列表。“ALL”匹配所有协议。前面带有“-”的协议将被禁用。默认情况下,允许所有协议,但由另一个协议使用的协议(嵌套协议)将被限制在每个协议的子集上。
16 协议
协议是FFmpeg中配置的元素,能够访问需要特定协议的资源。
当您配置FFmpeg构建时,默认情况下启用所有支持的协议。您可以使用配置选项“–list-protocols”列出所有可用协议。
您可以使用配置选项“–disable-protocols”禁用所有协议,并使用选项“–enable-protocol=PROTOCOL”选择性地启用某个协议,或者可以使用选项“–disable-protocol=PROTOCOL".
”禁用某个特定协议。
ff*工具的"-protocols"选项将显示支持的协议列表。
- rw_timeout
等待(网络)读/写操作完成的最长时间,以微秒为单位。
当前可用协议的描述如下。
16.1 amqp
高级消息队列协议(AMQP)0-9-1是基于代理的发布/订阅通信协议。
必须使用–enable-librabbitmq编译FFmpeg以支持AMQP。同时也必须运行一个单独的AMQP代理。RabbitMQ是一个示例的开源AMQP代理。
代理启动后,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,最大值为任何一个大值(可被整数表示)。在接收数据包时,这会在FFmpeg中设置一个内部缓冲区大小。它应该等于或大于发送到代理的发布数据包大小。否则,接收到的消息可能会被截短,导致解码错误。
- connection_timeout
在与代理建立初始连接期间的超时时间,以秒为单位。默认值为rw_timeout,如果rw_timeout未设置,则为5秒。
- delivery_mode 模式
设置发送到代理的每条消息的传递模式。 接受以下值:
- ‘persistent’
传递模式设置为“持久化”(2)。这是默认值。 消息可能会根据代理的设置写入代理的磁盘。
- ‘non-persistent’
传递模式设置为“非持久化”(1)。 消息将保留在代理的内存中,除非代理的内存压力较大。
16.2 异步
为输入流提供异步数据填充封装。
在后台线程中填充数据,以使I/O操作与解复用线程分离。
async:URL async:http://host/resource async:cache:http://host/resource
16.3 蓝光
读取蓝光播放列表。
接受的选项如下:
- 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
16.4 缓存
为输入流提供缓存封装。
将输入流缓存到临时文件。为直播流提供了寻位功能。
接受的选项如下:
- read_ahead_limit
在不支持寻位时,可以提前读取的字节数。范围为-1到INT_MAX。 -1表示无限制。默认值为65536。
URL语法为
cache:URL
16.5 合并
物理合并协议。
在多个资源中读取和寻位,顺序操作,将其视为唯一的资源。
此协议接受的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的特殊字符"|",您可能需要转义。
16.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
16.7 crypto
AES加密流读取协议。
接受的选项如下:
- key
从给定16进制表示设置AES解密密钥二进制块。
- iv
从给定16进制表示设置AES解密初始向量二进制块。
接受的URL格式:
crypto:URL crypto+URL
16.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
16.9 fd
文件描述符访问协议。
接受的语法为:
fd: -fd 文件描述符
如果没有指定fd默认情况下将使用stdout文件描述符进行写入,使用stdin进行读取。不像pipe协议,fd协议支持常规文件的寻位操作。fd协议不支持通过URL传递文件描述符以确保安全性。
此协议接受以下选项:
- blocksize
设置I/O操作最大块尺寸,以字节为单位。默认值为
INT_MAX
,这不会限制请求的块大小。 适当地设置此值较低可以提高用户中止请求的反应时间,这对于数据传输速度较慢的情况很有价值。- fd
设置文件描述符。
16.10 文件
文件访问协议。
从文件读取或向文件写入。
文件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表示自动(对于普通文件可寻位,对于命名管道不可寻位)。
许多解复用器对于可寻位和不可寻位资源的处理方式不同,覆盖此项可能会加快打开某些文件的速度,但会失去一些功能(例如精确寻位)。
16.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*工具可能因服务器限制产生不完整内容。
16.12 gopher
Gopher协议。
16.13 gophers
Gophers协议。
采用TLS封装的Gopher协议。
16.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文件的直接URL。
16.15 http
HTTP(超文本传输协议)。
此协议接受以下选项:
- seekable
控制连接的可寻位性。设置为1时资源应为可寻位的,设置为0时则假定不可寻位,设置为-1时会尝试自动检测是否可寻位。默认值为-1。
- chunked_post
如果设置为1,则为post操作使用分块传输编码,默认值为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 post数据。
- mime_type
导出MIME类型。
- http_version
导出HTTP响应版本号。通常为"1.0"或"1.1"。
- cookies
设置要在后续请求中发送的cookies。每个cookie的格式与Set-Cookie HTTP响应字段的值相同。多个cookie可以用换行符分隔。
- 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选项,因为此方法需要先从服务器获取nonce参数,不能像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方法。这以后将由自动检测替代。
- 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 请求。这在读取包含小音频数据包的同时包含大视频数据包时很有用。
16.15.1 HTTP Cookies
某些 HTTP 请求会被拒绝,除非请求中传递了 cookie 值。cookies选项允许指定这些 cookies。至少,每个 cookie 必须指定一个值以及路径和域名。 与域名和路径匹配的 HTTP 请求将自动在 HTTP Cookie 头字段中包含 cookie 值。多个 cookies 可以用换行符分隔。
播放指定 cookies 的流所需的语法是:
ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
16.16 Icecast
Icecast 协议 (流式传输至 Icecast 服务器)
此协议接受以下选项:
- ice_genre
设置流的分类。
- ice_name
设置流的名称。
- ice_description
设置流的描述。
- ice_url
设置流的网站 URL。
- ice_public
设置流是否公开。 默认是 0(不公开)。
- user_agent
覆盖 User-Agent 头。如果未指定,将使用格式如 "Lavf/<version>" 的字符串。
- password
设置 Icecast 挂载点密码。
- content_type
设置流的内容类型。如果内容类型不是 audio/mpeg,则必须设置该项。
- legacy_icecast
启用对 Icecast 2.4.0 前版本的支持,这些版本使用的是 SOURCE 方法而不是 HTTP PUT 方法。
- tls
建立与 Icecast 的 TLS(HTTPS)连接。
icecast://[用户名[:密码]@]服务器:端口/挂载点
16.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>
16.18 mmst
MMS(Microsoft Media Server)协议通过 TCP。
16.19 mmsh
MMS(Microsoft Media Server)协议通过 HTTP。
所需语法是:
mmsh://服务器[:端口][/应用][/播放路径]
16.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 输出协议一起使用。
16.21 pipe
UNIX 管道访问协议。
从 UNIX 管道读取和写入数据。
接受的语法是:
pipe:[编号]
如果fd未指定,编号是管道的文件描述符对应的编号(例如 0 表示 stdin,1 表示 stdout,2 表示 stderr)。如果编号未指定,默认将使用 stdout 文件描述符写入,使用 stdin 读取。
例如,使用ffmpeg
:
cat test.wav | ffmpeg -i pipe:0 # ...this is the same as... cat test.wav | ffmpeg -i pipe:
从 stdin 读取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)要求输出协议必须支持可搜索,因此它们将无法与管道输出协议一起使用。
16.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=n
列的数量(4-20,LxD <= 100)
- d=n
行的数量(4-20,LxD <= 100)
示例用法:
-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://主机名:端口
16.23 rist
可靠互联网传输流协议
接受的选项包括:
- rist_profile
支持的值:
- ‘simple’
- ‘main’
这是默认值。
- ‘advanced’
- buffer_size
设置内部 RIST 缓冲区大小(以毫秒为单位)用于数据重传。 默认值为 0,即 librist 默认值(1 秒)。最大值为 30 秒。
- fifo_size
设置 librist 接收器输出 fifo 的大小(以包数量计)。此值必须是 2 的幂。 默认值为 8192(与 librist 的默认值 1024 相比)。
- overrun_nonfatal=1|0
在遇到 librist fifo 缓冲区溢出时保持运行。默认值为 0。
- pkt_size
设置发送数据的最大数据包大小。默认值为 1316。
- log_level
设置 RIST 日志消息的日志级别。仅在明确希望启用调试级消息或数据包丢失模拟时需要设置此项,否则会遵循常规的日志级别。
- secret
设置重写加密密钥,默认未设置。
- encryption
设置加密类型,默认未设置。 可接受的值是 128 和 256。
16.24 rtmp
实时消息传输协议。
实时消息传输协议 (RTMP) 用于通过 TCP/IP 网络流式传输多媒体内容。
所需语法是:
rtmp://[用户名:密码@]服务器[:端口][/应用][/实例][/播放路径]
接受的参数包括:
- username
一个可选用户名(主要用于发布)。
- password
一个可选密码(主要用于发布)。
- server
RTMP 服务器的地址。
- port
使用的 TCP 端口号(默认是 1935)。
- app
访问的应用名称。通常对应于 RTMP 服务器上的应用安装路径 (例如/ondemand/, /flash/live/等)。您也可以通过
rtmp_app
选项覆盖从 URI 解析的值。- playpath
资源的路径或名称,相对于应用指定的路径,可以以 "mp4:" 开头。 您也可以通过, may be prefixed by "mp4:". You can override the value parsed from the URI through the
rtmp_playpath
选项覆盖从 URI 解析的值。- listen
充当服务器,监听传入连接。
- timeout
等待传入连接的最长时间。隐含监听。
此外,可以通过命令行选项设置以下参数
(或者通过代码中的AVOption
):
- 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 流。此选项应设置为多个四字符码值的逗号分隔列表,例如
hvc1,av01,vp09
用于多个编码器或hvc1
用于只有一个编码器。指定的列表将在连接命令消息的 "fourCcLive" 属性中显示。- rtmp_flashver
运行 SWF 播放器的 Flash 插件版本。默认是 LNX 9,0,124,2。(发布时,默认是 FMLE/3.0 (compatible; <libavformat version>)。)
- 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 文件的大小,SWF 验证所必需的。
- 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
从 RTMP 服务器的应用程序 "vod" 读取名为 "sample" 的多媒体资源:
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/
16.25 rtmpe
加密实时消息传输协议。
加密实时消息传输协议 (RTMPE) 用于在标准加密原语内流式传输多媒体内容,包括 Diffie-Hellman 密钥交换和 HMACSHA256,生成一对 RC4 密钥。
16.26 rtmps
基于安全SSL连接的实时消息协议。
实时消息协议 (RTMPS) 用于通过加密连接传输多媒体内容。
16.27 rtmpt
通过HTTP传输的实时消息协议。
通过HTTP传输的实时消息协议 (RTMPT) 用于在HTTP请求中传输多媒体内容以穿越防火墙。
16.28 rtmpte
通过HTTP传输的加密实时消息协议。
通过HTTP传输的加密实时消息协议 (RTMPTE) 用于在HTTP请求中传输多媒体内容以穿越防火墙。
16.29 rtmpts
通过HTTPS传输的实时消息协议。
通过HTTPS传输的实时消息协议 (RTMPTS) 用于在HTTPS请求中传输多媒体内容以穿越防火墙。
16.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/.
16.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
16.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://server[:port][/app][/playpath] options
其中,rtmp_proto是字符串 "rtmp", "rtmpt", "rtmpe", "rtmps", "rtmpte", "rtmpts" 中的一个,分别对应每种RTMP变体,且server, port, app和playpath具有与RTMP本地协议中指定相同的含义。options包含以空格分隔的选项列表,其格式为key=val.
更多信息请参见librtmp手册页 (man 3 librtmp)。
例如,实时向RTMP服务器流式传输文件:ffmpeg
:
ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
使用来播放同一流:ffplay
:
ffplay "rtmp://myserver/live/mystream live=1"
16.33 rtp
实时传输协议。
RTP URL 所需语法为: rtp://hostname[:port][?option=val...]
port指定 RTP 端口。
支持以下 URL 选项:
- ttl=n
设置TTL(生存时间)值(仅适用于多播)。
- rtcpport=n
设置远程 RTCP 端口为n.
- localrtpport=n
设置本地 RTP 端口为n.
- localrtcpport=n'
设置本地 RTCP 端口为n.
- pkt_size=n
将最大数据包大小(以字节为单位)设置为n.
- buffer_size=size
设置最大 UDP 套接字缓冲区大小(以字节为单位)。
- connect=0|1
在 UDP 套接字上执行
connect()
(如果设置为1)或不执行(如果设置为0)。- sources=ip[,ip]
列出允许的源IP地址。
- block=ip[,ip]
列出禁止的源IP地址(阻止)。
- write_to_source=0|1
如果设置为1,将数据包发送到最新接收到的数据包的源地址;如果设置为0,则发送到默认的远程地址。
- localport=n
设置本地 RTP 端口为n.
- localaddr=addr
用于发送数据包或加入多播组的网络接口的本地IP地址。
- timeout=n
将套接字 I/O 操作的超时时间(以微秒为单位)设置为n.
这是一个已弃用的选项,应使用localrtpport。
重要说明:
- 如果未设置rtcpport,则 RTCP 端口将设置为 RTP 端口值加1。
- 如果未设置localrtpport(本地 RTP 端口),则将为本地 RTP 和 RTCP 端口使用任何可用端口。
- 如果未设置localrtcpport(本地 RTCP 端口),则将其设置为本地 RTP 端口值加1。
16.34 rtsp
实时流协议。
RTSP 在 libavformat 中并非严格意义上的协议处理器,它是一个解复用器和复用器。解复用器支持普通RTSP(通过 RTP 传输数据;例如 Apple 和 Microsoft 使用)和 Real-RTSP (通过 RDT 传输数据)。
复用器可用于使用 RTSP ANNOUNCE 向支持它的服务器发送流(当前支持 Darwin Streaming Server 和 Mischa Spiegelmock 的 RTSP 服务器)。RTSP 服务器).
RTSP URL 的所需语法是:
rtsp://hostname[:port]/path
选项可以在ffmpeg
/ffplay
命令行中设置,也可以通过AVOption
s 或avformat_open_input
.
16.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。
16.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 可用,优先为 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
覆盖 User-Agent 头。如果未指定,使用 libavformat 标识符字符串。
- buffer_size
设置套接字缓冲区的最大大小(以字节为单位)。
通过 UDP 接收数据时,解复用器尝试重新排序接收的数据包(因为它们可能乱序到达,或者某些数据包可能完全丢失)。此功能可以通过将最大解复用延迟设置为零禁止(通过 AVFormatContext 的max_delay
字段)。
观看多比特率 Real-RTSP 流时,可使用ffplay
选择要显示的流,分别通过-vst
n和-ast
n选择视频和音频,并可以通过按下v
和a
.
16.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 input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
- 实时接收流:
ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp output
16.35 sap
会话公告协议(RFC 2974)。这在libavformat中技术上不是协议处理器,而是一个复用器和解复用器。它用于RTP流的信令,定期在单独的端口上宣布流的SDP。
16.35.1 复用器
提供给复用器的SAP网址语法为:
sap://destination[:port][?options]
RTP数据包将发送到destination端口端口,
如果未指定端口,默认使用端口5004。,
or to port 5004 if no port is specified.
options为&
-分隔的列表。支持以下选项:
- announce_addr=address
指定发送公告的目标IP地址。 如果省略,公告发送到常用的SAP 公告多播地址224.2.127.254 (sap.mcast.net) 或者 如果destination是IPv6地址,则发送到 ff0e::2:7ffe。
- announce_port=port
指定发送公告的端口,如果未指定默认使用9875。
- ttl=ttl
为公告和RTP数据包指定存活时间值,默认值为255。
- same_port=0|1
如果设置为1,则对所有 RTP 流使用同一对端口。如果为零(默认值),则所有流将发送到唯一的端口,每个流使用比前一个流高2的端口。 VLC/Live555 需要将其设置为1才能接收流。 libavformat 的 RTP 堆栈需要所有流发送到唯一端口。
以下为示例命令行。
在本地子网中广播流,以便在VLC中观看:
ffmpeg -re -i input -f sap sap://224.0.0.255?same_port=1
同样地,用于在ffplay
:
ffmpeg -re -i input -f sap sap://224.0.0.255
观看,并用于在ffplay
中通过IPv6观看:
ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]
16.35.2 解复用器
提供给解复用器的SAP网址语法为:
sap://[address][:port]
address是监听公告的多播地址,如果省略,默认使用224.2.127.254 (sap.mcast.net)。port是监听的端口,如果省略则为9875。
解复用器监听给定的地址和端口上的公告。一旦收到公告,它会尝试接收该特定流。
以下为示例命令行。
回放在通常的SAP多播地址上宣布的第一个流:
ffplay sap://
回放在默认的IPv6 SAP多播地址上宣布的第一个流:
ffplay sap://[ff0e::2:7ffe]
16.36 sctp
流控制传输协议。
接受的 URL 语法为:
sctp://主机:端口[?选项]
协议接受以下选项:
- listen
如果设置任何值,则监听传入连接。默认情况下为传出连接。
- max_streams
设置最大流数。默认未设置限制。
16.37 srt
通过 libsrt 的 Haivision 安全可靠传输协议。
支持的 SRT URL 语法为:
srt://主机名:端口[?选项]
选项包含形式为 & 分隔的选项列表键=值.
或
选项 srt://主机名:端口
选项包含列表 ‘-键 值’ 选项。
协议接受以下选项。
- connect_timeout=毫秒
连接超时;SRT 无法在往返时间 (RTT) 大于 1500 毫秒时连接 (需要 2 次握手交换),默认连接超时为 3 秒。此选项适用于呼叫者和汇聚连接模式。在汇聚模式下,连接超时为该选项设定值的 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 生存时间。仅适用于发送方。默认值为 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使用汇聚连接模式。 默认值为 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=数据包
重新排序容忍度可能增长的最大值。当 重新排序容忍度 > 0 时,丢失报告会被延迟 直到接收到指定数量的数据包。 每当由于非重传原因(即,UDP 数据包 无序)接收到延迟数据包时, 重新排序容忍度将增加,但不会超过该选项的值。 默认值为 0,这表示此机制关闭, 当序列中出现“间隙”时,丢失报告会立即发送。
- minversion
对等方所需的最低 SRT 版本。如果对等方 不满足最低版本要求,则连接将被拒绝。
版本格式以十六进制形式为 0xXXYYZZ,对应人类可读形式中的 x.y.z。
- streamid=字符串
一个长度最多为 512 个字符的字符串,可在连接前在套接字上设置。 这个流 ID 可由监听方通过从 srt_accept 返回的套接字检索, 此套接字是由设置了该流 ID 的套接字连接的。 SRT 不强制规定此字符串内容的特殊含义。 此选项在汇聚模式中没有意义; 其结果可能是简单的一方会覆盖另一方的值, 具体取决于运气决定哪一方会赢。
- srt_streamid=字符串
别名为‘streamid’以避免与 ffmpeg 命令行选项冲突。
- smoother=实时|文件
用于该套接字传输的 Smoother 类型,负责传输与拥塞 控制。双方必须完全使用相同的 Smoother 类型, 否则连接会被拒绝。
- messageapi=1|0
设置后,此套接字使用消息 API,否则使用缓冲区 API。请注意,在实时模式下(见transtype),只有 消息 API 可用。在文件模式下,您可以选择使用以下一种模式:
流 API(默认,这一选项为 False 时)。在此模式下, 您可以通过一条发送指令发送任意数量的数据,甚至可以使用 读取文件的专用函数。内部设施将负责任何速度与 拥塞控制。在接收时,您也可以接收任意数量的数据,未提取 的数据将在下次调用时等待。流模式中没有数据部分的边界。
消息 API。在此模式下,单条发送指令 会传递边界清晰的一块数据(消息)。不同于实时模式, 此消息可能跨越多个 UDP 数据包,唯一的大小限制是它应在 发送缓冲区内。接收方需要使用足够大的缓冲区来接收消息, 否则消息不会被放弃。如果消息不完整(没接收到全部数据包 或存在丢包),则不会被放弃。
- transtype=实时|文件
设置套接字的传输类型,特别是,设置此选项 会同时设置多个其他参数的默认值, 以满足某种特定传输类型的要求。
实时:将选项设置为实时传输所需的参数。在此模式下,您应 通过单条发送指令仅发送可装入一个 UDP 数据包的数据量, 且受限于初始定义在payload_size中的值(此模式下的默认值为 1316)。此模式下无速度控制,仅 带宽控制(如果已配置)以避免超出带宽, 包括重传与控制数据包的开销。
文件:将选项设置为非实时传输所需的参数。参见messageapi用于进一步说明
- linger=秒
套接字在关闭时等待未发送数据的秒数。 默认值为-1。-1表示自动(实时模式下关闭为0秒,文件模式下开启为180秒)。 此选项的范围是0至整数。
INT_MAX
.- tsbpd=1|0
如果为true,则使用基于时间戳的包递送模式。默认行为取决于传输类型:实时模式下启用,文件模式下禁用。
更多信息请参阅:https://github.com/Haivision/srt.
16.38 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字节用作主盐值。
16.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
16.40 tee
将输出写入多个协议。各单独输出以“|”分隔。
tee:file://path/to/local/this.avi|file://path/to/local/that.avi
16.41 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://主机名:端口
16.42 tls
传输层安全(TLS)/ 安全套接字层(SSL)
TLS/SSL URL的必需语法是:
tls://主机名:端口[?选项]
以下参数可通过命令行选项设置
(或通过代码中的AVOption
s):
- 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
使用ffplay
:
ffplay tls://主机名:端口
16.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广播。
注意,在具有广播风暴保护的网络上广播可能无法正确工作。
16.43.1 示例
- 使用
ffmpeg
通过UDP流式传输至远程终端:ffmpeg -i 输入 -f 格式 udp://主机名:端口
- 使用
ffmpeg
以188字节大小的UDP数据包和大输入缓冲区以mpegts格式通过UDP流式传输:ffmpeg -i 输入 -f mpegts udp://主机名:端口?pkt_size=188&buffer_size=65535
- 使用
ffmpeg
从远程终端通过UDP接收:ffmpeg -i udp://[多播地址]:端口 ...
16.44 unix
Unix本地套接字
Unix套接字URL的必需语法是:
unix://文件路径
以下参数可以通过命令行选项设置
(或通过代码中的AVOption
s):
- timeout
超时时间(毫秒)。
- listen
以监听模式创建Unix套接字。
16.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相等或更大。否则接收到的消息可能会被截断,导致解码错误。
17 设备选项
libavdevice库提供与libavformat相同的接口。即,输入设备被视为解复用器, 输出设备被视为复用器,其接口和泛设备选项与libavformat提供的选项相同。 具体参阅ffmpeg-formats手册。
此外,每个输入或输出设备可以支持所谓的私有选项, 这些选项是针对该组件的特殊选项。
可以通过在FFmpeg工具中指定 -选项 值来设置选项,或者直接在设备中显式设置值AVFormatContext
选项或使用libavutil/opt.hAPI进行编程使用。
18 输入设备
输入设备是在FFmpeg中配置的元素,允许访问来自连接到系统的多媒体设备的数据。
配置FFmpeg构建时,所有支持的输入设备均默认启用。 可以使用配置选项 "–list-indevs" 列出所有可用设备。
可以使用配置选项 "–disable-indevs" 禁用所有输入设备,并通过 选项 "–enable-indev=INDEV"有选择地启用某些输入设备或使用选项 "–disable-indev=INDEV".
ff* 工具的选项 "-devices" 将显示支持的输入设备的列表。
以下是当前可用输入设备的描述。
18.1 alsa
ALSA(高级Linux音频架构)输入设备。
在配置时需要在您的系统上安装libasound才能启用此输入设备。
此设备允许从ALSA设备捕获数据。捕获设备的名称必须是一个ALSA卡标识符。
ALSA标识符的语法为:
hw:卡[,设备[,子设备]]
其中设备和子设备组件是可选的。
三个参数(按顺序:卡,开发,子设备) 指定卡号或标识符、设备号和子设备号 (-1 表示任意)。
要查看系统当前识别的卡片列表,请检查以下文件/proc/asound/cards和/proc/asound/devices.
例如,要使用ffmpeg
从卡 ID 为 0 的 ALSA 设备捕获,您可以运行以下命令:
ffmpeg -f alsa -i hw:0 alsaout.wav
更多信息请参阅:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html
18.1.1 选项
- sample_rate
设置以赫兹为单位的采样率。默认值为 48000。
- channels
设置频道数量。默认值为 2。
18.2 android_camera
Android 相机输入设备。
此输入设备使用 Android Camera2 NDK API,该 API 可用于 API 级别 24 及以上的设备。android_camera 的可用性在配置期间自动检测。
该设备允许从 Android 设备上的所有集成到 Camera2 NDK API 中的相机捕获。
可用的摄像头在内部枚举,并可以使用camera_index参数进行选择。输入文件字符串被丢弃。
通常,后置摄像头的索引为 0,而前置摄像头的索引为 1。
18.2.1 选项
- video_size
设置视频尺寸,以字符串形式,如 640x480 或 hd720。如果请求的视频尺寸不可用或默认,将回退到 Android 报告的第一个可用配置。
- framerate
设置视频帧率。如果请求的帧率不可用或默认(-1),将回退到 Android 报告的第一个可用配置。
- camera_index
设置要使用的摄像头索引。默认值为 0。
- input_queue_size
设置最大帧缓冲数量。默认值为 5。
18.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
不录制相应的媒体类型。 这相当于指定一个空的设备名称或索引。
18.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 数据流。
18.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
18.4 bktr
BSD 视频输入设备。已弃用并将被移除——如果您有兴趣维护它,请联系开发者。
18.4.1 选项
- framerate
设置帧率。
- video_size
设置视频帧尺寸。默认值为
vga
.- standard
-
可用值为:
- ‘pal’
- ‘ntsc’
- ‘secam’
- ‘paln’
- ‘palm’
- ‘ntscj’
18.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。请注意,所有音频频道都被捆绑在一个单一音轨中。
18.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 位 YUV 422 或 8 位 ARGB,否则为 8 位 YUV 422。
- ‘uyvy422’
-
8 位 YUV 422。
- ‘yuv422p10’
-
10 位 YUV 422。
- ‘argb’
-
8 位 RGB。
- ‘bgra’
-
8 位 RGB。
- ‘rgb10’
-
10 位 RGB。
- teletext_lines
如果设置为非零,将从垂直辅助数据中捕获额外的 Teletext 流。支持 SD PAL(576i)和 HD(1080i 或 1080p)源。在 HD 源情况下会解码 OP47 数据包。
此选项是捕获的 SD PAL VBI 行的位掩码,具体为第 6 行至 22 行以及第 318 行至 335 行。位掩码中的 LSB 为第 6 行。没有包括 Teletext 信息的选择的行将被忽略。您可以使用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 将 duplex 属性替换为 profile 属性。 对于 DeckLink Duo 2 和 DeckLink Quad 2,profile 在使用相同连接器的任意 2 个子设备之间共享。 对于 DeckLink 8K Pro,profile 在所有 4 个子设备之间共享。因此 DeckLink 8K Pro 支持四个 profiles。
DeckLink SDK >= 11.0 的 DeckLink 8K Pro 提供以下有效模式:‘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 使用的顺序稍有不同,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 位输入信号。
- 3, repeat
信号丢失时重复最后的视频帧。
默认为‘bars’.
- queue_size
设置最大输入缓冲区大小,以字节为单位。如果缓冲达到此值,传入帧将被丢弃。 默认为‘1073741824’.
- audio_depth
设置音频采样位深度。必须为‘16’或‘32’。 默认为‘16’.
- decklink_copyts
如果设置为true,时间戳将按原样传递而不移除初始偏移。 默认为false.
- timestamp_align
捕获开始时间对齐(以秒为单位)。如果非零,输入帧将被丢弃直到系统时间戳对齐到配置值。 容忍的最大对齐偏差为一帧的持续时间。 这对于在 N 个硬件设备之间部署进行“N-way”(多路)冗余的输入同步很有用。在使用此选项之前,应通过诸如 NTP 或 PTP 的协议来同步不同硬件设备的系统时间。 请注意,这种方法并不完全可靠。在一些边缘情况下,由于操作系统中的线程调度延迟,输入同步可能无法实现。有时同步会错开 1 帧,在较少的情况下可能出现timestamp_align秒的错误。 默认为‘0’.
- wait_for_tc (布尔值)
丢弃帧直到接收到带时间码的帧。有时串行时间码不会与第一帧一同接收到。如果发生这种情况,存储的流时间码将不准确。如果设置此选项为true,输入帧将被丢弃直到接收到带有时间码的帧。 Optionstimecode_format必须指定。 默认为false.
- enable_klv(布尔值)
如果设置为true,从 VANC 提取 KLV 数据并输出 KLV 包。 KLV VANC 包根据 MID 和 PSC 字段连接起来,并汇总到一个 KLV 包中。 默认为false.
18.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
18.6 dshow
Windows DirectShow 输入设备。
当 FFmpeg 使用 mingw-w64 项目构建时启用 DirectShow 支持。 目前仅支持音频和视频设备。
多个设备可以作为单独的输入打开,但也可以在同一个输入中打开,这应该会改善它们之间的同步。
输入名称应使用以下格式:
类型=名称[:类型=名称]
其中类型可以是音频或视频,名称是设备的名称或备用名称。
18.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) 输入帧率、大小、隔行处理等之间进行切换。更改这些值可能启用不同的扫描速率/帧率,避免底部出现绿色条纹、闪烁的扫描线等现象。 此外,请注意对某些设备,调整这些属性可能还会影响未来的调用(设置新的默认值),直到系统重启发生。
- 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,视频帧的时间戳将来自墙钟时间,而不是由捕获设备提供的时间戳。这可以解决设备提供不可靠时间戳的问题。
18.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"
18.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
18.7.1 选项
- framerate
设置帧率,默认值为 25。
18.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
18.8.1 选项
- draw_mouse
指定是否绘制鼠标指针。使用值
0
来 不绘制指针。默认值为1
.- framerate
设置捕获帧率。默认值为
ntsc
, 对应的帧率为30000/1001
.- show_region
在屏幕上显示捕获区域。
如果显示区域已指定为
1
,则将在屏幕上显示捕获区域。使用此选项,即使只抓屏幕的一部分,也可以方便地知道捕获了什么。请注意显示区域与捕获单个窗口的内容兼容性不佳。
例如:
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
在使用视频大小捕获区域时,设置距离屏幕或桌面左边缘的距离。
请注意,偏移计算是从 Windows 主显示器的左上角开始。如果您的显示器位于主显示器的左侧,则需要使用负偏移_x值将区域移动到该显示器。
- offset_y
在使用视频大小捕获区域时,设置距离屏幕或桌面顶部边缘的距离。
请注意,偏移计算是从 Windows 主显示器的左上角开始。如果您的显示器位于主显示器的上方,则需要使用负偏移_y值将区域移动到该显示器。
18.9 iec61883
使用 libiec61883 的 FireWire DV/HDV 输入设备。
要启用此输入设备,您需要在系统上安装 libiec61883、libraw1394 和
libavc1394。使用如下配置选项--enable-libiec61883
来编译启用该设备。
iec61883 捕获设备支持捕捉通过 IEEE1394(FireWire)连接的视频设备 ,使用 libiec61883 和新的 Linux FireWire 堆栈 (juju)。这是 Linux Kernel 2.6.37 及更高版本的默认 DV/HDV 输入方法,因为旧的 FireWire 堆栈已被移除。
指定 FireWire 端口作为输入文件,或使用 "auto" 来选择第一个连接的端口。
18.9.1 选项
- dvtype
覆盖 DV/HDV 的自动检测。仅当自动检测不起作用时或禁止使用不同设备类型 时才应使用此选项。将 DV 设备视为 HDV(或反之亦然)将无法正常工作,并导致未定义的行为。 支持的值为auto, dv和hdv。
- dvbuffer
设置用于接收数据的最大缓冲区大小(单位:帧)。对于 DV,这是一个确切的值。对于 HDV,由于 HDV 没有固定帧大小,因此不完全是帧精确的。
- dvguid
通过指定其 GUID 来选择捕捉设备。只会从指定设备执行捕捉,如果未找到具有给定 GUID 的设备,则捕捉会失败。这在同时连接多个设备时很有用。 访问 /sys/bus/firewire/devices 可查看 GUID。
18.9.2 示例
- 抓取并显示 FireWire DV/HDV 设备的输入。
ffplay -f iec61883 -i auto
- 抓取并记录 FireWire DV/HDV 设备的输入,
如果源是 HDV,使用大小为 100000 包的缓冲区。
ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
18.10 jack
JACK 输入设备。
要在配置期间启用此输入设备,您需要在系统上安装 libjack。
一个 JACK 输入设备会创建一个或多个 JACK 可写客户端,每个音频通道一个 ,名称为客户端名称:输入_N,其中客户端名称是应用程序提供的名称,而N是标识通道的编号。 每个可写客户端都会将获取到的数据发送到 FFmpeg 输入设备。
一旦创建了一个或多个 JACK 可读客户端,就需要将它们连接到一个或多个 JACK 可写客户端。
要连接或断开 JACK 客户端,您可以使用jack_connect
和jack_disconnect
程序,或通过图形界面操作,
例如使用qjackctl
.
要列出 JACK 客户端及其属性,您可以调用以下命令jack_lsp
.
以下是一个示例,显示如何使用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
捕获一个 JACK 可读客户端。http://jackaudio.org/
18.10.1 选项
- channels
设置通道数,默认值为 2。
18.11 kmsgrab
KMS 视频输入设备。
捕获与指定 CRTC 或平面关联的 KMS 扫描帧缓冲区作为 DRM 对象,可用于其他硬件功能。
需具有 DRM 主权限或 CAP_SYS_ADMIN 才能运行。
如果您不了解以上内容的含义,您可能不需要此功能。请查看x11grab。
18.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
.
18.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
18.12 lavfi
Libavfilter 输入虚拟设备。
该输入设备从 libavfilter 过滤图的开放输出接收数据。
对于每个过滤图开放输出,输入设备将创建一个相应的流,并映射到生成的输出。graph.
18.12.1 选项
- graph
指定要用作输入的过滤图。每个视频的开放输出必须由形如 "outN的唯一字符串标记,其中N是编号,从 0 开始,对应由设备生成的映射输入流。
可以将后缀 "+subcc" 附加到输出标签,以创建一个附加有闭合字幕数据包的额外流(实验性的,目前仅用于 EIA-608 / CEA-708)。子字幕流按照对应流的顺序,在所有普通流之后被创建。例如,如果有 "out19+subcc"、"out7+subcc" 以及 "out42",流 #43 是流 #7 的子字幕,流 #44 是流 #19 的子字幕。
如果未指定,则默认为输入设备的文件名。
- graph_file
设置要读取并传递给其他过滤器的过滤图文件名。过滤图的语法与选项图.
- dumpgraph
将图转储到 stderr。
18.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
18.13 libcdio
基于 libcdio 的 Audio-CD 输入设备。
要在配置中启用此输入设备,需要在系统上安装 libcdio,并使用配置选项--enable-libcdio
.
该设备允许播放和抓取 Audio-CD。
例如,用ffmpeg
完整复制 Audio-CD 到/dev/sr0,
运行命令:
ffmpeg -f libcdio -i /dev/sr0 cd.wav
18.13.1 选项
- speed
设置驱动器的读取速度。默认值为 0。
速度以 CD-ROM 速度单位指定。通过 libcdio 函数
cdio_cddap_speed_set
设置速度。在许多 CD-ROM 驱动器上,指定过大的值会导致使用最快速度。- paranoia_mode
设置偏执恢复模式标志。接受以下值之一:
- ‘disable’
- ‘verify’
- ‘overlap’
- ‘neverskip’
- ‘full’
默认值为 ‘disable’.
有关可用恢复模式的更多信息,请查阅偏执项目文档。
18.14 libdc1394
基于 libdc1394 和 libraw1394 的 IIDC1394 输入设备。
需要配置选项--enable-libdc1394
.
18.14.1 选项
- framerate
设置帧率。默认值为
ntsc
, 对应30000/1001
.- pixel_format
选择像素格式。默认值为
uyvy422
.- video_size
设置视频大小,以字符串形式给出,例如
640x480
或hd720
。默认值为qvga
.
18.15 openal
OpenAL 输入设备为所有具有工作 OpenAL 1.1 实现的系统提供音频捕获。
要在配置中启用此输入设备,需要在系统上安装 OpenAL 头文件和库,并用--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.
18.15.1 选项
- channels
设置捕获音频的通道数。目前仅支持1(单声道)和2(立体声)。默认为2.
- sample_size
设置捕获音频的样本大小(以位为单位)。目前仅支持8和16。默认为16.
- sample_rate
设置捕获音频的样本速率(以 Hz 为单位)。默认值为44.1k.
- list_devices
如果设置为true,则打印设备列表并退出。默认值为false.
18.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。
18.16 oss
开放声音系统输入设备。
输入设备的文件名是代表 OSS 输入设备的设备节点,通常设置为/dev/dsp.
例如从/dev/dsp抓取,使用ffmpeg
命令:
ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
有关 OSS 的更多信息,请参见:http://manuals.opensound.com/usersguide/dsp.html
18.16.1 选项
- sample_rate
设置采样率(单位:Hz)。默认值为 48000。
- channels
设置通道数。默认值为 2。
18.17 pulse
PulseAudio 输入设备。
要启用此输出设备,需配置 FFmpeg 并使用--enable-libpulse
.
提供给输入设备的文件名是一个源设备或字符串"default"。
要列出 PulseAudio 源设备及其属性,可以调用命令pactl list sources
.
有关 PulseAudio 的更多信息,请参见http://www.pulseaudio.org.
18.17.1 选项
- server
连接到指定的 PulseAudio 服务器(通过 IP 地址指定)。未提供时使用默认服务器。
- name
指定应用名称,PulseAudio 将用于显示活动客户端,默认值为
LIBAVFORMAT_IDENT
字符串。- stream_name
指定流名称,PulseAudio 将用于显示活动流,默认值为"record"。
- sample_rate
指定采样率(单位:Hz),默认值为 48kHz。
- channels
指定正在使用的通道,默认设置为 2(立体声)。
- frame_size
此选项无效,已废弃。
- fragment_size
以字节为单位指定 PulseAudio 的最小缓冲片段大小,它将影响音频延迟。默认设置为 50 毫秒的数据量。
- wallclock
使用当前时间设置初始 PTS。默认值为 1。
18.17.2 示例
从默认设备记录流:
ffmpeg -f pulse -i default /tmp/pulse.wav
18.18 sndio
sndio 输入设备。
要在配置中启用此输入设备,需要在系统上安装 libsndio。
输入设备的文件名是代表 sndio 输入设备的设备节点,通常设置为/dev/audio0.
例如从/dev/audio0抓取,使用ffmpeg
命令:
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
18.18.1 选项
- sample_rate
设置采样率(单位:Hz)。默认值为 48000。
- channels
设置通道数。默认值为 2。
18.19 video4linux2, v4l2
视频4Linux2输入视频设备。
"v4l2" 可用作 "video4linux2" 的别名。
如果 FFmpeg 是使用配置选项--enable-libv4l2
构建并支持 v4l-utils,则可以使用输入设备选项-use_libv4l2
。
要捕获的设备名称是设备节点文件,通常 Linux 系统在设备(例如 USB 网络摄像机)插入系统时会自动创建这些节点,并命名为类似/dev/videoN的形式,其中N是与设备相关的编号。
Video4Linux2设备通常支持有限的宽度x高度尺寸和帧速率。您可以使用-list_formats all
检查Video4Linux2设备的支持情况。
一些设备(如电视卡)支持一个或多个标准。可以使用-list_standards all
.
列出所有支持的标准。 时间戳的基准是1微秒。根据内核版本和配置,时间戳可能源于实时时钟(原点为 Unix纪元)或单调时钟(原点通常在引导时,不受 NTP 或手动更改影响)。可以用-timestamps abs或-ts abs选项强制转换为实时时钟。
使用 video4linux2设备一些示例,配合ffmpeg
和ffplay
:
- 列出视频4Linux2设备支持的格式:
ffplay -f video4linux2 -list_formats all /dev/video0
- 捕获并显示视频4Linux2设备的输入:
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
- 抓取并记录视频4Linux2设备的输入,保持先前设置的帧速率和尺寸:
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
有关 Video4Linux 的更多信息,请参阅http://linuxtv.org/.
18.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。
18.20 vfwcap
VfW(Windows视频)捕获输入设备。
作为输入传递的文件名是捕获驱动程序编号,范围为0到9。您可以使用"list"作为文件名列出驱动程序列表。任何其他文件名将被解释为设备编号0。
18.20.1 选项
- video_size
设置视频帧大小。
- framerate
设置抓取帧速率。默认值是
ntsc
,对应的帧速率为30000/1001
.
18.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
18.21.1 选项
- select_region
指定是否使用指针图形选择抓取区域。值为
1
提示用户通过单击拖动以图形方式选择抓取区域。单击而不拖动将选择整个屏幕。宽度或高度为零的区域也将选择整个屏幕。此选项会覆盖视频大小, 抓取x和抓取y选项。默认值是0
.- draw_mouse
指定是否绘制鼠标指针。值为
0
指定不绘制指针。默认值是1
.- follow_mouse
让抓取区域跟随鼠标。参数可以是
centered
或像素数像素.若指定为"居中",抓取区域跟随鼠标指针,并始终保持指针位于区域中心;否则,当鼠标指针到达区域边缘内像素(大于零)时,区域才会跟随。
例如:
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
使用跟随鼠标:
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
- window_id
抓取这个窗口,而不是整个屏幕。默认值是0,对应整个屏幕(根窗口)。
一个窗口的id可以使用
xwininfo
程序找到,可能需要使用-tree和-root选项。如果窗口稍后被放大,新区域不会被记录。当窗口关闭、取消映射(例如,图标化)或缩小到视频大小以下时,视频结束(默认是初始窗口大小)。
该选项禁用选项follow_mouse和select_region.
- video_size
设置视频帧大小。默认是全桌面或窗口。
- grab_x
- grab_y
设置抓取区域坐标。以X11窗口左上角为起点进行偏移,分别对应于设备名称中的x偏移量和y偏移量参数。这两个选项默认值为0。
19 重采样器选项
音频重采样器支持以下命名选项。
可以通过指定 -选项 值在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,启用时尝试根据输入和输出采样率使用精确的相位计数。然而,如果它大于
1 << phase_shift
, 则相位计数将回退到1 << phase_shift
。默认启用。- cutoff
设置截止频率(swr:6dB点;soxr:0dB点)比例;必须是一个介于0到1之间的浮点值。swr默认值是0.97,soxr默认值是0.91(当采样率为44100时,保留整个音频频带到20kHz)。
- precision
仅针对soxr,设置重采样信号计算的精度位数。默认值为20(使用合适的抖动,与16位目标位深度相符),代表SoX的“高质量”;值为28代表SoX的“非常高质量”。
- cheby
仅针对soxr,选择没有通带衰减(Chebyshev)和适用于“非理想”比率的更高精度近似。默认值是0。
- async
仅针对swr,使用简单的一参数音频同步到时间戳,通过拉伸、挤压、填充和修剪进行操作。设置为1将启用填充和修剪,更大的值表示可拉伸或挤压的最大样本量(每秒)。默认值是0,即没有应用补偿以使样本与音频时间戳匹配。
- first_pts
仅针对swr,假设第一个pts应为此值。时间单位为1 / 采样率。允许流开始时填充/修整。默认情况下,没有关于第一帧的预期pts的假设,因此不会进行填充或修剪。例如,可以将其设置为0,以在音频流在视频流之后开始时填充初始静音,或修剪任何由于编码器延迟而有负pts的样本。
- min_comp
仅针对swr,设置时间戳和音频数据之间的最小差异(以秒为单位)触发拉伸/挤压/填充或修剪数据以使其匹配时间戳。默认不启用拉伸/挤压/填充和修剪操作min_comp =
FLT_MAX
).- min_hard_comp
仅针对swr,设置时间戳和音频数据之间的最小差异(以秒为单位),触发添加/删除样本以使其匹配时间戳。此选项实际上是一个阈值,用于在硬(修剪/填充)和软(挤压/拉伸)补偿之间选择。请注意,默认情况下所有补偿都被禁用,通过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窗口化的正弦
- ‘kaiser’
选择Kaiser窗口化的正弦
- kaiser_beta
仅针对swr,设置Kaiser窗口贝塔值。必须是介于[2,16]区间的双精度浮点值,默认值是9。
- output_sample_bits
仅针对swr,设置用于抖动的输出样本位数。必须是介于[0,64]区间的整数,默认值是0,表示未使用。
20 缩放选项
视频缩放器支持以下命名选项。
可以通过指定 -选项 值在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’
基于xor的算术抖动(更随机/更少显著的图案化)。
- alphablend
设置当输入有alpha通道但输出没有时使用的alpha混合方式。默认值是‘none’.
- ‘uniform_color’
混合到统一背景颜色
- ‘checkerboard’
混合到棋盘模式
- ‘none’
不混合
21 过滤简介
在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分别位于另一个链中。这些线性链连接处的点由方括号包围的名称标记。在示例中,split过滤器生成的两个输出分别关联到标签[main]和[tmp].
发送到split过滤器第二个输出的流,标记为[tmp],通过crop过滤器处理,裁剪掉视频的下半部分,然后垂直翻转。接着,overlay过滤器会将split过滤器的第一个未改变的输出(标记为[main])叠加在由crop,vflip过滤链生成的输出的下半部分。
一些过滤器需要输入一个参数列表:这些参数在过滤器名字后加等号,且参数间用冒号分隔。
存在所谓的源过滤器,没有音频或视频输入,和接收过滤器,不会有音频或视频输出。
22 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
你可以通过将dot描述传递给graph2dot.
You can then pass the dot description to the 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过滤器,以模拟特定的输入文件。
23 过滤器图描述
过滤器图是一个连接过滤器的有向图。它可以包含循环,并且在过滤器之间可以有多个链接。 每个链接在一侧有一个输入引脚连接到一个过滤器从中获取输入,另一侧有一个输出引脚连接到接受其输出的过滤器。
过滤器图中的每个过滤器是应用程序中注册的过滤器类的一个实例,该过滤器类定义了过滤器的功能以及过滤器输入和输出引脚的数量。
没有输入引脚的过滤器称为“源”,没有输出引脚的过滤器称为“接收器”。
23.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值以及长key=value键值对的混合参数列表。直接value值必须在key=value键值对之前并遵循前文所述的约束顺序。接下来的key=value键值对可以按任何顺序设置。
如果选项值本身是一个项目列表(例如format
过滤器接受像素格式列表),列表中的项通常使用‘|’.
列表的参数可以用字符‘'’引号括起,开始和结束,以标记初始与结束,字符‘\’用于对引号内的字符进行转义;如果未进行引号处理,则字符串会在遇到下一个特殊字符(属于集‘[]=;,’)时被认为结束。
FFmpegffmpeg
命令行工具中实现的特殊语法允许从文件中加载选项值。这通过在选项名称前添加斜杠‘/’实现,然后提供的值被解释为从中加载实际值的路径。例如,
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
split过滤器实例有两个输出引脚,而overlay过滤器实例有两个输入引脚。split的第一个输出引脚标记为"L1",overlay的第一个输入引脚标记为"L2",而split的第二个输出引脚链接到overlay的第二个输入引脚,它们都未标记。
在过滤器描述中,如果第一个过滤器的输入标签未指定,假设为“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描述:
名称 ::= sequence of alphanumeric characters and '_' 过滤器名称 ::= 名称["@"名称] 链接标签 ::= "[" 名称 "]" 链接标签 ::= 链接标签 [链接标签] 过滤器参数 ::= sequence of chars (possibly quoted) 过滤器 ::= [过滤器名称] 过滤器名称 ["=" 过滤器参数] [链接标签] 过滤链 ::= 过滤器 [,过滤链] 过滤图 ::= [sws_flags=旗帜;] 过滤链 [;过滤图]
23.2 过滤器图转义注意事项
过滤器图说明的组合包括多个级别的转义。参见(ffmpeg-utils)在ffmpeg-utils(1)手册中“引用和转义”章节以获取更多关于所采用转义程序的信息。
第一级转义影响每个过滤器选项值的内容,该内容可能包含特殊字符:
用于分隔值或转义字符\'
.
第二级转义影响整个过滤器描述,该描述可能包含转义字符\'
或过滤器图描述使用的特殊字符[],;
最后,当你在Shell命令行中指定过滤器图时,你需要对其中的Shell特殊字符执行第三级转义。
例如,考虑下面的字符串嵌入到
For example, consider the following string to be embedded in the drawtext过滤器中的textvalue:
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来指定要渲染的文本。
24 时间线编辑
一些过滤器支持通用的enable选项。对于支持时间线编辑的过滤器,可以将该选项设置为一个表达式,该表达式将在将帧发送至过滤器之前进行计算。如果计算结果非零,则启用过滤器,否则不变地将帧发送给过滤图中的下一过滤器。
表达式接受下列值:
- ‘t’
以秒表示的时间戳,如果输入时间戳未知则为 NAN
- ‘n’
输入帧的连续编号,从 0 开始
- ‘pos’
输入帧在文件中的位置,如果未知则为 NAN;已弃用,不要使用
- ‘w’
- ‘h’
输入帧的宽度和高度(如果是视频)
另外,这些过滤器支持一个enable命令,可以用来重新定义表达式。
和任何其他过滤选项一样,enable选项遵循相同的规则。
例如,启用一个模糊过滤器 (smartblur) 从 10 秒至 3 分钟,以及一个curves过滤器从 3 秒开始:
smartblur = enable='between(t,10,3*60)', curves = enable='gte(t,3)' : preset=cross_process
参见ffmpeg -filters
查看哪些过滤器支持时间线。
25 通过命令在运行时更改选项
某些选项可以在过滤器运行期间通过命令进行更改。这些选项在ffmpeg
-h filter=<name of filter>的输出中标记为 'T'。命令的名称为选项的名称,参数为新值。
26 对有多个输入的过滤器的选项 (framesync)
一些具有多个输入的过滤器支持一组通用的选项。这些选项只能通过名称设置,不能使用简短符号。
- eof_action
遇到次级输入上的 EOF 时采取的操作;它接受以下值之一:
- repeat
重复最后一帧(默认)。
- endall
终止两个流。
- pass
通过主输入。
- shortest
如果设置为 1,则当最短输入结束时强制输出终止。默认值为 0。
- repeatlast
如果设置为 1,则强制过滤器扩展次级流的最后一帧直到主流结束。值为 0 禁用此行为。默认值为 1。
- ts_sync_mode
根据次级输入时间戳严格同步流;它接受以下值之一:
- default
次级输入中最接近较低或等于时间戳的帧与主输入帧同步。
- nearest
次级输入中时间戳与主输入帧绝对最近的帧。
27 音频过滤器
配置FFmpeg构建时,可以使用--disable-filters
禁用任何已有过滤器。配置输出将显示包含在构建中的音频过滤器。
以下是当前可用音频过滤器的描述。
27.1 aap
应用仿射投影算法,使用第二音频流预测第一音频流。
此自适应滤波器用于基于多个输入音频样本预测未知音频。仿射投影算法可以在计算复杂性和收敛速度之间进行权衡。
下面是所接受选项的描述。
- order
设置滤波器阶数。
- projection
设置投影阶数。
- mu
设置滤波器mu。
- delta
设置内部协方差矩阵的初始化系数。
- out_mode
设置滤波器输出样本。它接受以下值:
- i
通过第一个输入。
- d
通过第二个输入。
- o
通过目标(第二输入)与误差信号估计之间的差异。
- n
通过输入(第一个输入)与误差信号估计之间的差异。
- e
通过误差信号估计的样本。
默认值为o.
- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
27.2 acompressor
压缩器主要用于减小信号的动态范围。尤其是现代音乐通常以高比率进行压缩,以提高整体响度。这是为了最大限度地吸引听众的注意力,“增强”声音并为曲目带来更多“力量”。如果信号压缩过多,可能会听起来乏味或“死气沉沉”,或者可能开始“抽吸”(这可能是一个强大的效果,但也可能完全毁掉一个曲目)。正确的压缩是达到专业声音的关键,是混音和母带制作的高超艺术。由于其复杂的设置,可能需要很长时间才能找到适合这种效果的感觉。
压缩是通过检测超出选定级别的音量threshold
并以设定的因子ratio
进行缩减来完成的。因此,如果您将阈值设置为-12dB而您的信号达到-6dB,则2:1的比率将导致信号为-9dB。由于对信号进行精确处理会导致波形失真,因此可以随时间对缩减进行均衡。通过设置“Attack”和“Release”来完成。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之间。
27.2.1 命令
此过滤器支持以上所有选项作为命令。.
27.3 acontrast
简单的音频动态范围压缩/扩展过滤器。
滤镜接受以下选项:
- contrast
设置对比度。默认值为33。允许范围在0到100之间。
27.4 acopy
将输入音频源未更改地复制到输出。这主要用于测试目的。
27.5 acrossfade
从一个输入音频流到另一个输入音频流应用交叉淡化。在第一个流结束时指定持续时间,应用交叉淡化。
滤镜接受以下选项:
- nb_samples, ns
指定交叉淡化效果持续的样本数量。在交叉淡化效果结束时,第一个输入音频将完全静音。默认值为44100。
- duration, d
指定交叉淡化效果的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以获取接受的语法。默认情况下,持续时间由nb_samples确定。如果设置,该选项将替代nb_samples.
- overlap, o
设置第一个流的结束是否与第二个流的开始重叠。默认启用。
- curve1
设置第一个流的交叉淡化过渡的曲线。
- curve2
设置第二个流的交叉淡化过渡的曲线。
关于可用曲线类型的描述,请参见afade滤镜描述。
27.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
27.6 acrossover
将音频流分割成多个频段。
此过滤器将音频流分割成两个或多个频率范围。将所有流合并回将产生平坦输出。
滤镜接受以下选项:
- split
设置分割频率。它们必须是正数并递增。
- order
为每个频段分割设置过滤器阶数。这控制过滤器滚降或过滤器传递函数的陡度。可用值:
- ‘2nd’
每倍频程12分贝。
- ‘4th’
每倍频程24分贝。
- ‘6th’
每倍频程36分贝。
- ‘8th’
每倍频程48分贝。
- ‘10th’
每倍频程60分贝。
- ‘12th’
每倍频程72分贝。
- ‘14th’
每倍频程84分贝。
- ‘16th’
每倍频程96分贝。
- ‘18th’
每倍频程108分贝。
- ‘20th’
每倍频程120分贝。
默认值为第4阶。.
- level
设置输入增益级别。允许范围是0到1。默认值为1。
- gains
为每个频段设置输出增益。默认值为所有频段均为1。
- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
默认值为
auto
.
27.6.1 示例
- 将输入音频流分成两个频带(低频和高频),分割频率为1500Hz,每个频带将在单独流中:
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
- 与上述相同,但还包含额外的中频带(频率在1500到8000之间):
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
27.7 acrusher
减少音频比特分辨率。
此过滤器是一种带增强功能的比特压缩器。比特压缩器用于听觉上减少采样音频信号的比特数。这不会改变比特深度,只是产生效果。减少比特深度的材料听起来更刺耳和“数字化”。此过滤器甚至可以四舍五入到连续值而不是离散比特深度。此外,它有一个直流偏移,导致信号的上半部分和下半部分不同的压缩。反锯齿设置能够产生“更柔和”的压缩声音。
此过滤器的另一个特点是对数模式。此设置将从比特之间的线性距离切换为对数距离。结果是听起来更加“自然”的压缩器,例如不会对低信号进行门控。人耳有对数感知,因此这种压缩方式更加舒适。对数压缩还能提供反锯齿功能。
该滤镜接受以下选项:
- level_in
设置输入电平。
- level_out
设置输出电平。
- bits
设置比特压缩。
- mix
设置混合量。
- mode
可以是线性的:
lin
或对数的:log
.- dc
设置直流分量。
- aa
设置抗锯齿。
- samples
设置采样压缩。
- lfo
启用低频振荡器(LFO),默认禁用。
- lforange
设置LFO范围。
- lforate
设置LFO速率。
27.7.1 指令
此滤镜支持所有上述选项作为指令.
27.8 acue
延迟音频滤镜处理直到给定的系统时间戳。请参见cue滤镜。
27.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
.
27.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
.
27.11 adecorrelate
对输入音频流施加去相关处理。
该滤镜接受以下选项:
- stages
设置去相关滤镜的处理阶段。允许范围为1到16。默认值为6。
- seed
设置用于在通道间设置样本延迟的随机种子。
27.12 adelay
对一个或多个音频通道延迟处理。
延迟通道中的样本会用静音填充。
该滤镜接受以下选项:
- delays
设置每个通道的延迟时间列表,单位为毫秒,用‘|’分隔。 未使用的延迟将被自动忽略。如果提供的延迟数量少于通道数,则所有剩余通道将不被延迟。 如果希望精确延迟一定数量的样本,请在数字后附加‘S’。 如果希望改为以秒为单位延迟,请在数字后附加‘s’。
- all
为所有剩余通道使用最后设定的延迟。默认禁用。 如果启用,该选项会改变
delays
的解释方式。
27.12.1 示例
- 将第一个通道延迟1.5秒,第三个通道延迟0.5秒,第二个通道(以及可能存在的任何其他通道)保持不变。
adelay=1500|0|500
- 将第二个通道延迟500样本,第三个通道延迟700样本,第一个通道(以及可能存在的任何其他通道)保持不变。
adelay=0|500S|700S
- 将所有通道延迟相同数量的样本:
adelay=delays=64S:all=1
27.13 adenorm
通过添加极低水平的噪声来修正音频中的非正常问题。
该滤镜应放置在任何可能产生非正常现象的滤镜之前。
以下是接受的参数描述。
- level
设置添加的噪声水平,以分贝为单位。默认值为
-351
。 允许范围为-451到-90。- type
设置添加噪声的类型。
- dc
添加直流信号。
- ac
添加交流信号。
- square
添加方波信号。
- pulse
添加脉冲信号。
默认值为
dc
.
27.13.1 指令
此滤镜支持所有上述选项作为指令.
27.14 aderivative, aintegral
计算音频流的导数/积分。
依次应用两个滤镜会生成原始音频。
27.15 adrc
对输入音频流应用频谱动态范围控制滤镜。
以下是接受的选项描述。
- transfer
设置转换表达式。
该表达式可以包含以下常量:
- ch
当前通道编号
- sn
当前样本编号
- nb_channels
通道数
- t
用秒表示的时间戳
- sr
样本率
- p
当前频率功率值,以分贝表示
- f
当前频率,以赫兹为单位
默认值为
p
.- attack
设置上升时间,以毫秒为单位。默认值为
50
毫秒。 允许范围为1到1000毫秒。- release
设置释放时间,以毫秒为单位。默认值为
100
毫秒。 允许范围为5到2000毫秒。- channels
设置需要过滤的通道。默认情况下
all
音频流中的通道被过滤。
27.15.1 指令
此滤镜支持所有上述选项作为指令.
27.15.2 示例
- 对所有频率应用频谱压缩,阈值为-50 dB,比例为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 dB,具有短的上升时间和短的释放时间:
adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
- 对所有频率应用频谱扩展,阈值为-10 dB,比例为1:2:
adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
- 对所有频率应用限制器,最大限值为-60 dB,上升时间为2毫秒,释放时间为10毫秒:
adrc=transfer='min(p,-60)':attack=2:release=10
27.16 adynamicequalizer
对输入音频流应用动态均衡。
以下是接受的选项描述。
- threshold
设置用于触发均衡的检测阈值。 检测阈值使用检测滤镜。 默认值为0。允许范围为0到100。
- dfrequency
设置用于触发均衡的检测滤波器的检测频率,以赫兹为单位。 默认值为1000 Hz。允许范围为2到1000000 Hz。
- dqfactor
为检测滤波器设置检测谐振系数。 默认值为1。允许范围为0.001到1000。
- tfrequency
设置均衡滤波器的目标频率。 默认值为1000 Hz。允许范围为2到1000000 Hz。
- 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
始终使用双精度浮点样本格式。
27.16.1 指令
此滤镜支持所有上述选项作为指令.
27.17 adynamicsmooth
对输入音频流应用动态平滑。
以下是接受的选项描述。
- sensitivity
设置频率波动的敏感量。默认值为2。 允许范围为0到1e+06。
- basefreq
设置平滑的基频。默认值为22050。 允许范围为2到1e+06。
27.17.1 指令
此滤镜支持所有上述选项作为指令.
27.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
.
27.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
27.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)。
27.19.1 命令
该滤波器支持以上所有选项作为命令.
27.20 aeval
根据指定的表达式修改音频信号。
该滤波器接受一个或多个表达式(每个通道一个), 这些表达式被评估并用于修改相应的音频信号。
它接受以下参数:
- exprs
为每个单独的通道设置‘|’-分隔表达式列表。如果 输入通道数大于表达式数,则使用最后指定的表达式 用于剩余的输出通道。
- channel_layout, c
设置输出通道布局。如果未指定,则通道布局由 表达式的数量确定。如果设置为‘same’,它将 默认使用相同的输入通道布局。
每个exprs中的表达式可以包含以下常量和函数:
- ch
当前表达式的通道号。
- n
从0开始评估的样本编号。
- s
采样率。
- t
以秒为单位表示的评估样本时间。
- nb_in_channels
- nb_out_channels
输入和输出通道数量。
- val(CH)
编号为CH
注意:该滤波器较慢。为了更快的处理,应使用专用滤波器。
27.20.1 示例
- 半音量:
aeval=val(ch)/2:c=same
- 反转第二通道的相位:
aeval=val(0)|-val(1)
27.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
静音原始信号,仅输出添加的谐波。 默认情况下是禁用的。
27.21.1 命令
该滤波器支持以上所有选项作为命令.
27.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形曲线(sigmoid)
- sinc
选择正弦卡尔达尔函数
- isinc
选择倒置正弦卡尔达尔函数
- quat
选择四次函数曲线
- quatr
选择四次函数根曲线
- qsin2
选择平方的四分之一正弦波曲线
- hsin2
选择平方的半个正弦波曲线
- nofade
不应用淡入/淡出效果
- silence
为淡入设置初始增益或为淡出设置最终增益。 默认值是
0.0
.- unity
为淡出设置初始增益或为淡入设置最终增益。 默认值是
1.0
.
27.22.1 命令
该滤波器支持以上所有选项作为命令.
27.22.2 示例
- 为音频前15秒应用淡入效果:
afade=t=in:ss=0:d=15
- 为900秒音频的最后25秒应用淡出效果:
afade=t=out:st=875:d=25
27.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
设置适应因子,用于决定每个频率bin的增益调整反应速度。 值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
设置频带乘数因子,用于确定在频率bin间传播频带的力度。 允许范围是0.2到5。默认值是1.25.
- sample_noise, sn
切换是否从输入音频捕获和测量噪声配置文件。
它接受以下值:
- start, begin
开始样本噪声捕获。
- stop, end
停止样本噪声捕获并测量新噪声频段配置文件。
默认值是
none
.
- gain_smooth, gs
设置增益平滑空间半径,用于平滑对每个频率bin应用的增益。 有助于减少随机音乐噪声伪影。 更高的值增加增益平滑程度。 允许范围是
0
到50
。 默认值是0
.
27.23.1 命令
该滤波器支持以上部分提到的选项作为命令.
27.23.2 示例
- 通过10dB降噪,使用之前测量的噪声底值为-40dB:
afftdn=nr=10:nf=-40
- 通过设置初始噪声底值为-80dB并启用噪声底值的自动跟踪,以10dB降噪,
从而使噪声底值在处理过程中逐渐变化:
afftdn=nr=10:nf=-80:tn=1
- 通过命令在输入音频的前0.4秒时间测量噪声配置文件,使用噪声底值为-40dB,按照20dB降噪:
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
27.24 afftfilt
在频率域中对样本应用任意表达式。
- real
为每个独立通道设置频率域实数表达式,使用‘|’分隔。默认值是"re"。 如果输入通道数大于表达式数,则使用最后指定的表达式 用于剩余的输出通道。
- imag
为每个独立通道设置频率域虚数表达式,使用‘|’分隔。 默认值是"im"。
每个real和imag表达式可以包含以下常量和函数:
- sr
采样率。
- b
当前频率bin编号。
- nb
可用bin数量。
- ch
当前表达式的通道号。
- chs
通道数量。
- pts
当前帧pts值。
- re
当前通道当前频率bin的实部值。
- im
当前通道当前频率bin的虚部值。
- 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
.
27.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)"
27.25 afir
应用任意有限冲激响应(FIR)滤波器。
该滤波器设计用于应用最长可达60秒的FIR滤波器。
可用于数字分频滤波器、房间均衡化、交叉声道消除、波场合成、听觉化、 双耳音效、全向声和空间化处理。
此滤波器使用第一个流之外的更高流作为FIR系数。 如果非第一个流只有一个通道,则会用于第一个流中的所有输入通道,否则 非第一个流中的通道数量必须与第一个流中的通道数量一致。
它接受以下参数:
- dry
设置干增益。此设置为输入增益。
- wet
设置湿增益。此设置为最终输出增益。
- length
设置冲激响应滤波器长度。默认值是1,表示处理整个冲激响应。
- gtype
该选项已废弃,不再起作用。
- irnorm
设置对滤波前冲激响应系数应用的归一化因子。 允许范围是-1到2。 冲激响应系数将按本选项设置的计算矢量归一化。 对于负值,不计算归一化,冲激响应系数保持完全不变。 默认值是1.
- irlink
对于多通道冲激响应,如果此选项设置为true,所有冲激响应通道的系数将按
irnorm
选项计算的最大测量增益归一化。 禁用时,每个冲激响应通道中的系数将单独归一化。 默认值是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
.
27.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"
27.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
27.27 afreqshift
对输入音频样本应用频率偏移。
过滤器接受以下选项:
- shift
指定频率偏移。允许范围是-INT_MAX到INT_MAX。 默认值是0.0。
- level
设置应用于最终输出的输出增益。允许范围是0.0到1.0。 默认值是1.0。
- order
设置用于过滤的滤镜顺序。允许范围是1到16。 默认值是8。
27.27.1 命令
此过滤器支持所有以上选项作为命令.
27.28 afwtdn
使用小波减少输入样本中的宽频噪声。
以下是接受的选项的描述。
- 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。
27.28.1 命令
此过滤器支持所有上述选项作为命令.
27.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
.
27.29.1 命令
此过滤器支持所有上述选项作为命令.
27.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
规范化滤波系数,默认启用。 启用后将规范化直流电的幅度响应为0dB。
- mix
过滤信号在输出中的使用量,默认值是1。 范围是0到1。
- response
显示IR频率响应,幅度(紫红色)、相位(绿色)和群组延迟(黄色)在附加视频流中。 默认情况下禁用。
- channel
设置显示频率响应的IR通道。默认情况下是第一通道 显示。此选项仅在response被启用时使用。
- size
设置视频流大小。此选项仅在response被启用时使用。
系数以tf
和sf
格式表示为由空格分隔且按升序排列。
以zp
格式表示的系数由空格分隔且系数的顺序无关紧要。以zp
格式表示的系数是复数,带有i虚数单位。
不同的系数和增益可以为每个通道提供,在这种情况下 使用‘|’分隔系数或增益。最后提供的系数将用于所有剩余通道。
27.30.1 示例
- 为48000 Hz样本率设置约5000Hz的2极椭圆孔:
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
27.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时也会冲洗前瞻缓冲中的有效音频数据。
根据选择的设置,建议对输入进行2x或4x上采样 使用aresample在应用此过滤之前。
27.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位浮点。
27.32.1 命令
该滤波器支持以下命令:
- frequency, f
更改全通频率。 命令的语法是 : "频率"
- width_type, t
更改全通width_type。 命令的语法是 : "width_type"
- width, w
更改全通宽度。 命令的语法是 : "宽度"
- mix, m
更改全通混合。 命令的语法是 : "混合"
27.33 aloop
循环音频样本。
该滤波器接受以下选项:
- loop
设置循环次数。如果将值设置为-1,将导致无限循环。 默认值是0。
- size
设置样本的最大数量。默认值是0。
- start
设置循环的第一个样本。默认值是0。
- time
以秒为单位设置循环开始时间。 仅当选项命名为开始时使用
-1
.
27.34 amerge
将两个或多个音频流合并成一个多通道流。
该滤波器接受以下选项:
- inputs
设置输入的数量。默认是2。
如果输入的通道布局不重叠,因此兼容,则输出的通道布局将相应设置,并根据需要重新排列通道。 如果输入的通道布局不兼容,输出将首先包含第一个输入的所有通道,然后是第二个输入的所有通道,依次排列,输出的通道布局将设置为总通道数的默认值。
例如,如果第一个输入为2.1 (FL+FR+LF),第二个输入为FC+BL+BR,则输出将为5.1,通道顺序如下:a1, a2, b1, a3, b2, b3(a1是第一个输入的第一个通道,b1是第二个输入的第一个通道)。
另一方面,如果两个输入均为立体声,输出通道的顺序将为默认顺序:a1, a2, b1, b2,而输出的通道布局将任意设置为4.0,这可能或可能不是预期值。
所有输入必须具有相同的采样率和格式。
如果输入的持续时间不同,输出将以最短的持续时间结束。
27.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
27.35 amix
将多个音频输入混合到一个输出中。
请注意,此滤波器仅支持浮点样本(amerge和pan音频滤波器支持多种格式)。如果amix输入为整数样本,则aresample将被自动插入以进行转换为浮点样本。
它接受以下参数:
- inputs
输入数量。如果未指定,则默认为2。
- duration
如何确定流结束。
- longest
最长输入的持续时间。(默认)
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
- dropout_transition
当输入流结束时进行音量重归一化的过渡时间,以秒为单位。默认值是2秒。
- weights
为每个输入音频流指定权重,以空格分隔的数字序列。如果指定的权重少于输入数量,则最后一个权重分配给剩余输入。 每个输入的默认权重是1。
- normalize
始终缩放输入,而不是仅对样本进行求和过滤。 请注意,如果在过滤前或过滤后未对输入进行标准化,并且该选项被禁用,可能会发生严重的剪裁。默认启用。
27.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
27.35.2 命令
该滤波器支持以下命令:
- weights
- normalize
语法与具有相同名称的选项相同。
27.36 amultiply
将第一个音频流与第二个音频流相乘,结果存储为输出音频流。乘法通过将第一个流的每个样本与第二个流中相同位置的样本相乘来完成。
通过这种逐元素乘法,可以实现振幅渐弱和振幅调制。
27.37 anequalizer
对每个通道使用高阶参数化多频段均衡器。
它接受以下参数:
- params
-
此选项字符串格式为: "c通道f=中心频率w=宽度g=增益t=滤波器类型| ..." 每个均衡器频段使用’|'分隔。
- chn
设置需要应用均衡的通道编号。 如果输入中没有该通道,条目将被忽略。
- f
设置频段的中心频率。 如果输入中没有该频率,条目将被忽略。
- w
以赫兹为单位设置频段宽度。
- g
以分贝为单位设置频段增益。
- t
可选设置频段的滤波器类型,可以是:
- ‘0’
Butterworth,这是默认值。
- ‘1’
切比雪夫1型。
- ‘2’
切比雪夫2型。
- curves
如果启用该选项,anequalizer的频率响应将在视频流中显示。
- size
设置视频流大小。仅在启用曲线选项时有用。
- mgain
设置将显示的最大增益。仅在启用曲线选项时有用。 将其设置为合理的值,可以显示源自相邻频段的增益,这些频段太接近并因此产生更高的增益,当它们同时启用时。
- fscale
设置用于在视频输出中绘制频率响应的频率比例。 可以是线性或对数。默认是对数。
- colors
设置视频流中每个通道曲线的颜色。 此颜色列表是以空格或’|'分隔的颜色名称。 无法识别或缺少的颜色将替换为白色。
27.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
27.37.2 命令
该滤波器支持以下命令:
- change
修改现有滤波器参数。 命令的语法是: "过滤器编号|f=频率|w=宽度|g=增益"
过滤器编号是现有滤波器编号,从0开始,如果没有可用的滤波器,则会返回错误。频率设置新的频率参数。宽度以赫兹为单位设置新的宽度参数。增益以分贝为单位设置新的增益参数。
通过asendcmd调用完整滤波器可能看起来像这样: asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...
27.38 anlmdn
使用非局部均值算法降低音频样本中的宽带噪音。
通过查找具有相似上下文的样本来调整每个样本。通过比较其周围补丁的大小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.
27.38.1 命令
此滤波器支持以上所有选项作为命令.
27.39 anlmf, anlms
使用第二个音频流对第一个音频流应用归一化最小均值(平方|四次方)算法。
此自适应滤波器用于通过找到与生成误差信号(期望值,第二个输入音频流和实际信号,第一个输入音频流之间的差)均方误差最小相关的滤波器系数来模拟期望滤波器。
以下是接受选项的描述。
- order
设置滤波器阶数。
- mu
设置滤波器mu。
- eps
设置滤波器eps。
- leakage
设置滤波器泄漏。
- out_mode
接受以下值:
- i
通过第一个输入。
- d
通过第二个输入。
- o
传递期望值,第二个输入与误差信号估计的差值。
- n
传递输入值,第一个输入与误差信号估计的差值。
- e
传递误差信号估计样本。
默认值是o.
- precision
设置在处理样本时时使用的精度。
- auto
根据其他滤波器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双精度浮点样本格式。
27.39.1 示例
- 该滤波器的众多用途之一是降噪,将输入音频与延迟固定量的相同样本过滤。例如一个用于立体声音频的示例是:
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
27.39.2 命令
此滤波器支持与选项相同的命令,但不包括选项order
.
27.40 anull
未改变地将音频信号源传递到输出。
27.41 apad
用静音填充音频流的末尾。
这可以与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也会导致滤波器无限期地添加静音。
27.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
27.42 相位调制器
为输入音频添加相位效果。
相位器滤镜在频谱中创建一系列的峰值和谷值。这些峰值和谷值的位置会被调制,从而随着时间变化,产生一种扫频效果。
以下是接受的参数描述。
- in_gain
设置输入增益。默认值为0.4。
- out_gain
设置输出增益。默认值为0.74。
- delay
设置延迟(以毫秒为单位)。默认值为3.0。
- decay
设置衰减。默认值为0.4。
- speed
设置调制速度(以赫兹为单位)。默认值为0.5。
- type
设置调制类型。默认值为三角形。
它接受以下值:
- ‘triangular, t’
- ‘sinusoidal, s’
27.43 相位偏移器
对输入音频样本应用相位偏移。
该滤镜接受以下选项:
- shift
指定相位偏移。允许范围从-1.0到1.0。默认值为0.0。
- level
设置应用于最终输出的输出增益。允许范围从0.0到1.0。默认值为1.0。
- order
设置用于过滤的滤镜阶数。允许范围从1到16。默认值为8。
27.43.1 命令
该滤镜支持上述所有选项作为命令.
27.44 APSNR
测量音频峰值信噪比。
这个滤镜需要两路音频流作为输入,输出第一路音频流。 结果以每通道分贝为单位,显示在任一路输入的末尾。
27.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。
27.45.1 命令
该滤镜支持上述所有选项作为命令.
27.46 音频脉冲器
音频脉冲器是一种介于自动声像器和颤音之间的效果。 它还能产生有趣的立体声效果。脉冲器根据低频振荡器(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,ms或hz。默认值是hz。
- bpm
设置速度单位为每分钟节拍(bpm)。默认值是120。允许范围是[30 - 300]。仅在时间模式设为bpm时使用。
- ms
设置毫秒(ms)。默认值是500。允许范围是[10 - 2000]。仅在时间模式设为ms时使用。
- hz
设置频率(以赫兹为单位)。默认值是2。允许范围是[0.01 - 100]。仅在时间模式设为hz时使用。
27.47 aresample
使用libswresample库将输入音频重新采样到指定参数。如果未指定,则滤镜会自动将输入和输出进行转换。
该滤镜还能够拉伸/压缩音频数据以使其匹配时间戳,或注入静音/截去音频以使其匹配时间戳,或两者结合使用,或者不做任何处理。
滤镜接受语法 [采样率:]重采样器选项,其中采样率表示一个采样率,而重采样器选项是一个键=值对,使用":"分隔。请参阅(ffmpeg-resampler) "重采样器选项"部分的 ffmpeg-resampler(1)手册以获取支持选项的完整列表。
27.47.1 示例
- 将输入音频重采样到44100Hz:
aresample=44100
- 根据给定时间戳拉伸/压缩样本,每秒最大补偿1000个样本:
aresample=async=1000
27.48 areverse
反转音频片段。
警告:此滤镜需要内存来缓冲整个片段,因此建议进行裁剪。
27.48.1 示例
- 获取片段的前5秒,然后将其反转。
atrim=end=5,areverse
27.49 arls
对第一路音频流应用递归最小二乘算法,使用第二路音频流。
这种自适应滤镜用于通过递归找到将生成差异信号(期望的第二输入音频流与实际信号,即第一输入音频流的差异信号的加权线性最小二乘代价函数)最小化的滤镜系数,从而模仿目标滤波器。
以下是接受的选项的描述。
- order
设置滤镜阶数。
- lambda
设置遗忘因子。
- delta
设置初始化内部协方差矩阵的系数。
- out_mode
设置滤镜输出样本。它接受以下值:
- i
传递第一个输入。
- d
传递第二个输入。
- o
传递期望的第二输入与误差信号估计之间的差异。
- n
传递输入的第一个输入与误差信号估计之间的差异。
- e
传递估计的误差信号样本。
默认值为输出.
- precision
设置处理样本时使用的精度。
- auto
根据其他滤镜自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
27.50 arnndn
使用循环神经网络减少语音噪声。
该滤镜接受以下选项:
- model, m
设置要加载的训练模型文件。此选项始终是必需的。
- mix
设置过滤样本混合到最终输出的程度。 允许范围是-1到1。默认值是1。 负值是特殊值,它们设置要在最终滤镜输出中保留多少过滤噪声。 将此选项设置为-1以听到从输入信号中去除的实际噪声。
27.50.1 命令
该滤镜支持上述所有选项作为命令.
27.51 ASDR
测量音频信号与失真率。
该滤镜需要两路音频流作为输入,输出第一路音频流。 结果以每通道分贝为单位,显示在任一路输入的末尾。
27.52 asetnsamples
设置每个输出音频帧的样本数。
最后的输出包可能包含不同数量的样本,因为当输入音频发出结束信号时,滤镜将刷新所有剩余样本。
该滤镜接受以下选项:
- nb_out_samples, n
设置每个输出音频帧的帧数。该数字指的是每个通道的样本数。 默认值为1024。per each channel. Default value is 1024.
- pad, p
如果设置为1,滤镜将用零填充最后的音频帧,以便最后一个帧包含与之前帧相同数量的样本。默认值为1。
例如,要将每帧样本数设置为1234并禁用对最后帧的填充,请使用:
asetnsamples=n=1234:p=0
27.53 asetrate
在不改变PCM数据情况下设置采样率。 这将导致速度和音调的变化。
该滤镜接受以下选项:
- sample_rate, r
设置输出采样率。默认值为44100Hz。
27.54 ashowinfo
为每个输入音频帧显示包含各种信息的行。 输入音频不被修改。
显示的行包含一系列键/值对,形式如键:值.
以下值显示在输出中:
- n
输入帧的(连续)编号,从0开始。
- pts
输入帧的表示时间戳,以时间基单位表示;时间基取决于滤镜输入端,通常为1/采样率.
- pts_time
输入帧的表示时间戳,以秒为单位。
- fmt
采样格式。
- chlayout
声道布局。
- rate
音频帧的采样率。
- nb_samples
帧中每个通道的样本数量。
- checksum
音频数据的Adler-32校验和(以十六进制打印)。对于平面音频,数据被视为所有平面连接在一起。
- plane_checksums
每个数据平面的Adler-32校验和列表。
27.55 asisdr
测量音频比例不变信号失真率。
该滤镜需要两路音频流作为输入,输出第一路音频流。 结果以每通道分贝为单位,显示在任一路输入的末尾。
27.56 asoftclip
应用音频软剪裁。
软剪裁是一种失真效果,其中信号的振幅沿平滑曲线被饱和,而不是硬剪裁的突然形态。
该滤镜接受以下选项:
- type
设置软剪裁的类型。
它接受以下值:
- hard
- tanh
- atan
- cubic
- exp
- alg
- quintic
- sin
- erf
- threshold
设置开始剪裁的阈值。默认值为0分贝或1。
- output
设置应用于输出的增益。默认值为0分贝或1。
- param
设置额外参数,用于控制S型函数。
- oversample
设置过采样因子。
27.56.1 命令
该滤镜支持上述所有选项作为命令.
27.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
27.58 asr
自动语音识别
该滤镜使用PocketSphinx进行语音识别。要启用此滤镜的编译,需要通过以下选项配置FFmpeg:--enable-pocketsphinx
.
它接受以下选项:
- rate
设置输入音频的采样率。默认值是
16000
。 这需要与语音模型匹配,否则会得到较差的结果。- hmm
设置包含声学模型文件的字典。
- dict
设置发音词典。
- lm
设置语言模型文件。
- lmctl
设置语言模型集。
- lmname
设置使用的语言模型。
- logfn
设置日志消息的输出。
过滤器将识别到的语音导出为帧元数据lavfi.asr.text
.
27.59 astats
显示音频通道的时间域统计信息。 统计信息是为每个音频通道单独计算和显示的, 如果适用,还会给出整体数据。
它接受以下选项:
- length
短窗口长度(以秒为单位),用于峰值和槽值RMS测量。 默认值是
0.05
(50毫秒)。允许范围是[0 - 10]
.- metadata
-
设置元数据注入。所有元数据键都以
lavfi.astats.X
为前缀, 其中X
是从1开始的通道编号或字符串Overall
。默认是禁用。每个通道的可用键是:Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough Zero_crossings Zero_crossings_rate
而对于
Overall
: Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough例如,完整的键看起来像
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水平的标准比率(注意:不是分贝)
- DC_offset
从零的平均振幅位移
- Dynamic_range
音频的测量动态范围,以分贝表示
- Entropy
整个音频的熵测量,接近1.0的熵通常是白噪声的测量结果
- Flat_factor
信号在其峰值水平的平坦度(即:连续样本具有 相同值)Min_level或Max_level)
- Max_difference
两个连续样本之间的最大差值
- Max_level
最大样本水平
- Mean_difference
两个连续样本之间的平均差值,即:每次两个连续样本之间差值的平均值
- Min_difference
两个连续样本之间的最小差值
- Min_level
最小样本水平
- Noise_floor
短窗口内测量的最小局部峰值,以dBFS表示
- Noise_floor_count
信号达到Noise floor
- Number_of_Infs
具有无限值的样本数
- Number_of_NaNs
具有NaN(非数字)值的样本数
- Number_of_denormals
具有次正规值的样本数
- Number_of_samples
样本数量
- Peak_count
信号达到Min_level或Max_level
- Abs_Peak_count
从信号中取样达到最大绝对值,分别是Min_level和Max_level
- Peak_level
以dBFS表示的标准峰值水平
- RMS_difference
两个连续样本之间的均方根差
- RMS_level
以dBFS表示的标准RMS水平
- RMS_peak
- RMS_trough
短窗口内测量的RMS水平的峰值和槽值,以dBFS表示。
- Zero crossings
波形与零水平轴交叉的点数
- Zero crossings rate
零交叉的速率与音频样本数
27.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
设置要处理的通道。默认值是所有可用通道。
27.60.1 命令
此过滤器支持以上所有选项作为命令.
27.61 asubcut
切除低音频率。
此过滤器允许设置自定义、更陡的 滚降比高通过滤器,因此能够更有效地衰减 停止带内的频率内容。
过滤器接受以下选项:
- cutoff
设置截止频率(赫兹)。允许范围是2到200。 默认值是20。
- order
设置过滤器阶数。可用值是从3到20。 默认值是10。
- level
设置输入增益水平。允许范围是0到1。默认值是1。
27.61.1 命令
此过滤器支持以上所有选项作为命令.
27.62 asupercut
切除高音频率。
过滤器接受以下选项:
- cutoff
设置截止频率(赫兹)。允许范围是20000到192000。 默认值是20000。
- order
设置过滤器阶数。可用值是从3到20。 默认值是10。
- level
设置输入增益水平。允许范围是0到1。默认值是1。
27.62.1 命令
此过滤器支持以上所有选项作为命令.
27.63 asuperpass
应用高阶巴特沃斯带通滤波器。
过滤器接受以下选项:
- centerf
设置中心频率(赫兹)。允许范围是2到999999。 默认值是1000。
- order
设置过滤器阶数。可用值是从4到20。 默认值是4。
- qfactor
设置Q因数。允许范围是0.01到100。默认值是1。
- level
设置输入增益水平。允许范围是0到2。默认值是1。
27.63.1 命令
此过滤器支持以上所有选项作为命令.
27.64 asuperstop
应用高阶巴特沃斯带阻滤波器。
过滤器接受以下选项:
- centerf
设置中心频率(赫兹)。允许范围是2到999999。 默认值是1000。
- order
设置过滤器阶数。可用值是从4到20。 默认值是4。
- qfactor
设置Q因数。允许范围是0.01到100。默认值是1。
- level
设置输入增益水平。允许范围是0到2。默认值是1。
27.64.1 命令
此过滤器支持以上所有选项作为命令.
27.65 atempo
调整音频节奏。
过滤器仅接受一个参数,即音频节奏。如果未指定,则过滤器将假定为标称的1.0节奏。节奏必须在[0.5, 100.0]范围内。
注意,节奏大于2时将跳过一些样本,而不是将它们混合。如果这在任何情况下成为一个问题,可以串联几个atempo实例以实现所需的最终节奏。
27.65.1 示例
- 将音频慢至80%节奏:
atempo=0.8
- 将音频加速至300%节奏:
atempo=3
- 通过串联两个atempo实例将音频加速至300%节奏:
atempo=sqrt(3),atempo=sqrt(3)
27.65.2 命令
此过滤器支持以下命令:
- tempo
更改过滤器节奏比例因子。 命令语法为:"tempo"
27.66 atilt
对音频流应用频谱倾斜滤波器。
该滤波器在指定的频段上应用任何频谱滚降斜率。
过滤器接受以下选项:
- freq
设置倾斜的中心频率,单位为赫兹。默认值是10000赫兹。
- slope
设置倾斜的斜率方向。默认值是0。允许范围从-1到1。
- width
设置倾斜的宽度。默认值是1000。允许范围从100到10000。
- order
设置倾斜过滤器的阶数。
- level
设置输入音量水平。允许范围是0到4。 默认值是1。
27.66.1 命令
此过滤器支持以上所有选项作为命令.
27.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
27.68 axcorrelate
计算两路输入音频流之间的规范化窗口交叉相关性。
结果样本始终介于-1和1之间。 如果结果是1,则表示两个输入样本在选定段中高度相关。 结果为0表示它们完全没有相关性。 如果结果是-1,则表示两个输入样本偏离,即它们会互相抵消。
过滤器接受以下选项:
- size
设置计算交叉相关性所用段的大小。 默认值是256。允许范围是2到131072。
- algo
设置交叉相关性算法。可以是
slow
或fast
或best
。 默认值是best
。快速算法假设任何给定段的平均值始终为零,因此需要更少的计算。 这通常是不正确的,但对典型的音频流是有效的。
27.68.1 示例
- 计算立体声音频流中各声道的相关性:
ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
27.69 带通滤波
应用两个极点的巴特沃斯带通滤波器,中央频率为频率,以及(3dB点)带宽宽度。 该csg选项选择恒定裙增益(峰值增益=Q),而不是默认值:恒定0dB峰值增益。 滤波器以每倍频程6dB(每十倍频率20dB)衰减。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- csg
恒定裙增益设置为1时生效。默认值为0。
- width_type, t
设置滤波器带宽的指定方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
用指定的宽度类型单位定义滤波器的带宽。
- 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处理的块大小。如果该值设置得足够高 (高于冲击响应长度在接近零值时截断),则过滤 就会成为线性相位,否则如果不够大,则只会产生令人讨厌的伪影。
注意,当设置为非零值时,滤波延迟将恰好为如此多的样本。
27.69.1 命令
此滤波器支持以下命令:
- frequency, f
更改带通频率。 命令语法为: "频率"
- width_type, t
更改带通宽度类型。 命令语法为: "宽度类型"
- width, w
更改带通宽度。 命令语法为: "宽度"
- mix, m
更改带通混合。 命令语法为: "混合"
27.70 带阻滤波
应用两个极点的巴特沃斯带阻滤波器,中央频率为频率,以及(3dB点)带宽宽度。 滤波器以每倍频程6dB(每十倍频率20dB)衰减。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- width_type, t
设置滤波器带宽的指定方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
用指定的宽度类型单位定义滤波器的带宽。
- 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处理的块大小。如果该值设置得足够高 (高于冲击响应长度在接近零值时截断),则过滤 就会成为线性相位,否则如果不够大,则只会产生令人讨厌的伪影。
注意,当设置为非零值时,滤波延迟将恰好为如此多的样本。
27.70.1 命令
此滤波器支持以下命令:
- frequency, f
更改带阻频率。 命令语法为: "频率"
- width_type, t
更改带阻宽度类型。 命令语法为: "宽度类型"
- width, w
更改带阻宽度。 命令语法为: "宽度"
- mix, m
更改带阻混合。 命令语法为: "混合"
27.71 低音,低搁架滤波
使用两个极点的搁架滤波器提升或削减音频的低频(低音)部分,类似于标准 高保真音响的音调控制。这也被称为搁架均衡(EQ)。
滤波器接受以下选项:
- gain, g
给定0 Hz处的增益。其有效范围大约是-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处理的块大小。如果该值设置得足够高 (高于冲击响应长度在接近零值处截断),则过滤 将成为线性相位,否则如果不够大,它将仅产生令人讨厌的伪影。
注意,当设置为非零值时,滤波延迟将恰为这么多样本。
27.71.1 命令
此滤波器支持以下命令:
- frequency, f
更改低音频率。 命令语法为: "频率"
- width_type, t
更改低音宽度类型。 命令语法为: "宽度类型"
- width, w
更改低音宽度。 命令语法为: "宽度"
- gain, g
更改低音增益。 命令语法为: "增益"
- mix, m
更改低音混合。 命令语法为: "混合"
27.72 双二阶滤波
使用给定的系数应用双二阶IIR滤波器。 其中b0, b1, b2和a0, a1, a2是分子和分母系数。 以及声道, c指定要过滤的声道,默认所有 可用声道都被过滤。
27.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处理的块大小。如果该值设置得足够高 (高于冲击响应长度在接近零值处截断),则过滤 将成为线性相位,否则如果不够大,它将仅产生令人讨厌的伪影。
注意,当设置为非零值时,滤波延迟将恰为这么多样本。
27.73 bs2b
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
馈入水平(以赫兹为单位)。
27.74 声道映射
将输入声道重新映射到新的位置。
它接受以下参数:
- map
映射输入声道到输出声道。参数是一个由‘|’分隔的映射列表,每项格式为
输入声道-输出声道
或者输入声道
形式。输入声道可以是输入声道的名称(例如FL表示前左声道)或者其在输入声道布局中的索引。输出声道是输出声道的名称或者其在输出声道布局中的索引。如果输出声道未给出,则其被隐含为索引,从零开始并每个映射递增一。混合使用不同类型的映射是不允许的,会导致解析错误。- channel_layout
输出流的声道布局。如果未指定,则过滤器会根据输出声道的名称或映射数量进行猜测。 猜测的布局不一定包含映射顺序中的声道。
如果没有设置映射,过滤器将隐式地将输入声道映射到输出声道,保持索引不变。
27.74.1 示例
- 例如,假设一个5.1+下混声音道的输入MOV文件,
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
将从输入中的下混声道创建一个输出被标记为立体声的WAV文件。
- 修复一个5.1 WAV文件,这个文件被错误编码为AAC的原生声道顺序
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
27.75 声道分离
将输入音频流中的每个声道分离为单独的输出流。
它接受以下参数:
- channel_layout
输入流的声道布局。默认值为"立体声"。
- channels
一个描述要提取为单独输出流的声道的声道布局,或者"全部"提取每个输入声道作为单独的流。默认值为"全部"。
选择输入中声道布局中不存在的声道会导致错误。
27.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文件中仅提取LFE:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav
27.76 合唱
向音频添加合唱效果。
可以让一个单一的人声听起来像合唱,但也可以应用于乐器。
合唱类似于带有短延迟的回声效果,但与回声的延迟为常数不同,合唱通过正弦或三角形调制进行变化。 调制深度定义了在延迟之前或之后播放的范围。因此,延迟后的声音会变得更慢或更快,调整后的声音围绕原始音调进行调节,这类似于合唱中一些声音略微跑调。
它接受以下参数:
- in_gain
设置输入增益。默认值为0.4。
- out_gain
设置输出增益。默认值为0.4。
- delays
设置延迟。典型延迟约为40毫秒到60毫秒。
- decays
设置衰减。
- speeds
设置速度。
- depths
设置深度。
27.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
27.77 动态范围压缩/扩展
压缩或扩展音频的动态范围。
它接受以下参数:
- attacks
- decays
一个时间列表,以秒为单位,每个声道用于平均输入信号的瞬时电平以确定其音量。攻击时间指的是 音量增加衰减时间指的是音量减少。在大多数情况下,攻击时间(响应音频增加的声音)应短于衰减时间,因为人耳对突然增大的声音比突然变小的声音更敏感。典型攻击时间为0.3秒,衰减时间为0.8秒。 如果指定的攻击和衰减的数量少于声道的数量,将使用最后设置的攻击/衰减用于所有剩余声道。
- points
一个点的列表,用于定义传递函数,相对最大可能信号幅度以分贝(dB)表示。每个关键点列表需使用以下语法定义:
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。
27.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
27.78 延迟补偿
补偿延迟线是一种基于距离的延迟,用于补偿麦克风或扬声器的位置差异。
例如,您用两个麦克风处于不同位置录制吉他。由于声波的传播速度在正常情况下是固定的, 麦克风的相位可能会有所不同,具体取决于它们的位置和相互关系。 当每个麦克风的相位同步时,可以获得最佳的声音混合。注意,麦克风之间的距离约为30厘米时, 一个麦克风接收到的信号会与另一个麦克风的信号相反相位。这会使最终混音听起来郁闷。 该滤波器通过为每个麦克风轨道添加不同的延迟,以实现同步,从而解决相位问题。
通过选择一个轨道作为基准,并一个接一个与之同步其他轨道,可以达到最佳效果。 记住,同步/延迟的误差容忍还取决于采样率。 更高的采样率将带来更好的容忍度。
此过滤器接受以下参数:
- mm
设置距离,单位为毫米。这是用于精调的补偿距离。 默认值为0。
- cm
设置距离,单位为厘米。这是用于微调的补偿距离。 默认值为0。
- m
设置距离,单位为米。这是用于很大距离调整的补偿。 默认值为0。
- dry
设置未处理信号(干信号)的量。 默认值为0。
- wet
设置处理信号(湿信号)的量。 默认值为1。
- temp
设置温度,单位为摄氏度。这是环境的温度。 默认值为20。
27.78.1 命令
此过滤器支持以下所有选项作为命令.
27.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处理的块大小。如果设置的值足够高(超过脉冲响应长度在接近零值时被截断的长度), 过滤将变为线性相位,否则如果值不足够大,则会产生明显的伪影。
请注意,当设置为非零值时,滤波器延迟将正好为此值的样本数。
27.79.1 命令
此过滤器支持以上所有选项作为命令.
27.80 音频晶化器
一种简单的音频噪声锐化算法。
此过滤器线性增加每个音频样本之间的差异。
此过滤器接受以下选项:
- i
设置效果强度(默认值:2.0)。必须在-10.0到0(声音未变)到10.0(最大效果)范围内。 要进行反相滤波,请使用负值。
- c
启用削波。默认处于启用状态。
27.80.1 命令
此过滤器支持以上所有选项作为命令.
27.81 DC偏移
对音频应用一个DC偏移。
这可以用于移除音频中的DC偏移(可能是由于录音链中的硬件问题引起的)。 DC偏移的影响包括减小的动态范围和因此降低的音量。astats过滤器可用于判断信号是否有DC偏移。
- shift
设置DC偏移值,允许范围为[-1, 1]。表示音频的移动量。
- limitergain
可选项。应具有远小于1的值(例如0.05或0.02),用于防止削波。
27.82 去齿音
对音频样本应用去齿音。
- i
设置触发去齿音的强度。允许范围为0到1。 默认值为0。
- m
设置对白声音频高音部分的衰减量。允许范围为0到1。 默认值为0.5。
- f
设置在去齿音时保留的原始频率内容量。允许范围为0到1。 默认值为0.5。
- s
设置输出模式。
可接受以下值:
- i
原样输出。
- o
只输出去除的齿音。
- e
仅输出齿音部分。
默认值为o.
27.83 对话增强
增强立体声音频对话。
此过滤器接受立体声输入并生成环绕声(3.0声道)输出。 新生成的前置中心声道增强了原本在立体声声道中可用的语音对话。 该过滤器将输入的前置左右声道保持不变。
此过滤器接受以下选项:
- original
设置在前置中心声道输出中保留的原始中心成分因子。 允许范围为0到1。默认值为1。
- enhance
设置添加到前置中心声道输出中的对话增强因子。 允许范围为0到3。默认值为1。
- voice
设置语音检测因子。 允许范围为2到32。默认值为2。
27.83.1 命令
此过滤器支持以上所有选项作为命令.
27.84 动态范围仪表
测量音频的动态范围。
动态范围值14及以上通常出现在非常动态的素材中。动态范围值8到13出现在过渡性的素材中。 而任何低于8的动态范围则表明其动态非常差且压缩较重。
此过滤器接受以下选项:
- length
设置用于将音频分割为等长片段的窗口长度,单位为秒。 默认值为3秒。
27.85 动态音频标准化
动态音频标准化器。
此过滤器对输入音频施加一定量的增益,以使其峰值幅度达到目标水平(例如0 dBFS)。 不过,与更"简单"的标准化算法不同,动态音频标准化器会动态地调整输入音频的增益因子。 这允许对音频的"安静"部分应用额外增益,同时避免对"响亮"部分产生失真的情况。 换句话说:动态音频标准化器会"调和"安静和响亮片段的音量,使每个片段的音量达到相同的目标水平。 请注意,动态音频标准化器实现此目标时*不会*应用"动态范围压缩"。 它将100%保留音频文件中每个片段的动态范围。
- framelen, f
设置帧长度,单位为毫秒。范围为10到8000毫秒。 默认值为500毫秒。 动态音频标准化器以小块处理输入音频,这些小块称为帧。 这是必要的,因为单个样本值的峰值幅度没有意义。 相反,我们需要针对连续的样本值序列确定峰值幅度。 标准化滤波器简单地使用整个文件的峰值幅度,而动态音频标准化器单独为每个帧确定峰值幅度。 帧的长度以毫秒为单位指定。默认情况下动态音频标准化器使用500毫秒的帧长度, 这一值对大多数文件效果良好。 注意,根据单个输入音频文件的采样率,帧的确切长度(以采样点数衡量)将自动确定。
- gausssize, g
设置高斯滤波窗口大小。范围为3到301,必须为奇数。 默认值为31。 动态音频标准化器的最重要参数之一是
window size
高斯平滑滤波器的窗口大小。 滤波器的窗口大小以帧数指定,并以当前帧为中心。 为了简便,此值必须为奇数。因此,默认值为31时, 将考虑当前帧、前15帧和后15帧。使用较大的窗口结果产生较强的平滑效果, 从而减少增益变化(即增加增益适应的速度)。 反之,较小的窗口效果为较弱的平滑效果,从而增加增益变化。 换言之,值越大,动态音频标准化器越像"传统"标准化滤波器运行。 相反,值越小,动态音频标准化器越像动态范围压缩器运行。- 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(未启用)。 默认情况下,动态音频正常化器执行“峰值”规范化。 这意味着每帧的最大局部增益因子由该帧的最大振幅样本定义。 通过这种方式,可以尽可能放大样本而不会超过最大信号水平,即不会剪辑。然而,动态音频正常化器还可以选择考虑帧的均方根(Root Mean Square,缩写为RMS)。在电气工程中,RMS通常用于确定信号的功率,因此被认为相比仅观察信号峰值幅度,RMS更能近似“感知响度”。因此,通过调整所有帧到统一的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且<1的值将导致更不保守的增益调整,就像设置帧长度选项为较小值时一样,如果帧长度选项值被非零重叠量补偿,则与零重叠情况相比,增益调整将更平滑地跨时间进行。
- curve, v
指定峰值映射曲线表达式,该表达式将在计算应用于帧的增益时使用。输出帧的最大增益仍将受到之前提到的其他选项的限制。
表达式可以包含以下常量:
- ch
当前声道编号。
- sn
当前样本编号。
- nb_channels
声道数。
- t
以秒表示的时间戳。
- sr
样本率。
- p
当前帧峰值。
27.85.1 命令
此过滤器支持上述所有选项作为命令.
27.86 earwax
使音频更容易通过耳机聆听。
此过滤器对44.1kHz立体声(即音频CD格式)音频添加“提示”,使音频通过耳机聆听时,立体音的效果从听者头内部(耳机的标准)移到听者前方和外部(扬声器的标准)。
从SoX移植。
27.87 equalizer
应用一个双极峰值均衡(EQ)过滤器。使用此过滤器,可以提高或降低选定频率及其周围的信号水平,同时(与带通和带阻过滤器不同)其他频率保持不变。
为了产生复杂的均衡曲线,可以多次运行此过滤器,每次设置不同的中心频率。
该过滤器支持以下选项:
- frequency, f
设置过滤器的中心频率,单位为Hz。
- width_type, t
设置过滤器带宽指定方法。
- h
赫兹
- q
品质因数
- o
倍频程
- s
坡度
- k
千赫兹
- 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处理的块大小。 如果将此值设置为足够高的值(高于接近于零值时被截断的冲动响应长度),则过滤器将变为线性相位,或者如果设置得不够大,它只会产生难看的伪影。
请注意,当设置为非零值时,过滤器延迟将正好是该样本数。
27.87.1 示例
- 在1000赫兹衰减10分贝,带宽为200赫兹:
equalizer=f=1000:t=h:width=200:g=-10
- 在1000赫兹应用2分贝增益,品质因数为1,同时在100赫兹衰减5分贝,品质因数为2:
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
27.87.2 命令
此过滤器支持以下命令命令:
- frequency, f
更改均衡器频率。 命令的语法是:"频率"
- width_type, t
更改均衡器带宽类型。 命令的语法是:"带宽类型"
- width, w
更改均衡器带宽。 命令的语法是:"带宽"
- gain, g
更改均衡器增益。 命令的语法是:"增益"
- mix, m
更改均衡器混合量。 命令的语法是:"混合量"
27.88 extrastereo
线性增加左右声道之间的差异,为播放增加某种“现场”效果。
该过滤器支持以下选项:
- m
设置差异系数(默认值:2.5)。0.0 表示单声道声音(两个声道的平均值),1.0 表示声音将保持不变,-1.0 表示左右声道将互换。
- c
启用剪辑。默认已启用。
27.88.1 命令
此过滤器支持所有上述选项作为命令.
27.89 firequalizer
使用任意频率响应应用FIR均衡。
该过滤器支持以下选项:
- gain
设置增益曲线方程(单位为dB)。表达式可以包含变量:
- f
评估的频率
- sr
样本率
- ch
声道编号,禁用多声道评估时设置为0
- chid
声道ID,参见libavutil/channel_layout.h,禁用多声道评估时设置为首个声道ID
- 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
启用最小相位脉冲响应。默认是禁用。
27.89.1 示例
- 1000 Hz的低通滤波:
firequalizer=gain='if(lt(f,1000), 0, -INF)'
- 带增益条目的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
27.90 镶边器
将镶边效果应用于音频。
过滤器接受以下选项:
- delay
设置基础延迟(单位为毫秒)。范围从0到30。默认值为0。
- depth
设置额外扫描延迟(单位为毫秒)。范围从0到10。默认值为2。
- regen
设置再生的百分比(延迟信号反馈)。范围从-95到95。默认值为0。
- width
设置延迟信号与原始信号混合的百分比。范围从0到100。默认值为71。
- speed
设置每秒扫描次数(Hz)。范围从0.1到10。默认值为0.5。
- shape
设置扫描波形,可以是三角波或正弦波。默认值为正弦波.
- phase
设置扫描波对多通道的百分比移位。范围从0到100。默认值为25。
- interp
设置延迟线插值方式,可以是线性或二次插值。默认是线性.
27.91 哈斯效应
将哈斯效应应用于音频。
注意,这在单声道信号上应用最有意义。使用此滤波器应用于单声道信号时,它提供了一些方向感并扩展了其立体声图像。
过滤器接受以下选项:
- level_in
设置输入电平。默认值为1,或0分贝
- level_out
设置输出电平。默认值为1,或0分贝。
- 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
更改右相位。默认值为启用。
27.92 HDCD
解码高清兼容数字(HDCD)数据。嵌入了HDCD码的16位PCM流扩展为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
始终扩展超过-3dBFS的峰值,即使未信号PE。
- analyze_mode
用单一音调替换音频,并调整振幅以信号一些特定的解码过程方面。输出文件可以在音频编辑器中与原始音频一起加载以辅助分析。
analyze_mode=pe:force_pe=true
可以用来查看所有超过PE级别的样本。模式包括:
- ‘0, off’
禁用
- ‘1, lle’
每个样本的增益调整水平
- ‘2, pe’
发生峰值扩展的样本
- ‘3, cdt’
代码检测计时器处于活动状态的样本
- ‘4, tgm’
目标增益在通道之间不匹配的样本
27.93 耳机
应用头相关传递函数(HRTFs),通过耳机创建虚拟扬声器围绕用户进行双耳聆听。HRIR通过额外的流提供,每个通道需要一个立体声输入流。
过滤器接受以下选项:
- map
设置卷积输入流的映射。参数是以'|'分隔的频道名称列表,按过滤器提供的额外流的顺序指定。这也指定输入流的数量。输入流的数量必须不小于第一个流的通道数量加一。
- gain
设置应用于音频的增益。值单位为分贝。默认值为0。
- type
设置处理类型。可以是时间域或频率域. 时间域是在时间域处理音频,这很慢。频率域是在频率域处理音频,这很快。默认是频率域.
- lfe
为低频效果通道设置自定义增益。值单位为分贝。默认值为0。
- size
设置将同时处理的样本数量的帧大小。默认值为1024。允许范围是1024到96000。
- hrir
设置HRIR流的格式。默认值为立体声。备选值是多通道。如果设置为立体声,额外流的数量应该大于或等于第一输入流中的通道数量。此外,每个额外流应该具有立体声通道的数量。如果设置为多通道,额外流的数量应该正好为一个。此外,额外流的输入通道数量应该等于或大于第一输入流通道数量的两倍。
27.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
27.94 高通滤波器
应用3dB点频率的高通滤波器。滤波器可以是单极,或是双极(默认)。每个极每八度音阶的滤波器衰减为6dB(每十倍频范围20dB每极)。
过滤器接受以下选项:
- frequency, f
设置频率(单位为Hz)。默认值为3000。
- poles, p
设置极数量。默认值为2。
- width_type, t
设置指定滤波器带宽的方法。
- h
赫兹
- q
Q因子
- o
倍频程
- s
斜率
- k
千赫
- width, w
用宽度类型单位指定滤波器的带宽。只适用于双极滤波器。默认值为0.707q,生成巴特沃斯响应。
- 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处理的块大小。如果这个值设置得足够高(高于脉冲响应长度在接近零值时被截断),过滤将变成线性相位,否则如果不够高,则只会产生不良的伪影。
注意,当设置为非零值时,过滤延迟将正好是这个样本数。
27.94.1 命令
此过滤器支持以下命令:
- frequency, f
更改高通频率。命令的语法是:"频率"
- width_type, t
更改高通宽度类型。命令的语法是:"宽度类型"
- width, w
更改高通宽度。命令的语法是:"宽度"
- mix, m
更改高通混合。命令的语法是:"混合"
27.95 合并
将多个输入流合并为一个多通道流。
它接受以下参数:
- inputs
输入流数量。默认值为2。
- channel_layout
所需输出频道布局。默认值为立体声。
- map
从输入映射到输出的频道。参数是以'|'分隔的映射列表,每个映射形式为
输入索引.输入频道-输出频道
。输入索引是输入流的0基索引。输入频道可以是输入频道的名称(例如前左为FL)或其在指定输入流中的索引。输出频道是输出频道的名称。
过滤器将在未明确指定映射时尝试猜测映射。它首先尝试找到一个未使用的匹配输入频道,如果失败,则选择第一个未使用的输入频道。
合并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
27.96 LADSPA
加载一个LADSPA(Linux音频开发者简单插件API)插件。
要启用此过滤器的编译,您需要使用以下配置FFmpeg:--enable-ladspa
.
- file, f
指定要加载的LADSPA插件库名称。如果环境变量
LADSPA_PATH
已定义,LADSPA插件将在环境变量中定义的用冒号分隔的目录列表中搜索,否则将在标准的LADSPA路径中搜索,路径顺序为:LADSPA_PATH
, otherwise in the standard LADSPA paths, which are in this order: HOME/.ladspa/lib/, /usr/local/lib/ladspa/, /usr/lib/ladspa/.- plugin, p
指定库中的插件。一些库仅包含一个插件,但其他库包含多个插件。如果未设置过滤器,将列出指定库中的所有可用插件。
- controls, c
设置一个'|'分隔的控件列表,其中包含一个或多个决定加载的插件行为的浮点值(例如延迟、阈值或增益)。控件需要使用以下语法定义:c0=值0|c1=值1|c2=值2|...,其中值i是设置在第i个控件上的值。或者也可以使用以下语法定义:值0|值1|值2|...,其中值i是设置在第i个控件上的值。如果controls设置为
help
,将输出所有可用控件及其有效范围。- sample_rate, s
指定采样率,默认值为44100。仅在插件没有输入时使用。
- nb_samples, n
设置每个输出帧中每条音频通道的样本数量,默认值为1024。仅在插件没有输入时使用。
- duration, d
设置所生成音频的最小持续时间。关于更多信息,请参见(ffmpeg-utils)ffmpeg-utils(1)手册中时间持续时间部分。有关可接受的语法。 请注意,生成的持续时间可能大于指定的持续时间, 因为生成的音频始终在完整帧的结尾处被剪切。 如果未指定或表示的持续时间为负值,则音频被 假定为永远生成。 仅在插件没有输入时使用。
- latency, l
启用延迟补偿,默认情况下禁用。 仅在插件具有输入时使用。
27.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-plugins 增加音频的混响
(Tom’s Audio Processing 插件):
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
27.96.2 命令
此过滤器支持以下命令:
- cN
修改第 N-th 控制值。
如果指定的值无效,则将其忽略并保持之前的值。
27.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
输入文件的测量综合音量。 范围是 -99.0 - +0.0。
- measured_LRA, measured_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
, andmeasured_thresh
必须全部指定。目标 LRA 不应 低于源 LRA,并且综合音量的变化不应 导致真峰值超过目标 TP。如果任何这些 条件不满足,则归一化模式将回退到动态。 选项是true
或false
。默认是true
.- dual_mono
将单声道输入文件视为“伪双声道”。如果单声道文件打算在 立体声音响系统上播放,其 EBU R128 测量将感知不准确。 如果设置为
true
,此选项将补偿此效果。 多声道输入文件不受此选项影响。 选项为 true 或 false。默认值为 false。- print_format
设置统计信息的打印格式。选项为 summary, json 或 none。 默认值为 none。
27.98 lowpass
应用一个 3dB 点频率的低通滤波器。 滤波器可以是单极点或双极点(默认)。 滤波器每个极点每个八度衰减 6dB(每个极点每个十倍频程 20dB)。
滤波器接受以下选项:
- frequency, f
以 Hz 设置频率。默认是 500。
- poles, p
设置极点数。默认是 2。
- width_type, t
设置指定滤波器带宽的方法。
- h
Hz
- q
品质因数 (Q因数)
- o
八度
- s
斜率
- k
kHz
- width, w
以 width_type 单位指定滤波器的带宽。 仅适用于双极点滤波器。 默认值是 0.707q,提供 Butterworth 响应。
- 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 处理的块大小。如果此值设置得足够高(高于当接近零时被截断的脉冲响应长度),则过滤将成为线性相位,否则如果不够大,则只会产生难听的伪影。
请注意,当设置为非零值时,过滤器延迟将正好是该值数量的样本。
27.98.1 示例
- 仅低通滤波 LFE 通道,如果不存在 LFE 则不执行操作:
lowpass=c=LFE
27.98.2 命令
此过滤器支持以下命令:
- frequency, f
改变低通频率。 命令语法是:"频率"
- width_type, t
更改低通宽度类型。 命令语法是:"宽度类型"
- width, w
更改低通宽度。 命令语法是:"宽度"
- mix, m
更改低通混合比例。 命令语法是:"混合"
27.99 lv2
加载一个 LV2(LADSPA 第二版)插件。
要启用该过滤器的编译,你需要使用--enable-lv2
.
- plugin, p
指定插件 URI。你可能需要对 ‘:’ 进行转义。
- controls, c
设置 "|" 分隔的控件列表,它们是零个或几个浮点值,用于确定加载插件的行为(例如延迟, 阈值或增益)。 如果controls设置为
help
,则打印所有可用的控件及其有效范围。- sample_rate, s
指定采样率,默认为 44100。仅在插件没有输入时使用。
- nb_samples, n
设置每个输出帧每通道的样本数,默认是 1024。仅在插件没有输入时使用。
- duration, d
设置生成音频的最小持续时间。参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续时间部分有关可接受语法的详细说明。 请注意,生成的持续时间可能大于指定的持续时间, 因为生成的音频始终在完整帧的结尾处被剪辑。 如果未指定或表达的持续时间为负值,则音频被认为是永久生成的。 仅在无输入的插件中使用。
27.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
27.99.2 命令
此过滤器支持由插件导出的所有选项作为命令。
27.100 mcompand
多频段压缩或扩展音频的动态范围。
输入音频通过 4 阶 Linkwitz-Riley IIR 被分成多个频段。 这类似于扬声器的分频器,并在没有压缩器动作时产生平坦的频率响应。
接受以下参数:
- args
此选项语法是: attack,decay,[attack,decay..] 软膝点 分频频率 [延迟 [初始音量 [增益]]] | attack,decay ... 有关每个项目的解释,请参考压缩过滤器文档。
27.101 pan
以特定增益级别混合通道。过滤器接受输出 频道布局后跟一组通道定义。
此过滤器还设计用于高效地重新映射音频 流的通道。
过滤器接受以下形式的参数: "l|输出定义|输出定义|..."
- l
输出通道布局或通道数量
- outdef
输出通道规范,形式为: "输出名称=[增益*]输入名称[(+-)[增益*]输入名称...]"
- out_name
要定义的输出通道,可以是通道名称(FL,FR 等)或通道编号(c0,c1 等)
- gain
通道的乘法系数,1 表示音量不变
- in_name
要使用的输入通道,请参见输出名称以获取详细信息; 无法混合命名和编号输入通道
如果用 ‘<’ 替代了通道规范中的 ‘=’, 则该规范的增益将被重新归一化,以使总和为 1,从而避免剪辑噪声。
27.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" 选项),除非有非常具体的需求。
27.101.2 重新映射示例
通道重新映射将有效,仅当满足以下条件:
- 增益系数为零或一,
- 每个渠道输出只有一个输入,
如果满足所有这些条件,过滤器将通知用户(“检测到纯通道映射”),并使用一种优化且无损的方法进行重新映射。
例如,如果你有一个 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"
27.102 replaygain
ReplayGain 扫描过滤器。该过滤器将音频流作为输入并输出不变。
在过滤结束时显示track_gain
以及track_peak
.
该过滤器接受以下导出的只读选项:
- track_gain
流结束时导出的音轨增益(以 dB 为单位)。
- track_peak
流结束时导出的音轨峰值。
27.103 resample
转换音频样本格式、采样率和通道布局。它 不是直接使用的。
27.104 rubberband
使用 librubberband 进行时间拉伸和音高移位。
要启用此过滤器的编译,你需要使用--enable-librubberband
.
过滤器接受以下选项:
- tempo
设置节奏缩放因子。
- pitch
设置音高缩放因子。
- transients
设置瞬态检测器。 可能的值是:
- 清晰
- 混合
- 平滑
- detector
设置检测器。 可能的值是:
- 复合
- 打击乐
- 柔和
- phase
设置相位。 可能的值是:
- 层流
- 独立
- window
设置处理窗口大小。 可能的值是:
- 标准
- 短
- 长
- smoothing
设置平滑。 可能的值是:
- 关闭
- 开启
- formant
在移动音高时启用共振峰保护。 可能的值是:
- 移动
- 保留
- pitchq
设置音高质量。 可能的值是:
- 质量
- 速度
- 一致性
- channels
设置通道。 可能的值是:
- 分开
- 一起
27.104.1 命令
此过滤器支持以下命令:
- tempo
改变滤镜节奏缩放因子。 命令语法是:"节奏"
- pitch
改变滤镜音高缩放因子。 命令语法是:"音高"
27.105 sidechaincompress
该滤波器的作用类似于普通压缩器,但能够使用第二个输入信号对检测信号进行压缩。 它需要两个输入流并返回一个输出流。 第一个输入流将根据第二个流信号进行处理。 过滤后的信号然后可以在之后的处理中由其他过滤器进行过滤。见pan和amerge滤镜。
该滤镜接受以下选项:
- 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 之间。
27.105.1 命令
此滤镜支持上述所有选项作为命令.
27.105.2 示例
- 完整的 ffmpeg 示例,使用 2 个音频输入,第一个输入的压缩取决于第二个输入的信号,然后将压缩后的信号与第二个输入合并:
ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
27.106 sidechaingate
侧链门像正常的(宽带)门一样运行,但能在发送到增益减少阶段之前过滤检测到的信号。 通常门使用全频率信号检测超过阈值的级别。 例如:如果你从侧链信号中切掉低频,门将仅在出现不够高的高频时减少音轨的音量。 通过这种技术,你可以减少自然鼓的共振或去除强烈失真的吉他中被静音击弦产生的“隆隆声”。 它需要两个输入流并返回一个输出流。 第一个输入流根据第二个流的信号进行处理。
滤镜接受以下选项:
- 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。
27.106.1 命令
此滤镜支持上述所有选项作为命令.
27.107 silencedetect
检测音频流中的静音。
当检测到输入音频音量小于或等于噪声容忍值的持续时间大于或等于最小检测噪声持续时间时,该滤镜会记录一条消息。
打印的时间和持续时间以秒为单位。第一个帧的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
单独处理每个通道,而不是合并。默认情况下禁用。
27.107.1 示例
- 检测噪声容忍度为 -50dB 的 5 秒静音:
silencedetect=n=-50dB:d=5
- 完整示例,使用
ffmpeg
检测静音,噪声容忍度为 0.0001,时间设置为silence.mp3:ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
27.108 silenceremove
移除音频开头、中间或末尾的静音。
滤镜接受以下选项:
- 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
.
27.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
27.108.2 命令
此过滤器支持一些上述选项,如命令.
27.109 SOFAlizer
SOFAlizer 使用头相关传递函数 (HRTFs) 为用户创建虚拟扬声器,以通过耳机进行双耳聆听(支持多达 9 声道的音频格式)。 HRTFs 存储在 SOFA 文件中(请参阅http://www.sofacoustics.org/获取数据库)。 SOFAlizer 由奥地利科学院声学研究所 (ARI) 开发。
要启用此过滤器的编译,您需要通过以下配置进行设置:--enable-libmysofa
.
过滤器接受以下选项:
- sofa
设置用于渲染的 SOFA 文件。
- gain
设置应用于音频的增益值。值以 dB 为单位。默认值为 0。
- rotation
设置虚拟扬声器的旋转角度(度)。默认值为 0。
- elevation
设置虚拟扬声器的仰角(度)。默认值为 0。
- radius
设置扬声器与使用近场 HRTFs 的听者之间的距离(米)。默认值为 1。
- type
设置处理类型。可选项为时间或频率. 时间是在时域中处理音频,这很慢。频率是在频域中处理音频,这很快。 默认值为频率.
- speakers
设置虚拟扬声器的自定义位置。此选项的语法为: <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。 每个虚拟扬声器由短信道名称、方位角和仰角(度)描述。 每个虚拟扬声器描述由 ‘|’ 分隔。 例如,要覆盖前左和前右信道位置,使用: ‘speakers=FL 45 15|FR 345 15’。 无法识别信道名称的描述将被忽略。
- lfegain
设置低频效果(LFE)信道的自定义增益。值以 dB 为单位。默认值为 0。
- framesize
设置自定义帧大小(样本数)。默认值为 1024。 允许的范围是 1024 到 96000。仅在选项 ‘type’ 设置为频率.
- normalize
导入 SOFA 文件时是否应对所有 IRs 进行归一化。 默认情况下已启用。
- interpolate
如果确切位置与输入的 IRs 不匹配,是否将最近的 IRs 与邻近的 IRs 进行插值。默认情况下已禁用。
- minphase
加载 SOFA 文件时是否对所有 IRs 进行最小相位处理。 默认情况下已禁用。
- anglestep
设置邻居搜索角度步长。仅在选项插值已启用时使用。
- radstep
设置邻居搜索半径步长。仅在选项插值已启用时使用。
27.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"
27.110 speechnorm
Speech Normalize。
此过滤器扩展或压缩音频样本的每个半周期 (所有样本值全部大于零或全部小于零并且介于两个零交叉间的本地样本集), 具体取决于阈值值,以使音频在受以下选项控制的条件下达到目标峰值值。
过滤器接受以下选项:
- 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。
27.110.1 命令
此过滤器支持作为以下选项的命令.
27.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
27.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。
27.111.1 命令
此过滤器支持作为以下选项的命令.
27.111.2 示例
- 应用卡拉 OK 类效果:
stereotools=mlev=0.015625
- 将 M/S 信号转换为 L/R:
"stereotools=mode=ms>lr"
27.112 stereowiden
此过滤器通过抑制两个声道的共同信号,并延迟左信号到右声道和反之亦然, 从而增强立体声效果。
过滤器接受以下选项:
- delay
左信号到右声道和反之亦然的延迟时间(毫秒)。 默认值为 20 毫秒。
- feedback
延迟信号到右声道和反之亦然的增益量。 这为输出提供了左信号到右声道的延迟效果及其相反效果,产生扩展效果。 默认值为 0.3。
- crossfeed
左声道到右声道的交叉传播(反向相位)。 这有助于抑制单声道。如果值为 1,它将取消所有两个声道共有的信号。 默认值为 0.3。
- drymix
设置原始声道的输入信号电平。默认值为 0.8。
27.112.1 命令
此过滤器支持所有上述选项,除了delay
作为命令.
27.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 波段的增益。
27.114 surround
应用环绕声音频上混过滤器。
此过滤器允许从音频流生成多声道输出。
过滤器接受以下选项:
- chl_out
设置输出声道布局。默认情况下为5.1.
参见(ffmpeg-utils)ffmpeg-utils(1) 手册中频道布局部分的相关语法。 for the required syntax.
- chl_in
设置输入声道布局。默认情况下为立体声.
参见(ffmpeg-utils)ffmpeg-utils(1) 手册中频道布局部分的相关语法。 for the required syntax.
- level_in
设置输入音量级别。默认值为1.
- level_out
设置输出音量级别。默认值为1.
- lfe
如果输出声道布局具有 LFE 声道,则启用该声道输出。 默认情况下启用。
- lfe_low
设置 LFE 低频截止频率。默认值为128Hz。
- lfe_high
设置 LFE 高频截止频率。默认值为256Hz。
- lfe_mode
设置 LFE 模式,可以为添加或减。 默认值为添加。 在添加模式中,LFE 声道由输入音频生成并添加到输出。 在减模式,LFE通道从输入音频创建并添加到输出,但同时从所有非LFE输出通道中减去输出的LFE通道。
- smooth
设置时间平滑强度,用于在时间上平滑变换立体声时逐渐更改因子。允许范围是0.0到1.0。当focus选项值大于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
.
27.115 倾斜搁架滤波器
使用二极搁架滤波器提升或削减音频的低频并削减或提升高频, 这种响应类似于标准Hi-Fi音调控制。 这也被称为搁架均衡(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
归一化双二阶滤波器系数,默认情况下禁用。 启用后将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处理使用的块大小。如果该值设置得足够高(高于当接近零值时截断的脉冲响应长度),滤波 将变为线相位,否则如果不够大则只会产生差劣的伪像。
注意,当设置为非零值时,滤波延迟将正好是该数字的样本数。
27.115.1 命令
此滤波器支持一些选项作为命令.
27.116 高音,高搁架
通过使用二极搁架滤波器提升或削减音频的高音(高频),与标准 Hi-Fi音调控制的响应相似。这也被称为搁架均衡(EQ)。
滤波器接受以下选项:
- gain, g
设置提升音频时的增益。有效范围为-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
归一化双二阶滤波器系数,默认情况下禁用。 启用后将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处理使用的块大小。如果该值设置得足够高 (高于当接近零值时截断的脉冲响应长度),滤波 将变为线相位,否则如果不够大将仅产生伪像。
注意,当设置为非零值时,滤波延迟将为该数字的样本数。
27.116.1 命令
此滤波器支持以下命令:
- frequency, f
更改高音频率。 命令语法是:"频率"
- width_type, t
更改高音宽度类型。 命令语法是:"宽度类型"
- width, w
更改高音宽度。 命令语法是:"宽度"
- gain, g
更改高音增益。 命令语法是:"增益"
- mix, m
更改高音混合。 命令语法是:"混合"
27.117 颤音
正弦幅度调制。
滤波器接受以下选项:
- f
以赫兹为单位的调制频率。亚谐波范围内(20 Hz或更少)的调制频率 会导致颤音效果。通过指定高于20 Hz的调制频率,滤波器也可用作 a环形调制器。 范围是0.1 - 20000.0。默认值是5.0 Hz。
- d
百分比表示的调制深度。范围是0.0到1.0。 默认值是0.5。
27.118 颤音
正弦相位调制。
滤波器接受以下选项:
- f
以赫兹为单位的调制频率。 范围是0.1 - 20000.0。默认值是5.0 Hz。
- d
百分比表示的调制深度。范围是0.0到1.0。 默认值是0.5。
27.119 虚拟低音
应用音频虚拟低音滤波器。
此滤波器接受立体声输入并生成具有LFE(2.1)通道的立体声输出。 新生成的LFE通道增强了最初从两声道音频中获得的虚拟低音。 此滤波器输出的前左和前右通道与立体声输入无变化。
滤波器接受以下选项:
- cutoff
设置虚拟低音截止频率。默认值是250 Hz。 允许范围是100到500 Hz。
- strength
设置虚拟低音强度。允许范围是0.5到3。 默认值是3。
27.120 音量
调整输入音频的音量。
它接受以下参数:
- volume
设置音频音量表达式。
输出值被限制在最大值。
输出音频音量由以下公式给定:
输出音量 = 音量 * 输入音量
的默认值为音量"1.0"。
- precision
此参数表示数学精度。
它决定允许的输入样本格式,这会影响 音量缩放的精度。
- fixed
8-bit定点;这限制输入样本格式为U8、S16和S32。
- float
32-bit浮点型;这限制输入样本格式为FLT。(默认)
- double
64-bit浮点型;这限制输入样本格式为DBL。
- replaygain
选择在输入帧中遇到ReplayGain附加数据时的行为。
- drop
移除ReplayGain附加数据,忽略其内容(默认)。
- ignore
忽略ReplayGain附加数据,但将其保留在帧中。
- track
优先使用track gain(如果存在)。
- album
优先使用album gain(如果存在)。
- replaygain_preamp
对选定的ReplayGain增益应用的预放大增益(以dB为单位)。
的默认值为replaygain_preamp为0.0。
- replaygain_noclip
通过限制应用增益防止剪切。
的默认值为replaygain_noclip为1。
- eval
设置评估音量表达式的时间点。
它接受以下值:
- ‘once’
仅在滤波器初始化期间或发送‘volume’命令时评估表达式
- ‘frame’
对每个进入的帧评估表达式
默认值是‘once’.
音量表达式可以包含以下参数。
- n
帧号(从零开始)
- nb_channels
通道数量
- nb_consumed_samples
滤波器消耗的样本数
- nb_samples
当前帧中的样本数
- pos
文件中的初始帧位置(已弃用,请勿使用)
- pts
帧PTS
- sample_rate
采样率
- startpts
流开始时的PTS
- startt
流开始时的时间
- t
帧时间
- tb
时间戳时间基
- volume
最后设置的音量值
请注意,当eval设置为‘once’时,仅有采样率和tb变量可用,所有其他变量将评估为NAN。
27.120.1 命令
此滤波器支持以下命令:
- volume
修改音量表达式。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
27.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
27.121 音量检测
检测输入视频的音量。
滤波器没有参数。它仅支持16位签名整型样本, 因此在需要时会转换输入。当输入流结束时,关于音量的统计信息将 记录在日志中。
尤其是,它将显示平均音量(均方根)、最大音量 (基于每个样本),以及所注册音量值的直方图 (从最大值到积累的1/1000样本的部分)。
所有音量均以相对于最大PCM值的分贝为单位。
27.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之间。
- 有6个样本为-4 dB,62个为-5 dB,286个为-6 dB,等等。
换句话说,将音量提高+4 dB不会导致任何削波,将其提高+5 dB会导致6个样本的削波,等等。
28 个音频源
以下是当前可用音频源的描述。
28.1 abuffer
缓冲音频帧,并使其可供滤波链使用。
此源主要用于编程使用,特别是通过接口在libavfilter/buffersrc.h.
它接受以下参数:
- time_base
将用于提交帧的时间基。它必须是一个浮点数或以分子/分母形式的数。
- sample_rate
输入音频缓冲的采样率。
- sample_fmt
输入音频缓冲的采样格式。可以是采样格式名称或在libavutil/samplefmt.h
- channel_layout
输入音频缓冲的通道布局。可以是libavutil/channel_layout.c其对应的整数表示,也可以是libavutil/channel_layout.h
- channels
输入音频缓冲的频道数量。如果频道数量和通道布局都被指定,则它们必须一致。
28.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
28.2 aevalsrc
生成由表达式指定的音频信号。
此源接受一个或多个表达式(每个通道一个),这些表达式被评估并用于生成相应的音频信号。
此源接受以下选项:
- exprs
为每个单独频道设置用‘|’分隔的表达式列表。如果channel_layout选项未指定,则所选的通道布局取决于提供的表达式数量。否则,最后一个指定的表达式将应用于剩余的输出通道。
- channel_layout, c
设置通道布局。指定的布局中的频道数必须与指定的表达式数量相等。
- duration, d
设置音频源的最短持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。请注意,生成的持续时间可能大于指定的持续时间,因为生成的音频始终在完整帧的末尾被截断。
如果未指定或表达的持续时间为负数,则假定音频将无限生成。
- nb_samples, n
设置每个输出帧的每通道样本数,默认为1024。
- sample_rate, s
指定采样率,默认为44100。
每个表达式可以包含以下常数:
- n
被评估样本的编号,从0开始
- t
被评估样本的时间,以秒为单位,从0开始
- s
采样率
28.2.1 示例
- 生成静音:
aevalsrc=0
- 生成440Hz频率的正弦信号,设置采样率为8000Hz:
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)"
- 在360Hz载波上生成2.5Hz双耳节拍:
aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
28.3 afdelaysrc
生成分数延迟FIR系数。
生成的流可以与afir滤波器一起用于过滤音频信号。
滤波器接受以下选项:
- delay, d
设置分数延迟。默认值为0。
- sample_rate, r
设置采样率,默认为44100。
- nb_samples, n
设置每帧样本数。默认为1024。
- taps, t
设置输出音频流中的滤波系数数量。默认值为0。
- channel_layout, c
指定通道布局,可以是表示通道布局的字符串。默认通道布局值是“立体声”。
28.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
:最小相位。默认为最小相位滤波器。
28.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。
28.6 anullsrc
空音频源,返回未处理的音频帧。它主要用作模板并在分析/调试工具中使用,或者用作忽略输入数据的滤波器的源(例如sox合成人滤波器)。
此源接受以下选项:
- channel_layout, cl
-
指定通道布局,可以是整数或表示通道布局的字符串。默认值为通道布局是“立体声”。
请检查libavutil/channel_layout.c定义中的通道布局映射以找到字符串和通道布局值之间的映射。
- sample_rate, r
指定采样率,默认为44100。
- nb_samples, n
设置每个请求帧的样本数。
- duration, d
设置音频源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。
如果未指定或表达的持续时间为负数,则假定音频将无限生成。
28.6.1 示例
- 将采样率设置为48000 Hz并将通道布局设置为AV_CH_LAYOUT_MONO。
anullsrc=r=48000:cl=4
- 使用更简单的语法执行相同操作:
anullsrc=r=48000:cl=mono
所有参数都需要显式定义。
28.7 flite
使用libflite库合成语音话语。
为了启用此过滤器的编译,您需要通过以下方式配置FFmpeg:--enable-libflite
.
请注意,flite库2.0之前的版本不支持多线程。
滤波器接受以下选项:
- list_voices
如果设置为1,则列出可用语音的名称并立即退出。默认值为0。
- nb_samples, n
设置每帧的最大样本数。默认值为512。
- textfile
设置包含要朗读文本的文件名。
- text
设置要朗读的文本。
- voice, v
设置用于语音合成的语音。默认值为
kal
。另请参阅列表语音选项。
28.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/
28.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。
28.8.1 示例
- 生成60秒的粉红噪声,采样率为44.1 kHz,幅度为0.5:
anoisesrc=d=60:c=pink:r=44100:a=0.5
28.9 hilbert
生成奇数抽头希尔伯特变换FIR系数。
生成的流可以与afir滤波器结合用于将信号相位偏移90度。
这在许多矩阵编码方案中使用,并用于解析信号生成。该过程通常被表示为乘以i(或j),即虚单位。
滤波器接受以下选项:
- sample_rate, s
设置采样率,默认值为44100。
- taps, t
设置FIR滤波器的长度,默认为22051。
- nb_samples, n
设置每帧的样本数量。
- win_func, w
生成FIR系数时设置窗口函数。
28.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窗口的β值。
- att
设置停止带衰减。默认值为120dB,允许范围是40到180dB。
- round
启用舍入,默认情况下禁用。
- hptaps
设置高通滤波器的抽头数量。
- lptaps
设置低通滤波器的抽头数量。
28.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
.
28.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 kHz正弦波生成
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)))'
29 音频接收器
以下是当前可用音频接收器的说明。
29.1 abuffersink
缓冲音频帧,并使它们可用于过滤器链的末端。
此接收器主要用于编程用途,特别是通过在以下定义的接口libavfilter/buffersink.h或选项系统。
它接受指向AVABufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,并作为不透明参数传递给avfilter_init_filter
进行初始化。
29.2 anullsink
空音频接收器;对输入音频绝不进行处理。它主要用作模板以及分析/调试工具使用。
30 视频滤镜
配置FFmpeg构建时,可以使用以下命令禁用任何现有滤镜。--disable-filters
。
配置输出将显示构建中包含的视频滤镜。
以下是当前可用视频滤镜的说明。
30.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编码,则此区域的QP大约为24(偏移值约为-6.3)。极端值-1表示无论帧其他部分如何处理,此区域应以最优质量的QP=-12编码。
- clear
如果设置为true,添加新区域之前移除现有帧上的任意标记区域。
30.1.1 示例
- 将框架的中心四分之一标记为感兴趣区域。
addroi=iw/4:ih/4:iw/2:ih/2:-1/10
- 将框架左边缘100像素宽的区域标记为非常不重要(编码为比框架其余部分更低的质量)。
addroi=0:0:100:ih:+1/5
30.2 alphaextract
以灰度视频形式提取输入的alpha通道。这在使用alphamerge滤镜时特别有用。
30.3 alphamerge
用第二个输入的灰度值添加或替换主输入的alpha通道。这主要用于结合alphaextract以便在不支持alpha通道的格式中传输或存储具有alpha通道的帧序列。
例如,要从一个普通的YUV编码视频和一个使用alphaextract创建的单独视频重建完整帧,您可以使用:
movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
30.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。
30.4.1 命令
此滤镜支持以下命令,对应于同名选项:
- factor
- threshold
- tolerance
- low
- high
- planes
30.5 ass
与subtitles滤镜相同,不同的是它不需要libavcodec和libavformat工作。而另一方面,它仅限于ASS(高级字幕)文件。
此滤镜除了subtitles滤镜的常见选项外,还接受以下选项:
- shaping
设置整形引擎
可用值有:
- ‘auto’
默认的libass整形引擎,是目前的最佳选择。
- ‘simple’
快速的、与字体无关的整形引擎,仅能进行替换。
- ‘complex’
使用OpenType进行替换和定位的较慢整形引擎。
默认值为
auto
.
30.6 atadenoise
对视频输入应用自适应时间平均去噪器。
此滤镜接受以下选项:
- 0a
设置第1平面的阈值A。默认值为0.02。 有效范围是0到0.3。
- 0b
设置第1平面的阈值B。默认值为0.04。 有效范围是0到5。
- 1a
设置第2平面的阈值A。默认值为0.02。 有效范围是0到0.3。
- 1b
设置第2平面的阈值B。默认值为0.04。 有效范围是0到5。
- 2a
设置第3平面的阈值A。默认值为0.02。 有效范围是0到0.3。
- 2b
设置第3平面的阈值B。默认值为0.04。 有效范围是0到5。
阈值A旨在响应输入信号的突变,而阈值B旨在响应输入信号的连续变化。
- s
设置滤镜用于平均的帧数。默认值为9,必须是范围为[5, 129]的奇数。
- p
设置用于平均的帧平面。默认值为全部。
- a
设置滤镜用于平均的算法变体。默认值为
p
parallel。 也可以设置为s
serial。并行可能比串行更快,而反过来则从不会是真的。并行会在第一次超出阈值时提前中止,串行如果等于或低于阈值将继续处理摄于帧的另一部分。
- 0s
- 1s
- 2s
设置第1平面、第2平面或第3平面的西格玛。默认值为32767。 有效范围是0到32767。此选项控制以大小定义的半径内每个像素的权重。 默认值意味着每个像素具有相同的权重。将此选项设置为0实际上禁用过滤。
30.6.1 命令
此滤镜支持与选项相同的命令,除了选项s
。
该命令接受与相应选项相同的语法。
30.7 avgblur
应用平均模糊滤镜。
此滤镜接受以下选项:
- sizeX
设置横向半径大小。
- planes
设置要过滤的平面。默认情况下过滤所有平面。
- sizeY
设置纵向半径大小,如果为0,则与
sizeX
相同。 默认值为0
.
30.7.1 命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则其保持当前值。
30.8 backgroundkey
将静态背景转换为透明。
此滤镜接受以下选项:
- threshold
场景更改检测的阈值。
- similarity
与背景的相似百分比。
- blend
设置不相似像素的混合量。
30.8.1 命令
此滤镜支持以上所有选项作为命令.
30.9 bbox
计算输入帧亮度平面中非黑色像素的边界框。
此滤镜计算包含所有亮度值大于最低允许值的像素的边界框。 描述边界框的参数将输出到滤镜日志。
此滤镜接受以下选项:
- min_val
设置最低亮度值。默认值为
16
.
30.9.1 命令
此滤镜支持以上所有选项作为命令.
30.10 bilateral
应用双边滤镜,进行空间平滑,同时保留边缘。
此滤镜接受以下选项:
- sigmaS
设置高斯函数的西格玛,用于计算空间权重。 允许范围是0到512。默认值为0.1。
- sigmaR
设置高斯函数的西格玛,用于计算范围权重。 允许范围是0到1。默认值为0.1。
- planes
设置要过滤的平面。默认只过滤第一个。
30.10.1 命令
此滤镜支持以上所有选项作为命令.
30.11 bilateral_cuda
CUDA加速的双边滤镜,一种保留边缘的滤镜。 由于使用GPU加速,此滤镜在数学上是精确的。 为获得最佳输出质量,请使用一对一的色度抽样,例如yuv444p格式。
此滤镜接受以下选项:
- sigmaS
设置高斯函数的西格玛,用于计算空间权重,也称为西格玛空间。 允许范围是0.1到512。默认值为0.1。
- sigmaR
设置高斯函数的西格玛,用于计算颜色范围权重,也称为西格玛颜色。 允许范围是0.1到512。默认值为0.1。
- window_size
设置双边功能的窗口大小,以确定要循环的邻居数量。 如果输入的数字是偶数,系统将自动加1。 允许范围是1到255。默认值为1。
30.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
30.12 bitplanenoise
显示并测量比特面噪声。
此滤镜接受以下选项:
- bitplane
设置要分析的平面。默认值为
1
.- filter
过滤掉噪音像素从
bitplane
设置以上。 默认情况下禁用。
30.13 blackdetect
检测(几乎)完全黑的视频区间。可用于检测章节过渡、广告或无效录制。
此滤镜将其检测分析输送到日志和帧元数据中。如果发现至少指定最短持续时间的黑色片段,则会在日志中打印一行,显示开始和结束时间戳及持续时间,级别为info
。此外,日志中还会打印一行级别为debug
每帧打印一条信息,显示该帧检测到的黑色量。
该滤镜还会将元数据附加到黑色片段的第一个帧上,键为lavfi.black_start
并将元数据附加到黑色片段结束后的第一个帧上,键为lavfi.black_end
值为帧的时间戳。这些元数据会被添加,无论指定的最短持续时间如何。
该滤镜接受以下选项:
- black_min_duration, d
设置检测到的黑色最小持续时间,以秒为单位。必须是非负浮点数。
默认值为2.0。
- picture_black_ratio_th, pic_th
设置判定图像为"黑色"的阈值。 表达为以下比例的最小值:
黑色像素的数量 / 像素总数量
用于判定图像为黑色。 默认值为0.98。
- pixel_black_th, pix_th
设置判定像素为"黑色"的阈值。
阈值表达为像素亮度的最大值,超过此值像素不被视作"黑色"。提供的值根据以下公式缩放:
绝对阈值 = 亮度最小值 + 黑色像素阈值 * 亮度范围大小
亮度范围大小和亮度最小值依赖于输入视频格式,范围为[0-255](YUV全范围格式)和[16-235](YUV非全范围格式)。
默认值为0.10。
以下示例设置像素阈值为最小值,仅检测持续2秒或以上的黑色区间:
blackdetect=d=2:pix_th=0.00
30.14 blackframe
检测几乎完全黑的帧。可用于检测章节转换或广告。输出行包括检测到的帧编号、黑度百分比、文件中的位置(如果已知则提供)或-1以及时间戳(以秒为单位)。
为了显示输出行,需将日志级别至少设置为AV_LOG_INFO值。
此滤镜导出帧元数据lavfi.blackframe.pblack
值表示图片中低于阈值的像素百分比。
它接受以下参数:
- amount
低于阈值的像素百分比;默认为
98
.- threshold, thresh
像素值低于触发阈值的百分比;默认为
32
.
30.15 blend
将两个视频帧混合到一起。
滤镜需要两个输入流,并输出一个流,第一个输入为"顶部"图层,第二个输入为"底部"图层。默认情况下,当最长的输入终止时输出也终止。blend
filter takes two input streams and outputs one
stream, the first input is the "top" layer and second input is
"bottom" layer. By default, the output terminates when the longest input terminates.
时间混合滤镜从单个流中提取两个连续帧,并输出将新帧与旧帧混合的结果。tblend
(time blend) filter takes two consecutive frames
from one single stream, and outputs the result obtained by blending
the new frame on top of the old frame.
以下是接受的选项说明。
- c0_mode
- c1_mode
- c2_mode
- c3_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而定。仅在与像素组件混合模式组合使用时有效。
- c0_expr
- c1_expr
- c2_expr
- c3_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
第二视频帧(底部图层)当前位置像素组件的值。
滤镜还支持blend
frame sync(帧同步)选项。 options.
30.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
30.15.2 命令
此滤镜支持与选项相同的命令。
30.16 blockdetect
检测帧的块状伪影,而不改变输入帧。
基于Remco Muijs和Ihor Kirenko的论文:"一种用于自适应视频处理的无参考块伪影测度"(2005年欧洲信号处理会议)。
滤镜接受以下选项:
- period_min
- period_max
为确定像素网格(周期)设置最小值和最大值。 默认值为[3,24]。
- planes
设置要过滤的平面。默认仅为第一个平面。
30.16.1 示例
- 确定第一个平面的块状伪影并搜索周期范围为[8,32]:
blockdetect=period_min=8:period_max=32:planes=1
30.17 blurdetect
检测帧的模糊程度,而不改变输入帧。
基于Marziliano, Pina等的论文:"一种无参考感知模糊测量方法"。 允许基于块的缩略。
滤镜接受以下选项:
- low
- high
设置Canny阈值算法使用的低和高阈值。
高阈值选择"强"边缘像素,通过8连通性连接到低阈值选择的"弱"边缘像素。
低阈值和高阈值值必须在[0,1]范围内,并且低阈值应小于或等于高阈值.
默认低阈值为0.04,默认高阈值为
20/255
0.12。。50/255
.- radius
定义在边缘像素附近找局部最大值的搜索半径。
- block_pct
仅为最显著的块确定模糊程度,以百分比表示。
- block_width
为宽度为《block_width的块确定模糊程度。如果设置的值小于1,则不使用块,无论block_height.
- block_height
为高度为《blockheight《block_height/的块球确定模糊程度。如果设置的值小于1无论。block_width.
- planes
Set planes to filter. Default is first only.
30.17.1 Examples
- Determine blur for 80% of most significant 32x32 blocks:
blurdetect=block_width=32:block_height=32:block_pct=80
30.18 bm3d
Denoise frames using Block-Matching 3D algorithm.
The filter accepts the following options.
- sigma
Set denoising strength. Default value is 1. Allowed range is from 0 to 999.9. The denoising algorithm is very sensitive to sigma, so adjust it according to the source.
- block
Set local patch size. This sets dimensions in 2D.
- bstep
Set sliding step for processing blocks. Default value is 4. Allowed range is from 1 to 64. Smaller values allows processing more reference blocks and is slower.
- group
Set maximal number of similar blocks for 3rd dimension. Default value is 1. When set to 1, no block matching is done. Larger values allows more blocks in single group. Allowed range is from 1 to 256.
- range
Set radius for search block matching. Default is 9. Allowed range is from 1 to INT32_MAX.
- mstep
Set step between two search locations for block matching. Default is 1. Allowed range is from 1 to 64. Smaller is slower.
- thmse
Set threshold of mean square error for block matching. Valid range is 0 to INT32_MAX.
- hdthr
Set thresholding parameter for hard thresholding in 3D transformed domain. Larger values results in stronger hard-thresholding filtering in frequency domain.
- estim
Set filtering estimation mode. Can be
basic
orfinal
. Default isbasic
.- ref
If enabled, filter will use 2nd stream for block matching. Default is disabled for
basic
value of estim option, and always enabled if value of estim isfinal
.- planes
Set planes to filter. Default is all available except alpha.
30.18.1 Examples
- Basic filtering with bm3d:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
- Same as above, but filtering only luma:
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
- Same as above, but with both estimation modes:
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
- Same as above, but prefilter with nlmeans filter instead:
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
30.19 boxblur
Apply a boxblur algorithm to the input video.
It accepts the following parameters:
- luma_radius, lr
- luma_power, lp
- chroma_radius, cr
- chroma_power, cp
- alpha_radius, ar
- alpha_power, ap
A description of the accepted options follows.
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
Set an expression for the box radius in pixels used for blurring the corresponding input plane.
The radius value must be a non-negative number, and must not be greater than the value of the expression
min(w,h)/2
for the luma and alpha planes, and ofmin(cw,ch)/2
for the chroma planes.Default value for luma_radius is "2". If not specified, chroma_radius and alpha_radius default to the corresponding value set for luma_radius.
The expressions can contain the following constants:
- w
- h
The input width and height in pixels.
- cw
- ch
The input chroma image width and height in pixels.
- hsub
- vsub
The horizontal and vertical chroma subsample values. For example, for the pixel format "yuv422p", hsub is 2 and vsub is 1.
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
Specify how many times the boxblur filter is applied to the corresponding plane.
Default value for luma_power is 2. If not specified, chroma_power and alpha_power default to the corresponding value set for luma_power.
A value of 0 will disable the effect.
30.19.1 Examples
- Apply a boxblur filter with the luma, chroma, and alpha radii
set to 2:
boxblur=luma_radius=2:luma_power=1 boxblur=2:1
- Set the luma radius to 2, and alpha and chroma radius to 0:
boxblur=2:1:cr=0:ar=0
- Set the luma and chroma radii to a fraction of the video dimension:
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
30.20 bwdif
Deinterlace the input video ("bwdif" stands for "Bob Weaver Deinterlacing Filter").
Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic interpolation algorithms. It accepts the following parameters:
- mode
The interlacing mode to adopt. It accepts one of the following values:
- 0, send_frame
Output one frame for each frame.
- 1, send_field
Output one frame for each field.
The default value is
send_field
.- parity
The picture field parity assumed for the input interlaced video. It accepts one of the following values:
- 0, tff
Assume the top field is first.
- 1, bff
Assume the bottom field is first.
- -1, auto
Enable automatic detection of field parity.
The default value is
auto
. If the interlacing is unknown or the decoder does not export this information, top field first will be assumed.- deint
Specify which frames to deinterlace. Accepts one of the following values:
- 0, all
Deinterlace all frames.
- 1, interlaced
Only deinterlace frames marked as interlaced.
The default value is
all
.
30.21 bwdif_cuda
Deinterlace the input video using the bwdif algorithm, but implemented in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec and/or nvenc.
It accepts the following parameters:
- mode
The interlacing mode to adopt. It accepts one of the following values:
- 0, send_frame
Output one frame for each frame.
- 1, send_field
Output one frame for each field.
The default value is
send_field
.- parity
The picture field parity assumed for the input interlaced video. It accepts one of the following values:
- 0, tff
Assume the top field is first.
- 1, bff
Assume the bottom field is first.
- -1, auto
Enable automatic detection of field parity.
The default value is
auto
. If the interlacing is unknown or the decoder does not export this information, top field first will be assumed.- deint
Specify which frames to deinterlace. Accepts one of the following values:
- 0, all
对所有帧进行去隔行处理。
- 1, interlaced
仅对标记为隔行的帧进行去隔行处理。
默认值为
all
.
30.22 ccrepack
重新封装CEA-708闭字幕辅助数据。
该滤镜修复了商业编码器中一些常见问题,这些问题与上游CEA-708负载格式错误相关,具体包括不正确的元组数量(针对目标FPS的错误cc_count)以及元组排序错误(例如,CEA-608元组未出现在负载的前几个条目中)。
30.23 cas
对视频流应用对比度自适应锐化滤镜。
该滤镜接受以下选项:
- strength
设置锐化强度。默认值为0。
- planes
设置要过滤的平面。默认值为过滤所有平面,除了alpha平面。
30.23.1 命令
此滤镜支持与选项相同的命令作为选项。
30.24 chromahold
除某些颜色外,移除所有颜色信息。
该滤镜接受以下选项:
- color
不会被替换为中性色彩度的颜色。
- similarity
与上述颜色的相似百分比。0.01仅匹配确切的关键颜色,而1.0匹配所有颜色。
- blend
混合百分比。0.0使像素要么完全是灰色,要么完全不是灰色。较高的值会保留更多颜色。
- yuv
表示传入的颜色已经是YUV格式而不是RGB。
像“绿色”或“红色”这样的文字颜色在此选项启用后不再有意义。可以使用此选项以十六进制数指定确切的YUV值。
30.24.1 命令
此滤镜支持与选项相同的命令作为选项。命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值不变。
30.25 chromakey
YUV颜色空间的颜色/色度键控。
该滤镜接受以下选项:
- color
将被替换为透明的颜色。
- similarity
与关键颜色的相似百分比。
0.01仅匹配确切的关键颜色,而1.0匹配所有颜色。
- blend
混合百分比。
0.0使像素要么完全透明,要么完全不透明。
较高的值会导致半透明像素,像素颜色越接近关键颜色则透明度越高。
- yuv
表示传入的颜色已经是YUV格式而不是RGB。
像“绿色”或“红色”这样的文字颜色在此选项启用后不再有意义。可以使用此选项以十六进制数指定确切的YUV值。
30.25.1 命令
此滤镜支持与选项相同的命令作为选项。命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值不变。
30.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
30.26 chromakey_cuda
基于CUDA加速的YUV颜色空间的颜色/色度键控。
此滤镜的工作方式与普通chromakey滤镜相同,但在CUDA帧上操作。有关详细信息和参数,请参阅chromakey.
30.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
30.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’
平方差值。
默认距离类型为曼哈顿。
30.27.1 命令
此滤镜支持与选项相同的命令作为选项。命令接受与对应选项相同的语法。
30.28 chromashift
水平和/或垂直移动色度像素。
该滤镜接受以下选项:
- cbh
设置水平移动色度蓝的量。
- cbv
设置垂直移动色度蓝的量。
- crh
设置水平移动色度红的量。
- crv
设置垂直移动色度红的量。
- edge
设置边缘模式,可以是模糊、默认值,或者扭曲.
30.28.1 命令
此滤镜支持上述所有选项作为命令.
30.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颜色。默认启用。
30.30 codecview
可视化由一些编解码器导出的信息。
某些编解码器可以通过帧使用辅助数据或其他方式导出信息。例如,一些基于MPEG的编解码器通过export_mvs在编解码器中的flags2选项。
该滤镜接受以下选项:
- block
使用亮度平面显示块划分结构。
- mv
设置要可视化的运动矢量。
可用的标志用于mv是:
- ‘pf’
P帧的前向预测运动矢量
- ‘bf’
B帧的前向预测运动矢量
- ‘bb’
B帧的后向预测运动矢量
- qp
使用色度平面显示量化参数。
- mv_type, mvt
设置要可视化的运动矢量类型。包括所有帧的运动矢量,除非由以下选项指定:frame_type选项。
可用的标志用于mv_type是:
- ‘fp’
前向预测运动矢量
- ‘bp’
后向预测运动矢量
- frame_type, ft
设置要可视化运动矢量的帧类型。
可用的标志用于frame_type是:
- ‘if’
帧内编码帧(I帧)
- ‘pf’
预测帧(P帧)
- ‘bf’
双向预测帧(B帧)
30.30.1 示例
- 使用可视化所有帧的前向预测运动矢量
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
- 使用可视化P帧和B帧的多方向运动矢量
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
30.31 colorbalance
修改输入帧的主颜色(红色、绿色和蓝色)的强度。
滤镜允许在阴影、中间色调或高光区域中调整红青、绿洋红或蓝黄平衡。
正值调整将平衡偏向主颜色,负值则向补色偏移。
该滤镜接受以下选项:
- rs
- gs
- bs
调整红、绿和蓝阴影(最暗像素)。
- rm
- gm
- bm
调整红、绿和蓝中间色调(中间像素)。
- rh
- gh
- bh
调整红、绿和蓝高光(最亮像素)。
选项的允许范围为
[-1.0, 1.0]
。默认值为0
.- pl
更改颜色平衡时保持亮度。默认禁用。
30.31.1 示例
- 添加红色色调到阴影:
colorbalance=rs=.3
30.31.2 命令
此滤镜支持上述所有选项作为命令.
30.32 colorcontrast
调整RGB成分之间的颜色对比度。
该滤镜接受以下选项:
- rc
设置红青对比度。默认值为0.0。允许范围是-1.0到1.0。
- gm
设置绿洋红对比度。默认值为0.0。允许范围是-1.0到1.0。
- by
设置蓝黄对比度。默认值为0.0。允许范围是-1.0到1.0。
- rcw
- gmw
- byw
设置每个选项值的权重。默认值为0.0。允许范围是0.0到1.0。如果所有权重为0.0,则禁用过滤。
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
设置保持亮度的量。默认值为0.0。允许范围是0.0到1.0。
30.32.1 命令
此滤镜支持上述所有选项作为命令.
30.33 colorcorrect
对白色和黑色的颜色白平衡进行选择性调整。此滤镜在YUV颜色空间中操作。
该滤镜接受以下选项:
- rl
设置红色阴影点。允许范围是-1.0到1.0。默认值为0。
- bl
设置蓝色阴影点。允许范围是-1.0到1.0。默认值为0。
- rh
设置红色高光点。允许范围是-1.0到1.0。默认值为0。
- bh
设置蓝色高光点。允许范围是-1.0到1.0。默认值为0。
- saturation
设置饱和度的量。允许范围是-3.0到3.0。默认值为1。
- analyze
如果设置为除分析每帧以外的任何值,将使用派生参数处理输出帧。
manual
可能的值为:Possible values are:
- ‘manual’
- ‘average’
- ‘minmax’
- ‘median’
默认值为
manual
.
30.33.1 命令
此滤镜支持上述所有选项作为命令.
30.34 colorchannelmixer
通过重新混合颜色通道来调整视频输入帧。
此滤镜通过将同一像素中与其他颜色通道相关的值相加来修改一个颜色通道。例如,如果要修改的值为红色,则输出值将为:
红=红色*rr + 蓝色*rb + 绿色*rg + alpha*ra
该滤镜接受以下选项:
- rr
- rg
- rb
- ra
调整输出红色通道对输入红、绿、蓝和alpha通道的贡献。默认值为
1
对rr,以及0
对rg, rb和ra.- gr
- gg
- gb
- ga
调整输出绿色通道对输入红、绿、蓝和alpha通道的贡献。默认值为
1
对gg,以及0
对gr, gb和ga.- br
- bg
- bb
- ba
调整输出蓝色通道对输入红、绿、蓝和alpha通道的贡献。默认值为
1
对bb,以及0
对br, bg和ba.- ar
- ag
- ab
- aa
调整输出alpha通道对输入红、绿、蓝和alpha通道的贡献。默认值为
1
对aa,以及0
对ar, ag和ab.选项的允许范围为
[-2.0, 2.0]
.- pc
设置保留颜色模式。接受的值为:
- ‘none’
禁用颜色保留,这是默认设置。
- ‘lum’
保留亮度。
- ‘max’
保留RGB三元组的最大值。
- ‘avg’
保留RGB三元组的平均值。
- ‘sum’
保留RGB三元组的总和值。
- ‘nrm’
保留RGB三元组的归一化值。
- ‘pwr’
保留RGB三元组的幂值。
- pa
设置更改颜色时的保留颜色量。允许范围从
[0.0, 1.0]
。默认值为0.0
因此被禁用。
30.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
30.34.2 命令
该滤镜支持上述所有选项作为命令.
30.35 色彩化
在视频流上叠加纯色。
滤镜接受以下选项:
- hue
设置颜色色调。允许范围是0至360。默认值是0。
- saturation
设置颜色饱和度。允许范围是0至1。默认值是0.5。
- lightness
设置颜色亮度。允许范围是0至1。默认值是0.5。
- mix
设置源亮度的混合比例。默认设置为1.0。允许范围是0.0至1.0。
30.35.1 命令
该滤镜支持上述所有选项作为命令.
30.36 色键
RGB颜色空间的色键操作。该滤镜在8位RGB格式的帧上操作,设置与键颜色相似度半径内的像素的alpha分量为0。超出相似度半径的像素的alpha值视混合选项的值而定。
滤镜接受以下选项:
- color
设置alpha将设置为0(完全透明)的颜色。参见ffmpeg-utils手册中的“颜色”部分。
black
.- similarity
设置键颜色周围的相似度半径,在此范围内的其他颜色也完全透明。计算距离与RGB值的单位分数距离相关。范围是0.01至1.0。0.01仅与键颜色的非常小半径匹配,而1.0匹配所有颜色。默认值是
0.01
.- blend
设置如何计算超出相似度半径的像素的alpha值。0.0使像素完全透明或完全不透明。较高的值使像素半透明,像素颜色越接近键颜色,透明度越高。范围是0.0至1.0。默认值是
0.0
.
30.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
30.36.2 命令
该滤镜支持与选项相同的命令。命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
30.37 色彩保持
从所有RGB颜色中移除所有颜色信息,除了某一种颜色。
滤镜接受以下选项:
- color
不会被替换为中性灰的颜色。
- similarity
与上述颜色的相似度百分比。0.01只匹配确切的键颜色,而1.0匹配所有颜色。
- blend
混合百分比。0.0使像素完全变灰。较高的值保留更多颜色。
30.37.1 命令
该滤镜支持与选项相同的命令。命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
30.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三元组的功率值。
30.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
30.38.2 命令
该滤镜支持上述所有选项作为命令.
30.39 色彩映射
对视频流应用自定义色彩映射。
该滤镜需要三个输入视频流。第一流是将要被过滤的流。第二和第三个视频流指定源颜色到目标颜色映射的色块。
滤镜接受以下选项:
- patch_size
设置源和目标视频流色块的大小,以像素为单位。
- nb_patches
设置源和目标视频流中使用的色块的最大数量。默认值是附加视频流中可用色块的数量。最大允许色块数量是
64
.- type
设置目标颜色的调整方式。可以是
relative
或absolute
。默认值是absolute
.- kernel
设置用于测量映射颜色之间差异的内核。
接受的值是:
- ‘euclidean’
- ‘weuclidean’
默认是
euclidean
.
30.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
30.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-bit
- ‘yuv420p10’
YUV 4:2:0 平面 10-bit
- ‘yuv420p12’
YUV 4:2:0 平面 12-bit
- ‘yuv422p’
YUV 4:2:2 平面 8-bit
- ‘yuv422p10’
YUV 4:2:2 平面 10-bit
- ‘yuv422p12’
YUV 4:2:2 平面 12-bit
- ‘yuv444p’
YUV 4:4:4 平面 8-bit
- ‘yuv444p10’
YUV 4:4:4 平面 10-bit
- ‘yuv444p12’
YUV 4:4:4 平面 12-bit
- fast
执行快速转换,跳过伽玛/主色调校正。这样将显著减少CPU使用,但在数学上是不正确的。为了获得与色彩矩阵滤镜输出兼容的结果,请使用 fast=1。
- dither
指定抖动模式。
接受的值是:
- ‘none’
无抖动
- ‘fsb’
Floyd-Steinberg抖动
- wpadapt
白点适配模式。
接受的值是:
- ‘bradford’
Bradford白点适配
- ‘vonkries’
von Kries白点适配
- ‘identity’
identity白点适配(即无白点适配)
- iall
一次覆盖所有输入属性。接受的值与全部.
- ispace
覆盖输入颜色空间。接受的值与空间.
- iprimaries
覆盖输入颜色主色调。接受的值与主色调.
- itrc
覆盖输入传递特性。接受的值与TRC.
- irange
覆盖输入颜色范围。接受的值与范围.
滤镜将传递特性、颜色空间和颜色主色调转换为指定的用户值。如果输出值未被指定,则基于"全部"属性设置默认值。如果该属性也未指定,滤镜将记录错误。输出颜色范围和格式默认与输入颜色范围和格式相同。输入数据应该设置传递特性、颜色空间、颜色主色调和颜色范围。如果缺少其中任何一个,滤镜将记录错误并且不会进行转换。
例如将输入转换为SMPTE-240M,使用以下命令:
colorspace=smpte240m
30.42 colorspace_cuda
使用CUDA加速实现的colorspace滤镜。
与软件colorspace滤镜相比,它绝不是功能完善,目前仅支持在jpeg/full范围和mpeg/limited范围之间进行颜色范围转换。
滤镜接受以下选项:
- range
指定输出颜色范围。
接受的值是:
- ‘tv’
电视(受限范围)
- ‘mpeg’
MPEG(受限范围)
- ‘pc’
PC(全部范围)
- ‘jpeg’
JPEG(全部范围)
30.43 色温调整
调整视频中的色温以模拟周围环境色温的变化。
滤镜接受以下选项:
- temperature
以开尔文单位设置色温。允许范围是1000至40000。默认值是6500K。
- mix
设置与过滤后输出的混合值。允许范围是0至1。默认值是1。
- pl
设置光保持的数量。允许范围是0至1。默认值是0。
30.43.1 命令
该滤镜支持与选项相同的命令。命令。
30.44 卷积
应用3x3、5x5、7x7或水平/垂直的卷积矩阵,最多可达49个元素。
滤镜接受以下选项:
- 0m
- 1m
- 2m
- 3m
为每个平面设置矩阵。矩阵是9、25或49个带符号整数的序列(在正方形模式下),以及从1到49个奇数个数的带符号整数(在行模式下)。
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
为每个平面设置计算值的乘数。如果未设置或为0,则为所有矩阵元素之和的1/sum值。
- 0bias
- 1bias
- 2bias
- 3bias
为每个平面设置偏移值。此值将添加到乘积结果中。对于使整体图像更亮或更暗有用。默认值是0.0。
- 0mode
- 1mode
- 2mode
- 3mode
为每个平面设置矩阵模式。可以是正方形, 行或列。默认值是正方形.
30.44.1 命令
该滤镜支持上述所有选项作为命令.
30.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"
30.45 卷积(频域)
使用第二流作为冲激在频域对视频流应用二维卷积。
滤镜接受以下选项:
- planes
设置要处理的平面。
- impulse
设置哪些冲激视频帧将被处理,可以是第一个或所有。默认值是全部.
该convolve
滤镜还支持framesync选项。
30.46 复制
将输入视频源不变地复制到输出。这主要用于测试目的。
30.47 核心图像
使用OSX上的Apple CoreImage API进行GPU视频过滤。
硬件加速基于OpenGL上下文。通常,这意味着它由视频硬件处理。然而,也存在基于软件的OpenGL实现,这意味着没有硬件处理的保证。这取决于各自的OSX。
Apple提供了很多滤镜和图像生成器,带有多种多样的选项。滤镜必须通过其名称和选项引用。
核心图像滤镜接受以下选项:
- 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 和主机之间的数据传输,从而允许快速处理复杂的滤镜链。 目前,仅支持具有零(生成器)或正好一个(滤镜)输入图像和一个输出图像的滤镜。此外,过渡滤镜尚未能按预期使用。
某些滤镜会生成具有额外填充的输出图像,具体取决于滤镜内核的情况。填充会自动移除,以确保滤镜输出与输入图像的尺寸相同。
对于图像生成器,输出图像的尺寸由滤镜链的上一个输出图像或整个滤镜链的输入图像决定。生成器不会使用该图像的像素信息来生成其输出。然而,生成的输出会与该图像进行混合,从而导致部分或完全覆盖输出图像。
视频源coreimagesrc可用于生成直接馈送到滤镜链中的输入图像。使用它时,不需要通过其他视频源或输入视频提供输入图像。
30.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
30.48 corr
获取两个输入视频之间的相关性。
此滤镜需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式才能使滤镜正确工作。此外,还假定两个输入具有相同数量的帧,逐一进行比较。
通过日志系统打印获得的每个组件平均值、最小值和最大值相关性。
滤镜将每帧计算的相关性存储在帧元数据中。
此滤镜还支持framesync选项。
在下面的示例中,正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -
30.49 cover_rect
覆盖矩形对象
它接受以下选项:
- cover
可选覆盖图像的文件路径,需要为 yuv420 格式。
- mode
设置覆盖模式。
它接受以下值:
- ‘cover’
使用提供的图像覆盖
- ‘blur’
通过插值周围像素进行覆盖
默认值为模糊.
30.49.1 示例
- 使用给定视频中的提供图像覆盖矩形对象
ffmpeg
:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
30.50 crop
根据给定尺寸裁剪输入视频。
它接受以下参数:
- 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。
The 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和的位置由表达式决定。离开视图。
The expression for x may depend on y, and the expression for y may depend on x.
30.50.1 Examples
- Crop area with size 100x100 at position (12,34).
crop=100:100:12:34
Using named options, the example above becomes:
crop=w=100:h=100:x=12:y=34
- 裁剪中心
crop=100:100
- Crop the central input area with size 2/3 of the input video:
crop=2/3*in_w:2/3*in_h
- 视频区域大小
crop=out_w=in_h crop=in_h
- Delimit the rectangle with the top-left corner placed at position
100:100 and the right-bottom corner corresponding to the right-bottom
corner of the input image.
crop=in_w-100:in_h-100:100:100
- Crop 10 pixels from the left and right borders, and 20 pixels from
the top and bottom borders
crop=in_w-2*10:in_h-2*20
- Keep only the bottom right quarter of the input image:
crop=in_w/2:in_h/2:in_w/2:in_h/2
- Crop height for getting Greek harmony:
crop=in_w:1/PHI*in_w
- Apply trembling effect:
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)
- Apply erratic camera effect depending on timestamp:
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)
- Set x depending on the value of y:
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
30.50.2 Commands
裁剪显示
- w, out_w
- h, out_h
- x
- y
Set width/height of the output video and the horizontal/vertical position in the input video. The command accepts the same syntax of the corresponding option.
If the specified expression is not valid, it is kept at its current value.
30.51 cropdetect
Auto-detect the crop size.
It calculates the necessary cropping parameters and prints the recommended parameters via the logging system. The detected dimensions correspond to the non-black or video area of the input video according to mode.
It accepts the following parameters:
- mode
Depending on mode crop detection is based on either the mere black value of surrounding pixels or a combination of motion vectors and edge pixels.
- ‘black’
Detect black pixels surrounding the playing video. For fine control use option limit.
- ‘mvedges’
Detect the playing video by the motion vectors inside the video and scanning for edge pixels typically forming the border of a playing video.
- limit
Set higher black value threshold, which can be optionally specified from nothing (0) to everything (255 for 8-bit based formats). An intensity value greater to the set value is considered non-black. It defaults to 24. You can also specify a value between 0.0 and 1.0 which will be scaled depending on the bitdepth of the pixel format.
- round
The value which the width/height should be divisible by. It defaults to 16. The offset is automatically adjusted to center the video. Use 2 to get only even dimensions (needed for 4:2:2 video). 16 is best when encoding to most video codecs.
- skip
Set the number of initial frames for which evaluation is skipped. Default is 2. Range is 0 to INT_MAX.
- reset_count, reset
Set the counter that determines after how many frames cropdetect will reset the previously detected largest video area and start over to detect the current optimal crop area. Default value is 0.
This can be useful when channel logos distort the video area. 0 indicates ’never reset’, and returns the largest area encountered during playback.
- mv_threshold
Set motion in pixel units as threshold for motion detection. It defaults to 8.
- low
- high
Set low and high threshold values used by the Canny thresholding algorithm.
The high threshold selects the "strong" edge pixels, which are then connected through 8-connectivity with the "weak" edge pixels selected by the low threshold.
low and high threshold values must be chosen in the range [0,1], and low should be lesser or equal to high.
Default value for low is
5/255
, and default value for high is15/255
.
30.51.1 Examples
- Find video area surrounded by black borders:
ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
- Find an embedded video area, generate motion vectors beforehand:
ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
- Find an embedded video area, use motion vectors from decoder:
ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
30.51.2 Commands
命令长度。
- limit
The command accepts the same syntax of the corresponding option. If the specified expression is not valid, it is kept at its current value.
30.52 cue
Delay video filtering until a given wallclock timestamp. The filter first passes on preroll amount of frames, then it buffers at most buffer amount of frames and waits for the cue. After reaching the cue it forwards the buffered frames and also any subsequent frames coming in its input.
The filter can be used synchronize the output of multiple ffmpeg processes for realtime output devices like decklink. By putting the delay in the filtering chain and pre-buffering frames the process can pass on data to output almost immediately after the target wallclock timestamp is reached.
Perfect frame accuracy cannot be guaranteed, but the result is good enough for some use cases.
- cue
The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
- preroll
The duration of content to pass on as preroll expressed in seconds. Default is 0.
- buffer
在等待提示之前缓冲内容的最大持续时间(以秒为单位)。默认为0。
30.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 ...
.
30.53.1 命令
此滤镜支持与选项相同的命令。
30.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
30.54 数据范围
视频数据分析滤镜。
此滤镜显示部分视频的十六进制像素值。
过滤器接受以下选项:
- size, s
设置输出视频的尺寸。
- x
设置像素选取的x偏移量。
- y
设置像素选取的y偏移量。
- mode
设置范围模式,可以是以下之一:
- ‘mono’
在黑色背景上用白色绘制十六进制像素值。
- ‘color’
在黑色背景上用输入视频像素颜色绘制十六进制像素值。
- ‘color2’
在从输入视频中选取的彩色背景上绘制十六进制像素值, 文本颜色以始终可见的方式选取。
- axis
在视频的左侧和顶部绘制行号和列号。
- opacity
设置背景的不透明度。
- format
设置显示的数字格式。可以是
hex
,或dec
。默认是hex
.- components
设置要显示的像素分量。默认情况下显示所有像素分量。
30.54.1 命令
此滤镜支持与选项相同的命令,不包括size
选项。
30.55 定向模糊
应用方向性模糊滤镜。
滤镜接受以下选项:
- angle
设置方向性模糊的角度。默认值是
45
.- radius
设置方向性模糊的半径。默认值是
5
.- planes
设置要过滤的平面。默认情况下过滤所有平面。
30.55.1 命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。 as options. The command accepts the same syntax of the corresponding option.
如果指定的表达式无效,则保持当前值不变。
30.56 DCT去噪
使用2D DCT(频域过滤)对帧进行去噪。
此滤镜未设计用于实时。
过滤器接受以下选项:
- sigma, s
设置噪声σ常数。
此σ定义了一个硬阈值:
3 * sigma
;每个小于此阈值的DCT系数(绝对值)将被去除。如果需要更高级的过滤,请参见expr.
默认值是
0
.- overlap
设置每个块的像素重叠数量。由于过滤器可能较慢,您可能希望减少此值,但以过滤效果降低和各种伪影为代价。
如果重叠值不允许处理整个输入宽度或高度,将显示警告,且相应边界将不会被去噪。
默认值是blocksize-1,这是可能的最佳设置。
- expr, e
设置系数因子表达式。
对于DCT块的每个系数,此表达式将作为系数的乘数值进行计算。
如果设置了此选项,sigma选项将被忽略。
DCT系数的绝对值可通过c变量访问。
- n
通过位数设置blocksize。
1<<n
定义了blocksize,即处理块的宽度和高度。默认值是3(8x8),可以增加到4以得到blocksize为16x16。请注意,更改此设置会对处理速度产生巨大的影响。此外,更大的块大小不一定意味着更好的去噪。
30.56.1 示例
应用一个sigma为4.5
:
dctdnoiz=4.5
的去噪。
dctdnoiz=e='gte(c, 4.5*3)'
使用表达式系统可以实现相同的操作:16x16
:
dctdnoiz=15:n=4
30.57 去条带
从输入视频中移除条带伪影。 通过将条带像素替换为参考像素的平均值来工作。
过滤器接受以下选项:
- 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
如果启用,当前像素只有在所有像素分量为条带时才会发生变化,例如,对于所有颜色分量触发了条带检测阈值。默认是禁用的。
30.57.1 命令
此滤镜支持以上所有选项作为命令.
30.58 去块化
从输入视频中移除块状伪影。
过滤器接受以下选项:
- filter
设置过滤类型,可以是弱或强。默认是强。 这决定了将应用哪种去块化。
- block
设置块的大小,允许的范围是4到512。默认是8.
- alpha
- beta
- gamma
- delta
设置块状检测阈值。允许的范围是0到1。 默认值是:0.098对于alpha和0.05对剩下的值。 使用更高的阈值可以增加去块化的强度。 设置alpha控制块边缘精确检测的阈值。 剩下的选项控制靠近边缘的阈值检测,每一个用于上下或者左右。如果将这些值设置为0禁用去块化。
- planes
设置要过滤的平面。默认情况下,过滤所有可用平面。
30.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
30.58.2 命令
此滤镜支持以上所有选项作为命令.
30.59 消减重复
以规则的间隔删除重复帧。
过滤器接受以下选项:
- cycle
设置每隔多少帧将删除一帧。设置值为N意味着在每一组N帧中,将删除一帧。 默认值为
5
.- dupthresh
设置重复检测的阈值。如果帧的差异度指标小于或等于此值,则判断为重复。默认值为
1.1
- scthresh
设置场景变化阈值。默认值是
15
.- blockx
- blocky
设置用于指标计算的x轴和y轴块的大小。 较大的块可以提供更好的噪声抑制,但对小运动的检测也较差。必须是二的幂。默认值是
32
.- ppsrc
将主输入标记为预处理输入并激活干净源输入流。 这允许输入通过各种过滤器进行预处理以帮助指标计算,同时保持帧选择的无损。如果设置为
1
,第一个流作为预处理输入,第二个流作为从中选择保留帧的干净源。默认值是0
.- chroma
设置计算指标时是否考虑色度。默认值是
1
.- mixed
设置输入是否仅部分包含要被减少的内容。 默认值是
false
。 如果启用,视频输出流将变为可变帧率(VFR)。
30.60 去卷积
利用第二个流作为脉冲,应用视频流的频域二维去卷积。
过滤器接受以下选项:
- planes
设置要处理的平面。
- impulse
设置将处理哪些脉冲视频帧,可以是第一个或所有。默认值是所有.
- noise
在进行除法时设置噪声值。默认值是0.0000001。 在宽度和高度不相同且不为二的幂,或卷积之前的流包含噪声的情况下非常有用。
该deconvolve
滤镜也支持framesync选项。
30.61 点爬
减少视频中的交叉亮度(点爬)和交叉颜色(彩虹效应)。
它接受以下选项:
- m
设置操作模式。可以是以下的组合点爬痕(dotcrawl)用于减少交叉亮度和/或彩虹纹(rainbows)用于减少交叉颜色。
- lt
设置空间亮度阈值。较低的值会增加交叉亮度的减少。
- tl
设置时间亮度的容忍度。较高的值会增加交叉亮度的减少。
- tc
设置色度时间变化的容忍度。较高的值会增加交叉颜色的减少。
- ct
设置时间色度阈值。较低的值会增加交叉颜色的减少。
30.62 压缩效应(deflate)
将压缩效应应用于视频。
该滤镜通过仅考虑小于像素值的值替换像素并取局部(3x3)平均值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化量,默认为65535。如果为0,则平面保持不变。
30.62.1 指令
该滤镜支持上述所有选项作为指令.
30.63 防闪烁(deflicker)
移除时间帧亮度的变化。
它接受以下选项:
- size, s
设置帧的移动平均滤波器大小。默认值为5,允许范围是2 - 129。
- mode, m
设置平均模式以平滑时间亮度变化。
可用的值为:
- ‘am’
算术平均
- ‘gm’
几何平均
- ‘hm’
调和平均
- ‘qm’
二次平均
- ‘cm’
三次平均
- ‘pm’
幂平均
- ‘median’
中位数
- bypass
不实际修改帧。用于仅想获取元数据时。
30.64 去抖动(dejudder)
去除部分交错式电影内容生成的抖动。
抖动可能会通过,例如由上拉(pullup)滤镜引入。如果原始来源是部分电影内容,则pullup,dejudder
的输出将具有可变帧率。可能会改变容器记录的帧率。除了该变化之外,此滤镜不会影响固定帧率视频。
此滤镜可用的选项为:
- cycle
指定抖动重复窗口的长度。
接受任何大于1的整数值。以下是一些实用值:
- ‘4’
如果原始内容从24fps到30fps进行电影到NTSC的电影化处理。
- ‘5’
如果原始内容从25fps到30fps进行PAL到NTSC的电影化处理。
- ‘20’
如果两者混合。
默认值是‘4’.
30.65 去LOGO(delogo)
通过简单插值周围像素来去除电视台的LOGO。只需设置覆盖LOGO的矩形并看它消失(有时可能出现更不美观的效果——效果因情况而异)。
它接受以下参数:
- x
- y
指定LOGO的左上角坐标。必须指定。
- w
- h
指定LOGO要清除的宽度和高度。必须指定。
- show
设置为1时,在屏幕上绘制一个绿色矩形以简化找到正确的x, y, w, 和h参数。默认值为0。
矩形绘制在最外层像素上,这些像素将被(部分)替换为插值值。矩形外立即外的下一像素值将在各个方向上用于计算矩形内部的插值像素值。
30.65.1 示例
- 设置一个矩形覆盖左上角坐标为0,0,大小为100x77的区域:
delogo=x=0:y=0:w=100:h=77
30.66 去雨(derain)
通过应用基于卷积神经网络的去雨方法来去除输入图像/视频中的雨。支持的模型:
- 循环收缩与加权上下文聚合网络(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滤镜。
30.67 去晃动(deshake)
尝试修复水平和/或垂直移动中的小变化。此滤镜帮助消除手持相机、三脚架碰撞、车辆移动等情况下的相机晃动。
该滤镜接受以下选项:
- 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
如果设置,则将运动搜索的详细日志写入指定文件。
30.68 去溢色(despill)
移除由于反射的绿色屏或蓝色屏颜色引起的前景颜色不需要的污染。
该滤镜接受以下选项:
- type
设置使用何种类型的去溢色方式。
- mix
设置溢色图生成的方式。
- expand
设置清除仍然残留溢色的程度。
- red
控制溢色区域的红色量。
- green
控制溢色区域的绿色量。对于绿色屏,应为-1。
- blue
控制溢色区域的蓝色量。对于蓝色屏,应为-1。
- brightness
控制溢色区域的亮度,保留颜色。
- alpha
修改由生成的溢色图产生的alpha通道。
30.68.1 指令
该滤镜支持上述所有选项作为指令.
30.69 去电影化(detelecine)
应用电影化操作的精确反转。它需要一个使用电影化滤镜时指定的预定义的模式。
该滤镜接受以下选项:
- first_field
- ‘top, t’
上场优先
- ‘bottom, b’
下场优先 默认值为
top
.
- pattern
表示要应用的电影化模式的字符串。默认值为
23
.- start_frame
表示第一帧相对于电影化模式的位置的数字。如果流被剪切,则使用此选项。默认值为
0
.
30.70 膨胀效应(dilation)
将膨胀效应应用于视频。
该滤镜通过局部(3x3)最大值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化量,默认值为65535。如果为0,则平面保持不变。
- coordinates
指定要参考的像素标志。默认值为255,即使用所有八个像素。
标志到局部3x3坐标映射如下:
1 2 3 4 5 6 7 8
30.70.1 指令
该滤镜支持上述所有选项作为指令.
30.71 位移(displace)
根据第二和第三输入流指示位移像素。
它接受三个输入流并输出一个流,第一个输入是源,第二和第三个输入是位移图。
第二个输入指定沿x轴位移像素的量,第三个输入指定沿y轴位移像素的量。如果其中一个位移图流终止,则将使用该位移图的最后一帧。
请注意,位移图生成后可以重复使用。
以下是接受的选项说明。
- edge
设置超范围像素的位移行为。
可用值为:
- ‘blank’
缺失像素用黑色像素替换。
- ‘smear’
相邻像素将散布以替换缺失像素。
- ‘wrap’
超范围像素将被包裹以指向另一侧的像素。
- ‘mirror’
超范围像素将用镜像像素替换。
默认值是‘smear’.
30.71.1 示例
- 为HD720的视频输入添加波纹效应:
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的视频输入添加波浪效应:
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
30.72 深度神经网络分类(dnn_classify)
基于边界框进行深度神经网络分类。
该滤镜接受以下选项:
- 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获取适合你的系统的配置。
30.73 深度神经网络检测(dnn_detect)
通过深度神经网络进行物体检测。
该滤镜接受以下选项:
- dnn_backend
指定用于模型加载和执行的DNN后端。此选项目前只支持openvino,稍后将添加TensorFlow后端。
- model
设置模型文件路径,用于指定网络架构及其参数。请注意,不同后端使用不同的文件格式。
- input
设置DNN网络的输入名称。
- output
设置DNN网络的输出名称。
- confidence
设置置信度阈值(默认值:0.5)。
- labels
设置标签文件路径,指定标签ID和名称之间的映射关系。每行写入一个标签名称,尾随空格和空行将被跳过。第一行是标签ID 0的名称(通常为“背景”),第二行是标签ID 1的名称,等等。如果未提供标签文件,则标签ID将作为名称。
- backend_configs
设置将传递到后端的配置。如果要使用异步执行,请设置异步(默认:已设置)。如果后端不支持异步,将回滚到同步执行。
30.74 深度神经网络处理
使用深度神经网络处理图像。它与另一个滤镜协同工作,可将帧的像素格式转换为神经网络所需的格式。
该滤镜接受以下选项:
- dnn_backend
指定用于模型加载和执行的 DNN 后端。此选项接受以下值:
- ‘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
设置后端 DNN 网络的输入名称。
- output
设置后端 DNN 网络的输出名称。
- backend_configs
设置传递给后端的配置项。要使用异步执行,设置 async(默认:已启用)。 若后端不支持异步,则会回滚到同步执行。
对于 TensorFlow 后端,可以使用以下方式设置其配置项sess_config选项,请使用 tools/python/tf_sess_config.py 获取适用于您系统的 TensorFlow 后端配置。
30.74.1 示例
- 使用 can.pb 去除 rgb24 帧中的雨滴(见derain滤镜):
./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
- 使用 srcnn.pb 处理 yuv420p 格式帧的 Y 通道(见sr滤镜)。支持平面 YUV 格式:
./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
- 使用 espcn.pb 处理 yuv420p 格式帧的 Y 通道(见sr滤镜),更改帧大小。支持平面 YUV 格式,请使用 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
30.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
如果您希望使用边数据中的检测框作为框源,可以将 Box 源设置为 side_data_detection_bboxes。
如果box_source已设置,x, y, 宽度和高度将被忽略,仍然使用边数据中的检测框数据。因此,如果您未确认为框源,请不要使用该参数。
- t
绘制框的厚度。
这些常量允许x, y, w, h和t表达式相互引用,因此例如可以指定
y=x/dar
或h=w/dar
.
30.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
30.75.2 命令
此滤镜支持与选项相同的命令。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
30.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
30.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
.
30.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
30.77.2 命令
此滤镜支持与选项相同的命令。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
30.78 绘制文本
在视频上绘制文本字符串或从指定文件中读取文本,使用 libfreetype 库。
要启用此滤镜的编译,需使用以下配置设置 FFmpeg--enable-libfreetype
和--enable-libharfbuzz
。
要启用默认字体回退及font选项,需要使用以下配置设置 FFmpeg--enable-libfontconfig
。
要启用text_shaping选项,需要使用以下配置设置 FFmpeg--enable-libfribidi
.
30.78.1 语法
它接受以下参数:
- box
使用背景颜色绘制文本周围的框。 值必须是 1(启用)或 0(禁用)。box的默认值为 0。
- boxborderw
设置使用boxcolor绘制框的边框宽度。 值必须使用以下格式之一指定:
-
boxborderw=10
将所有边框宽度设置为 10 -
boxborderw=10|20
将顶部和底部边框宽度设置为 10,左右边框宽度设置为 20 -
boxborderw=10|20|30
设置顶部边框宽度为 10,底部边框宽度为 30,左右边框宽度为 20 -
boxborderw=10|20|30|40
设置边框宽度为 10(顶部)、20(右侧)、30(底部)、40(左侧)
boxborderw的默认值为“0”。 is "0".
-
- boxcolor
设置文本框使用的颜色。有关此选项的语法,请查看(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中.
The default value of boxcolor的默认值为“白色”。
- line_spacing
设置以像素为单位的行间距。line_spacing的默认值为 0。
- text_align
设置文本相对于框边界的垂直和水平对齐。 值是标志的组合,一个用于垂直对齐(T=顶部,M=中间,B=底部), 一个用于水平对齐(L=左侧,C=居中,R=右侧)。请注意,仅支持左侧水平对齐的制表符字符。
- y_align
指定y值的参考点。可能值如下:
-
text
最高的第一个文本行字符顶部位于y -
baseline
第一个文本行的基线位于y -
font
第一个文本行的基线位于y加上字体度量中定义的上升指标(以像素为单位)
y_align的默认值为“文本”,用于向后兼容。 is "text" for backward compatibility.
-
- borderw
设置使用bordercolor绘制文本边框的宽度。默认值如下:borderw的默认值为 0。
- bordercolor
设置用于绘制文本边框的颜色。有关此选项的语法,请查看(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中.
The default value of bordercolor的默认值为“黑色”。
- expansion
选择扩展text方式。可以是以下值:
none
,strftime
(已过时) 或normal
(默认)。详情见文本扩展部分。- basetime
设置计数的起始时间。单位为微秒。仅应用于已过时的
strftime
扩展模式。要在普通扩展模式中模拟,请使用pts
函数,提供起始时间(以秒为单位)作为第二个参数。- fix_bounds
如果为真,检查并修复文字坐标以避免剪切。
- fontcolor
用于绘制字体的颜色。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的“颜色”部分.
默认值fontcolor是“黑色”。
- fontcolor_expr
字符串按照text相同的方式展开,以获得动态fontcolor值。默认情况下,此选项为空值且不处理。如果设置了此选项,它将覆盖fontcolor选项。
- font
用于绘制文字的字体系列。默认值为 Sans。
- fontfile
用于绘制文本的字体文件。必须包含路径。如果禁用了 fontconfig 支持,则此参数为必选。
- alpha
应用 Alpha 混合绘制文字。值可以为 0.0 到 1.0 之间的数字。x, y也可以使用。默认值为 1。请参阅 fontcolor_expr.
- fontsize
用于绘制文字的字体大小。默认值fontsize是 16。
- text_shaping
如果设置为 1,则在绘制之前尝试对文本进行整形(例如,逆序处理右向左的文字并合并阿拉伯字符)。否则,准确地绘制提供的文本。默认值为 1(如果支持)。
- ft_load_flags
用于加载字体的标志。
这些标志映射为 libfreetype 支持的相应标志,是以下值的组合:
- 默认
- 不缩放
- 无提示
- 渲染
- 无位图
- 垂直布局
- 强制自动提示
- 裁剪位图
- 严格
- 忽略全局推进宽度
- 不递归
- 忽略变换
- 单色
- 线性设计
- 无自动提示
默认值为“默认”。
有关更多信息,请查阅 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.
如果同时指定了text和textfile将会抛出一个错误。
- text_source
如果您想使用侧数据的检测框中的文本数据,则应将文本源设置为 side_data_detection_bboxes。
如果设置了文本源,text和textfile将被忽略,并仍然使用侧数据检测框中的文本数据。所以如果您不确定文本源,请勿使用此参数。
- reload
将按指定帧间隔重新加载textfile。请确保以原子方式更新textfile否则可能仅部分读取甚至读取失败。范围为0到 INT_MAX。默认值为0。
- x
- y
指定将在视频帧中绘制文字的偏移量表达式。它们相对于输出图像的顶部/左侧边界。
默认值x和y是“0”。
下面列出了接受的常量和函数。
用于x和y的参数是包含以下常数和函数的表达式:
- dar
输入显示纵横比,与 (w / h) * sar
- hsub
- vsub
水平和垂直色度子采样值。例如对于像素格式“yuv422p”,hsub为2和vsub为1。
- line_h, lh
每行文字的高度
- main_h, h, H
输入高度
- main_w, w, W
输入宽度
- max_glyph_a, ascent
从基线到用于放置字形轮廓点的最高/上网格坐标的最大距离,适用于所有渲染的字形。
- 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
当前包的大小(以字节为单位)。
30.78.2 文本展开
如果expansion设置为strftime
, 过滤器会识别strftime
C函数接受的序列并相应地展开。请检查strftime
的文档。此功能已被normal
的扩展承载的功能gmtime
或localtime
扩展函数取代。
如果expansion设置为none
, 文本将被按原样打印。
如果expansion设置为normal
(默认值),以下扩展机制会被使用。
反斜杠字符’\’,后跟任意字符,总是扩展为第二个字符。
的形式的序列%{...}
被展开。括号内部的文本是一个函数名,也可能后跟参数,以’:’分隔。如果参数包含特殊字符或分隔符(’:’ 或 ’}’),则应进行转义。
注意,它们还可能需要在过滤器参数字符串和过滤器图描述中进行转义最多四级,使用具有text功能的文本文件可以避免这些问题。textfile option avoids these problems.
可用的函数如下:
expr, e
表达式评估结果。
必须具有指定表达式的一个参数,这个表达式接受与x和y值相同的常数和函数。请注意,并非所有常量均可使用,例如文本大小在评估表达式时未知,因此text_w和text_h将具有未定义的值。
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格式将被使用。
30.78.3 命令
过滤器技术支持通过命令更改参数:
- reinit
更改现有过滤器参数。
参数的语法符合调用过滤示例,如:
fontsize=56:fontcolor=green:text='Hello World'
填表通过发送cmd sendcmd实现完整过滤的整体调用如下:
sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
If the entire argument can’t be parsed or applied as valid values then the filter will continue with its existing parameters.
选项列表支持的命令:
- x
- y
- alpha
- fontsize
- fontcolor
- boxcolor
- bordercolor
- shadowcolor
- box
- boxw
- boxh
- boxborderw
- line_spacing
- text_align
- shadowx
- shadowy
- borderw
30.78.4 示例
- 使用字体 FreeSerif 绘制“Test Text”,使用可选参数的默认值。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
- 使用 FreeSerif 字号大小为24的字体在X=100、Y=50位置绘制‘Test Text’,背景是黄色文本周围然后绘出一个红框。文字和框的透明度均为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.
30.79 边缘检测
检测并绘制边缘。该过滤器使用Canny边缘检测算法。
该过滤器接受以下选项:
- low
- high
设置Canny阈值算法使用的低阈值和高阈值值。
高阈值选择“强”边缘像素,这些像素通过8连通性与低阈值选择的“弱”边缘像素连接。
低和高阈值必须选择在[0,1]范围内,并且低应该小于或等于高.
低的默认值为低是
20/255
,而高的默认值是高是50/255
.- mode
定义绘制模式。
- ‘wires’
在黑色背景上绘制白色/灰色线框。
- ‘colormix’
混合颜色以创建油漆/卡通效果。
- ‘canny’
对所有选中的平面应用Canny边缘检测。
默认值为线框.
- planes
选择要过滤的平面。默认情况下,所有可用的平面都会被过滤。
30.79.1 示例
- 使用自定义阈值值进行标准边缘检测:
edgedetect=low=0.1:high=0.4
- 无阈值的绘画效果:
edgedetect=mode=colormix:high=0
30.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)。
30.81 熵
测量视频帧的颜色通道直方图中的灰度熵。
接受以下参数:
- mode
可以是正常或差异。默认是正常.
差异模式测量直方图差值的熵,即相邻直方图值之间的绝对差异。
30.82 epx
应用EPX放大滤镜,该滤镜旨在用于像素艺术。
接受以下选项:
- n
设置缩放维度:
2
对于2xEPX
,3
对于3xEPX
。 默认是3
.
30.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
30.83.1 命令
该过滤器支持以下命令:
- contrast
设置对比度表达式。
- brightness
设置亮度表达式。
- saturation
设置饱和度表达式。
- gamma
设置伽马表达式。
- gamma_r
设置gamma_r表达式。
- gamma_g
设置gamma_g表达式。
- gamma_b
设置gamma_b表达式。
- gamma_weight
设置gamma_weight表达式。
命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值不变。
30.84 侵蚀
对视频应用侵蚀效果。
此过滤器将每个像素替换为其局部(3x3)的最小值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化,默认值为65535。如果为0,平面将保持不变。
- coordinates
指定像素参考的标志。默认值是255,即使用所有八个像素。
3x3局部坐标映射的标志如下:
1 2 3 4 5 6 7 8
30.84.1 命令
此过滤器支持上述所有选项作为命令.
30.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
六点插值。
30.85.1 命令
此过滤器支持与选项相同的命令。
30.86 曝光
调整视频流的曝光。
该过滤器接受以下选项:
- exposure
设置曝光校正值(以EV为单位)。允许范围是-3.0到3.0 EV,默认值为0 EV。
- black
设置黑电平校正值。允许范围是-1.0到1.0。默认值为0。
30.86.1 命令
此过滤器支持与选项相同的命令。
30.87 提取平面
从输入视频流中提取颜色通道组件并分离为灰度视频流。
该过滤器接受以下选项:
- planes
设置要提取的平面。
平面的可用值是:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
选择输入中不可用的平面会导致错误。这意味着您不能选择
r
,g
,b
平面和y
,u
,v
平面同时使用。
30.87.1 示例
- 从输入视频帧中提取亮度、u和v颜色通道组件为3个灰度输出:
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
30.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
指定渐变的颜色。默认值是“黑色”。
30.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
30.89 反馈
应用反馈视频滤镜。
此滤镜将裁剪的输入帧传递到第二个输出。 从那里可以与其他视频滤镜一起过滤。 当滤镜从第二个输入接收到帧时,该帧 将与第一个输入的原始帧组合并传递到 第一个输出。
典型用法是仅过滤帧的一部分。
该滤镜接受以下选项:
- x
- y
设置裁剪的左上角位置。
- w
- h
设置裁剪尺寸。
30.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]
30.90 fftdnoiz
使用三维FFT(频率域过滤)去噪帧。
该滤镜接受以下选项:
- sigma
设置噪声标准差常量。这设置了去噪强度。 默认值为1。允许范围为0到30。 使用非常高的标准差与低重叠可能会出现块状伪影。
- amount
设置去噪的量。默认情况下,所有检测到的噪声都会被减少。 默认值为1。允许范围为0到1。
- block
设置块的像素大小。默认值为32,范围为8到256。
- overlap
设置块重叠。默认值为0.5。允许范围为0.2到0.8。
- method
设置去噪方法。默认值是
wiener
,也可以是hard
.- prev
设置用于去噪的前序帧的数量。默认设置为0。
- next
设置用于去噪的后续帧的数量。默认设置为0。
- planes
设置需要过滤的平面,默认情况下过滤所有可用的 除了 alpha 。
30.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数组的大小。
30.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)))'
30.92 field
使用步幅算法从交错的图像中提取单个场,以避免浪费CPU时间。输出帧被标记为非交错。
该滤镜接受以下选项:
- type
指定是否提取顶部场(如果值为
0
或为top
)或底部场(如果值为1
或为bottom
).
30.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 -
30.94 fieldmatch
用于反向电视电影技术的场匹配滤镜。它旨在从电影化流中重建
逐行帧。该滤镜不会删除重复帧,因此要实现完整的反向电视电影fieldmatch
需要在滤镜链中后接一个剪裁滤镜,例如减影。
场匹配和剪裁的分离主要是为了在两者之间插入一个去交错滤镜备选。如果源包含混合电视电影和真实交错内容,fieldmatch
将无法匹配交错部分的场。
但这些剩余的栓式帧将被标记为交错,因此可以通过后续滤镜如yadif进行去交错处理,然后剪裁。
除了各种配置选项,fieldmatch
可以接收一个
可选的第二流,激活通过ppsrc选项。如果启用,帧重建将基于第二流的场和帧。这允许第一输入被预处理以帮助滤镜的各种算法,同时保持输出无损
(假设场正确匹配)。通常,场感知降噪器或亮度/对比度调整可以有所帮助。
请注意,该滤镜与 TIVTC/TFM(AviSynth 项目)和 VIVTC/VFM(VapourSynth 项目)使用相同的算法。后者是 TFM 的轻量克隆,fieldmatch
基于后者。尽管语义和用法非常接近,但某些行为和选项名可能有所不同。
目前,减影滤镜仅适用于恒定帧率输入。
如果您的输入包含混合的电视电影(30fps)和较低帧率的逐行内容如 24fps,请使用以下滤镜链生成所需的恒定帧率流:dejudder,fps=30000/1001,fieldmatch,decimate
.
该滤镜接受以下选项:
- order
指定输入流的假定场顺序。可用值有:
- ‘auto’
自动检测奇偶性(使用 FFmpeg的内部奇偶值)。
- ‘bff’
假定为底场优先。
- ‘tff’
假定为顶场优先。
请注意,有时建议不要完全信任流宣布的奇偶性。
默认值是自动.
- mode
设置匹配模式或策略以使用。pc模式在某种意义上是最安全的,因为在可能的情况下它不会冒重复帧导致顿挫的风险,但是如果有糟糕的编辑或混合场,它最终将输出栓式帧,当实际上可能存在一个良好的匹配时。另一方面,pcn_ub模式在可能产生顿挫方面风险最高,但几乎总能找到一个好帧,如果有一个。其他值在牵涉到顿挫风险和产生重复帧与在有糟糕编辑、孤立场、混合场等部分中找到良好匹配之间的某处。pc和pcn_ub之间不同。
有关 p/c/n/u/b 的更多细节,请参阅p/c/n/u/b 含义部分。
可用值有:
- ‘pc’
双向匹配(p/c)
- ‘pc_n’
双向匹配,如果仍然是栓式则尝试第三种匹配(p/c + n)
- ‘pc_u’
双向匹配,相同顺序,如果仍然是栓式则尝试第三种匹配(p/c + u)
- ‘pc_n_ub’
双向匹配,如果仍然是栓式则尝试第三种匹配,然后尝试第四/第五种匹配(p/c + n + u/b)
- ‘pcn’
三向匹配(p/c/n)
- ‘pcn_ub’
三向匹配,如果所有三种原始匹配都检测为栓式则尝试第四/第五种匹配(p/c/n + u/b)
括号末尾指示该模式将使用的匹配,假设order=顶场优先(并field在自动或顶部).
关于速度,pc模式起快,pcn_ub模式则最慢。
默认值是pc_n.
- ppsrc
将主输入流标记为预处理输入,并启用次要输入流,以便从中选择场。更多详细信息,请参阅滤镜介绍。它类似于来自 VFM/TFM 的clip2功能。
默认值是
0
(禁用)。- field
设置用于匹配的场。建议将其设置为与order相同的值,除非您遇到匹配失效。在某些情况下,改变用于匹配的场可能对匹配性能有很大影响。可用值有:
- ‘auto’
自动(与order).
- ‘bottom’
从底场匹配。
- ‘top’
从顶场匹配。
默认值是自动.
- 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=场景切换时相关。 对于scthresh范围为[0.0, 100.0]
.默认值是
12.0
.- combmatch
当combatch不是无,
fieldmatch
时, 会考虑匹配的栓式评分,用于决定使用哪个匹配作为最终匹配。可用值有:- ‘none’
没有最终匹配基于栓式评分。
- ‘sc’
栓式评分仅在检测到镜头变化时使用。
- ‘full’
始终使用栓式评分。
默认值是镜头变化.
- combdbg
强制
fieldmatch
计算某些匹配的栓式指标并打印。此设置在 TFM/VFM 术语中称为micout。 可用值为:- ‘none’
无强制计算。
- ‘pcn’
强制 p/c/n 计算。
- ‘pcnub’
强制 p/c/n/u/b 计算。
默认值是无.
- cthresh
这是用于栓式帧检测的区域交织阈值。这本质上控制交织必须如何“强”或“可见”才能检测到。更大值意味着交织必须更可见,更小值意味着交织可以更不显眼或不强仍能检测到。有效设置范围为
-1
(每个像素将被检测为栓式)到255
(没有像素将被检测为栓式)。这基本上是像素差值。理想范围为[8, 12]
.默认值是
9
.- chroma
设置是否在梳帧决定中考虑色度。仅在你的源视频存在色度问题(如彩虹光晕等)并且启用色度时导致梳帧检测出现问题时禁用此项。实际上,使用chroma=0通常更可靠,除了源视频中仅有色度梳理的情况。
默认值是
0
.- blockx
- blocky
分别设置在梳帧检测过程中使用的窗口的 x 轴和 y 轴大小。这与combpel像素需要被检测为梳理像素的区域大小有关,以声明某帧为梳理帧。请参阅combpel参数描述了解更多信息。 可能的值是从 4 到 512 的 2 的幂的任意一个数字。
默认值是
16
.- combpel
在任何blocky乘blockx大小块区域内的梳状像素数量,若达到阈值,该帧将被检测为梳帧。而cthresh控制梳理的“可见性”程度,该设置控制帧中任何局部区域内(由blockx和blocky设置定义的窗口)需要存在的“梳状像素的数量”。最小值是
0
,最大值是blocky x blockx
(此时将永远检测不到梳帧)。此设置在 TFM/VFM 术语中称为MI。默认值是
80
.
30.94.1 p/c/n/u/b 含义
30.94.1.1 p/c/n
我们假设以下经过电信号处理的流:
Top fields: 1 2 2 3 4 Bottom fields: 1 2 3 4 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
通过字段匹配之后,可以看到一些帧被重复了。 要执行完整的反电信号处理,你需要在此操作之后依赖一个下采样滤镜。例如,参见下采样滤镜。
同样的操作现在是从顶部字段匹配(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匹配下一帧中相反奇偶性的字段
30.94.1.2 u/b
u和b匹配有些特殊,它们从相反奇偶性标志进行匹配。在以下示例中,我们假设现在正在匹配第二帧(顶部:2,底部:2)。根据匹配规则,在每个匹配的字段上方和下方放置一个“x”。 matching are a bit special in the sense that they match from the opposite parity flag. In the following examples, we assume that we are currently matching the 2nd frame (Top:2, bottom:2). According to the match, a ’x’ is placed above and below each matched fields.
对于底部匹配(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
30.94.2 示例
简单的针对顶部优先字段的反电信号处理过程:
fieldmatch=order=tff:combmatch=none, decimate
高级反电信号处理,对于仍梳状的帧,使用yadif作为备选:
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
30.95 字段顺序
转换输入视频的字段顺序。
它接受以下参数:
- order
输出字段顺序。有效值为tff表示顶部优先,或bff表示底部优先。
默认值为“tff’.
转换通过向上或向下移动图像内容一行,并用适当的图像内容填充剩余的行来完成。 此方法与大多数广播字段顺序转换器一致。
如果输入视频未标记为隔行扫描,或者其字段顺序已经为所需的输出字段顺序,则此滤镜不会修改传入的视频。
在转换为或从 PAL DV 材料(底部优先)时非常有用。
例如:
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
30.96 填补边界
填充输入视频的边界,而不改变视频流的尺寸。 有时视频四边会有垃圾内容,而你可能不希望裁剪输入视频以保持尺寸为某些数值的倍数。
此滤镜接受以下选项:
- left
填充左边界的像素数量。
- right
填充右边界的像素数量。
- top
填充上边界的像素数量。
- bottom
填充下边界的像素数量。
- mode
设置填充模式。
接受以下值:
- ‘smear’
使用最外层像素填充
- ‘mirror’
使用镜像(半采样对称)填充
- ‘fixed’
用常量值填充像素
- ‘reflect’
使用反射(完全采样对称)填充像素
- ‘wrap’
使用包裹填充像素
- ‘fade’
淡化像素到常量值
- ‘margins’
用边界附近像素的加权平均值填充顶部和底部的像素
默认值是延展.
- color
为固定或渐变模式下的像素设置颜色。默认值是黑色.
30.96.1 指令
此滤镜支持与选项相同的指令。 该指令接受与对应选项相同的语法。
如果指定的表达式无效,则保持为其当前值。
30.97 找矩形
在输入视频中查找矩形对象。
要查找的对象必须指定为灰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
设置生成的较小图像的数量,默认值为 3。
- xmin, ymin, xmax, ymax
指定搜索区域中的矩形。
- discard
丢弃未检测到对象的帧。默认是禁用。
30.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
30.98 泛洪填充
用指定值替换与同一像素分量值相同的区域。
接受以下选项:
- x
设置像素的 x 坐标。
- y
设置像素的 y 坐标。
- s0
设置源 #0 分量值。
- s1
设置源 #1 分量值。
- s2
设置源 #2 分量值。
- s3
设置源 #3 分量值。
- d0
设置目标 #0 分量值。
- d1
设置目标 #1 分量值。
- d2
设置目标 #2 分量值。
- d3
设置目标 #3 分量值。
30.99 格式
将输入视频转换为指定的像素格式之一。 Libavfilter 将尝试选择一种适合作为输入的格式给下一个滤镜。
它接受以下参数:
- pix_fmts
一个用‘|’分隔的像素格式名称列表,例如 "pix_fmts=yuv420p|monow|rgb24"。
- color_spaces
一个用‘|’分隔的色彩空间名称列表,例如 "color_spaces=bt709|bt470bg|bt2020nc"。
- color_ranges
一个用‘|’分隔的颜色范围名称列表,例如 "color_spaces=tv|pc"。
30.99.1 示例
- 将输入视频转换为yuv420p格式
format=pix_fmts=yuv420p
将输入视频转换为列表中的任何一种格式
format=pix_fmts=yuv420p|yuv444p|yuv410p
30.100 帧率
通过增加或删除帧将视频转换为指定的固定帧率。
接受以下参数:
- fps
所需的输出帧率。它接受包含以下常量的表达式:
- ‘source_fps’
输入的帧率
- ‘ntsc’
NTSC 帧率
30000/1001
- ‘pal’
PAL 帧率
25.0
- ‘film’
电影帧率
24.0
- ‘ntsc_film’
NTSC-电影帧率
24000/1001
默认值是
25
.- start_time
假定第一个时间戳 (PTS) 的值,以秒为单位。这允许流的开头进行填充/修剪。默认情况下,不对第一个帧的预期时间戳进行任何假设,因此不会进行填充或修剪。 例如,如果视频流开始时音频流尚未启动,可以将其设置为 0,重复填充第一个帧,或者去除带负时间戳的任何帧。
- round
时间戳 (PTS) 舍入方法。
可能的值是:
- zero
向 0 舍入
- inf
向远离 0 舍入
- down
向 -无穷大 舍入
- up
向 +无穷大 舍入
- near
四舍五入
默认值为
near
.- eof_action
读取最后一帧时要执行的操作。
可能的值是:
- round
使用与其他帧相同的时间戳舍入方法。
- pass
如果输入持续时间尚未达到,则通过最后一帧直接传递。
默认值为
round
.
或者,可以通过一个扁平字符串来指定选项:帧率[:开始时间[:舍入]].
另请参见setpts滤镜。
30.100.1 示例
- 将帧率设置为 25 的典型用法:
fps=fps=25
- 将帧率设置为 24 ,使用缩写和舍入方法将其舍入到最近值:
fps=fps=film:round=near
30.101 帧打包
将两个不同的视频流打包成一个立体视频,并在支持的编解码器上设置适当的元数据。这两个视图应具有相同的大小和帧率,处理将在较短视频结束时停止。请注意,可以使用缩放和帧率滤镜方便地调整视图属性。
它接受以下参数:
- 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
30.102 帧速率
通过从源帧中插入新的视频输出帧来更改帧速率。
此滤镜未设计为与隔行媒体正常工作。如果希望更改隔行媒体的帧率,则需要在此滤镜之前进行去隔行处理,并在此滤镜之后重新隔行。
以下是此滤镜接受的选项的描述。
- fps
指定输出的帧率(FPS)。此选项也可以仅作为一个值指定。默认值是
50
.- interp_start
指定范围的起点,输出帧将在此范围内通过两帧的线性插值生成。范围是 [
0
-255
],默认值是15
.- interp_end
指定范围的终点,输出帧将在此范围内通过两帧的线性插值生成。范围是 [
0
-255
],默认值是240
.- scene
设定一个在当前帧中检测场景变化的阈值,范围在 0 到 100 之间。值越低表示当前帧不太可能是一个新场景的开始,值越高则表明其更有可能是。默认值是
8.2
.- flags
指定影响滤镜处理的标志。
当前flags标志的可用值包括:
- scene_change_detect, scd
使用场景的值启用场景变化检测。 此标志默认启用。
30.103 帧步长
选择每第 N 帧中的一帧。
此滤镜接受以下选项:
- step
在每
step
帧后选择的一帧。 允许的值为大于 0 的正整数。默认值是1
.
30.104 冻结检测
检测冻结视频。
当检测到输入视频在指定时间内内容无明显变化时,此滤镜将记录消息并设置帧元数据。 视频冻结检测通过计算所有视频帧分量的平均绝对差值并将其与噪声下限进行比较来实现。
打印的时间和持续时间以秒为单位。lavfi.freezedetect.freeze_start
元数据键设置在第一个时间戳等于或超过检测持续时间的帧上,它包含冻结的第一帧的时间戳。lavfi.freezedetect.freeze_duration
和lavfi.freezedetect.freeze_end
元数据键设置在冻结之后的第一帧上。
过滤器接受以下选项:
- noise, n
设置噪声容差。可以指定为分贝(如果指定值后附加了"dB")或者作为0到1之间的差异比例。默认值为-60分贝,或0.001。
- duration, d
设置冻结持续时间直到通知(默认2秒)。
30.105冻结帧
冻结视频帧。
此过滤器使用第二个输入的帧冻结视频帧。
过滤器接受以下选项:
- first
设置开始冻结的第一帧的编号。
- last
设置结束冻结的最后一帧的编号。
- replace
设置将使用而不是替换帧的第二个输入的帧编号。
30.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")、双精度数、颜色(指定为红色/绿色/蓝色,其中红色, 绿色和蓝色是0.0到1.0之间的浮点数,包括这些值)或ffmpeg-utils手册中“颜色”部分中指定的颜色描述或者是位置(指定为, a position (specified as X/Y,其中X和Y是浮点数)和/或字符串。
参数的数量和类型取决于加载的效果。如果未指定某个效果参数,则使用默认值。
30.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
30.106.2 命令
此过滤器支持filter_params选项作为命令.
30.107 fspp
应用快速简单的后处理。这是spp过滤器的更快版本。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
启用。
30.108 fsync
使用来自文件的外部映射同步视频帧。
对于映射文件中给定的每个输入PTS,它会删除或创建必要数量的帧,以重建映射文件中给出的输出帧序列。
此过滤器适用于重建通过fps过滤器的帧率转换的输出帧,并记录到映射文件中,使用ffmpeg选项fps,并对相应帧进行进一步处理,例如质量比较。-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 -
30.109 gblur
应用高斯模糊过滤器。
过滤器接受以下选项:
- sigma
设置水平标准差,高斯模糊的标准偏差。默认值是
0.5
.- steps
设置高斯近似的步数。默认值是
1
.- planes
设置要过滤的平面。默认情况下所有平面都被过滤。
- sigmaV
设置垂直标准差,如果为负,它将与
sigma
相同。 默认值是-1
.
30.109.1 命令
此过滤器支持与选项相同的命令。 命令接受与其对应选项相同的语法。
如果指定的表达式无效,则将保持其当前值。
30.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)位置处像素的值。x,y)。
- lum(x, y)
返回亮度平面中(x,y)位置处像素的值。x,y)。
- cb(x, y)
返回蓝色-差色度平面中(x,y)位置处像素的值。如果没有这样的平面,则返回0。x,y)。
- cr(x, y)
返回红色-差色度平面中(x,y)位置处像素的值。如果没有这样的平面,则返回0。x,y)。
- r(x, y)
- g(x, y)
- b(x, y)
返回红/绿/蓝分量中(x,y)位置处像素的值。如果没有这样的分量,则返回0。x,y)。
- alpha(x, y)
返回alpha平面中(x,y)位置处像素的值。如果没有这样的平面,则返回0。x,y)。
- 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)矩形内的总和,这允许在矩形内获得样本总和。请参阅没有后缀的函数。
- interpolation
设置一种插值方法:
- nearest, n
- bilinear, b
默认是双线性插值。
对于函数,如果x和y超出区域,值会自动裁剪到最近的边缘。x和y。
请注意,如果此过滤器使用多个线程,则每个切片都会有其自己的表达式状态。如果你的表达式依赖于之前的状态,则应该将滤镜线程数限制为1。
30.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过滤器):vignette过滤器):
geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
30.111 gradfun
修复由于截断为8位颜色深度而引入到几乎平坦区域的条带伪影。插值应该在条带位置的渐变,并进行抖动。
它仅设计用于播放。不建议在有损压缩之前使用,因为压缩往往会丢失抖动并恢复条带。
它接受以下参数:
- strength
过滤器将改变任何一个像素的最大量。这也是检测几乎平坦区域的阈值。可接受的值范围从.51到64;默认值为1.2。超出范围的值将被裁剪到有效范围。
- radius
拟合渐变的邻域。较大的半径使渐变更平滑,但也会防止过滤器修改详细区域附近的像素。可接受的值范围是8-32;默认值为16。超出范围的值将被裁剪到有效范围。
另外,选项可以作为一个简单字符串指定:强度[:半径]
30.111.1 示例
- 应用过滤器,强度为
3.5
,半径为8
:gradfun=3.5:8
- 指定半径,省略强度(将返回默认值):
gradfun=radius=8
30.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。 这保证输出视频帧率不会高于此值。
30.113 grayworld
基于灰度假设应用颜色校正的颜色恒常性过滤器
该算法使用线性光,因此输入数据应提前线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT
30.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。sigma* break_off_sigma(3) )如果difford大于0,则不能等于0。
30.114.1 示例
- 灰边:
greyedge=difford=1:minknorm=5:sigma=2
- 最大边缘:
greyedge=difford=1:minknorm=0:sigma=2
30.115 guided
应用引导滤镜进行边缘保留平滑、去雾等操作。
滤镜接受以下选项:
- 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
设置要过滤的平面。默认值是仅过滤第一个平面。
30.115.1 命令
此滤镜支持以上所有选项作为命令.
30.115.2 示例
- 使用引导滤镜进行边缘保留平滑:
ffmpeg -i in.png -vf guided out.png
- 使用引导滤镜进行去雾、结构转移过滤、细节增强。
有关生成引导图像,请参考论文《Guided Image Filtering》。
参见:http://kaiminghe.com/publications/pami12guidedfilter.pdf.
ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
30.116 haldclut
将一个 Hald CLUT 应用于视频流。
第一个输入是要处理的视频流,第二个输入是 Hald CLUT。 Hald CLUT 输入可以是简单的图片或完整的视频流。
滤镜接受以下选项:
- clut
设置第二输入流中的 CLUT 视频帧将如何处理, 可以是首帧或全部。默认值为全部.
- shortest
强制在最短输入终止时终止操作。默认值为
0
.- repeatlast
继续在流结束后应用最后的 CLUT。一值为
0
禁用滤镜,当流最后一个 CLUT 帧结束后。 默认值为1
.
haldclut
还具有与lut3d相同的插值选项(两个滤镜均共享同一内部机制)。
此滤镜还支持帧同步选项。
有关 Hald CLUT 的更多信息可在 Eskil Steenberg 的网站(Hald CLUT 作者)上找到,网址为http://www.quelsolaar.com/technology/clut.html.
30.116.1 命令
此滤镜支持interp
选项作为命令.
30.116.2 工作流程示例
30.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
流中的剩余帧。
30.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
它包含原始 CLUT 及其效果的预览:SMPTE 颜色条显示在右上方,下面是经过颜色变化处理后的相同颜色条。
然后,可以通过以下方式可视化此 Hald CLUT 的效果:
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
30.117 hflip
将输入视频水平翻转。
例如,使用以下代码水平翻转输入视频:ffmpeg
:
ffmpeg -i in.avi -vf "hflip" out.avi
30.118 histeq
此滤镜基于每帧应用全局颜色直方图均衡。
可用于修正像素强度范围压缩的视频。 滤镜将重新分配像素强度,使其在强度范围内的分布均匀。 它可以被看作是一个“自动调节对比度滤镜”。此滤镜仅对修复降质或捕获质量欠佳的源视频有用。
滤镜接受以下选项:
- strength
确定要应用的均衡程度。随着强度的降低,像素强度的分布越来越接近输入帧。值需为范围[0,1]的浮点数,默认值为0.200。
- intensity
设置可以生成的最大强度并适当地缩放输出值。强度应按预期设置,然后根据需要进行限制以避免过曝。值需为范围[0,1]的浮点数,默认值为0.210。
- antibanding
设置抗条纹级别。如果启用,滤镜将随机改变输出像素的亮度以避免直方条状图的产生。 可能的值为
none
,weak
或strong
。默认值为none
.
30.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
.
30.119.1 示例
- 计算并绘制直方图:
ffplay -i input -vf histogram
30.120 hqdn3d
这是一个高精度/高质量的3D降噪滤镜。目标是减少图像噪点,生成平滑图像并使静态图像真正静态。有助于提高可压缩性。
它接受以下可选参数:
- luma_spatial
一个非负浮点数,用于指定空间亮度强度。默认值为4.0。
- chroma_spatial
一个非负浮点数,用于指定空间色度强度。 默认值为3.0*亮度空间/4.0.
- luma_tmp
一个浮点数,用于指定时间亮度强度。默认值为6.0*亮度空间/4.0.
- chroma_tmp
一个浮点数,用于指定时间色度强度。默认值为亮度时间*色度空间/亮度空间.
30.120.1 命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持该选项当前的值。
30.121 hwdownload
将硬件帧下载到系统内存。
输入必须是硬件帧,输出则是非硬件格式。并非所有格式都可以支持输出 - 可能需要在图中随后插入一个额外format滤镜,以将输出转换为支持的格式。
30.122 hwmap
将硬件帧映射到系统内存或另一个设备。
此滤镜有几种不同的操作模式;使用哪种模式取决于输入和输出格式:
- 硬件帧输入,普通帧输出
将输入帧映射到系统内存并传递到输出。如果稍后需要原始硬件帧(例如,在其上的部分覆盖其他内容后),可以使用hwmap滤镜再次检索它。
- 普通帧输入,硬件帧输出
如果输入实际上是软件映射的硬件帧,则取消映射它 - 即返回原始硬件帧。
否则,必须提供一个设备。在该设备上为输出创建新的硬件表面,然后将这些帧映射回作为输入的软件格式,并将这些帧提供给前面的滤镜。然后,这将表现像hwupload滤镜,但可能能够避免额外的拷贝。
- 硬件帧输入和输出
必须直接提供输出设备,或者使用derive_device选项。如果输入和输出设备是不同类型且兼容的 - 同一底层硬件上下文(例如,指同一个图形卡)系统通常要求保持一致。
如果输入帧最初是在输出设备上创建,则取消映射以取回原始帧。
否则,将帧映射到输出设备 - 在输出设备上创建与输入帧对应的新硬件帧。
接受以下附加参数:
- mode
设置帧映射模式。一些操作组合包含:
- 读取
映射的帧应该可读取。
- 写入
映射的帧应该可写入。
- 覆盖
映射将始终覆盖整个帧。
在某些情况下,这可能会提高性能,因为无需加载帧的原始内容。
- 直接
映射不得包含任何拷贝操作。
在某些情况下,当直接映射不可行或具有意外属性时,会创建间接映射到帧的副本。设置此标志将确保映射是直接的,并在不可能情况下失败。
默认值为read+write(如果未指定)。
- derive_device 类型
而不是使用初始化时提供的设备,而是从输入帧存在的设备派生出一个类型为类型的新设备。
- reverse
在硬件到硬件映射中,通过反向映射操作——创建在接收端的帧并映射回源。可能是在某些情况下的强制要求,涉及一个方向的映射是必须的但设备只支持反方向。
此选项是危险的——如果在任何附加措施下对过滤器输出存在限制,会导致前一个过滤器在隐性模式下出现问题。只有完全理解该选项的使用意义才可使用。
30.123 硬件上传
将系统内存帧上传到硬件表面。
在初始化滤镜时必须提供要上传的设备。如果使用 ffmpeg,通过以下选项选择合适的设备-filter_hw_device选项或通过derive_device选项。输入和输出设备必须是不同类型且兼容的 - 具体含义依赖于系统,但通常意味着它们必须引用同一底层硬件上下文(例如,引用同一张显卡)。
支持以下附加参数:
- derive_device 类型
而不是使用初始化时提供的设备,而是从输入帧所在的设备派生一个新的设备,其类型为类型。
30.124 CUDA 硬件上传
将系统内存帧上传到 CUDA 设备。
接受以下可选参数:
- device
要使用的 CUDA 设备编号
30.125 高质量缩放 (HQX)
应用为像素艺术设计的高质量放大过滤器。此过滤器由 Maxim Stepin 创建。
它接受以下选项:
- n
设置缩放维度:
2
对于hq2x
,3
对于hq3x
与4
对于hq4x
。 默认值为3
.
30.126 水平堆叠 (hstack)
水平堆叠输入视频。
所有流的像素格式和高度必须相同。
滤镜接受以下选项:
- inputs
设置输入流的数量。默认值为 2。
- shortest
如果设置为 1,则当最短输入终止时,强制输出终止。默认值为 0。
30.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 会使像素完全灰色或完全不灰色。
更高的值会导致更多灰色像素,像素颜色越接近关键颜色,灰色像素越多。
30.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 会使像素完全透明或完全不透明。
更高的值会导致半透明像素,像素颜色越接近关键颜色,透明度越高。
30.129 色调
修改输入的色调和/或饱和度。
接受以下参数:
- h
指定色调角度,以度为单位。可接受一个表达式,默认为 "0"。
- s
指定饱和度,范围为 [-10,10]。接受一个表达式,默认为 "1"。
- H
指定色调角度,以弧度为单位。可接受一个表达式,默认为 "0"。
- b
指定亮度,范围为 [-10,10]。接受一个表达式,默认为 "0"。
h和H是互斥的,不能同时指定。
该b, h, H和s选项值是包含以下常量的表达式:
- n
从 0 开始的输入帧数。
- pts
以时间基单位表示的输入帧演示时间戳。
- r
输入视频的帧率,如果未知帧率则为 NAN。
- t
以秒表示的时间戳,如果未知时间戳则为 NAN。
- tb
输入视频的时间基。
30.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))"
30.129.2 命令
该滤镜支持以下命令:
- b
- s
- h
- H
修改输入视频的色调、饱和度和/或亮度。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
30.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 三元组中的亮度, 启用此选项可以保持亮度不变。
30.131 滞回
将第一条流扩展到第二条流,通过连接组件。 这使得可以构建更稳健的边缘掩码。
此过滤器接受以下选项:
- planes
设置哪些平面将被作为位图进行处理,未处理的平面将从第一条流中复制。 默认值为 0xf,所有平面都将被处理。
- threshold
设置过滤中使用的阈值。如果像素分量值高于此值,则激活用于连接组件的过滤算法。 默认值为 0。
该hysteresis
过滤器还支持framesync选项。
30.132 ICC 检测
从嵌入的 ICC 配置文件(如果存在)中检测色彩空间,并相应地更新帧的标记。
此过滤器接受以下选项:
- force
如果为 true,则帧的现有色彩空间标记将始终被 ICC 配置文件中检测的值覆盖。否则,仅当它们包含
unknown
时才会被分配。默认启用。
30.133 ICC 生成功能
生成 ICC 配置文件并将其附加到帧。
此过滤器接受以下选项:
- color_primaries
- color_trc
配置将为其生成 ICC 配置文件的色彩空间。 默认值
auto
从输入帧的元数据推断值, 根据需要默认为 BT.709/sRGB。请参阅setparams过滤器以获取可能值的列表,但请注意,
unknown
对于此过滤器无效。- force
如果为 true,即使会覆盖已存在的 ICC 配置文件,也会生成新配置文件。 默认禁用。
30.134 身份分数
获取两个输入视频之间的身份分数。
此滤镜需要两个输入视频。
要正确运行此过滤器,输入视频的分辨率和像素格式必须相同。此外,假定两个输入的视频帧数相同,并逐帧进行比较。
通过日志系统打印出每个分量的平均值、最小值和最大身份分数。
过滤器会将每帧计算的身份分数存储在帧元数据中。
此过滤器还支持framesync选项。
以下示例中,正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
30.135 智能梳理检测 (idet)
检测视频交错类型。
此过滤器尝试检测输入帧是交错的、逐行的、上场优先还是下场优先。它还会尝试检测相邻帧之间重复的字段(这是隔行扫描转换的标志)。
单帧检测仅在分类每一帧时考虑紧邻的帧。 多帧检测结合前几帧的分类历史。
滤镜将记录以下元数据值:
- 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过滤器作为清理交错标志的低计算方法。
30.135.1 示例
详细检查视频中前360帧的字段顺序:
ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -
idet过滤器将为每帧添加分析元数据,然后丢弃。在结束时,过滤器还将打印一份带有统计数据的最终报告。
30.136 il
拆分或合并字段。
此过滤器允许用户在不对交错图像字段进行解交错的情况下处理它们。拆分操作将输入帧分为两个字段(所谓的半图像)。奇数行移至输出图像的上半部分,偶数行移至下半部分。您可以独立处理这些字段(过滤处理)然后进行合并。
此过滤器接受以下选项:
- luma_mode, l
- chroma_mode, c
- alpha_mode, a
可用值亮度模式, 色度模式和透明度模式是:
- ‘none’
无操作。
- ‘deinterleave, d’
拆分字段,并将一个放置在另一个之上。
- ‘interleave, i’
合并字段。反向恢复拆分操作的效果。
默认值为
none
.- luma_swap, ls
- chroma_swap, cs
- alpha_swap, as
交换亮度/色度/透明度字段。交换偶数和奇数行。默认值为
0
.
30.136.1 命令
此过滤器支持上述所有选项作为命令.
30.137 inflate
对视频应用膨胀效果。
此过滤器用局部(3x3)平均值替换像素,仅考虑高于像素的值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个位面的最大变化,默认值为65535。如果为0,则该位面保持不变。
30.137.1 命令
此过滤器支持上述所有选项作为命令.
30.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’
启用复杂滤波器。这将稍微减少闪烁和莫尔现象,但更好地保留细节和主观清晰度印象。
30.139 kerndeint
通过应用Donald Graft的自适应内核去交错从输入视频中去交错。处理视频的交错部分以生成逐行帧。
以下是接受参数的说明。
- thresh
设置阈值,影响滤镜在确定是否需要处理像素行时的容限。它必须是范围[0,255]内的整数,默认值为10。值为0将导致对每个像素应用过程。
- map
若设置为1,则将超过阈值的像素涂白。默认值为0。
- order
设置字段顺序。若设置为1则交换字段,若为0则保持字段不变。默认值为0。
- sharp
若设置为1则启用额外锐化。默认值为0。
- twoway
设置为1将启用双方向锐化。默认是0。
30.139.1 示例
- 应用默认值:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
- 启用额外锐化:
kerndeint=sharp=1
- 将处理的像素涂白:
kerndeint=map=1
30.140 kirsch
对输入视频流应用Kirsch算子。
过滤器接受以下选项:
- planes
设置处理哪些平面,未处理的平面将被复制。默认值为0xf,所有平面都将被处理。
- scale
设置与过滤结果相乘的值。
- delta
设置与过滤结果相加的值。
30.140.1 命令
此过滤器支持上述所有选项作为命令.
30.141 lagfun
慢慢更新较暗的像素。
此滤镜使短暂的光出现更长时间。 此过滤器接受以下选项:
- decay
设置衰减系数。默认值为0.95。允许范围为0到1。
- planes
设置过滤哪些平面。默认过滤所有平面。允许范围为0到15。
30.141.1 命令
此过滤器支持上述所有选项作为命令.
30.142 lenscorrection
修正径向镜头畸变。
此滤镜可用于校正由于广角镜头使用所导致的径向畸变,从而重新校正图像。要找到合适的参数,可以使用OpenCV等工具或简单的试验调整。要使用OpenCV,可在OpenCV源代码中的校准示例(位于samples/cpp)中提取k1和k2系数。
注意,开源工具如Krita和KDE项目的Digikam也提供了类似的滤镜。
与vignette滤镜可用于补偿镜头错误不同,此滤镜校正图像的畸变,而vignette校正亮度分布。因此在某些情况下可能需要将两者结合使用,不过需要注意顺序,例如是先应用镜头校正还是先应用渐晕校正。
30.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)"Color"章节中的内容。默认颜色是
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分别是源图像和目标图像中与焦点的距离。
30.142.2 命令
此过滤器支持上述所有选项作为命令.
30.143 lensfun
通过lensfun库应用镜头校正(http://lensfun.sourceforge.net/).
)lensfun
过滤器需要相机厂商、相机型号和镜头型号以应用镜头校正。过滤器将加载lensfun数据库并查询匹配的相机和镜头条目。只要这些条目能被找到,过滤器即可执行帧校正。注意,部分字符串会导致过滤器选择最匹配的项,并在日志中输出选定的相机和镜头型号(日志级别为“info”)。厂商、相机型号和镜头型号是必填项。
要获取厂商和型号的列表,请省去一个或两个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’
30.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
30.144 libplacebo
基于libplacebo的灵活GPU加速处理滤镜https://code.videolan.org/videolan/libplacebo).
30.144.1 选项
该滤镜的选项分为以下几个部分:
30.144.1.1 输出模式
这些选项控制整体输出模式。默认情况下,libplacebo会尽量保留源颜色空间和尺寸,但它会应用任何嵌入的胶片噪点、多视点动态元数据或在源帧中存在的非统一像素比例。
- inputs
- 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
应用 Dolby Vision RPU 元数据,若出现在源帧中,并从输出中剥离。默认启用。注意,Dolby Vision 将始终输出 BT.2020+PQ,覆盖通常的输入帧元数据。这些值也将被选为
auto
用于各自的帧输出选项。
除了之前在缩放过滤器中记录的表达式常量之外,crop_w, crop_h, crop_x, crop_y, pos_w, pos_h, pos_x和pos_y选项还可以包含以下常量:
- in_idx, idx
当前活动输入流的(从零开始)数字索引。
- 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 开始。
30.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’
由Mitchell和Netravali推荐参数的立方BC样条。振铃极少。
- frame_mixer
控制用于时间上混合帧的内核。默认值为
none
,禁用帧混合。要获取可能值的完整列表,请传入help
到此选项中。最重要的值包括:- ‘none’
禁用帧混合,结果相当于"最近邻"语义。
- ‘oversample’
对输入视频进行超采样以创建一种"平滑运动"效果:如果输出帧正好落在两个视频帧之间的过渡部分,则根据相对重叠对其进行混合。这是在需要保留原始主观外观时推荐的选项。
- ‘mitchell_clamp’
较大的滤镜内核,以尽可能消除振铃和其他伪影的方式平滑插值多个帧。在需要最大视觉平滑度时推荐。
- ‘linear’
帧之间的线性混合/淡入淡出。尤其适用于构造幻灯片放映等。
- lut_entries
配置缩放器 LUT 的大小,范围从
1
到256
。默认值0
将选择libplacebo的内部默认值,通常为64
.- antiringing
启用去振铃(对于非EWA滤镜)。值(范围在
0.0
和1.0
之间)配置去振铃算法的强度。如果设置过高可能会增加混叠。默认禁用。- sigmoid
启用在放大期间的sigmoidal压缩。稍微减少振铃。默认启用。
30.144.1.3 去色带
Libplacebo配备了一个内置的去色带滤镜,它能很好地抵消许多常见的色带和块效应来源。在需要质量时强烈推荐开启此功能。
- deband
启用(快速)去色带算法。默认禁用。
- deband_iterations
去色带算法的迭代次数。每次迭代都以逐渐增加的半径(以及降低的阈值)进行。推荐值范围在
1
到4
之间。默认值为1
.- deband_threshold
去色带滤镜强度。较高的值会导致更激进的去色带处理。默认值为
4.0
.- deband_radius
去色带滤镜半径。较高的半径对于缓慢的渐变更好,而较低的半径对于陡峭的渐变更好。默认值为
16.0
.- deband_grain
要添加的额外输出颗粒度。帮助隐藏瑕疵。默认值为
6.0
.
30.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
的值会夸大圆锥之间的差异,可能会帮助弥补减少的色觉。
30.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
将禁用帧直方图测量,改为使用实际峰值亮度进行色调映射。
30.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’
Reinhard色彩映射算法的扩展,支持接近黑色的一段线性斜率。色彩映射参数表明线性段和非线性段之间的权衡。对于给定参数x,每个颜色值低于x的都会被线性映射,而较高的值将被非线性色彩映射。在参数靠近
1.0
时,该曲线表现类似于clip
,而靠近0.0
时,该曲线表现类似于reinhard
。默认值为0.3
,在色度计精度与保留超出范围细节之间提供了良好的平衡。- ‘hable’
由John Hable为了《Uncharted 2》开发的一种分段电影色彩映射算法,受Kodak使用的一种类似色彩映射算法的启发。因其在HDR游戏中应用而广受欢迎。这种算法能很好地保留暗部和亮部细节,但会显著改变平均亮度。这类似于
reinhard
具有参数0.24
.- ‘gamma’
拟合一个伽玛(幂)函数以在源和目标颜色空间之间进行转换,有效地形成一个感知硬拐点连接两个大致线性区段。此方法能准确保留各个尺度的细节,但可能导致图像出现沉闷或暗淡的外观。这个参数用作切割点,默认值为
0.5
.- ‘linear’
在线性PQ空间中拉伸输入范围以匹配输出范围。这样做可以准确地保留所有细节,但会显著改变平均亮度。既可用于逆向色彩映射,也可用于正向色彩映射。参数可作为一个额外的线性增益系数(默认为
1.0
).
- tonemapping_param
对于可调节的色彩映射曲线,此参数用来微调曲线行为。参考
tonemapping
的文档。默认值0.0
由曲线的优选默认设置替代。- inverse_tonemapping
如果启用,此滤镜还尝试将SDR信号拉伸以填充HDR输出色彩体积。默认情况下禁用。
- tonemapping_lut_size
色彩映射查找表的大小,在
2
和1024
之间。默认值为256
。当与peak_detect
.- contrast_recovery
恢复对比度强度。如果设定值高于
0.0
,源图像将被划分为高频及低频成分,并将一部分高频图像添加回色彩映射后的输出中。可能会导致某些HDR源出现过度环纹伪影,但可以改善经色彩映射后图像的主观锐度和细节。默认值为0.30
.- contrast_smoothness
恢复对比度低通滤波器的核尺寸。默认值为
3.5
。增加或减少此值会对视觉效果有很大影响。当contrast_recovery
处于禁用状态时无效。
30.144.1.7 抖动处理
默认情况下,libplacebo会在必要时进行抖动处理,包括渲染到任何低于16位精度的整数格式。建议始终保持此设置开启,否则可能导致输出出现可见色带,即使启用了debanding
滤镜。如果需要最大性能,请使用ordered_fixed
而不是禁用抖动处理。
- dithering
抖动处理使用的方式。接受以下值:
- ‘none’
完全禁用抖动处理。可能导致可见色带。
- ‘blue’
使用伪蓝噪声进行抖动。这是默认选项。
- ‘ordered’
可调节的有序抖动模式。
- ‘ordered_fixed’
更快的固定尺寸有序抖动,尺寸为
6
。无纹理。- ‘white’
使用白噪声进行抖动。无纹理。
- dither_lut_size
设置抖动查找表的大小,以2的对数,范围在
1
和8
之间。默认值为6
,对应的查找表大小为64x64
.- dither_temporal
启用时序抖动处理。默认情况下禁用。
30.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
指定完整的自定义着色器作为原字符串。
30.144.1.9 调试 / 性能
所有本节选项默认关闭。当试图最大化性能以牺牲质量时,它们可能有所帮助。
- skip_aa
禁用下采样时的抗锯齿处理。
- polar_cutoff
将极地(EWA)缩放器核剪切到低于绝对幅度值之间的范围
0.0
和1.0
.- disable_linear
禁用线性光缩放。
- disable_builtin
禁用内置GPU采样(强制查找表)。
- disable_fbos
强制禁用FBOs,导致几乎所有功能丧失,但提供最大的速度。
30.144.2 命令
此滤镜支持几乎所有上述选项作为命令.
30.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
- 将低帧率/VFR输入插值为平滑的恒定60帧输出:
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
30.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选项。
30.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 -
带有选项和不同容器的示例:
这是libvmaf滤镜的CUDA变体。它仅接受CUDA帧。
需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后它可以启用:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf
.
30.146.1 示例
- 显示CUVID硬件解码和CUDA缩放的基础用法示例,使用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 -
30.147 limitdiff
使用第二个和可选的第三个视频流应用有限差异滤镜。
该滤镜接受以下选项:
- threshold
设置允许视频流之间某些差异时使用的阈值。任何低于或等于此阈值的绝对差值会从第一个视频流选择像素组件。
- elasticity
设置处理视频流时软阈值的弹性。此值乘以第一个阈值设置第二个阈值。任何绝对差值大于或等于第二个阈值的都会从第二个视频流选择像素组件。对于介于这两个阈值之间的值,将在线性插值第一个和第二个视频流之间。
- reference
启用参考(第三个)视频流处理。默认情况下禁用。如果启用,该视频流将用于计算与第一个视频流的绝对差值。
- planes
指定将处理哪些平面。默认为所有可用平面。
30.147.1 命令
此过滤器支持以上所有选项作为命令但不包括选项 ‘reference’.
30.148 限制器
将像素组件值限制在指定范围 [min, max] 内。
此过滤器接受以下选项:
- min
下界。默认为输入的最低允许值。
- max
上界。默认为输入的最高允许值。
- planes
指定将处理哪些平面。默认为所有可用平面。
30.148.1 命令
此过滤器支持以上所有选项作为命令.
30.149 循环
循环视频帧。
此过滤器接受以下选项:
- loop
设置循环次数。将此值设为 -1 会导致无限循环。 默认值为 0。
- size
设置帧数的最大大小。默认值为 0。
- start
设置循环的第一帧。默认值为 0。
- time
设置循环开始时间(以秒为单位)。 仅当选项start被设置时使用
-1
.
30.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
30.150 lut1d
对输入视频应用一维查找表 (1D LUT)。
此过滤器接受以下选项:
- file
设置 1D LUT 文件名。
当前支持的格式:
- ‘cube’
Iridas
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最邻近定义点的值。
- ‘linear’
使用线性插值计算值。
- ‘cosine’
使用余弦插值计算值。
- ‘cubic’
使用三次插值计算值。
- ‘spline’
使用样条插值计算值。
30.150.1 命令
此过滤器支持以上所有选项作为命令.
30.151 lut3d
对输入视频应用三维查找表 (3D LUT)。
此过滤器接受以下选项:
- file
设置 3D LUT 文件名。
当前支持的格式:
- ‘3dl’
AfterEffects
- ‘cube’
Iridas
- ‘dat’
DaVinci
- ‘m3d’
Pandora
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最邻近定义点的值。
- ‘trilinear’
使用定义立方体的 8 点进行插值。
- ‘tetrahedral’
使用四面体进行插值。
- ‘pyramid’
使用金字塔进行插值。
- ‘prism’
使用棱柱进行插值。
30.151.1 命令
此过滤器支持选项interp
作为命令.
30.152 lumakey
将某些亮度值转换为透明度。
此过滤器接受以下选项:
- threshold
设置将用作透明度基准的亮度值。 默认值为
0
.- tolerance
设置要键控出去的亮度值范围。 默认值为
0.01
.- softness
设置柔化范围。默认值为
0
。 使用此选项可控制从零到完全透明的渐变过渡。
30.152.1 命令
此过滤器支持相同命令作为选项。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
30.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)
像素分量值的计算 gamma 校正值, 剪辑到minval-maxval范围内。它对应于 表达式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"
所有表达式的默认值都为 "clipval"。
30.153.1 命令
此过滤器支持相同命令作为选项。
30.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 校正亮度 gamma:
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'
30.154 lut2, tlut2
过滤器lut2
接收两个输入流并输出一个
流。
过滤器tlut2
(时间 lut2) 从一个输入流中接收两个连续帧。
此过滤器接受以下参数:
- c0
设置第一个像素分量表达式
- c1
设置第二个像素分量表达式
- c2
设置第三个像素分量表达式
- c3
设置第四个像素分量表达式,对应于 alpha 分量
- d
设置输出位深,仅对过滤器
lut2
可用。默认值为 0, 表示位深自动从第一个输入格式中提取。
过滤器lut2
还支持framesync选项。
每个选项指定了计算对应像素分量值的查找表的表达式。
与每个c*选项相关的具体分量取决于输入中的格式。
表达式可以包含以下常量:
- w
- h
输入的宽度和高度。
- x
第一个输入视频的像素分量值。
- y
第二个输入视频的像素分量值。
- bdx
第一个输入视频位深。
- bdy
第二个输入视频位深。
所有表达式的默认值都为 "x"。
30.154.1 命令
此过滤器支持以上所有选项作为命令但不包括选项d
.
30.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)))'
30.155 maskedclamp
使用第二和第三输入流对第一个输入流进行限制。
将第一个流的值限制在第二个输入流 -undershoot
和第三个输入流 +overshoot
.
此过滤器接受以下选项:
- undershoot
默认值为
0
.- overshoot
默认值为
0
.- planes
设置要作为位图处理的平面,未处理的平面将从第一个流中复制。 默认值为 0xf,所有平面都将被处理。
30.155.1 命令
此过滤器支持以上所有选项作为命令.
30.156 maskedmax
将第二个和第三个输入流的绝对差值合并到输出流中, 通过比较第二个输入流与第一个输入流之间的绝对差值 和第三个输入流与第一个输入流之间的绝对差值来选择值。 如果第二个绝对差值大于第一个绝对差值,选取第二个输入流的值, 否则选取第三个输入流的值。
此过滤器接受以下选项:
- planes
设置要作为位图处理的平面,未处理的平面将从第一个流中复制。 默认值为 0xf,所有平面都将被处理。
30.156.1 命令
此过滤器支持以上所有选项作为命令.
30.157 maskedmerge
使用第三输入流中的每像素权重将第一个输入流与第二输入流合并。
第三流像素组件中的值为 0 意味着从第一个流返回未更改的像素组件, 而最大值(例如,对于 8 位视频为 255)意味着从第二流返回未更改的像素组件。 中间值定义了两个输入流像素组件之间的合并程度。
此过滤器接受以下选项:
- planes
设置要作为位图处理的平面,未处理的平面将从第一个流中复制。 默认值为 0xf,所有平面都将被处理。
30.157.1 命令
此过滤器支持以上所有选项作为命令.
30.158 maskedmin
将第二个和第三个输入流的绝对差值合并到输出流中, 通过比较第二个输入流与第一个输入流之间的绝对差值 和第三个输入流与第一个输入流之间的绝对差值来选择值。 如果第二个绝对差值小于第一个绝对差值,选取第二个输入流的值, 否则选取第三个输入流的值。
此过滤器接受以下选项:
- planes
设置要作为位图处理的平面,未处理的平面将从第一个流中复制。 默认值为 0xf,所有平面都将被处理。
30.158.1 命令
此过滤器支持以上所有选项作为命令.
30.159 maskedthreshold
通过比较两个视频流的绝对差值与固定阈值来选择像素。
如果两个视频流的像素组件之间的绝对差值等于或小于用户提供的阈值, 则选择第一个视频流的像素组件,否则选择第二个视频流的像素组件。
此过滤器接受以下选项:
- threshold
设置从两个输入视频流的绝对差值中选择像素时使用的阈值。
- planes
设置要作为位图处理的平面,未处理的平面将从第二个流中复制。 默认值为 0xf,所有平面都将被处理。
- mode
设置过滤器操作模式。可以是
abs
或diff
。 默认值为abs
.
30.159.1 命令
此过滤器支持以上所有选项作为命令.
30.160 maskfun
从输入视频创建掩码。
例如,它在tblend
过滤器之后创建运动掩码非常有用。
此过滤器接受以下选项:
- low
设置低阈值。任何像素组件低于或等于此值都会被设为 0。
- high
设置高阈值。任何像素组件高于此值会被设为当前像素格式允许的最大值。
- planes
设置要过滤的平面,默认情况下会过滤所有可用平面。
- fill
用此值填充所有帧像素。
- sum
设置帧的最大平均像素值。如果所有像素组件的总和高于这个平均值, 输出帧会完全用fill选项设置的值填充。 通常在与
tblend
过滤器组合使用时,对于场景切换非常有用。
30.160.1 命令
此过滤器支持以上所有选项作为命令.
30.161 mcdeint
应用运动补偿去隔行处理。
它需要每帧一个字段作为输入,因此必须与 yadif=1/3 或等效过滤器一起使用。
此过滤器接受以下选项:
- mode
设置去隔行扫描模式。
接受以下值之一:
- ‘fast’
- ‘medium’
- ‘slow’
使用迭代运动估计
- ‘extra_slow’
像“slow”,但使用多个参考帧。
默认值是“fast’.
- parity
设置输入视频的假设图像场序。必须是以下值之一:
- ‘0, tff’
假设上场优先
- ‘1, bff’
假设下场优先
默认值是“bff’.
- qp
设置内部编码器使用的每块量化参数(QP)。
较高的值应该会产生更平滑的运动矢量场,但个别矢量可能不太理想。默认值为1。
30.162 中值
从定义的半径矩形中选择中值像素。
此滤镜接受以下选项:
- radius
设置水平半径大小。默认值是
1
。 允许的范围是从1到127的整数。- planes
设置处理的平面。默认值是
15
,即所有可用的平面。- radiusV
设置垂直半径大小。默认值是
0
。 允许的范围是从0到127的整数。 如果为0,将从水平radius
选项中拾取值。- percentile
设置中值百分位数。默认值是
0.5
。 默认值为0.5
将始终选择中值,而0
将选择最小值,以及1
最大值。
30.162.1 命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保留当前值。
30.163 mergeplanes
从多个视频流合并颜色通道组件。
该滤镜最多接受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
.
30.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
30.164 mestimate
使用块匹配算法估算并输出运动矢量。 运动矢量存储于帧侧数据中以供其他滤镜使用。
此滤镜接受以下选项:
- method
指定运动估计方法。接受以下值之一:
- ‘esa’
穷尽搜索算法。
- ‘tss’
三步搜索算法。
- ‘tdls’
二维对数搜索算法。
- ‘ntss’
新三步搜索算法。
- ‘fss’
四步搜索算法。
- ‘ds’
菱形搜索算法。
- ‘hexbs’
基于六边形的搜索算法。
- ‘epzs’
增强的预测区域搜索算法。
- ‘umh’
不均匀多六边形搜索算法。
默认值是“esa’.
- mb_size
宏块大小。默认值为
16
.- search_param
搜索参数。默认值为
7
.
30.165 midequalizer
使用两个视频流应用中间图像均衡效果。
中间图像均衡调整一对图像以具有相同直方图,同时尽可能保持它们的动态范围。这在例如匹配一对立体摄像头的曝光方面非常有用。
此滤镜有两个输入和一个输出,必须具有相同的像素格式,但可以具有不同的大小。滤镜的输出是通过两输入的中间直方图调整的第一个输入。
此滤镜接受以下选项:
- planes
设置处理的平面。默认值是
15
,即所有可用的平面。
30.166 minterpolate
使用运动插值将视频转换为指定帧率。
此滤镜接受以下选项:
- fps
指定输出帧率。可以是有理数,例如
60000/1001
。如果帧速率低于源帧率,则丢弃帧。默认值为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.
.
30.167 mix
将多个视频输入流混合到一个视频流中。
接受选项的描述如下。
- inputs
输入数量。如果未指定,默认值为2。
- weights
指定每个输入视频流的权重作为序列。 每个权重以空格分隔。如果权重数量少于帧最后指定的权重将用于所有剩余未设置的权重。
- scale
指定缩放比例,如果设置,它将乘以每个权重的总和与像素值的乘积以得出最终目标像素值。默认情况下缩放比例自动缩放到权重的总和。
- planes
设置过滤的平面。默认值是全部。允许的范围是从0到15。
- duration
指定如何确定流结束。
- ‘longest’
最长输入的时长。(默认)
- ‘shortest’
最短输入的时长。
- ‘first’
第一个输入的时长。
30.167.1 命令
此滤镜支持以下命令:
- weights
- scale
- planes
语法与同名选项相同。
30.168 monochrome
使用定制颜色滤镜将视频转换为灰度。
接受选项的描述如下。
- cb
设置色度蓝点。允许范围是从-1到1。 默认值为0。
- cr
设置色度红点。允许范围是从-1到1。 默认值为0。
- size
设置颜色滤镜大小。允许范围是从0.1到10。 默认值为1。
- high
设置高光强度。允许范围是从0到1。 默认值为0。
30.168.1 命令
此滤镜支持上述所有选项作为命令.
30.169 morpho
此滤镜允许应用主要形态学灰度变换,通过第二个输入流设定任意结构进行腐蚀和膨胀。
与腐蚀和膨胀滤镜中较为简单的实现和更慢的性能相比,当速度是关键时morpho
滤镜
应被使用。
接受选项的描述如下,
- mode
设置要应用的形态变换,可以是:
- ‘erode’
- ‘dilate’
- ‘open’
- ‘close’
- ‘gradient’
- ‘tophat’
- ‘blackhat’
默认值是
erode
.- planes
设置过滤的平面,默认情况下过滤所有平面(除了alpha平面)。
- structure
设置第二输入流中将处理的结构视频帧,可以选择首帧或所有帧。默认值是所有帧.
此morpho
滤镜还支持帧同步选项。
30.169.1 命令
此滤镜支持与选项相同的命令。
30.170 mpdecimate
丢弃与前一帧没有很大差异的帧,以降低帧率。
此滤镜的主要用途是用于极低比特率编码 (例如,通过拨号调制解调器进行流媒体),但理论上也可以用于修复逆向-隔行电影时出现的问题。
接受选项的描述如下。
- max
设置可以丢弃的连续帧的最大数量(如果为正值),或丢弃帧之间的最小间隔(如果为负值)。如果值为0,则无论之前连续丢弃的帧数如何,都会丢弃当前帧。
默认值为0。
- keep
设置在开始丢弃帧之前可以忽略的连续相似帧的最大数量。 如果值为0,则无论之前连续相似帧的数量如何,都会丢弃当前帧。
默认值为0。
- hi
- lo
- frac
设置丢弃的阈值。
值为hi和lo对应于8x8像素块,表示实际像素值差异。因此,64的阈值对应于每个像素1单位的差异,或者不同地分布在块上。
如果没有任何8x8块的差异超过hi指定的阈值,并且不足frac块的差异(1表示整个图像)超过lo.
指定的阈值,则当前帧为候选丢弃帧。hi默认值为64*12,lo的默认值为64*5,以及frac的默认值为0.33。
30.171 msad
获取两个视频输入之间的MSAD(绝对差值平均和)。
此滤镜需要两个视频输入。
使用此滤镜,两个输入视频必须具有相同的分辨率和像素格式。另外,它假定两个输入具有相同数量的帧,将逐帧比较它们。
通过日志系统打印每个分量、平均值、最小值和最大值的MSAD。
此滤镜将每帧计算的MSAD存储在帧元数据中。
此滤镜还支持帧同步选项。
在以下示例中,输入文件main.mpg正在处理,并与参考文件ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
进行比较。
将第一视频流的像素值与第二视频流的像素值相乘。
此滤镜接受以下选项:
- scale
设置应用于第二视频流的比例。默认是
1
。 允许范围是从0
到9
.- offset
设置应用于第二视频流的偏移量。默认是
0.5
。 允许范围是从-1
到1
.- planes
指定将被处理的输入视频流的平面。 默认情况下处理所有平面。
30.172.1 命令
此滤镜支持与选项相同的命令。
30.173 反色
对输入视频进行反色(颜色反转)。
它接受以下选项:
- components
设置要反色的分量。
分量的可用值是:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
- negate_alpha
值为1时反转alpha分量(如果存在)。默认值为0。
30.173.1 命令
此滤镜支持与选项相同的命令。
30.174 非局部均值
使用非局部均值算法对帧进行去噪。
每个像素通过查找具有类似上下文的其他像素进行调整。 这种上下文相似性是通过比较它们周围的补丁来定义,补丁大小为pxp。在rxr的区域内搜索补丁。
请注意,搜索区域定义了补丁的中心,这意味着一些补丁将由该搜索区域之外的像素组成。
该滤镜接受以下选项。
- s
设置去噪强度。默认值为1.0。必须在范围[1.0, 30.0]内。
- p
设置补丁大小。默认值为7。必须为范围[0, 99]内的奇数。
- pc
与p相同,但用于色度平面。
默认值为0,表示自动。
- r
设置搜索大小。默认值为15。必须为范围[0, 99]内的奇数。
- rc
与r相同,但用于色度平面。
默认值为0,表示自动。
30.175 神经网络边缘插值
使用神经网络边缘导向插值对视频进行去隔行。
该滤镜接受以下选项:
- 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
.
30.175.1 命令
此滤镜支持与选项相同的命令,但不包括权重选项。
30.176 非格式化
强制libavfilter不使用下一滤镜输入的任何指定像素格式。
它接受以下参数:
- pix_fmts
一个以'|'分隔的像素格式名称列表,例如 pix_fmts=yuv420p|monow|rgb24"。
30.176.1 示例
- 强制libavfilter使用不同于yuv420p的格式,作为vflip滤镜输入:
noformat=pix_fmts=yuv420p,vflip
- 将输入视频转换为不包含在列表中的格式:
noformat=yuv420p|yuv444p|yuv410p
30.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’
均匀噪声(否则为高斯)
30.177.1 示例
为输入视频添加时间和均匀噪声:
noise=alls=20:allf=t+u
30.178 规范化
规范化RGB视频(即直方图拉伸,对比度拉伸)。 参见:https://en.wikipedia.org/wiki/Normalization_(image_processing)
对于每一帧的每一个通道,滤镜计算输入范围,并将其线性映射到用户指定的输出范围。输出范围默认为从纯黑到纯白的全动态范围。
可以对输入范围使用时间平滑以减少频闪(当小型黑暗或明亮物体进入或离开场景时快速变化的亮度)。 这类似于摄像机的自动曝光(自动增益控制),并且,像摄像机一样,它可能导致视频的过度曝光或欠曝光。
可以独立规范化R、G、B通道,这可能导致一些颜色偏移;也可以将它们链接在一起作为单一通道,从而防止颜色偏移。链接规范化保留色调。独立规范化不保留,因此可用于去除某些颜色偏移。可以以任何比例组合独立和链接的规范化。
normalize滤镜接受以下选项:
- blackpt
- whitept
定义输出范围的颜色。最小输入值映射到blackpt。最大输入值映射到whitept。 默认值分别为黑色和白色。为blackpt指定白色,为whitept指定黑色,将生成颜色倒转的 规范化视频。使用灰色阴影可减少动态范围(对比度)。在此处指定饱和色彩可以创造一些有趣的效果。
- smoothing
用于时间平滑的先前帧数。每个通道的输入范围 通过当前帧和smoothing个先前帧的滚动平均值进行平滑。 默认值为0(无时间平滑)。
- independence
控制独立(颜色偏移)通道规范化与链接(颜色保留)规范化的比例。0.0为完全链接,1.0为完全独立。默认值为1.0(完全独立)。
- strength
滤镜的总体强度。1.0为全强度,0.0是一种昂贵的无操作。默认值为1.0(全强度)。
30.178.1 命令
此滤器支持与选项相同的命令,但不包括smoothing选项。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值不变。
30.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
30.179 空滤镜
将视频源保持不变传递到输出。
30.180 光学字符识别
光学字符识别
此滤镜使用Tesseract进行光学字符识别。要启用此滤镜的编译,需要用--enable-libtesseract
.
配置FFmpeg。
- datapath
设置Tesseract数据的数据路径。默认值为安装时设置的值。
- language
设置语言,默认是"eng"。
- whitelist
设置字符白名单。
- blacklist
设置字符黑名单。
该滤镜将识别的文本导出为帧元数据lavfi.ocr.text
。
该滤镜将识别单词的置信度导出为帧元数据lavfi.ocr.confidence
.
30.181 开普勒
使用libopencv应用视频变换。
要启用此滤镜,安装libopencv库和头文件并用--enable-libopencv
.
配置FFmpeg。
- filter_name
要应用的libopencv滤镜的名称。
- filter_params
传递给libopencv滤镜的参数。如果未指定,则假定为默认值。
有关更精确的信息,请参阅官方libopencv文档:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
支持多个libopencv滤镜;请参阅以下子章节。
30.181.1 膨胀
使用特定结构元素膨胀图像。
对应于libopencv函数cvDilate
.
它接受以下参数:struct_el|nb_iterations.
struct_el表示一个结构元素,语法为:colsxrows+anchor_xxanchor_y/shape
cols与rows代表结构元素的列数和行数,anchor_x和anchor_y为锚点,而shape为结构元素的形状。shape必须为"rect"、"cross"、"ellipse"或"custom"。
如果shape的值为"custom",它必须后跟一个 字符串,格式为"=filename"。名称为filename的文件被假定为表示二值图像,每 个可打印字符对应一个亮像素。当使用自定义shape时,cols和rows被忽略,假定代替为读取文件的列数和行数。
默认值为struct_el为"3x3+0x0/rect"。
nb_iterations指定对图像应用变换的次数,默认值为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
30.181.2 侵蚀
使用特定结构元素侵蚀图像。
对应于libopencv函数cvErode
.
它接受以下参数:struct_el:nb_iterations, 具有与膨胀滤镜相同的语法和语义。
30.181.3 平滑
平滑输入视频。
此滤镜采用以下参数:type|param1|param2|param3|param4.
type是要应用的平滑滤镜类型,必须是以下值之一:"blur"、"blur_no_scale"、"median"、"gaussian"或"bilateral"。默认值为"gaussian"。
的含义param1, param2, param3,以及param4取决于平滑类型。param1和param2接受正整数值或0。param3和param4接受浮点值。
的默认值param1是3。其他参数的默认值为0。
这些参数对应于libopencv函数中分配的参数cvSmooth
.
30.182 示波器
二维视频示波器。
用于测量空间冲激、阶跃响应、色差延迟等。
它接受以下参数:
- x
设置范围中心的 x 位置。
- y
设置范围中心的 y 位置。
- s
设置范围大小,相对于框架对角线。
- t
设置范围的倾斜/旋转。
- o
设置跟踪线的不透明度。
- tx
设置跟踪线中心的 x 位置。
- ty
设置跟踪线中心的 y 位置。
- tw
设置跟踪线的宽度,相对于框架宽度。
- th
设置跟踪线的高度,相对于框架高度。
- c
设置需要跟踪的组件。默认情况下跟踪前三个组件。
- g
绘制跟踪网格。默认启用。
- st
绘制一些统计信息。默认启用。
- sc
绘制范围。默认启用。
30.182.1 命令
此过滤器支持与选项相同的命令命令接受与对应选项相同的语法。
如果指定的表达式无效,它将保持当前值。
30.182.2 示例
- 检查视频帧的完整首行。
oscilloscope=x=0.5:y=0:s=1
- 检查视频帧的完整末行。
oscilloscope=x=0.5:y=1:s=1
- 检查高度为 1080 的视频帧的完整第 5 行。
oscilloscope=x=0.5:y=5/1080:s=1
- 检查视频帧的完整最后一列。
oscilloscope=x=1:y=0.5:s=1:t=1
30.183 overlay
将一个视频叠加在另一个视频上。
它接受两个输入并有一个输出。第一个输入是 "主" 视频,第二个输入被叠加在其上。
它接受以下参数:
以下是接受选项的说明。
- 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
设置叠加视频的 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.
可以链接多个叠加,但应测试此方法的效率。
30.183.1 命令
此过滤器支持以下命令:
- x
- y
修改叠加输入的 x 和 y 值。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,它将保持当前值。
30.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
- 插入两个不同的带透明背景的 PNG 徽标(第二个徽标置于右下角),使用
ffmpeg
工具: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]
30.184 overlay_cuda
将一个视频叠加在另一个视频上。
这是overlay过滤器的 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选项。
30.185 owdenoise
应用过完全集波小波降噪器。
过滤器接受以下选项:
- depth
设置深度。
较大的深度值将对低频成分降噪更多,但会使过滤变慢。
必须为范围在 8-16 之间的整数,默认值为
8
.- luma_strength, ls
设置亮度强度。
必须为范围在 0-1000 之间的双精度值,默认值为
1.0
.- chroma_strength, cs
设置色度强度。
必须为范围在 0-1000 之间的双精度值,默认值为
1.0
.
30.186 pad
为输入图像添加边距,并将原始输入放置在提供的x, y坐标。
它接受以下参数:
- width, w
- height, h
通过表达式指定包含边距的输出图像的大小。如果宽度或高度的值为 0,则使用对应的输入大小作为输出。
The 宽度表达式可以引用高度表达式设置的值,反之亦然。
默认值为宽度和高度是 0。
- x
- y
指定偏移量,用于在相对于输出图像上边框/左边框的位置内放置输入图像。
The x表达式可以引用y表达式设置的值,反之亦然。
The default value of x和y的默认值是 0。
如果x或y求值为负数,它们将被改为将输入图像居中。
- color
指定填充区域的颜色。有关此选项的语法,请参阅ffmpeg-utils 手册中的 "Color" 部分。.
The default value of 颜色的默认值是 "black"。
- 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表达式指定的偏移量,或如果尚未指定为 NAN。
- a
同iw / ih
- sar
输入样本长宽比
- dar
输入显示长宽比,其等同于(iw / ih) * sar
- hsub
- vsub
水平和垂直色度子采样值。例如,对于像素格式 "yuv422p"hsub是 2,vsub是 1。
30.186.1 示例
- 为输入视频添加颜色为 "violet" 的填充。输出视频大小为 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"
30.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
),您可以使用它评估调色板的颜色量化程度。该信息还可在info日志级别中看到。
30.187.1 示例
- 使用生成一个给定视频的代表性调色板。
ffmpeg
:ffmpeg -i input.mkv -vf palettegen palette.png
30.188 paletteuse
使用调色板对输入视频流进行降采样。
该过滤器接受两个输入:一个视频流和一个调色板。调色板必须是一个 256 像素的图像。
它接受以下选项:
- dither
选择抖动模式。可用的算法有:
- ‘bayer’
有序的 8x8 bayer 抖动(确定性)
- ‘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 Computer的Bill Atkinson开发的Atkinson抖动(误差扩散)
- ‘none’
禁用抖动。
默认值是sierra2_4a.
- bayer_scale
当bayer抖动被选中时,此选项定义了图案的比例(交叉影线图案的可见程度)。低值表示图案更明显但条带效应较少,高值表示图案较不明显但条带效应增加。
该选项的值必须是范围[0,5]内的整数。默认值是2.
- diff_mode
如果设置,定义需要处理的区域
- ‘rectangle’
只有变化的矩形将被重新处理。这类似于GIF裁剪/偏移压缩机制。如果只有图像的一部分发生变化,此选项可以加快速度,并适用于限制误差扩散范围的用例dither到限制移动场景的矩形框(如果场景变化不大,会导致更确定的输出,减少移动噪声并提高GIF压缩效率)。
默认值是none.
- new
为每个输出帧采用新的调色板。
- alpha_threshold
设置透明度的Alpha阈值。Alpha值高于该阈值将被视为完全不透明,低于该阈值的值将被视为完全透明。
该选项的值必须是范围[0,255]内的整数。默认值是128.
30.188.1 示例
- 使用调色板(例如通过palettegen生成的)对GIF进行编码
ffmpeg
:ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
30.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’.
30.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' 中选择。
30.190.1 命令
此滤镜支持上述所有选项作为命令.
30.191 光敏性
减少视频中各种闪光,从而帮助癫痫患者。
它接受以下选项:
- frames, f
设置用于过滤的帧数。默认值为30。
- threshold, t
设置检测阈值因子。默认值为1。 值越低越严格。
- skip
设置采样帧时跳过的像素数量。默认值为1。 允许范围是1到1024。
- bypass
保持帧不变。默认禁用。
30.192 pixdesctest
像素格式描述符测试滤镜,主要用于内部测试。 输出视频应与输入视频相同。
例如:
format=monow, pixdesctest
可用于测试monowhite像素格式描述符定义。
30.193 像素化
对视频流应用像素化。
该滤镜接受以下选项:
- width, w
- height, h
设置将用于像素化的块尺寸。 默认值为
16
.- mode, m
设置使用的像素化模式。
可能的值是:
- ‘avg’
- ‘min’
- ‘max’
默认值是
avg
.- planes, p
设置需要过滤的平面。默认设置为过滤所有平面。
30.193.1 命令
该滤镜支持所有选项作为命令.
30.194 像素范围
显示颜色通道中的样本值。主要用于检查颜色和级别。 支持的最低分辨率为640x480。
滤镜接受以下选项:
- x
设置范围的X位置,相对于X轴的偏移量。
- y
设置范围的Y位置,相对于Y轴的偏移量。
- w
设置范围的宽度。
- h
设置范围的高度。
- o
设置窗口不透明度。此窗口还包含像素区域的统计信息。
- wx
设置窗口的X位置,相对于X轴的偏移量。
- wy
设置窗口的Y位置,相对于Y轴的偏移量。
30.194.1 命令
此滤镜支持与选项相同的命令。 as options.
30.195 后处理
使用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
)
30.195.1 示例
- 应用水平和垂直去块、去振铃和自动亮度/对比度:
pp=hb/vb/dr/al
- 应用默认滤镜,不进行亮度/对比度校正:
pp=de/-al
- 应用默认滤镜和时间去噪器:
pp=default/tmpnoise|1|2|3
- 仅对亮度进行去块,将垂直去块的开启或关闭自动调整,
具体取决于可用的CPU时间:
pp=hb|y/vb|a
30.196 pp7
应用后处理滤镜7。它是一个spp滤镜的变体, 类似于spp=6,使用7点DCT,其中仅使用IDCT后的中心样本。
该滤镜接受以下选项:
- qp
强制使用一个常量量化参数。 接受的范围为0到63的整数。 如果未设置,滤镜将使用视频流中的QP(如果有)。
- mode
设置阈值模式。可用的模式包括:
- ‘hard’
设置硬阈值。
- ‘soft’
设置软阈值(更好的去振铃效果,但可能更模糊)。
- ‘medium’
设置中等阈值(效果良好,默认值)。
30.197 预乘
对输入视频流应用Alpha预乘效果, 使用第二个流的第一平面作为Alpha。
两个流必须具有相同的尺寸和像素格式。
滤镜接受以下选项:
- planes
设置将被处理的平面,未处理的平面将被复制。 默认值为0xf,表示处理所有平面。
- inplace
不需要第二个输入进行处理,改为使用输入流中的Alpha平面。
30.198 prewitt
对输入视频流应用Prewitt算子。
滤镜接受以下选项:
- planes
设置将被处理的平面,未处理的平面将被复制。 默认值为0xf,表示处理所有平面。
- scale
设置将与过滤结果相乘的值。
- delta
设置要添加到过滤结果中的值。
30.198.1 命令
此过滤器支持以上所有选项作为命令.
30.199 假彩色
使用假彩色更改视频中的帧颜色。
此过滤器接受以下选项:
- c0
设置像素第一分量表达式
- c1
设置像素第二分量表达式
- c2
设置像素第三分量表达式
- c3
设置像素第四分量表达式,对应Alpha分量
- index, i
设置用于修改颜色的基本分量
- preset, p
选择内置的LUT之一。默认设置为无。
可用的LUT:
- ‘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"。
30.199.1 命令
此过滤器支持以上所有选项作为命令.
30.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'"
30.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,过滤器将返回错误。
此过滤器也支持frame同步选项。
如果选中了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
每个通道的最大允许值,并平均所有通道。
30.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 -
30.201 pullup
下拉反转(反向电影化)过滤器,能够处理混合硬电影化、24000/1001 fps逐行扫描和30000/1001 fps逐行扫描内容。
pullup过滤器设计利用未来的上下文进行决策。此过滤器是无状态的,因为它不会锁定要遵循的模式,而是查找以下字段以识别匹配并重建逐行扫描帧。
为了生成具有均匀帧率的内容,请在pullup之后插入fps过滤器,使用fps=24000/1001
如果输入帧率是29.97fps,fps=24
对于30fps和(罕见的)电影化后的25fps输入。
过滤器接受以下选项:
- jl
- jr
- jt
- jb
这些选项分别设置忽略图像左侧、右侧、顶部和底部的"垃圾"的量。左侧和右侧单位为8像素,而顶部和底部单位为2行。 默认值是每侧8像素。
- sb
设置严格中断。将此选项设置为1将减少过滤器生成偶尔的不匹配帧的机会,但可能会导致高运动序列期间丢弃过多的帧。 相反,将其设置为-1将使过滤器更容易匹配字段。 这可能有助于处理字段之间稍有模糊的视频,但也可能导致输出中有交错的帧。 默认值为
0
.- mp
设置要使用的度量平面。接受以下值:
- ‘l’
使用亮度平面。
- ‘u’
使用蓝色染色平面。
- ‘v’
使用红色染色平面。
此选项可设置为使用染色平面而非默认亮度平面来进行过滤器的计算。这可能在非常干净的源材料上提高准确性,但更可能降低准确性,特别是如果存在染色噪声(彩虹效应)或任何灰度视频。 设置mp为染色平面的主要目的是减少CPU负载并使pullup在慢速机器上可实时使用。
为了提高结果(避免输出文件中重复的帧),需要更改输出的帧率。例如,进行NTSC输入的反向电影化:
ffmpeg -i input -vf pullup -r 24000/1001 ...
30.202 qp
更改视频量化参数(QP)。
过滤器接受以下选项:
- qp
设置量化参数的表达式。
通过eval API评估表达式,并可以包含以下常量等内容:
- 已知
如果索引不为129,则为1,否则为0。
- qp
从-129到128的连续指数。
30.202.1 示例
- 一些公式例如:
qp=2+2*sin(PI*qp)
30.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手册中。.
30.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
.
30.203.2 qrencode文本扩展
如果expansion被设置为none
,则文本按原样打印。
如果expansion被设置为normal
(默认值),以下扩展机制被使用。
反斜杠字符‘\’,后跟任何字符,总是扩展为第二个字符。
以下形式的序列%{...}
被扩展。括号中的文字是函数名,可能后接用“:”分隔的参数。
如果参数中包含特殊字符或分隔符(“:”或“}”),则需要进行转义。
注意它们可能还需要作为过滤器参数字符串中的值以及过滤图描述中的过滤器参数进行转义,可能还需要为shell转义,这最多可能需要四级转义;使用带有text选项的文本文件可以避免这些问题。textfile以下是可用的函数:
返回帧号
n, frame_num
返回当前帧的展示时间戳。
pts
可接受最多两个参数。
It can take up to two arguments.
第一个参数是时间戳的格式;默认值为
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
.过滤器生成的字符串元数据也可用于qrencode过滤器。
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}
30.204 quirc
使用libquirc库识别和解码QR码(参见https://github.com/dlbeer/quirc/),并将识别的QR码位置和载荷作为元数据打印。
要启用此过滤器的编译,需要将FFmpeg配置为--enable-libquirc
.
对于输入视频中找到的每个QR码,将使用前缀添加一些元数据条目lavfi.quirc.N,其中N是从0开始与QR码关联的索引。
以下是每个元数据值的描述:
- 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码的载荷
30.205 random
将视频帧从内部帧缓存中清除,按随机顺序播放。 没有帧会被丢弃。 灵感来源于frei0r神经过滤器。
- frames
设置内部缓存的帧数量大小,范围从
2
到512
。默认值是30
.- seed
为随机数生成器设置种子,必须为介于
0
和UINT32_MAX
之间的整数。如果未指定,或者明确设置为 小于0
,过滤器将尽力尝试使用一个好的随机种子。
30.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
在进一步处理之前对行进行低通滤波。默认情况下启用。
30.206.1 命令
此过滤器支持所有上述选项作为命令.
30.206.2 示例
- 输出一个csv,包括展示时间和识别出的EIA-608字幕数据的前两行。
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
30.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
.
30.207.1 示例
- 检测并将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'
30.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)“颜色”部分的ffmpeg-utils手册。默认颜色为
black
.
30.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
Bob模式,从邻近像素最接近的行插值出顶部场。
- 14
Bob模式,从邻近像素最接近的行插值出底部场。
- 15
Bob模式,插值出顶部场。与模式13类似,但有更复杂的插值公式。
- 16
Bob模式,插值出底部场。与模式14类似,但有更复杂的插值公式。
- 17
通过分别使用每对相对邻近像素的最大值和最小值对当前像素进行裁剪。
- 18
使用与当前像素最小最大距离的相对邻近像素进行对线敏感剪辑。
- 19
将像素替换为其8个邻近像素的平均值。
- 20
对9个像素进行平均([1 1 1]水平和垂直模糊)。
- 21
使用相对邻近像素的平均值对像素进行剪辑。
- 22
与模式21相同,但更简单更快。
- 23
小边缘和光晕移除,但被认为毫无用处。
- 24
类似于模式23。
30.210 removelogo
压制电视台标志,使用图像文件决定哪些像素组成标志。通过用邻近像素填充标志像素来工作。
过滤器接受以下选项:
- filename, f
设置过滤器位图文件,可以是libavformat支持的任意图像格式。图像文件的宽度和高度必须与正在处理的视频流匹配。
提供的位图图像中的像素值为零不被视为标志的一部分,非零像素视为标志的一部分。如果采用白色(255)表示标志和黑色(0)表示其他部分,则可以安全使用。制作过滤器位图建议对可见标志的黑帧进行屏幕截图,然后使用阈值过滤器,随后使用腐蚀过滤器一次或两次。
如果需要,可以手动修复小斑点。请记住,如果标志像素没有覆盖,过滤质量将会大大下降。标记过多像素为标志的一部分并不是什么大问题,但这会增加覆盖图像所需的模糊量,而且会破坏不必要的信息,额外的像素会减慢处理速度,尤其对于大标志。
30.211 repeatfields
该过滤器使用Video ES标头中的repeat_field标志,并根据其值硬性重复字段。
30.212 reverse
反转视频剪辑。
警告:此过滤器需要内存来缓冲整个剪辑,因此建议进行剪辑。
30.212.1 示例
- 截取剪辑的前5秒并反转。
trim=end=5,reverse
30.213 rgbashift
在水平和/或垂直方向上移动R/G/B/A像素。
过滤器接受以下选项:
- rh
设置红色水平偏移的量。
- rv
设置红色垂直偏移的量。
- gh
设置绿色水平偏移的量。
- gv
设置绿色垂直偏移的量。
- bh
设置蓝色水平偏移的量。
- bv
设置蓝色垂直偏移的量。
- ah
设置Alpha(透明度)水平偏移的量。
- av
设置Alpha(透明度)垂直偏移的量。
- edge
设置边界模式,可以是涂抹,默认,或扭曲.
30.213.1 命令
此滤镜支持以上所有选项作为命令.
30.214 罗伯茨
对输入视频流应用罗伯茨交叉算子。
滤镜接受以下选项:
- planes
设置将处理的平面,未处理的平面将被复制。默认值为0xf,所有平面都将被处理。
- scale
设置将与过滤结果相乘的值。
- delta
设置将添加到过滤结果的值。
30.214.1 命令
此滤镜支持以上所有选项作为命令.
30.215 旋转
按以弧度表示的任意角度旋转视频。
滤镜接受以下选项:
以下是可选参数的说明。
- angle, a
设置用于顺时针旋转输入视频弧度数的角度表达式。负值会导致逆时针旋转。默认值为“0”。
此表达式将对每帧进行评估。
- out_w, ow
设置输出宽度表达式,默认值为“iw”。此表达式在配置期间只评估一次。
- out_h, oh
设置输出高度表达式,默认值为“ih”。此表达式在配置期间只评估一次。
- bilinear
如果设置为1,则启用双线性插值,设置为0则禁用。默认值为1。
- fillcolor, c
设置用于填充旋转图像未覆盖的输出区域的颜色。有关此选项的一般语法,请查看(ffmpeg-utils)“颜色”部分,位于ffmpeg-utils手册中。如果选择特殊值“none”,则不打印背景(例如背景从未显示出来时非常有用)。
默认值为“黑色”。
角度和输出大小的表达式可以包含以下常量和函数:
- 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表达式时可用。
30.215.1 示例
- 顺时针旋转输入视频PI/6弧度:
rotate=PI/6
- 逆时针旋转输入视频PI/6弧度:
rotate=-PI/6
- 顺时针旋转输入视频45度:
rotate=45*PI/180
- 应用周期为T的恒定旋转,从PI/3角度开始:
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
30.215.2 命令
滤镜支持以下命令:
- a, angle
设置角度表达式。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
30.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范围内的值。
如果未明确指定每个色度选项值,则将其设置为对应的亮度选项值。
30.217 缩放
使用libswscale库缩放(调整大小)输入视频。
缩放滤镜迫使输出显示的纵横比与输入相同,方法是更改输出样本的纵横比。
如果输入图像格式与下一个滤镜请求的格式不同,则缩放滤镜将转换输入为请求的格式。
30.217.1 选项
滤镜接受以下选项以及libswscale缩放器支持的任何选项,以及任何帧同步选项。
请参阅(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)法规标题47(2003)第73.682条第(a)款的色彩空间。
- ‘bt601’
- ‘bt470’
- ‘smpte170m’
设置符合以下内容的色彩空间:
- 国际电信联盟无线电通信部门(ITU-R)建议BT.601
- ITU-R 推荐的BT.470-6(1998)系统B、B1和G
- 电影与电视工程协会(SMPTE)标准170:2004
- ‘smpte240m’
设置符合SMPTE标准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。
请注意,这与为w或h指定-1不同,您仍需指定输出分辨率以使此选项生效。
- force_divisible_by
确保在与force_original_aspect_ratio一起使用时,输出的宽度和高度都可被给定的整数整除。其工作方式类似于在
-n
中使用w和h选项。此选项遵守设置的force_original_aspect_ratio值,相应地增大或减小分辨率。视频的纵横比可能会稍微改变。
如果您需要视频拟合或超过使用force_original_aspect_ratio的定义分辨率,同时又有编码器关于宽度或高度可整除性的限制,这个选项会很有用。
以下是w和h选项的值表达式包含的常量:
- in_w
- in_h
输入宽度和高度
- iw
- ih
它们与in_w和in_h.
- 相同。
- out_h
输出(缩放后的)宽度和高度
- ow
- oh
它们与out_w和out_h
- 相同。
a与 / iw
- ih
输入样本纵横比
- dar
输入显示的纵横比。从
(iw / ih) * sar
.- hsub
- vsub
水平和垂直输入色度的子采样值。例如,对于像素格式“yuv422p”hsub为2,vsub为1。
- ohsub
- ovsub
水平和垂直输出色度的子采样值。例如,对于像素格式“yuv422p”hsub为2,vsub为1。
- n
输入帧的(顺序)编号,从0开始。 仅适用于
eval=frame
.- t
输入帧的呈现时间戳,以秒为单位。 仅适用于
eval=frame
.- pos
帧在输入流中的位置(字节偏移量),或如果此信息不可用或无意义(例如在合成视频的情况下)则为NaN。 仅适用于
eval=frame
。 已弃用,请勿使用。- 参考宽度,rw
- 参考高度,rh
- 参考区域
- 参考显示宽高比,rdar
- 参考数量
- 参考时间
- 参考位置
与上方相同,但用于第二个参考输入。如果存在这些变量之一,则此滤镜接受两个输入。
30.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'
- 通过组合缩放和设置像素宽高比来使像素呈正方形:
scale='trunc(ih*dar):ih',setsar=1/1
- 通过组合缩放和设置像素宽高比,同时确保最终分辨率为偶数(某些编解码器要求),使像素呈正方形:
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]
30.217.3 命令
此滤镜支持以下命令:
- width, w
- height, h
设置输出视频尺寸表达式。命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
30.218 scale_cuda
使用加速的CUDA内核对输入视频进行缩放(调整大小)和转换(像素格式)。设置输出宽度和高度的作用方式与scale滤镜相同。
滤镜接受以下选项:
- w
- h
设置输出视频尺寸表达式。默认值是输入尺寸。
允许使用与scale滤镜相同的表达式。
- interp_algo
设置用于缩放的算法:
- 最近邻
最近邻法
如果输入参数与所需输出匹配,则默认使用。
- 双线性法
双线性
- 双三次插值法
双三次插值
这是默认值。
- Lanczos法
兰索斯
- format
控制输出像素格式。如果未指定或默认值,则使用输入像素格式。
滤镜不支持YUV与RGB像素格式之间的转换。
- passthrough
如果设置为0,每帧都会被处理,即使不需要转换。这种模式可以用作缓冲区,以供下游过滤器消费者使用,它会耗尽有限的解码器帧池。
如果设置为1,如果帧符合所需输出参数,则会按原样传递。这是默认行为。
- param
算法特定参数。
影响双三次算法的曲线。
- force_original_aspect_ratio
- force_divisible_by
与相同的scale滤镜选项作用一致。
30.218.1 示例
- 将输入缩放到720p,保持宽高比并确保输出为yuv420p。
scale_cuda=-2:720:format=yuv420p
- 使用最近邻法将视频升级到4K。
scale_cuda=4096:2160:interp_algo=nearest
- 不进行任何转换或缩放,而是将所有输入帧复制到新分配的帧中。这对于处理一个滤镜和编码链可能用尽解码器帧池的情况可能有用。
scale_cuda=passthrough=0
30.219 scale_npp
使用NVIDIA性能原语(libnpp)对CUDA视频帧进行缩放和/或像素格式转换。设置输出宽度和高度的作用方式与scale滤镜相同。
接受以下附加选项:
- format
输出CUDA帧的像素格式。如果设置为字符串"same"(默认值),则保持输入格式。注意,硬件帧的自动格式协商和转换尚未支持。
- interp_algo
用于调整大小的插值算法。可选值如下:
- nn
最近邻法。
- linear
- cubic
- cubic2p_bspline
两参数双三次插值(B=1, C=0)
- cubic2p_catmullrom
两参数双三次插值(B=0, C=1/2)
- cubic2p_b05c03
两参数双三次插值(B=1/2, C=3/10)
- super
超采样
- lanczos
- force_original_aspect_ratio
如果需要则启用减少或增加输出视频宽度或高度以保持原始宽高比。可能值:
- ‘disable’
按指定方法缩放视频并禁用此功能。
- ‘decrease’
如果需要,输出视频宽度或高度会自动减少。
- ‘increase’
如果需要,输出视频宽度或高度会自动增加。
这个选项的一个有益实例是,当您知道某个设备允许的最大分辨率时,可以使用此功能限制输出视频,同时保留宽高比。例如,设备A允许1280x720播放,而您的视频是1920x800。使用此选项(设置为减少)并在命令行中指定1280x720,会使输出变为1280x533。
请注意,这与指定-1并不同,仍需为此选项指定输出分辨率才能起作用。w or h, you still need to specify the output resolution for this option to work.
- force_divisible_by
确保输出宽度和高度均可被指定整数整除,在与force_original_aspect_ratio一起使用时。
-n
类似于使用w和h选项。此选项遵循设置的force_original_aspect_ratio值,可能增加或减少分辨率。视频的宽高比可能会稍有修改。
此选项在您需要视频符合或超出定义的分辨率时很有用,用force_original_aspect_ratio但同时需满足编码器对宽度或高度可整除的限制。
- eval
指定何时评估宽度和高度表达式。接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时评估表达式。
- ‘frame’
每输入一帧都评估表达式。
用于w和h选项的值是包含以下常量的表达式:
- 输入宽度
- 输入高度
输入宽度和高度
- 输入宽度
- 输入高度
与输入宽度和输入高度.
- 输出宽度
- 输出高度
输出(缩放后)的宽度和高度
- 输出宽度
- 输出高度
与输出宽度和输出高度
- 宽高比
与输入宽度 / 输入高度
- 样本宽高比
输入样本宽高比
- 显示宽高比
输入显示宽高比。通过
(iw / ih) * sar
.- 序列号
输入帧的(连续)编号,从0开始。仅与
eval=frame
.- 时间戳
输入帧的显示时间戳,以秒为单位。仅与
eval=frame
.- 位置
帧在输入流中的_BYTE偏移位置,如果此信息不可用和/或无意义(例如在合成视频的情况下),则为NaN。仅与
eval=frame
过时,不建议使用。
30.220 scale2ref_npp
使用NVIDIA性能原语(libnpp)基于参考视频对输入视频进行缩放(调整大小)。
参见scale_npp滤镜以获取可用选项,scale2ref_npp支持相同选项,但基于参考视频而非主输入视频。scale2ref_npp还支持w和h选项的以下附加常量:
- 主宽度
- 主高度
主输入视频的宽度和高度
- 主宽高比
与主宽度 / 主高度
- 样本宽高比
主输入视频的样本宽高比
- 显示宽高比
主输入视频的显示宽高比。通过
(main_w / main_h) * main_sar
.- 主序列号
主输入帧的(连续)编号,从0开始。仅与
eval=frame
.- 主时间戳
主输入帧的显示时间戳,以秒为单位。仅与
eval=frame
.- 主位置
_BYTE偏移位置,主输入流的帧位置。如果此信息不可用和/或无意义(例如在合成视频情况下),则为NaN。仅与
eval=frame
.
30.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]
30.221 scale_vt
使用VTPixelTransferSession进行缩放并转换颜色参数。
过滤器接受以下选项:
- w
- h
设置输出视频尺寸表达式。默认值是输入尺寸。
- color_matrix
设置输出色彩空间矩阵。
- color_primaries
设置输出颜色基色。
- color_transfer
设置输出传输特性。
30.222 scharr
对输入视频流应用scharr运算符。
过滤器接受以下选项:
- planes
设置哪些平面将被处理,未处理的平面将被复制。默认值为0xf,所有平面都将被处理。
- scale
设置乘以已过滤结果的值。
- delta
设置添加到已过滤结果的值。
30.222.1 命令
此滤镜支持以上所有选项作为命令.
30.223 scroll
通过恒定速度水平或垂直滚动输入视频。
过滤器接受以下选项:
- horizontal, h
设置水平滚动速度。默认为0。允许范围从-1到1。负值改变滚动方向。
- vertical, v
设置垂直滚动速度。默认为0。允许范围从-1到1。负值改变滚动方向。
- hpos
设置初始水平滚动位置。默认为0。允许范围从0到1。
- vpos
设置初始垂直滚动位置。默认为0。允许范围从0到1。
30.223.1 命令
此滤镜支持以下命令:
- horizontal, h
设置水平滚动速度。
- vertical, v
设置垂直滚动速度。
30.224 scdet
检测视频场景变化。
此滤镜设置帧元数据,记录帧间的最大绝对帧差(mafd)、场景分数,并将帧传递到下一个滤镜,以利用这些元数据检测场景变化或其他情况。
此外,此滤镜在通过threshold.
lavfi.scd.mafd
检测到场景变化时会记录日志消息并设置帧元数据。
lavfi.scd.score
对于每一帧,元数据键值被设置为场景变化分数。
lavfi.scd.time
对于当前过滤帧时间,元数据键值将threshold.
通过
- threshold, t
以百分比设置场景改变检测阈值。不错的值在
[8.0, 14.0]
范围内。范围为threshold默认值是[0., 100.]
.Default value is
10.
.- sc_pass, s
设置标志以将场景改变帧传递到下一个滤镜。默认值为
0
如果仅想获取场景改变帧的快照,您可以启用此功能。
30.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]之间,分别用于调整其范围像素的青、品红、黄和黑的数量。
30.225.1 示例
- 在绿色区域中增加青色50%并减少黄色33%,同时在蓝色区域中增加品红27%:
selectivecolor=greens=.5 0 -.33 0:blues=0 .27
- 使用Photoshop选择性颜色预设:
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
30.226 separatefields
该separatefields
滤镜将基于帧的视频输入拆分为其组成字段,生成一个新高度减半但帧率和帧数翻倍的剪辑。
此滤镜使用帧中的字段优势信息来决定输出中每对字段中的哪个字段先放。如果结果有误,请使用setfield滤镜在separatefields
滤镜之前。
30.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。
30.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
30.228 setfield
强制输出视频帧的字段。
该setfield
滤镜为输出帧标记隔行类型字段。它不会更改输入帧,只设置相应的属性,这会影响后续滤镜对帧的处理方式(例如fieldorder
或yadif
).
)。
- mode
可用值为:
- ‘auto’
保持相同的字段属性。
- ‘bff’
将帧标记为下字段优先。
- ‘tff’
将帧标记为上字段优先。
- ‘prog’
将帧标记为渐进扫描。
30.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’
保持相同的颜色传递属性(默认)。
- ‘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’
30.230 sharpen_npp
使用NVIDIA性能原语(libnpp)进行图像锐化并控制边框。
接受以下附加选项:
- border_type
帧边界使用的采样类型。以下之一:
- replicate
复制像素值。
30.231 shear
对输入视频应用剪切变换。
此滤镜支持以下选项:
- shx
X方向的剪切因子。默认值是0。 允许范围从-2到2。
- shy
Y方向的剪切因子。默认值是0。 允许范围从-2到2。
- fillcolor, c
设置用于填充未被变换视频覆盖的输出区域的颜色。有关此选项的通用语法,请检查(ffmpeg-utils)"Color"章节在ffmpeg-utils手册中。 如果选择了特殊值"none",则不会打印背景(例如,如果背景从未显示过,这很有用)。
默认值是"black"。
- interp
设置插值类型。可以是
bilinear
或nearest
。默认是bilinear
.
30.231.1 命令
此滤镜支持以上所有选项作为命令.
30.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
中定义的枚举和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]".
30.233 showpalette
显示每帧的256色调色板。此滤镜仅与pal8像素格式帧相关。
它接受以下选项:
- s
设置用于表示一个调色板颜色条目的框的大小。默认是
30
(对于一个30x30
像素的框)。
30.234 shuffleframes
重新排序和/或复制和/或丢弃视频帧。
它接受以下参数:
- mapping
设置输入帧的目标索引。 这是一个用空格或'|'分隔的索引列表,用于将输入帧映射到输出帧。索引数量也设置了每个索引可能的最大值。 '-1'索引具有特殊含义,即丢弃帧。
第一帧的索引为0。默认情况下保持输入不变。
30.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
30.235 shufflepixels
重新排序视频帧中的像素。
此滤镜接受以下选项:
- direction, d
设置混洗方向。可以是正向或反向。 默认方向为正向。
- mode, m
设置混洗模式。可以是水平、垂直或块模式。
- width, w
- height, h
设置混洗块大小。在水平混洗模式下,仅使用宽度部分大小;在垂直混洗模式下,仅使用高度部分大小。
- seed, s
设置用于混洗像素的随机种子。主要用于能够反转过滤过程以获得原始输入。 例如,要反转正向混洗需要使用相同的参数和完全相同的种子,并将方向设置为反向。
30.236 shuffleplanes
重新排序和/或复制视频平面。
它接受以下参数:
- map0
用作第一输出平面的输入平面的索引。
- map1
用作第二输出平面的输入平面的索引。
- map2
用作第三输出平面的输入平面的索引。
- map3
用作第四输出平面的输入平面的索引。
第一平面的索引为0。默认情况下保持输入不变。
30.236.1 示例
- 交换输入的第二和平面的第三平面:
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
30.237 signalstats
评估各种视觉指标,帮助确定与模拟视频媒体数字化相关的问题。
默认情况下,滤镜将记录以下元数据值:
- YMIN
显示输入帧中包含的最小Y值。范围为[0-255]。
- YLOW
显示输入帧中Y值在10%百分位处的值。范围为[0-255]。
- YAVG
显示输入帧中的平均Y值。范围为[0-255]。
- YHIGH
显示输入帧中Y值在90%百分位处的值。范围为[0-255]。
- YMAX
显示输入帧中包含的最大Y值。范围为[0-255]。
- UMIN
显示输入帧中包含的最小U值。范围为[0-255]。
- ULOW
显示输入帧中U值在10%百分位处的值。范围为[0-255]。
- UAVG
显示输入帧中的平均U值。范围为[0-255]。
- UHIGH
显示输入帧中U值在90%百分位处的值。范围为[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选项的高亮颜色。默认颜色为黄色。
30.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"
- 播放视频并在视频帧上显示 signalstats 元数据。
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}
30.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。
30.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 -
30.239 空间时域信息
按照 ITU-T Rec. P.910 (11/21) 的定义计算视频的空间信息 (SI) 和时间信息 (TI) 分数:用于多媒体应用的主观视频质量评估方法。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。
30.239.1 示例
- 计算 SI/TI 指标并打印总结:
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
30.240 智能模糊
模糊输入视频的同时不影响轮廓线。
它接受以下选项:
- 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
设置透明度半径。选项值必须是范围 [0.1,5.0] 的浮点数,指定用于模糊图像的高斯滤波器的方差(越大速度越慢)。默认值为luma_radius.
- alpha_strength, as
设置透明度强度。选项值必须是范围 [-1.0,1.0] 的浮点数,用于配置模糊。值范围 [0.0,1.0] 将模糊图像,而值范围 [-1.0,0.0] 将锐化图像。默认值为luma_strength.
- alpha_threshold, at
设置用于系数判断像素是否应该被模糊的透明度阈值。选项值必须是范围 [-30,30] 的整数。值为 0 将过滤整个图像,范围 [0,30] 的值将过滤平坦区域,范围 [-30,0] 的值将过滤边缘。默认值为luma_threshold.
如果未显式设置色度或透明度选项,则相应的亮度值将被设置。
30.241 索贝尔
对输入视频流应用索贝尔算子。
过滤器接受以下选项:
- planes
设置将处理的平面,未处理的平面将被复制。默认值为 0xf,所有平面将被处理。
- scale
设置将与过滤结果相乘的值。
- delta
设置将添加到过滤结果的值。
30.241.1 命令
此过滤器支持以上所有选项作为命令.
30.242 spp
应用一个简单的后处理过滤器,该过滤器在几个(或 - 在quality级别6
- 所有)位移处压缩和解压图像并平均结果。
过滤器接受以下选项:
- quality
设置质量。此选项定义平均的级别数量。它接受范围 0-6 的整数。如果设置为
0
,过滤器将无效果。值6
表示更高的质量。每增加这一值,速度下降约为两倍。默认值为3
.- qp
强制恒定量化参数。如果未设置,过滤器将使用视频流中的 QP(如果可用)。
- mode
设置阈值模式。可用的模式是:
- ‘hard’
设置硬阈值(默认)。
- ‘soft’
设置软阈值(更好的去环效果,但可能会更模糊)。
- use_bframe_qp
如果设置为
1
使 B 帧的 QP 可用。使用此选项可能会导致闪烁,因为 B 帧通常具有较大的 QP。默认值为0
(未启用)。
30.242.1 命令
此过滤器支持以下命令:
- quality, level
设置质量级别。值
max
可用于设置最大级别,目前6
.
30.243 超分辨率
通过应用基于卷积神经网络的超分辨率方法缩放输入。支持的模型:
- 超分辨率卷积神经网络模型(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过滤器。
30.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选项。
30.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 -
30.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’.
30.245.1 示例
- 将输入视频从左右并排平行转换为黄色/蓝色 Dubois 立体图:
stereo3d=sbsl:aybd
- 将输入视频从上下(左眼在上,右眼在下)格式转换为左右并排交叉眼格式。
stereo3d=abl:sbsr
30.246 streamselect,astreamselect
选择视频或音频流。
过滤器接受以下选项:
- inputs
设置输入数量。默认值为2。
- map
设置输入索引以映射到输出。
30.246.1 命令
The streamselect
和astreamselect
过滤器支持以下命令:
- map
设置输入索引以映射到输出。
30.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
30.247 字幕
使用 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。
如果第一个键未指定,假定第一个值filename.
例如,要将文件sub.srt渲染到输入视频顶部,请使用以下命令:
subtitles=sub.srt
与以下命令等效:
subtitles=filename=sub.srt
要从文件渲染默认字幕流video.mkv,请使用以下命令:
subtitles=video.mkv
要渲染文件中的第二个字幕流,请使用:
subtitles=video.mkv:si=1
要使文件中的字幕流sub.srt显示为 80% 透明度蓝色DejaVu Serif
,请使用:
subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
30.248 super2xsai
通过“Super2xSaI(缩放和插值)”像素艺术缩放算法将输入缩放为 2 倍,并进行平滑。
对于放大像素艺术图像且不降低清晰度的操作非常有用。
30.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;已废弃,请勿使用。
30.249.1 命令
此过滤器支持上述选项作为命令.
30.250 swapuv
交换 U 和 V 平面。
30.251 tblend
混合连续的视频帧。
参见混合
30.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
30.253 thistogram
计算并绘制输入视频随时间变化的颜色分布直方图。
与直方图视频过滤器不同,它仅显示特定时间点的单一输入帧的直方图,此过滤器还显示由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
.
30.254 阈值
将阈值效果应用于视频流。
此滤镜需要四个视频流以执行阈值处理。 第一个流是我们正在过滤的流。 第二个流包含阈值,第三个流包含最小值, 最后一个,第四个流包含最大值。
滤镜接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被复制。 默认值0xf,所有平面都将被处理。
例如,如果第一个流像素组件的值小于第二个阈值流像素组件的阈值, 将选择第三个流的值,否则将选择第四个流像素组件的值。
使用颜色源滤镜可以执行各种类型的阈值处理:
30.254.1 命令
此滤镜支持以下选项以及命令.
30.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
30.255 缩略图
选择给定连续帧序列中最具代表性的帧。
滤镜接受以下选项:
- n
设置需要分析的帧批量大小;在一个批量中n帧,滤镜会从其中挑选一帧,接着处理下一批n帧直到结束。默认值为
100
.- log
设置日志级别以显示选定帧的统计信息。 默认值为
info
.
由于滤镜会跟踪整个帧序列,较大n值将导致更高的内存使用,因此不推荐设置高值。
30.255.1 示例
- 每50帧提取一张图片:
thumbnail=50
- 一个包含完整示例的缩略图创建案例
ffmpeg
:ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
30.256 拼接
将多个连续帧拼接在一起。
滤镜取消拼接可以进行反向操作。
滤镜接受以下选项:
- layout
设置网格大小,格式为
COLUMNSxROWS
。范围是最多 UINT_MAX 单元。 默认值为6x5
.- nb_frames
设置在给定区域内要渲染的帧的最大数量。必须小于或等于wxh。默认值为
0
,表示将使用整个区域。- margin
设置外部边框的像素宽度。范围为0到1024。默认值为
0
.- padding
设置内边框厚度(即帧之间的像素数量)。 有关更高级的填充选项(例如为边设置不同的值),请参考pad视频滤镜。 范围为0到1024。默认值为
0
.- color
指定未使用区域的颜色。有关此选项的语法,请检查(ffmpeg-utils)“颜色”部分中的ffmpeg-utils手册。 默认值为颜色是“黑色”。
- overlap
设置拼接多个连续帧时重叠的帧数量。 该值必须介于
0
和nb_frames - 1之间。默认值为0
.- init_padding
设置最初空白的帧数量,之后显示第一个输出帧。 这控制了多久能获取第一个输出帧。 该值必须介于
0
和nb_frames - 1之间。默认值为0
.
30.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
帧, 间距为7
像素,且初始边距为2
像素,使用混合简单和命名选项:tile=3x2:nb_frames=5:padding=7:margin=2
30.257 倾斜和移位
应用倾斜和移位效果。
当你反转时间和空间会发生什么?
通常视频由一些帧组成,每个帧代表时间的一个瞬间,并显示捕获场景的空间的一个演变。这个滤镜是这个概念的对立面,取材于倾斜与移位摄影。
过滤后的帧包含组成序列的整个时间线事件,这是通过将每帧的一部分像素放入一个帧中完成的。然而,由于没有无限宽度的帧,这只能做到输入帧的宽度范围,并通过移位来重新组成一个视频。为了映射空间到时间,滤镜也倾斜每个输入帧,使得运动得以保留。这是通过逐步选择每帧的不同列来完成的。
最终结果是一种反向视差,因此远处的物体移动远比前景物体快。适合这种视频效果的理想条件是要么移动非常少并且背景是静止的,要么运动相当多并且景深非常宽(例如从火车上观看宽广的全景)。
滤镜接受以下参数:
- tilt
在移位同时倾斜视频(默认)。如果未设置,视频将滑动一个静图片,构成第一个帧的列。
- start
过滤开始时的行为(请参见下文)。
- end
过滤结束时的行为(请参见下文)。
- hold
过滤开始前通过的列数。
- pad
过滤结束前插入的列数。
通常滤镜从第一帧开始移位和倾斜,当最后帧接收到时停止。然而,在过滤开始前普通视频可以被保留,以便效果逐渐位于它的位置。同样,最后视频帧可以在末尾重建。或者可以选择一开始和结束都用黑色填充。
- ‘none’
过滤立即开始并在接收最后帧时结束。
- ‘frame’
过滤过程中保留头几帧或最后帧。
- ‘black’
在过滤开始或结束时用黑色填充。
30.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’
双倍帧率,高度不变。插入的帧包含前一个输入帧的第二个临时场与下一个输入帧的第一个临时场。此模式依赖于上场先标志。对于无场同步的隔行视频显示非常有用。
------> 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
指定影响滤镜处理的标志。
标志的可用值为: is:
- low_pass_filter, vlpf
启用线性垂直低通滤波器。 当需要将包含高频垂直详细信息的渐进源创建为隔行目标时,需要垂直低通滤波器。 滤波器将会减少隔行‘闪烁’和莫尔图案化。
- complex_filter, cvlpf
启用复杂垂直低通滤波器。 这将稍微减少隔行‘闪烁’和莫尔图案化,但能更好地保留细节和主观清晰度印象。
- bypass_il
跳过已经是隔行的帧,只调整帧率。
垂直低通滤波器和跳过已经隔行的帧仅能用于mode interleave_top和interleave_bottom.
30.259 时间中值
从多帧连续输入视频中选择中值像素。
滤镜接受以下选项:
- radius
设置中值滤波器的半径。 默认值为 1。允许范围为 1 到 127。
- planes
设置要过滤的平面。默认值为
15
,由此处理所有平面。- percentile
设置中值百分比。默认值为
0.5
。 默认值0.5
将始终选择中值值,而0
将选择最小值,1
最大值。
30.259.1 命令
此滤镜支持以上所有选项作为命令,排除选项radius
.
30.260 时间均衡器
应用时间中间视频均衡化效果。
中间视频均衡化调整视频帧序列以具有相同的直方图,同时尽可能保持其动态。 它对于例如匹配视频帧序列中的曝光非常有用。
此滤镜接受以下选项:
- radius
设置滤波半径。默认值为
5
。允许范围为 1 到 127。- sigma
设置滤波Sigma值。默认值为
0.5
。这控制了滤波强度。 设置此选项为0实际上不起作用。- planes
设置要处理的平面。默认值为
15
,即所有可用平面。
30.261 混合
混合连续视频帧。
以下是接受的选项描述。
- frames
要混合的连续帧数量。如果未指定,默认值为 3。
- weights
指定每个输入视频帧的权重值。 每个权重由空格分隔。如果权重数量小于帧最后指定的权重将用于所有未设置的权重。
- scale
指定缩放值,设置后它将与所有权重的总和相乘 并与像素值相乘以创建最终目标像素值。默认值scale会自动按权重总和缩放。
- planes
设置哪几个平面进行过滤。默认值为所有。允许范围为 0 到 15。
30.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
30.261.2 命令
此过滤器支持以下命令:
- weights
- scale
- planes
语法与同名选项相同。
30.262 色调映射
将不同动态范围的颜色映射到显示色彩。
此过滤器需要单精度浮点数格式的数据,因为它需要操作(并可能输出)超出范围的值。您需要通过其他过滤器,比如zscale,将结果帧转换为可用格式。
实现的色调映射算法仅适用于线性光,因此输入数据应事先线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
30.262.1 选项
过滤器接受以下选项。
- tonemap
设置要使用的色调映射算法。
可能的值是:
- none
不应用任何色调映射,仅对过亮像素去饱和处理。
- clip
对超范围的值进行硬裁剪。用于保证范围内值的颜色准确性,尽管会失真超范围值。
- linear
将整个参考色域拉伸为显示器的线性倍数。
- gamma
在色调曲线间适配对数传递。
- reinhard
通过简单曲线保留整体图像亮度,使用非线性对比度,结果是细节会被抹平,颜色准确性会退化。
- hable
相比reinhard更好地保留黑暗和高亮细节,但稍微让整体画面变暗。适用于细节保留比颜色和亮度准确性更重要的场合。
- mobius
平稳地映射超范围值,同时尽可能保留范围内材料的对比度和颜色。适合在颜色准确性比细节保留更加重要时使用。
默认值为 none。
- param
调整色调映射算法。
此选项影响以下算法:
- none
忽略。
- linear
指定拉伸时使用的缩放因子。默认值为 1.0。
- gamma
指定函数的指数。默认值为 1.8。
- clip
指定在裁剪之前应用于信号的额外线性系数。默认值为 1.0。
- reinhard
指定在显示亮度峰值下的局部对比度系数。默认值为 0.5,这意味着范围内值的亮度约为裁剪时的一半。
- hable
忽略。
- mobius
指定从线性到莫比乌斯变换的过渡点。低于此点的每个值都保证被 1:1 映射。值越高,结果越精确,但亮部细节损失越大。默认值为 0.3,由于初始斜率陡峭,它仍然能相当准确地保留范围内的颜色。
- desat
将超过此亮度水平的高光应用去饱和处理。参数值越高,保留的颜色信息越多。此设置可以防止高光中不自然的失真,通过(平滑地)转化为白色,使图像看起来更加自然,但代价是减少了超出范围颜色的信息。
默认值为 2.0,这比较保守,通常仅适用于天空或直接日照的表面。设置为 0.0 将禁用此选项。
此选项仅在输入帧具有支持的颜色标记时工作。
- peak
覆盖信号/标称/参考峰值为此值。当显示元数据中嵌入的峰值信息不可靠或从较低范围映射到较高范围时,此选项很有用。
30.263 tpad
为视频帧临时添加边距。
过滤器接受以下选项:
- start
指定输入视频流之前的延迟帧数。默认值为 0。
- stop
指定在输入视频流之后填充的帧数。设置为 -1 表示无限填充。默认值为 0。
- start_mode
设置添加到流开头的帧类型。可选值为add或clone。使用add,会添加纯色帧;使用clone,会使用第一个帧的克隆帧。默认值为add.
- stop_mode
设置添加到流末尾的帧类型。可选值为add或clone。使用add,会添加纯色帧;使用clone,会使用最后一个帧的克隆帧。默认值为add.
- start_duration, stop_duration
指定开始/停止延迟的持续时间。请参阅ffmpeg-utils 中的时间持续时间部分了解接受的语法格式。这些选项会覆盖start和stop。默认值为 0。
- color
指定填充区域的颜色。有关此选项的语法,请检查ffmpeg-utils 手册中的“Color”部分.
color的默认值为“black”。 is "black".
30.264 transpose
交换输入视频的行与列,并可选择翻转。
它接受以下参数:
- 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’
保留纵向几何(当height >= 宽度).
- ‘landscape’
保留横向几何(当宽度 >= 高度).
默认值为
none
.
例如,顺时针旋转 90 度并保留纵向布局:
transpose=dir=1:passthrough=portrait
上述命令也可如以下形式指定:
transpose=1:portrait
30.265 transpose_npp
交换输入视频的行与列,并可选择翻转。有关更详细的示例,请参阅共享大部分相同选项的transpose视频过滤器。
它接受以下参数:
- dir
指定转置方向。
可以采用以下值:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- passthrough
如果输入几何与指定值匹配,则不应用转置。它接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保留纵向几何(当高度 >= 宽度).
- ‘landscape’
保留横向几何(当宽度 >= 高度).
30.266 trim
剪切输入视频,仅包含输入的连续子部分。
它接受以下参数:
- start
指定保留部分的起始时间戳,即时间为start的帧将成为输出的第一帧。
- end
指定将丢弃的第一帧的时间戳,即紧接着时间戳为end的帧之前的帧将是输出的最后一帧。
- start_pts
这与start相同,只是此选项以时间基单位而非秒设置起始时间戳。
- end_pts
这与end相同,只是此选项以时间基单位而非秒设置结束时间戳。
- duration
输出视频的最大持续时间(单位为秒)。
- start_frame
应传递到输出的第一帧编号。
- end_frame
应丢弃的第一帧编号。
start, end和duration是以时间持续时间指定;请参阅ffmpeg-utils 手册中的时间持续时间部分了解接受的语法。
请注意,前三组起始/结束选项以及duration选项会查看帧时间戳,而 _frame 变体选项仅计数通过过滤器的帧。此外,请注意此过滤器不会修改时间戳。如果您希望输出时间戳从零开始,请在 trim 过滤器之后插入 setpts 过滤器。
如果设置了多个起始或结束选项,此过滤器会尽可能保留匹配至少一个指定约束的所有帧。要仅保留同时匹配所有约束的部分,请链接多个 trim 过滤器。
默认情况下保留所有输入。所以仅设置例如结束值即可保留指定时间之前的所有内容。
示例:
- 仅保留第二分钟的输入内容,其余丢弃:
ffmpeg -i INPUT -vf trim=60:120
- 仅保留第一秒:
ffmpeg -i INPUT -vf trim=duration=1
30.267 unpremultiply
对输入视频流应用 alpha 解预乘效果,使用第二流的第一个平面作为 alpha。
两个流必须具有相同的尺寸和像素格式。
过滤器接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。默认值为 0xf,表示将处理所有平面。
如果格式有 1 或 2 个分量,那么亮度在第 0 位。若格式有 3 或 4 个分量:对于 RGB 格式,第 0 位是绿色,第 1 位是蓝色,第 2 位是红色;对于 YUV 格式,第 0 位是亮度,第 1 位是色度-U,第 2 位是色度-V。如果有 alpha 通道,它始终是最后一位。
- inplace
无需第 2 输入进行处理,而是使用输入流的 alpha 平面。
30.268 unsharp
对输入视频进行锐化或模糊处理。
它接受以下参数:
- 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'。
30.268.1 示例
- 应用强的亮度锐化效果:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
- 对亮度和色度参数同时应用强模糊:
unsharp=7:7:-2:7:7:-2
30.269 untile
将由平铺图像组成的视频分解为各个独立的图像。
输出视频的帧率为输入视频的帧率乘以瓦片数。
此滤镜的功能与之相反平铺.
该滤镜接受以下选项:
- layout
设置网格大小(即行数和列数)。有关此选项的语法,请检查在ffmpeg-utils手册的“视频尺寸”部分.
30.269.1 示例
- 从包含25帧垂直堆叠的静止图像文件生成1秒的视频,类似于模拟胶卷:
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
30.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。
30.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’
等角立方图。
- ‘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’
潘尼尼投影。
特定格式选项:
- h_fov
设置输出潘尼尼参数。
- ih_fov
设置输入潘尼尼参数。
- ‘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’
兰佐斯插值。
- ‘sp16’
- ‘spline16’
样条16插值。
- ‘gauss’
- ‘gaussian’
高斯插值。
- ‘mitchell’
米切尔插值。
默认值为‘line’.
- w
- h
设置输出视频分辨率。
默认分辨率取决于格式。
- in_stereo
- out_stereo
设置输入/输出立体格式。
- ‘2d’
2D单声道
- ‘sbs’
左右并列
- ‘tb’
上下格式
默认值为‘2d’的输入和输出格式。
- yaw
- pitch
- roll
为输出视频设置旋转角度。单位为度。
- rorder
设置输出视频的旋转顺序。为每个位置选择一项。
- ‘y, Y’
偏航
- ‘p, P’
俯仰
- ‘r, R’
滚转
默认值为‘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
重置输出视频的旋转。布尔值,默认禁用。
30.271.1 示例
- 使用双三次插值将等矩形视频转换为具有3x2布局和1%填充的立方图:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
- 提取等角立方图的后方视图:
ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
- 将转置和水平翻转的等角立方图以左右并行立体格式转换为等矩形上下立体格式:
v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
30.271.2 命令
此滤镜支持上述选项子集作为命令.
30.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
要处理的 planes 列表。默认情况下处理所有planes。
- type
过滤器将使用的阈值类型。
它接受以下值:
- ‘universal’
所用阈值对所有分解相同。
- ‘bayes’
所用阈值也取决于每次分解的系数。
默认值为universal。
30.273 varblur
通过使用第二个视频流设置模糊半径,应用可变模糊滤镜。 第二个流的尺寸必须相同。
该滤镜接受以下选项:
- min_r
设置允许的最小半径。允许范围为0到254。默认值为0。
- max_r
设置允许的最大半径。允许范围为1到255。默认值为8。
- planes
设置要处理的planes。默认情况下,处理所有planes。
该varblur
滤镜还支持framesync选项。
30.273.1 命令
此滤镜支持上述所有选项作为命令.
30.274 vectorscope
在二维图表(称为矢量示波器)中显示2个颜色分量的值。
该滤镜接受以下选项:
- mode, m
设置矢量示波器模式。
它接受以下值:
- ‘gray’
- ‘tint’
灰度值显示在图表上,更高亮度表示具有相同颜色分量值的像素在图表位置上更多。这是默认模式。
- ‘color’
灰度值显示在图表上。不在视频帧中显示的周围像素值以由“2个颜色分量”定义的渐变绘制。 第3个颜色分量是静态的。
x
andy
. The 3rd color component is static.- ‘color2’
视频帧中实际颜色分量值显示在图表上。
- ‘color3’
类似color2,但相同值在图表上的更高频率会增加另一个颜色分量的值,默认由“亮度”决定。
x
andy
on graph increases value of another color component, which is luminance by default values ofx
andy
.- ‘color4’
视频帧中实际颜色显示在图表上。如果2个不同颜色映射到图表上的相同位置,则选择颜色分量值较高的第3个颜色。
- ‘color5’
灰度值显示在图表上。类似color3,但第3个颜色分量取自径向渐变。
color
but with 3rd color component picked from radial gradient.
- x
设置哪个颜色分量将在X轴上表示。默认值为
1
.- y
设置哪个颜色分量将在Y轴上显示。默认值是
2
.- intensity, i
设置强度,适用于模式:gray、color、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
为灰色/色调矢量示波器模式设置色彩色调。默认情况下两个选项均为零。这意味着没有色调,输出将保持灰色。
30.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%左右)
30.275.1 示例
- 使用默认值:
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
30.276 vidstabtransform
视频稳定/防抖动:第2步,共2步, 详见vidstabdetect执行第1步。
读取文件中每帧的变换信息并进行应用/补偿。 结合vidstabdetect过滤器,可以用于校正抖动视频。详见http://public.hronopik.de/vid.stab。同样重要的是还需 使用unsharp滤镜,详见下文。
要启用此滤镜的编译,您需使用以下配置设置FFmpeg--enable-libvidstab
.
30.276.1 选项
- 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
option of vidstabdetect.- debug
如果设置为1,则增加日志详细程度。同时检测到的全局运动将写入临时文件global_motions.trf。默认值是0。
30.276.2 示例
- 使用
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
30.277 vflip
垂直翻转输入视频。
例如,使用以下方式垂直翻转一个视频ffmpeg
:
ffmpeg -i in.avi -vf "vflip" out.avi
30.278 vfrdet
检测可变帧率视频。
此过滤器尝试检测输入是否为可变或恒定帧率。
最后输出检测到的可变delta pts帧和恒定delta pts帧的数量。 如果存在可变delta帧,还会显示遇到的最小、最大和平均delta。
30.279 vibrance
增强或改变饱和度。
该滤镜接受以下选项:
- intensity
设置增强的强度(正值)或改变的强度(负值)。 默认值是0。允许范围是-2到2。
- rbal
设置红色平衡。默认值是1。允许范围是-10到10。
- gbal
设置绿色平衡。默认值是1。允许范围是-10到10。
- bbal
设置蓝色平衡。默认值是1。允许范围是-10到10。
- rlum
设置红色亮度系数。
- glum
设置绿色亮度系数。
- blum
设置蓝色亮度系数。
- alternate
如果
intensity
为负值并且设置为1,则颜色会改变, 否则颜色会变得不那么饱和,更接近灰色。
30.279.1 命令
该滤镜支持上述所有选项作为命令.
30.280 vif
获取两个输入视频之间的平均VIF(视觉信息保真度)。
此滤镜接受两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式才能使此筛选器正常运行。还假设两个输入具有相同数量的帧,并逐帧比较。
获取的平均VIF分数通过日志记录系统打印出来。
该滤镜存储每帧的计算VIF分数。
此过滤器还支持framesync选项。
在以下示例中,输入文件main.mpg正在处理并与参考文件ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
30.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
.
30.281.1 表达式
表达式alpha, x0和y0可以包含以下参数。
- w
- h
输入宽度和高度
- n
输入帧的编号,从0开始
- pts
过滤后的视频帧的PTS(显示时间戳)时间,以时间基单位显示,未定义时为NAN
- r
输入视频的帧率,若未知则为NAN
- t
过滤后的视频帧的PTS(显示时间戳), 以秒为单位显示,未定义时为NAN
- tb
输入视频的时间基础
30.281.2 示例
- 应用简单的强烈晕影效果:
vignette=PI/4
- 制作闪烁的晕影:
vignette='PI/4+random(1)*PI/50':eval=frame
30.282 vmafmotion
获取一个视频的平均VMAF运动分数。 这是VMAF的组成度量之一。
获取的平均运动分数通过日志记录系统输出。
该滤镜接受以下选项:
- stats_file
如果指定,过滤器将使用指定的文件保存每帧与上一帧的运动分数。 当文件名等于"-"时,数据发送到标准输出。
示例:
ffmpeg -i ref.mpg -vf vmafmotion -f null -
30.283 垂直堆叠
将输入视频垂直堆叠。
所有流必须具有相同的像素格式和相同的宽度。
此滤镜接受以下选项:
- inputs
设置输入流数量。默认值为2。
- shortest
如果设置为1,则在最短输入终止时强制输出终止。 默认值为0。
30.284 w3fdif
对输入视频进行去隔行("w3fdif"代表"Weston三场去隔行滤镜")。
基于BBC R&D中描述的Martin Weston方法,并 根据Jim Easterbrook为BBC R&D编写的去隔行算法实施, Weston三场去隔行滤镜使用由BBC R&D计算的滤镜系数。
此滤镜使用框架中的场优势信息来决定
每对场中的哪一个放在输出中的第一位置。
如果出错,请使用设定场字段滤镜,在w3fdif
滤镜之前。
有两组滤镜系数,称为"简单" 和"复杂"。使用哪个滤镜系数集可通过提供可选参数来设置:
- filter
设置去隔行滤镜系数。接受以下值之一:
- ‘simple’
简单滤镜系数集。
- ‘complex’
复杂滤镜系数集。
默认值为‘complex’.
- mode
设置采用的去隔行模式。接受以下值之一:
- frame
每帧输出一帧。
- field
每场输出一帧。
默认值为
field
.- parity
输入隔行视频的画面场优先权假设。接受以下值之一:
- tff
假设顶部场优先。
- bff
假设底部场优先。
- auto
启用场优先的自动检测。
默认值为
auto
。 如果隔行未知或解码器未导出此信息, 将假设顶部场优先。- deint
指定去隔行的帧。接受以下值之一:
- ‘all’
去隔行所有帧,
- ‘interlaced’
仅对标记为隔行的帧去隔行。
默认值为‘all’.
30.284.1 命令
此滤镜支持与选项相同的命令。命令。
30.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’.
30.286 编织,双编织
将weave
场输入的视频中的每两个连续字段合并
为一个帧,生成一个双高度剪辑,具有一半的帧率和帧数。
与doubleweave
类似,但帧率和帧数不减半。weave
but without
halving frame rate and frame count.
它接受以下选项:
- first_field
设置第一个字段。可用值为:
- ‘top, t’
设置框架为顶部场优先。
- ‘bottom, b’
设置框架为底部场优优先。
30.286.1 例子
- 使用选择并分离字段滤镜生成隔行视频: filter:
separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
30.287 xbr
应用设计用于像素艺术的xBR高质量放大滤镜。它遵循一组边缘检测规则,详见https://forums.libretro.com/t/xbr-algorithm-tutorial/123.
它接受以下选项:
- n
设置缩放维度:
2
为2xBR
,3
为3xBR
和4
为4xBR
。 默认值为3
.
30.288 xcorrelate
在第一和第二输入视频流之间应用归一化交叉相关。
第二输入视频流的尺寸必须小于第一输入视频流。
该滤镜接受以下选项:
- planes
设置要处理的平面。
- secondary
设置将处理第二输入视频流的哪个次要视频帧, 可以是第一个或全部。默认值为全部。.
The xcorrelate
滤镜还支持帧同步选项。
30.289 xfade
在一个输入视频流和另一个输入视频流之间应用交叉淡入效果。 交叉淡入效果在指定的持续时间内应用。
两个输入必须是恒定帧率,并且具有相同的分辨率、像素格式、帧率和时间基准。
该滤镜接受以下选项:
- 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)的第一个/第二个/第三个/第四个分量的值,第二个输入的。
30.289.1 例子
- 从一个输入视频淡入另一个输入视频,使用淡入过渡效果,持续时间为2秒,
从偏移量为5秒开始:
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
30.290 xmedian
从多个输入视频中选取中值像素。
该滤镜接受以下选项:
- inputs
设置输入的数量。 默认值为3。允许范围为3到255。 如果输入数量为偶数,则结果将在两个中值之间取均值。
- planes
设置要过滤的平面。默认值为
15
,即处理所有平面。- percentile
设置中值百分位数。默认值为
0.5
。 默认值0.5
将始终选择中值, 而0
将选择最小值,1
最大值。
30.290.1 命令
此滤镜支持上述所有选项作为命令,不包括选项inputs
.
30.291 xpsnr
获得平均(所有输入帧的平均值)以及最小值(所有颜色平面平均值中的最小值) 扩展的感知加权峰值信噪比(XPSNR)在两个输入视频之间。
XPSNR是一种低复杂度的心理视觉驱动失真测量算法, 用于评估两个视频流或图像之间的差异。这在客观量化视频和图像编解码器所造成的失真时特别有用, 作为正式主观测试的替代方法。对数XPSNR输出值的范围与传统psnr评估的结果相似,但更能反映人对视觉编码质量的印象。 关于XPSNR测量的更多详细信息,实际上是一种基于块权重的PSNR测量变体,可以从以下免费提供的论文中找到:
- C. R. Helmrich、M. Siekmann、S. Becker、S. Bosse、D. Marpe 和 T. Wiegand,“XPSNR:一种低复杂度的扩展感知加权峰值信噪比 用于高分辨率视频质量评估”,发表在 IEEE 国际会议上的所有文章:声学、语音、信号处理(ICASSP),在线,2020年5月。www.ecodis.de/xpsnr.htm
- C. R. Helmrich、S. Bosse、H. Schwarz、D. Marpe 和 T. Wiegand,“针对拥有不同分辨率和位深的针对视频压缩的扩展感知加权峰值信噪比(XPSNR)研究”,ITU Journal: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选项。
30.291.1 示例
- 对两个 1080p 高清视频 ref_source.yuv 和 test_video.yuv 进行 XPSNR 分析,这两个视频皆为每秒 24 帧,色彩格式为 4:2:0,位深度为 8,并输出名为 "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 分析,两个视频皆为每秒 60 帧,色彩格式为 4:2:0,无日志文件输出:
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 -
30.292 xstack
将视频输入堆叠为自定义布局。
所有流必须具有相同的像素格式。
此滤镜接受以下选项:
- inputs
设置输入流的数量。默认值为 2。
- layout
指定输入的布局。 此选项需要用户显式设置所需布局配置。 这将设置每个视频输入在输出中的位置。每个输入 由 ‘|’ 分隔。 第一个数字表示列,第二个数字表示行。 数字从 0 开始,用 ‘_’ 分隔。可选地,可以使用 wX 和 hX, 其中 X 是从视频输入中获取宽度或高度。 多个值可以使用 ‘+’ 分隔。在这种情况下,值会被相加。
请注意,如果输入的尺寸不同,可能会出现间隙,因为不是所有输出视频框架都会被填充。 类似地,如果位置没有为相邻的视频留出足够的完整帧空间,视频可能会相互重叠。
对于 2 个输入,设置了默认布局
0_0|w0_0
(等同于grid=2x1
)。在所有其他情况下,布局或网格必须由用户设置。可以同时指定grid
或layout
之一。指定两者将导致错误。- grid
指定固定大小的输入网格。 此选项用于创建固定大小的输入流网格。以形式设置 网格大小
COLUMNSxROWS
。必须有ROWS * COLUMNS
个输入流,它们将按照具有ROWS
行和COLUMNS
列的网格排列。在使用此选项时,每行中的每个输入流 必须具有相同的高度,所有行必须具有相同的宽度。如果
grid
设置为 1,则将忽略inputs
选项并隐含地设置为ROWS * COLUMNS
.对于 2 个输入,设置了默认网格
2x1
(等同于layout=0_0|w0_0
)。在所有其他情况下,布局或网格必须由用户设置。可以同时指定grid
或layout
之一。指定两者将导致错误。- shortest
如果设置为 1,则在最短输入终止时强制输出终止。默认值为 0。
- fill
如果设置为有效的颜色,所有未使用的像素将填充为该颜色。 默认填充设置为 none,因此填充被禁用。
30.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
请注意,如果输入的大小不同,可能会出现间隙或重叠。
30.293 yadif
对输入视频进行去隔行处理("yadif" 的意思是 "yet another deinterlacing filter")。
它接受以下参数:
- 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
.
30.294 yadif_cuda
使用yadif算法对输入视频进行去隔行处理,但在 CUDA 中实现,以便可以作为 GPU 加速管道的一部分,与 nvdec 和/或 nvenc 协同工作。
它接受以下参数:
- 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
.
30.295 yaepblur
应用模糊滤镜同时保留边缘("yaepblur" 的意思是 "yet another edge preserving blur filter")。算法见 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."。
它接受以下参数:
- radius, r
设置窗口半径。默认值为 3。
- planes, p
设置要滤波的平面。默认值为仅第一个平面。
- sigma, s
设置模糊强度。默认值为 128。
30.295.1 命令
此滤镜支持与选项相同的命令。
30.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’表达式最后计算的‘x’和‘y’位置。
- px
- py
前一个输入帧的上一个输出帧的‘x’和‘y’,或者当尚无此类帧(第一个输入帧)时为 0。
- zoom
当前输入帧‘z’表达式最后计算的缩放。
- pzoom
前一个输入帧的最后一个输出帧的最后计算缩放。
- duration
当前输入帧输出帧的数量。为每个输入帧从‘d’表达式计算。
- pduration
为前一个输入帧创建的输出帧数量。
- a
有理数:输入宽度 / 输入高度
- sar
样本纵横比
- dar
显示纵横比
30.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)'
30.297 zscale
使用 z.lib 库缩放(调整大小)输入视频:https://github.com/sekrit-twc/zimg。要启用此滤镜的编译,需配置 FFmpeg 和--enable-libzimg
.
zscale 滤镜强制输出显示纵横比与输入保持一致,方法是更改输出样本纵横比。
如果输入图像格式与下一滤镜请求的格式不同,zscale 滤镜将输入转换为请求的格式。
30.297.1 选项
滤镜接受以下选项。
- width, w
- height, h
设置输出视频尺寸表达式。默认值为输入尺寸。
如果宽度或w值为 0,则输出使用输入宽度。如果高度或h值为 0,则输出使用输入高度。
如果其中一个值为 -n 且 n >= 1,则 zscale 滤镜将使用从另一个指定维度计算出的值,以保持输入图像的纵横比。然而,它会确保计算出的维度可以被 n 整除,并在必要时调整值。
如果两个值都为 -n 且 n >= 1,则行为与两个值都设置为 0 的情况相同,如前面所述。
有关维度表达式可接受的常量列表,请参见下文。
- size, s
设置视频大小。有关此选项语法,请查看(ffmpeg-utils) "视频大小" 部分在 ffmpeg-utils 手册中.
- dither, d
设置抖动类型。
可能值为:
- 无
- 有序
- 随机
- 误差扩散
默认值为无。
- filter, f
设置缩放滤镜类型。
可能值为:
- 点
- 双线性
- 双三次方
- spline16
- spline36
- 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。
30.297.2 命令
此滤镜支持以下命令:
- width, w
- height, h
设置输出视频尺寸表达式。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
31 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滤镜以使输出符合支持的格式。
31.1 avgblur_opencl
应用平均模糊滤镜。
此滤镜接受以下选项:
- sizeX
设置水平半径大小。 范围是
[1, 1024]
,默认值是1
.- planes
设置需过滤的平面。默认值为
0xf
,即所有平面都会被处理。- sizeY
设置垂直半径大小。范围是
[1, 1024]
,默认值是0
。如果为零,将使用sizeX
值。
31.1.1 示例
- 使用水平和垂直大小为3的平均模糊滤镜,使输出的每个像素等于以输入为中心的7x7区域的平均值。对于图像边缘的像素,区域不会超出图像边界,因此不会使用超范围坐标进行计算。
-i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
31.2 boxblur_opencl
对输入视频应用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
Specify how many times the boxblur filter is applied to the corresponding plane.
Default value for luma_power is 2. If not specified, chroma_power and alpha_power default to the corresponding value set for luma_power.
A value of 0 will disable the effect.
31.2.1 Examples
Apply boxblur filter, setting each pixel of the output to the average value of box-radiuses luma_radius, chroma_radius, alpha_radius for each plane respectively. The filter will apply luma_power, chroma_power, alpha_power times onto the corresponding plane. For pixels on the edges of the image, the radius does not extend beyond the image boundaries, and so out-of-range coordinates are not used in the calculations.
- Apply a boxblur filter with the luma, chroma, and alpha radius
set to 2 and luma, chroma, and alpha power set to 3. The filter will run 3 times with box-radius set to 2 for every plane of the image.
-i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
- Apply a boxblur filter with luma radius set to 2, luma_power to 1, chroma_radius to 4, chroma_power to 5, alpha_radius to 3 and alpha_power to 7.
For the luma plane, a 2x2 box radius will be run once.
For the chroma plane, a 4x4 box radius will be run 5 times.
For the alpha plane, a 3x3 box radius will be run 7 times.
-i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
31.3 colorkey_opencl
RGB colorspace color keying.
The filter accepts the following options:
- color
The color which will be replaced with transparency.
- similarity
Similarity percentage with the key color.
0.01 matches only the exact key color, while 1.0 matches everything.
- blend
Blend percentage.
0.0 makes pixels either fully transparent, or not transparent at all.
Higher values result in semi-transparent pixels, with a higher transparency the more similar the pixels color is to the key color.
31.3.1 Examples
- Make every semi-green pixel in the input transparent with some slight blending:
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
31.4 convolution_opencl
Apply convolution of 3x3, 5x5, 7x7 matrix.
The filter accepts the following options:
- 0m
- 1m
- 2m
- 3m
Set matrix for each plane. Matrix is sequence of 9, 25 or 49 signed numbers. Default value for each plane is
0 0 0 0 1 0 0 0 0
.- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
Set multiplier for calculated value for each plane. If unset or 0, it will be sum of all matrix elements. The option value must be a float number greater or equal to
0.0
. Default value is1.0
.- 0bias
- 1bias
- 2bias
- 3bias
Set bias for each plane. This value is added to the result of the multiplication. Useful for making the overall image brighter or darker. The option value must be a float number greater or equal to
0.0
. Default value is0.0
.
31.4.1 Examples
- Apply sharpen:
-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
- Apply blur:
-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
- Apply edge enhance:
-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
- Apply edge detect:
-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
- Apply laplacian edge detector which includes diagonals:
-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
- Apply emboss:
-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
31.5 erosion_opencl
Apply erosion effect to the video.
This filter replaces the pixel by the local(3x3) minimum.
It accepts the following options:
- threshold0
- threshold1
- threshold2
- threshold3
Limit the maximum change for each plane. Range is
[0, 65535]
and default value is65535
. If0
, plane will remain unchanged.- coordinates
Flag which specifies the pixel to refer to. Range is
[0, 255]
and default value is255
, i.e. all eight pixels are used.Flags to local 3x3 coordinates region centered on
x
:1 2 3
4 x 5
6 7 8
31.5.1 Example
- Apply erosion filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local minimum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local minimum is more then threshold of the corresponding plane, output pixel will be set to input pixel - threshold of corresponding plane.
-i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
31.6 deshake_opencl
Feature-point based video stabilization filter.
The filter accepts the following options:
- tripod
Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to
0
.- debug
Whether or not additional debug info should be displayed, both in the processed output and in the console.
Note that in order to see console debug output you will also need to pass
-v verbose
to ffmpeg.Viewing point matches in the output video is only supported for RGB input.
Defaults to
0
.- adaptive_crop
Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
Defaults to
1
.- refine_features
Whether or not feature points should be refined at a sub-pixel level.
This can be turned off for a slight performance gain at the cost of precision.
Defaults to
1
.- smooth_strength
The strength of the smoothing applied to the camera path from
0.0
to1.0
.1.0
is the maximum smoothing strength while values less than that result in less smoothing.0.0
causes the filter to adaptively choose a smoothing strength on a per-frame basis.Defaults to
0.0
.- smooth_window_multiplier
Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
The size of the smoothing window is determined by multiplying the framerate of the video by this number.
Acceptable values range from
0.1
to10.0
.Larger values increase the amount of motion data available for determining how to smooth the camera path, potentially improving smoothness, but also increase latency and memory usage.
Defaults to
2.0
.
31.6.1 Examples
- Stabilize a video with a fixed, medium smoothing strength:
-i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
- Stabilize a video with debugging (both in console and in rendered video):
-i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
31.7 dilation_opencl
Apply dilation effect to the video.
This filter replaces the pixel by the local(3x3) maximum.
It accepts the following options:
- threshold0
- threshold1
- threshold2
- threshold3
Limit the maximum change for each plane. Range is
[0, 65535]
and default value is65535
. If0
, plane will remain unchanged.- coordinates
Flag which specifies the pixel to refer to. Range is
[0, 255]
and default value is255
, i.e. all eight pixels are used.Flags to local 3x3 coordinates region centered on
x
:1 2 3
4 x 5
6 7 8
31.7.1 Example
- Apply dilation filter with threshold0 set to 30, threshold1 set 40, threshold2 set to 50 and coordinates set to 231, setting each pixel of the output to the local maximum between pixels: 1, 2, 3, 6, 7, 8 of the 3x3 region centered on it in the input. If the difference between input pixel and local maximum is more then threshold of the corresponding plane, output pixel will be set to input pixel + threshold of corresponding plane.
-i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
31.8 nlmeans_opencl
Non-local Means denoise filter through OpenCL, this filter accepts same options as nlmeans.
31.9 overlay_opencl
Overlay one video on top of another.
It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid. This filter requires same memory layout for all the inputs. So, format conversion may be needed.
The filter accepts the following options:
- x
设置叠加视频在主视频上的 x 坐标。 默认值为
0
.- y
设置叠加视频在主视频上的 y 坐标。 默认值为
0
.
31.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 平面,例如输入是 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
31.10 pad_opencl
为输入图像添加填充,并将原始输入放置于指定的x, y坐标。
它接受以下选项:
- width, w
- height, h
指定一个表达式来设置添加填充后的输出图像大小。如果宽度或高度的值为 0,则使用输入大小作为输出大小。
该宽度表达式可以引用由高度表达式设置的值,反之亦然。
默认值为宽度和高度是 0。
- x
- y
指定偏移量,以便在填充区域内放置输入图像,相对于输出图像的顶部/左侧边界。
该x表达式可以引用由y表达式设置的值,反之亦然。
默认值为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
31.11 prewitt_opencl
对输入视频流应用 Prewitt 算子(https://en.wikipedia.org/wiki/Prewitt_operator)。
该滤镜接受以下选项:
- planes
设置要过滤的平面。默认值为
0xf
,处理所有平面。- scale
设置与过滤结果相乘的数值。 范围是
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的数值。 范围是
[-65535, 65535]
,默认值为0.0
.
31.11.1 示例
- 应用 Prewitt 算子,设置 scale 为 2,delta 为 10。
-i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
31.12 program_opencl
使用 OpenCL 程序过滤视频。
- source
OpenCL 程序的源文件。
- kernel
程序中的内核名称。
- inputs
滤镜的输入数量。默认值为 1。
- size, s
输出帧的大小。默认为与第一个输入相同。
该program_opencl
滤镜还支持framesync选项。
程序源文件必须包含具有指定名称的内核函数,该函数将对输出的每个平面运行一次。每次平面运行都会排队为一个单独的 2D 全局 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)); }
31.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
.
31.14 roberts_opencl
对输入视频流应用 Roberts 交叉算子(https://en.wikipedia.org/wiki/Roberts_cross)。
该滤镜接受以下选项:
- planes
设置要过滤的平面。默认值为
0xf
,处理所有平面。- scale
设置与过滤结果相乘的数值。 范围是
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的数值。 范围是
[-65535, 65535]
,默认值为0.0
.
31.14.1 示例
- 应用 Roberts 交叉算子,设置 scale 为 2,delta 为 10
-i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
31.15 sobel_opencl
对输入视频流应用 Sobel 算子(https://en.wikipedia.org/wiki/Sobel_operator)。
该滤镜接受以下选项:
- planes
设置要过滤的平面。默认值为
0xf
,处理所有平面。- scale
设置与过滤结果相乘的数值。 范围是
[0.0, 65535]
,默认值为1.0
.- delta
设置与过滤结果相加的数值。 范围是
[-65535, 65535]
,默认值为0.0
.
31.15.1 示例
- 应用 Sobel 算子,设置 scale 为 2,delta 为 10
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
31.16 tonemap_opencl
执行 HDR(PQ/HLG) 到 SDR 的转换,带有色调映射。
它接受以下参数:
- tonemap
指定要使用的色调映射算子。与tonemap.
- param
中的 tonemap 选项相同。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
默认值与输入相同。
31.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
31.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’。
31.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
31.18 xfade_opencl
通过使用 OpenCL,为两个视频添加自定义过渡效果的交叉淡化处理。
它接受以下选项:
- transition
设置一种可能的过渡效果。
- custom
选择自定义过渡效果,实际的过渡描述将从源文件和内核选项中选择。
- fade
- wipeleft
- wiperight
- wipeup
- wipedown
- slideleft
- slideright
- slideup
- slidedown
-
默认过渡是 fade。
- source
自定义过渡的 OpenCL 程序源文件。
- kernel
设置要从程序源文件中用于自定义过渡的内核名称。
- duration
设置视频过渡的持续时间。
- offset
设置相对于第一个视频的过渡开始时间。
程序源文件必须包含具有指定名称的内核函数,该函数将对输出的每个平面运行一次。每次平面运行都会排队为一个单独的 2D 全局 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); }
32 VAAPI 视频滤镜
VAAPI 视频滤镜通常与 VAAPI 解码器和 VAAPI 编码器一起使用。以下是 VAAPI 视频滤镜的描述。
要启用这些滤镜的编译,您需要使用以下配置 FFmpeg--enable-vaapi
.
要使用 vaapi 滤镜,您需要正确设置 vaapi 设备。有关更多信息,请参阅https://trac.ffmpeg.org/wiki/Hardware/VAAPI
32.1 overlay_vaapi
将一个视频叠加在另一个视频之上。
它需要两个输入并生成一个输出。第一个输入是“主”视频,第二个输入则叠加在主视频之上。
该滤镜接受以下选项:
- x
- y
设置叠加视频在主视频上的 x 和 y 坐标表达式。
默认值为两者都为 "0"。
- w
- h
为主视频中的叠加视频设置宽度和高度的表达式。
默认值为 'overlay_iw' 对于 'w','overlay_ih*w/overlay_iw' 对于 'h'。
表达式可以包含以下参数:
- 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
参见帧同步.
- shortest
参见帧同步.
- repeatlast
参见帧同步.
该过滤器也支持帧同步选项。
32.1.1 示例
- 将图片 LOGO 覆盖在 INPUT 视频的左上角。此过滤器的两个输入均为 yuv420p 格式。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
- 将图片 LOGO 覆盖在距离 INPUT 视频左上角 (200, 100) 的偏移处。输入具有相同的颜色通道内存布局,叠加层有额外的 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
32.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
设置输出主显示颜色量。给定一个以 '|' 分隔的两组值,两个值为空格分隔。它设置显示基准的 G、B、R 顺序的 x 和 y,然后为白点的 x 和 y,名义的最小和最大显示亮度。
当设置此选项时,将执行 HDR 到 HDR 的色调映射。
- light
设置输出内容光照级别信息。接受 2 个空格分隔的值,第一个是最大光亮级别,第二个是最大平均光亮级别。
对于 HDR 到 SDR 映射,此选项将被忽略;对于 HDR 到 HDR 映射,此选项为可选项。
32.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
32.3 hstack_vaapi
水平堆叠输入视频。
这是hstack过滤器的 VA-API 变体,每个输入流可以拥有不同的高度,此过滤器会在保持原始比例的情况下缩放每个输入流。
它接受以下选项:
32.4 vstack_vaapi
垂直堆叠输入视频。
这是vstack过滤器的 VA-API 变体,每个输入流可以拥有不同的宽度,此过滤器会在保持原始比例的情况下缩放每个输入流。
它接受以下选项:
32.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.
32.6 pad_vaapi
为输入图像添加填充,并将原始输入放置在指定的x, y坐标。
它接受以下选项:
- width, w
- height, h
为添加填充后的输出图像的大小指定一个表达式。如果宽度或高度的值为 0,输出将使用对应的输入尺寸。
The 宽度表达式可以引用高度表达式中设置的值,反之亦然。
默认值为宽度和高度为 0。
- x
- y
指定将输入图像放置在填充区域内的位置偏移量,参考输出图像的顶部/左侧边界。
The x表达式可以引用y表达式中设置的值,反之亦然。
默认值为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表达式中指定的偏移值相同,如果尚未指定则为 NAN。
- a
与iw / ih
- sar
输入采样宽高比。
- dar
输入显示宽高比,这等于iw / ih) * sar
32.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, wh和t的参数是包含以下常量的表达式: are expressions containing the following constants:
- in_h, ih
- in_w, iw
输入的宽度和高度。
- x
- y
画框的 x 和 y 偏移坐标。
- w
- h
绘制框的宽度和高度。
- t
绘制框的厚度。
32.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
33 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过滤器,使输出处于支持的格式中。
33.1 avgblur_vulkan
应用基于 Vulkan 在 GPU 上实现的平均模糊过滤器。
过滤器接收以下选项:
- sizeX
设置水平半径大小。范围为
[1, 32]
,默认值为3
.- sizeY
设置垂直半径大小。范围为
[1, 32]
,默认值为3
.- planes
设置要过滤的平面。默认值为
0xf
,表示所有平面都会被处理。
33.2 blend_vulkan
将两个 Vulkan 帧相互混合。
过滤器接收两个输入流并输出一个输出流,第一个输入是“顶部”层,第二个输入是“底部”层。默认情况下,当最长的输入结束时,输出也结束。blend
filter takes two input streams and outputs one
stream, the first input is the "top" layer and second input is
"bottom" layer. By default, the output terminates when the longest input terminates.
以下是接收的选项说明。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
为特定像素分量或所有像素分量设置混合模式。如果是all_mode,默认值是
normal
.组件模式的可用值有:
- ‘normal’
- ‘multiply’
33.3 bwdif_vulkan
使用bwdif,即基于 Vulkan 在 GPU 上实现的“Bob Weaver 去隔行过滤器”算法进行去隔行处理。
它接受以下参数:
- mode
选择采纳的隔行模式。可接受以下值:
- 0, send_frame
每帧输出一帧。
- 1, send_field
每场输出一帧。
默认值为
send_field
.- parity
为输入隔行视频假定的画面场序。可接受以下值:
- 0, tff
假设上场优先。
- 1, bff
假设下场优先。
- -1, auto
启用场序的自动检测。
默认值为
auto
。如果隔行信息未知或解码器未导出此信息,则假定为上场优先。- deint
指定要去隔行的帧。可接受以下值:
- 0, all
去隔行所有帧。
- 1, interlaced
仅对标记为隔行的帧进行去隔行。
默认值为
all
.
33.4 chromaber_vulkan
应用模仿色差效果的过滤器。对 RGB 输入效果最佳,但对 YCbCr 输入也提供类似效果。
- dist_x
水平位移倍数。每个色度像素的位置将从图像中心开始乘以此数值。默认值为
0
.- dist_y
同样地,这里设置垂直位移倍数。默认值为
0
.
33.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)。
33.6 vflip_vulkan
垂直翻转图像。
33.7 hflip_vulkan
水平翻转图像。
33.8 flip_vulkan
在垂直和水平方向同时翻转图像。
33.9 gblur_vulkan
在 Vulkan 帧上应用高斯模糊滤镜。
过滤器接受以下选项:
- sigma
设置水平 sigma 值,高斯模糊的标准偏差。默认值为
0.5
.- sigmaV
设置垂直 sigma 值,如果为负值,则与
sigma
相同。 默认值为-1
.- planes
设置需要过滤的平面。默认情况下将过滤所有平面。
- size
设置沿水平方向的内核大小。默认值为
19
.- sizeV
设置沿垂直方向的内核大小。默认值为
0
, 与大小.
33.10 nlmeans_vulkan
使用 GPU 上的非局部均值算法对帧进行去噪,基于 Vulkan 实现。 支持的像素格式比nlmeans或nlmeans_opencl更多,包括对 alpha 通道的支持。
过滤器接受以下选项。
- s
为所有分量设置去噪强度。默认值为 1.0。必须在范围 [1.0, 100.0] 内。
- p
为所有平面设置补丁大小。默认值为 7。必须为奇数,在范围 [0, 99] 内。
- r
设置搜索大小。默认值为 15。必须为奇数,在范围 [0, 99] 内。
- t
设置并行性。默认值是 36。必须在范围 [1, 168] 内。 更大的值可能会加快处理速度,但会消耗更多的显存(VRAM)。 较小的值则会减慢处理速度,减少显存使用。 仅在支持浮点原子操作的 GPU 上(例如 RDNA3+、Ampere+)支持。
- s0
- s1
- s2
- s3
为特定分量设置去噪强度。默认值为1, 等于s。 必须为奇数,在范围 [1, 100] 内。
- p0
- p1
- p2
- p3
为特定分量设置补丁大小。默认值为7, 等于p。 必须为奇数,在范围 [0, 99] 内。
33.11 overlay_vulkan
将一个视频叠加在另一个视频上。
需要两个输入并产生一个输出。第一个输入是"主"视频,第二个输入将叠加在其上。 此过滤器要求所有输入使用相同的像素格式。因此可能需要进行格式转换。
过滤器接受以下选项:
- x
设置叠加视频在主视频上的 x 坐标。 默认值为
0
.- y
设置叠加视频在主视频上的 y 坐标。 默认值为
0
.
33.12 transpose_vt
在输入视频中将行与列转置并可选地进行翻转。 更多详细的示例请参见transpose视频过滤器,它们大部分共享相同的选项。
它接受以下参数:
- dir
指定转置方向。
可以采用以下值:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- ‘hflip’
水平翻转输入视频。
- ‘vflip’
垂直翻转输入视频。
- passthrough
如果输入几何形状匹配指定的值,则不应用转置。它接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保留人像几何结构(当高度 >= 宽度).
- ‘landscape’
保留风景几何结构(当宽度 >= 高度).
33.13 transpose_vulkan
在输入视频中将行与列转置并可选地进行翻转。 更多详细的示例请参见transpose视频过滤器,它们大部分共享相同的选项。
它接受以下参数:
- dir
指定转置方向。
可以采用以下值:
- ‘cclock_flip’
逆时针旋转 90 度并垂直翻转。(默认)
- ‘clock’
顺时针旋转 90 度。
- ‘cclock’
逆时针旋转 90 度。
- ‘clock_flip’
顺时针旋转 90 度并垂直翻转。
- passthrough
如果输入几何形状匹配指定的值,则不应用转置。它接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保留人像几何结构(当高度 >= 宽度).
- ‘landscape’
保留风景几何结构(当宽度 >= 高度).
34 QSV 视频过滤器
以下是目前可用的 QSV 视频过滤器的说明。
要启用这些过滤器的编译,您需要使用以下配置 FFmpeg--enable-libmfx
或--enable-libvpl
.
要使用 QSV 过滤器,您需要正确设置 QSV 设备。有关详情,请阅读https://trac.ffmpeg.org/wiki/Hardware/QuickSync
34.1 hstack_qsv
水平堆叠输入视频。
这是hstack过滤器的 QSV 变体,每个输入流可以有不同的高度,此过滤器将缩小/放大每个输入流,同时保持原始宽高比。
它接受以下选项:
34.2 vstack_qsv
垂直堆叠输入视频。
这是vstack过滤器的 QSV 变体,每个输入流可以有不同的宽度,此过滤器将缩小/放大每个输入流,同时保持原始宽高比。
它接受以下选项:
34.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.
35 视频来源
以下是目前可用的视频来源的说明。
35.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
另外,这些选项可以作为扁平字符串指定,但这种语法已被弃用:
宽度:高度:像素格式:时间基数分子:时间基数分母:像素宽高比分子:像素宽高比分母
35.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。
35.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
35.3 coreimagesrc
使用Apple在OSX上的CoreImage API在GPU上生成的视频源。
此视频源是coreimage视频过滤器的一个特定版本。 在应用的过滤链开始处使用核心图像生成器生成内容。
coreimagesrc视频源接受以下选项:
- list_generators
列出所有可用生成器及其各自的所有选项,以及可能的最小值和最大值及默认值。
list_generators=true
- size, s
指定视频源的尺寸。此选项的语法,请参阅(ffmpeg-utils)"视频尺寸"部分在ffmpeg-utils手册中。 默认值为
320x240
.- rate, r
指定视频源的视频帧率,即每秒生成的帧数。帧率必须是以下格式之一的字符串frame_rate_num/frame_rate_den,整数,浮点数或有效的视频帧率缩写。默认值为"25"。
- sar
设置视频源的采样纵横比。
- duration, d
设置视频源的时长。参见(ffmpeg-utils)时间时长部分在ffmpeg-utils(1)手册中的接受的语法。
如果未指定,或者表达的时长为负,预计视频将无限生成。
另外,还接受coreimage视频过滤器的所有选项。 可使用完整的过滤链进一步处理生成的输入而无需CPU主机转换。详情请参见coreimage文档和示例。
35.3.1 示例
- 使用CIQRCodeGenerator创建用于FFmpeg主页的二维码,提供Apple标准bash shell的完整且转义的命令行:
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
此示例等效于coreimage的二维码示例,而无需nullsrc视频源。
35.4 ddagrab
通过桌面复制API捕获Windows桌面。
此过滤器仅返回D3D11硬件帧,用于GPU上的编码或处理。因此,任何软件处理都需要显式hwdownload。
此过滤器接受以下选项:
- output_idx
要捕获的DXGI输出索引。
通常对应于Windows为屏幕分配的索引减一,因此从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会在必要时转换为这些格式。
- ‘10bit’
- ‘x2bgr10’
如果请求10位格式但不可用,则过滤器初始化将失败。
- dup_frames
当此选项设置为true(默认值)时,过滤器将在桌面未更新时复制帧以维持近似恒定的目标帧率。当此选项设置为false时,过滤器将等待桌面更新(帧间间隔在此情况下可能会显著变化)。
35.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
35.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’
默认类型为线性.
35.5.1 命令
此来源支持上面的一些选项作为命令.
35.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。
35.7 mptestsrc
生成各种测试模式,由MPlayer测试滤镜生成。
生成的视频尺寸固定为256x256。 此源特别有助于测试编码功能。
此源接受以下选项:
- rate, r
指定视频源的帧率,即每秒生成的帧数。帧率必须是以下格式之一的字符串frame_rate_num/frame_rate_den,整数,浮点数或有效的视频帧率缩写。默认值为"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。
默认值为"all",将循环执行所有测试。
一些示例:
mptestsrc=t=dc_luma
将生成一个"dc_luma"测试模式。
35.8 frei0r_src
提供一个frei0r源。
要启用此过滤器的编译,您需要安装frei0r头文件并使用以下参数配置FFmpeg:--enable-frei0r
.
此源接受以下参数:
- size
要生成的视频大小。此选项的语法,请参阅(ffmpeg-utils)"视频尺寸"部分在ffmpeg-utils手册中.
- framerate
生成视频的帧率。可以是形式为num/den的字符串,或帧速率缩写。
- filter_name
要加载的frei0r源的名称。有关frei0r和如何设置参数的更多信息,请阅读frei0r部分在视频滤镜文档中。
- filter_params
分隔符为‘|’的参数列表,这些参数将传递给frei0r源。
例如,生成一个frei0r partik0l源,大小为200x200,帧率为10,并覆盖到overlay过滤器主输入上:
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
35.9 life
生成一个生命模式。
此源基于John Conway生命游戏的广义化版本。
源输入表示一个生命网格,每个像素代表一个单元,可以处于两种状态之一,生存或死亡。每个单元与其八个邻居交互,这些邻居为水平、垂直或对角相邻的单元。
在每次交互中,网格根据采用的规则进化,该规则规定了使单元维持存活或重新生成所需的邻居活单元数量。rule选项允许指定要采用的规则。
此源接受以下选项:
- 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)"Video size"部分在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)"Color"部分在ffmpeg-utils手册中.
35.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
35.10 perlin
生成Perlin噪声。
Perlin噪声是一种在空间上具有局部连续性的噪声。 这可用于生成在空间和时间上具有连续性的模式,例如模拟烟雾、流体或地形。
如果通过octaves选项指定了多个倍频,Perlin噪声作为组件的总和被生成,每个组件的频率加倍。在这种情况下,persistence选项指定与前一个组件振幅的比例。更多倍频组件使得生成的噪声中可以指定更多的高频细节(例如生成的地形中岩石的小尺寸变化)。
35.10.1 选项
- size, s
指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请检查(ffmpeg-utils)"Video size"部分在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设置为random_seed时,使用此值计算初始模式。默认值是
0
.
35.10.2 示例
- 生成单一组件:
perlin
- 使用7个组件的Perlin噪声,每个组件对总振幅的贡献减半:
perlin=octaves=7:persistence=0.5
- 将Perlin噪声与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
35.11 qrencodesrc
使用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或t或 ¸n),因为它们只有在每帧评估表达式时才有意义,而不是在初始化时。
- rate, r
指定生成的视频帧率,表示每秒生成的帧数。其格式必须是frame_rate_num/frame_rate_den,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。
- case_sensitive, cs
指示libqrencode使用区分大小写的编码。默认启用。可禁用以减少QR编码大小。
- level, l
指定QR编码错误纠正级别。较高的纠正级别会增加编码的大小,但代码对损坏会更具鲁棒性。 较低级别是L.
它接受以下值:
- ‘L’
- ‘M’
- ‘Q’
- ‘H’
- expansion
选择如何扩展输入文本。可以是
none
或normal
(默认)。详见qrencode文本扩展部分。- text
- textfile
定义要呈现的文本。如果未指定任何文本,则不会编码二维码(仅为一个空的彩色框)。
如果启用了扩展,则文本将作为文本模板处理,使用qrencode扩展机制。详见qrencode 文本扩展部分。
- background_color, bc
- foreground_color, fc
设置二维码和背景颜色。默认值foreground_color是"black",默认值background_color是"white"。
有关颜色选项语法,请检查(ffmpeg-utils)"Color" 部分在ffmpeg-utils手册里.
35.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}
35.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与BGR问题的RGB测试图案。你应该看到自上而下分别为红、绿和蓝色的条纹。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)"Color"部分在ffmpeg-utils手册中.- size, s
指定源视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"Video size"部分在ffmpeg-utils手册中。 默认值为
320x240
.此选项不适用于
allrgb
,allyuv
和haldclutsrc
过滤器。- rate, r
指定源视频帧率,表示每秒生成的帧数。其格式必须是frame_rate_num/frame_rate_den,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。
- duration, d
设置源视频的时长。详见(ffmpeg-utils)的时间持续部分在ffmpeg-utils(1)手册中接受的语法。
如果未指定,或者表达的时长为负数,视频将被假定生成永远。
由于帧率用作时间基准,所有帧包括最后一帧将具有完整时间持续。如果指定的时长不是帧持续时间的倍数,它将被向上舍入。
- sar
设置源视频的采样宽高比。
- alpha
指定背景的alpha(不透明度),仅适用于
testsrc2
源代码。值必须介于0(完全透明)和255(完全不透明,默认值)。- decimals, n
设置时间戳中显示的小数位数,仅适用于
testsrc
来源。显示的时间戳值将对应于原始时间戳值乘以指定值的10次幂。默认值为0。
- type
设置色谱的类型,仅在
colorspectrum
来源。可以是以下之一:- ‘black’
- ‘white’
- ‘all’
- patch_size
设置单色块的尺寸,仅在
colorchart
来源。默认值是64x64
.- preset
设置标准颜色检查器的预设,仅在
colorchart
来源。可用值为:
- ‘reference’
- ‘skintones’
默认值是
reference
.
35.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
35.12.2 命令
该color
来源支持以下命令:
- c, color
设置所创建图像的颜色。接受与相应color选项相同的语法。
35.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); }
35.14 sierpinski
生成一个Sierpinski地毯/三角形分形,并随机进行平移。
此来源接受以下选项:
- size, s
设置帧大小。有关此选项语法,请查看(ffmpeg-utils)“视频尺寸”部分。默认值为“640x480”。
- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- seed
设置用于随机平移的种子。
- jump
设置单次平移目的地的最大跳跃距离。允许范围是1到10000。
- type
设置分形类型,可以是默认值
carpet
或triangle
.
35.15 zoneplate
生成一个zoneplate测试视频图案。
此来源接受以下选项:
- size, s
设置帧大小。有关此选项语法,请查看(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阶常数项。默认值为0。
- kx
设置水平轴的1阶相位因子乘数。默认值为0。
- ky
设置垂直轴的1阶相位因子乘数。默认值为0。
- kt
设置时间轴的1阶相位因子乘数。默认值为0。
- kxt, kyt, kxy
设置空间和时间轴组合的相位因子乘数。默认值为0。
- kx2
设置水平轴的2阶相位因子乘数。默认值为0。
- ky2
设置垂直轴的2阶相位因子乘数。默认值为0。
- kt2
设置时间轴的2阶相位因子乘数。默认值为0。
- ku
设置用于生成信号的色度蓝分量的最终相位中添加的常数。默认值为0。
- kv
设置用于生成信号的色度红分量的最终相位中添加的常数。默认值为0。
35.15.1 命令
此来源支持一些上述选项作为命令。.
35.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
- 生成圆形zone-plate:
zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
36 视频接收端
下面是当前可用的视频接收端的描述。
36.1 buffersink
缓冲视频帧,使其在过滤器图末端可用。
此接收端主要用于编程用途,特别是通过libavfilter/buffersink.h或选项系统定义的接口。
它接受一个指向AVBufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,并作为opaque参数传递给avfilter_init_filter
进行初始化。
36.2 nullsink
空视频接收端:对输入视频绝对不做任何处理。它主要作为模板使用,也用于分析/调试工具。
37 多媒体过滤器
下面是当前可用多媒体过滤器的描述。
37.1 a3dscope
将输入音频转换为3D示波图视频输出。
该滤镜接受以下选项:
- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- size, s
指定输出的视频大小。有关此选项的语法,请参见(ffmpeg-utils)“视频尺寸”部分。 默认值为
hd720
.- fov
设置相机的视场角。默认是90度。允许范围是40到150。
- roll
设置相机的滚转角。
- pitch
设置相机的俯仰角。
- yaw
设置相机的偏航角。
- xzoom
设置相机在X轴上的缩放比例。
- yzoom
设置相机在Y轴上的缩放比例。
- zzoom
设置相机在Z轴上的缩放比例。
- xpos
设置相机在X轴上的位置。
- ypos
设置相机在Y轴上的位置。
- zpos
设置相机在Z轴上的位置。
- length
设置显示的音频波的长度(以帧数表示)。
37.1.1 命令
过滤器支持一些上述选项作为命令。.
37.2 abitscope
将输入音频转换为视频输出,显示音频位示波图。
该滤镜接受以下选项:
- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- size, s
指定输出的视频大小。有关此选项的语法,请参见(ffmpeg-utils)“视频尺寸”部分。 默认值为
1024x256
.- colors
指定用空格或‘|’分隔的颜色列表,这会用于绘制通道。无法识别或缺失的颜色将被替换为白色。
- mode, m
设置输出模式。可以是
bars
或trace
。默认值为bars
.
37.3 adrawgraph
使用输入音频元数据绘制图表。
37.4 agraphmonitor
参见graphmonitor.
37.5 ahistogram
将输入音频转换为视频输出,显示音量直方图。
该滤镜接受以下选项:
- dmode
指定如何计算直方图。
它接受以下值:
- ‘single’
为所有通道共用一个直方图。
- ‘separate’
为每个通道使用单独的直方图。
默认值是
single
.- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- size, s
指定输出的视频大小。有关此选项的语法,请参见(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
.
37.6 aphasemeter
测量输入音频的相位,结果作为元数据导出,表示当前音频帧的平均相位。此外,还可以产生视频输出,默认启用。音频作为第一个输出传递。lavfi.aphasemeter.phase
,
representing mean phase of current audio frame. A video output can also be produced and is
enabled by default. The audio is passed through as first output.
音频将被重新混合为立体声,如果它具有不同的通道布局。相位值的范围是[-1, 1]
其中-1
表示左右声道完全反相,1
表示声道同步。
滤镜接受以下与其视频输出相关的选项:
- rate, r
设置输出帧率。默认值为
25
.- size, s
指定输出的视频大小。有关此选项的语法,请参见(ffmpeg-utils)“视频尺寸”部分。 默认值为
800x400
.- rc
- gc
- bc
指定红、绿、蓝颜色对比度。默认值为
2
,7
和1
。 允许范围是[0, 255]
.- mpc
设置用于绘制中值相位的颜色。如果颜色为默认值
none
,则不会绘制中值相位值。- video
启用视频输出。默认启用。
37.6.1 相位检测
该滤镜还可以检测立体声流中的反相和单声道序列。当序列持续时间超过或等于设置的最小时,滤镜会记录序列的开始、结束和持续时间。
滤镜接受以下与该检测相关的选项:
- phasing
启用单声道和反相检测。默认关闭。
- tolerance, t
设置单声道检测的相位容差(以振幅比表示)。默认值为
0
。 允许范围是[0, 1]
.- angle, a
设置反相检测的角度阈值(以度为单位)。默认值为
170
。 允许范围是[90, 180]
.- duration, d
设置单声道或反相持续时间(以秒为单位),直到通知为止。默认值为
2
.
37.6.2 示例
- 使用
ffmpeg
的完整示例,用于检测具有0.001相位容差的1秒单声道:ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
37.7 avectorscope
将输入音频转换为视频输出,表示音频矢量示波图。
该滤镜用于测量立体声音频流的通道之间的差异。单声道信号(左声道和右声道相同的信号)会形成垂直直线。任何立体声分离都会偏离这条线,形成Lissajous图。如果出现水平直线(或从直线的偏差),则表示左右声道反相。
该滤镜接受以下选项:
- mode, m
设置矢量示波器模式。
可用值为:
- ‘lissajous’
旋转45度的Lissajous图。
- ‘lissajous_xy’
与上述相同,但未旋转。
- ‘polar’
形状类似于半圆。
默认值为“lissajous’.
- size, s
指定输出的视频大小。有关此选项的语法,请参见(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’
同时镜像x轴和y轴。
37.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]'
37.7.2 命令
此过滤器支持除选项size
和rate
.
之外的所有上述选项作为命令
基准测试过滤器图的一部分。
过滤器接受以下选项:
- action
启动或停止计时器。
可用值为:
- ‘start’
获取当前时间,将其设置为帧元数据(使用键
lavfi.bench.start_time
),并将帧转发到下一个过滤器。- ‘stop’
获取当前时间并从
lavfi.bench.start_time
输入帧元数据对中获取时间差。时间差、平均值、最大值和最小值(分别为t
,avg
,max
和min
)然后被打印。时间戳以秒为单位。
37.8.1 示例
- 基准测试选择颜色过滤器:
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
37.9 拼接
拼接音频和视频流,将它们串联在一起。
该过滤器适用于同步的视频和音频流片段。所有片段必须包含相同数量的每种类型的流,这也将是输出中的流数量。
过滤器接受以下选项:
- n
设置片段数。默认值为2。
- v
设置输出视频流的数量,这也是每个片段中的视频流数。默认值为1。
- a
设置输出音频流的数量,这也是每个片段中的音频流数。默认值为0。
- unsafe
激活非安全模式:如果片段具有不同的格式,不要失败。
此过滤器具有视频输出+音频输出:首先是 outputs: first 视频输出,然后是 video outputs, then 音频输出。 audio outputs.
有nx(视频输出+音频输出) 输入:首先是第一个片段的输入,顺序与输出相同,然后是第二个片段的输入,依此类推。
相关流因编码器帧大小或制作粗糙等各种原因,并不总是具有完全相同的持续时间。因此,相关的同步流(例如视频及其音频轨道)应同时拼接。拼接过滤器将使用每个片段中最长流的持续时间(最后一个片段除外),并在必要时用静音填充较短的音频流。
为了使此过滤器工作正确,所有片段必须从时间戳0开始。
所有对应的流在所有片段中必须具有相同的参数;过滤系统将自动为视频流选择一个公共像素格式,以及为音频流选择一个公共样本格式、采样率和频道布局,但其他设置(如分辨率)必须由用户显式转换。
允许不同的帧率,但输出将有可变帧率;请务必配置输出文件以处理它。
37.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]
如果第一文件中的音频和视频流的持续时间不完全相同,拼接处将发生不同步。
37.9.2 命令
此过滤器支持以下命令:
- next
关闭当前段并跳到下一个
37.10 ebur128
EBU R128 扫描器过滤器。此过滤器接收音频流并分析其响度级别。默认情况下,它以10Hz的频率记录一条消息,其中包含瞬时响度(由M
标识)、短期响度(S
)、综合响度(I
)和响度范围(LRA
).
过滤器仅能分析具有双精度浮点样本格式的流。如果需要,输入流将转换为此规范。用户可能需要在此过滤器之后插入aformat和/或aresample过滤器,以获得原始参数。
该过滤器还具有一个视频输出(参见视频选项),带有一个实时图形以观察响度变化。图形包含上述记录的消息,因此在设置此选项时不再打印,除非设置了详细日志记录。主图形区域包含短期响度(分析3秒),右侧的量表显示瞬时响度(400毫秒),但可以选择配置为显示短期响度(参见量表).
绿色区域表示目标响度(默认为-23LUFS,除非通过目标).
修改)上下1LU的范围。更多有关EBU R128响度推荐的信息请访问.
过滤器接受以下选项:
- 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
功能的构建。
true
调整单声道文件为“双声道单声”。如果单声道文件旨在在立体声系统上播放,其EBU R128测量值将被感知不准确。如果设置为- panlaw
,此选项将补偿此效果。 多通道输入文件不受此选项影响。
- target
设置一个特定的平衡律,用于测量双声道单声文件。此参数是可选的,其默认值为-3.01dB。
- gauge
设置图形中显示的值。有效值是
momentary
mshortterm
和s。默认情况下,将使用瞬时值,但在某些情况下,观察短期值可能更有用(例如,现场混音)。- scale
设置响度的显示刻度。有效参数是
absolute
(以LUFS为单位)或relative
(LU)相对于目标。这仅影响视频输出,不影响摘要或连续日志输出。- integrated
只读导出值,用于测量的综合响度,以LUFS为单位。
- range
只读导出值,用于测量的响度范围,以LU为单位。
- lra_low
只读导出值,用于测量的LRA低值,以LUFS为单位。
- lra_high
只读导出值,用于测量的LRA高值,以LUFS为单位。
- sample_peak
只读导出值,用于测量的采样峰值,以dBFS为单位。
- true_peak
只读导出值,用于测量的真实峰值,以dBFS为单位。
37.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 -
37.11 交错,a交错
临时交错来自多个输入的帧。
interleave
用于视频输入,ainterleave
用于音频。
这些过滤器从多个输入中读取帧,并将最旧的排队帧发送到输出。
输入流必须具有明确定义的,单调递增的帧时间戳值。
为了向输出提交一个帧,这些过滤器需要为每个输入排队至少一个帧,因此,如果一个输入尚未终止并且不会接收传入帧,它们将无法正常工作。
例如,考虑一个输入是一个select
过滤器,它一直丢弃输入帧。interleave
过滤器将继续从该输入中读取,但无法发送新帧到输出,直到输入发送流末信号。
此外,根据输入同步,过滤器会在一个输入接收到的帧比其他输入更多并且队列已经满的情况下丢弃帧。
这些过滤器接受以下选项:
- nb_inputs, n
设置不同输入的数量,默认值为2。
- duration
如何确定流末信号。
- longest
最长输入的持续时间。(默认)
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
37.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
添加闪烁模糊效果:
37.12 延迟,a延迟
测量过滤延迟。
报上一个过滤器的过滤延迟,对于音频过滤器以音频样本为单位,对于视频过滤器以视频帧为单位。
37.13 元数据,a元数据
操作帧元数据。
此过滤器接受以下选项:
- 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
与元数据值相等,则返回 true。- ‘greater’
值被解释为浮点数,如果元数据值大于,则返回 true。
value
.- ‘expr’
值被解释为浮点数,如果选项表达式
expr
计算结果为真,则返回 true。- ‘ends_with’
值被解释为字符串,如果元数据值以选项字符串结尾,则返回 true。
value
选项字符串。
- expr
设置表达式,用于
function
设置为时使用expr
。 表达式通过 eval API 进行评估,可以包含以下常量:- VALUE1, FRAMEVAL
元数据键中的
value
的浮点表示。- VALUE2, USERVAL
选项中用户提供的
value
的浮点表示。value
。
- file
如果在
print
模式中指定,输出将写入指定的文件名。除了普通文件名外,还可以指定任何可写 URL。文件名 “-” 是标准输出的简写。如果file
选项未设置,输出将以 AV_LOG_INFO 日志级别写入日志。- direct
当使用文件将输出写入 URL 时,减少打印模式中的缓冲。.
37.13.1 示例
- 打印具有键
lavfi.signalstats.YDIF
的帧的所有元数据值,值在 0 到 1 之间。signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
- 将 silencedetect 输出打印到文件中metadata.txt.
silencedetect,ametadata=mode=print:file=metadata.txt
- 将所有元数据定向到文件描述符 4 的管道。
metadata=mode=print:file='pipe\:4'
37.14 perms, aperms
设置输出帧的读/写权限。
这些滤镜主要针对开发人员,用于测试过滤器图中的后续过滤器的直接路径。
过滤器接受以下选项:
- mode
选择权限模式。
它接受以下值:
- ‘none’
不采取任何操作。这是默认值。
- ‘ro’
设置所有输出帧为只读。
- ‘rw’
设置所有输出帧为直接可写。
- ‘toggle’
如果可写则使帧为只读,如果是只读则使其可写。
- ‘random’
随机设置每个输出帧为只读或可写。
- seed
为随机模式设置种子,必须是
0
和UINT32_MAX
之间的一个整数。如果未指定,或明确设置为-1
,过滤器会尽最大努力使用良好的随机种子。
注意:在权限过滤器与后续滤镜之间插入的自动插入滤镜的情况下,可能无法按照预期接收到权限。在权限/aperms 过滤器之前插入格式或a格式过滤器可以避免此问题。
37.15 实时, 实时音频
减缓过滤,以大致匹配实时。
这些过滤器将暂停过滤一段可变时间,以使输入时间戳的输出速率相匹配。
它们类似于为re选项设置的ffmpeg
.
。
- limit
暂停的时间限制。超过该时间长度的暂停将被视为时间戳不连续,并重置计时器。默认值为 2 秒。
- speed
处理的速度因子。该值必须是大于零的浮点数。超过 1.0 的值将导致比实时更快的处理,小于 1.0 的值将减慢处理速度。限制将根据需要自动调整。默认值为 1.0。
不能通过这些过滤器实现比其本身更快的处理速度。
37.15.1 命令
两个过滤器都支持所有上述选项作为命令.
37.16 片段, 音频片段
将单个输入流拆分为多个输出流。
此过滤器与合并过滤器的作用相反。
segment
作用于视频帧,asegment
作用于音频样本。
此过滤器接受以下选项:
- timestamps
由 '|' 分隔的输出片段的时间戳。第一个片段从输入流的开始运行。最后一个片段将运行直到输入流的结束。
- frames, samples
分割片段的精确帧/样本数。
在所有情况下,每个片段前添加 '+' 将使其与前一个片段相对。
37.16.1 示例
- 将输入音频流分为三个输出音频流,从输入音频流的开头开始并存储在第一个输出音频流中,接着是在第 60 秒时开始并存储在第 2 个输出音频流中,最后是在输入音频流的第 150 秒后存储在第 3 个输出音频流中:
asegment=timestamps="60|150"
37.17 选择, 音频选择
选择帧以通过输出。
此过滤器接受以下选项:
- expr, e
设置表达式,它将对每个输入帧进行评估。
如果表达式评估为零,则该帧会被丢弃。
如果评估结果为负或 NaN,则该帧发送到第一个输出;否则它将发送到索引为
ceil(val)-1
的输出,假定输入索引从 0 开始。例如,
1.2
的值对应于索引为ceil(1.2)-1 = 2-1 = 1
的输出,也就是第二个输出。- outputs, n
设置输出数量。将根据评估结果选择帧要发送的输出。默认值为 1。
表达式可以包含以下常量:
- n
过滤帧的序号(从 0 开始)。
- selected_n
选定帧的序号(从 0 开始)。
- prev_selected_n
最后选取的帧的序号。如果未定义,则为 NAN。
- TB
输入时间戳的时间基。
- pts
过滤帧的 PTS(演示时间戳),以时间基单位表示。如果未定义,则为 NAN。
- t
过滤帧的 PTS,以秒表示。如果未定义,则为 NAN。
- prev_pts
之前过滤帧的 PTS。如果未定义,则为 NAN。
- prev_selected_pts
最近之前过滤帧的 PTS。如果未定义,则为 NAN。
- prev_selected_t
最近之前选定帧的 PTS,以秒表示。如果未定义,则为 NAN。
- start_pts
流中第一个非 NAN 的 PTS。如果未找到,则仍为 NAN。
- start_t
流中第一个非 NAN 的 PTS,以秒表示。如果未找到,则仍为 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
合并解复用器可以通过设置入点和出点仅选择部分合并输入文件,但输出包可能未完全包含在所选区间内。通过使用此变量,可以跳过合并解复用器生成的未完全包含在所选区间的帧。
这通过将帧的 PTS 与lavf.concat.start_time和lavf.concat.duration的包元数据值进行比较,这些值也存在于解码帧中。
The concatdec_select变量为 -1,如果帧的 PTS 至少为开始时间,并且缺少持续时间元数据或帧的 PTS 小于开始时间 + 持续时间;否则为 0,如果缺少开始时间元数据,则为 NaN。
这基本上意味着,如果输入帧的 PTS 在合并解复用器设置的间隔内,则选择该帧。
- iw (仅视频)
表示输入视频帧的宽度。
- ih (仅视频)
表示输入视频帧的高度。
- view (仅视频)
多视图视频的视图 ID。
选择表达式的默认值为 "1"。
37.17.1 示例
- 选择输入中的所有帧:
select
上面的示例与以下示例相同:
select=1
- 跳过所有帧:
select=0
- 仅选择关键帧:
select='eq(pict_type\,I)'
- 每 100 帧选择一个帧:
select='not(mod(n\,100))'
- 仅选择处于 10-20 秒时间区间的帧:
select=between(t\,10\,20)
- 仅选择处于 10-20 秒时间区间的关键帧:
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
37.18 发送命令,发送音频命令
向过滤器图中的过滤器发送命令。
这些过滤器读取要发送到过滤器图中其他过滤器的命令。
sendcmd
必须插入到两个视频过滤器之间,asendcmd
必须插入到两个音频过滤器之间,但除此之外它们的作用相同。
命令的规范可以通过过滤器参数中的命令选项指定,或在文件中通过文件名选项指定。
这些过滤器接受以下选项:
- commands, c
设置要读取的命令并发送到其他过滤器。
- filename, f
设置命令文件名以读取命令并发送到其他过滤器。
37.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]
37.18.2 示例
- 在第4秒指定音频节奏变化:
asendcmd=c='4.0 atempo tempo 1.5',atempo
- 定位特定滤镜实例:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
- 在文件中指定绘制文本和色调命令列表。
# 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
37.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
命令应用后的第一帧时间或无命令时的第一帧时间。
37.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
37.19.2 命令
两个滤镜支持上述所有选项作为命令.
37.20 setrange
为输出视频帧强制设置颜色范围。
滤镜标记输出帧的颜色范围属性。它不会更改输入帧,只设置相关属性,影响帧在后续滤镜中的处理方式。setrange
filter marks the color range property for the
output frames. It does not change the input frame, but only sets the
corresponding property, which affects how the frame is treated by
following filters.
滤镜接受以下选项:
- range
可以用的值有:
- ‘auto’
保持相同的颜色范围属性。
- ‘unspecified, unknown’
将颜色范围设置为未指定。
- ‘limited, tv, mpeg’
将颜色范围设置为有限。
- ‘full, pc, jpeg’
将颜色范围设置为完整。
37.21 settb, asettb
设置用于输出帧时间戳的时间基准。 主要用于测试时间基准配置。
它接受以下参数:
- expr, tb
评估为输出时间基准的表达式。
的值是表示有理数的算术表达式。表达式可以包含常量"AVTB"(默认时间基准)、"intb"(输入时间基准)和"sr"(采样率,仅音频)。默认值为"intb"。tb is an arithmetic expression representing a rational. The expression can contain the constants "AVTB" (the default timebase), "intb" (the input timebase) and "sr" (the sample rate, audio only). Default value is "intb".
37.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
37.22 showcqt
将输入音频转化为表示频谱的视频输出 计算频域系数,使用Brown-Puckette常数Q变换算法(但变换本身并不是真正的常数Q,相反,Q因子实际上是可变的/受限), 有乐音标尺,从E0到D#10。
滤镜接受以下选项:
- size, s
指定输出的视频尺寸。它必须为偶数。此选项的语法可以查看(ffmpeg-utils)"视频尺寸"章节在ffmpeg-utils手册中默认值为
1920x1080
.- fps, rate, r
设置输出帧速率。默认值为
25
.- bar_h
设置柱状图高度。它必须为偶数。默认值为
-1
自动计算柱状图高度。- axis_h
设置轴高。它必须为偶数。默认值为
-1
自动计算轴高。- sono_h
设置声谱图高度。它必须为偶数。默认值为
-1
自动计算声谱图高度。- fullhd
设置全高清分辨率。此选项已弃用,请使用尺寸, s替代。默认值为
1
.- sono_v, volume
指定声谱图音量表达式。它可以包含变量:
- bar_v
的bar_v被评估的表达式
- frequency, freq, f
评估的频率
- timeclamp, tc
的值timeclamp选项
和函数:
- a_weighting(f)
A加权等响度
- b_weighting(f)
B加权等响度
- c_weighting(f)
C加权等响度。
默认值为
16
.- bar_v, volume2
指定柱状图音量表达式。它可以包含变量:
- sono_v
的sono_v被评估的表达式
- frequency, freq, f
评估的频率
- timeclamp, tc
的值timeclamp选项
和函数:
- a_weighting(f)
A加权等响度
- b_weighting(f)
B加权等响度
- c_weighting(f)
C加权等响度。
默认值为
sono_v
.- sono_g, gamma
指定声谱图伽马值。伽马值越低频谱对比越强,伽马值越高频谱范围越大。默认值为
3
。 可接受范围是[1, 7]
.- bar_g, gamma2
指定柱状图伽马值。默认值为
1
。可接受范围是[1, 7]
.- bar_t
指定柱状图透明度级别。值越低柱状图越清晰。 默认值是
1
。可接受范围是[0, 1]
.- timeclamp, tc
指定变换时间约束。在低频率下,时间域和频率域的精度之间存在权衡。如果时间约束值较低,时间域事件会更准确地表示(如快速低音鼓),否则频率域事件会更准确地表示(如低音吉他)。可接受范围是
[0.002, 1]
。默认值为0.17
.- attack
设置攻击时间(以秒为单位)。默认值是
0
(禁用)。否则,它通过在时间域应用非对称窗口限制未来样本, 在需要低延迟时很有用。接受范围是[0, 1]
.- basefreq
指定变换基频。默认值为
20.01523126408007475
, 是低于E0频率50分音的频率。可接受范围是[10, 100000]
.- endfreq
指定变换结束频率。默认值为
20495.59681441799654
, 是高于D#10频率50分音的频率。可接受范围是[10, 100000]
.- coeffclamp
此选项已弃用,不再使用。
- tlength
指定变换长度时间域。使用此选项控制每个频率样本在时间域和频率域之间的精度权衡。 它可以包含变量:
- frequency, freq, f
评估的频率
- timeclamp, tc
的值timeclamp选项。
默认值为
384*tc/(384+tc*f)
.- count
指定每一视频帧的变换计数。默认值为
6
。 可接受范围是[1, 30]
.- fcount
指定每个像素的变换计数。默认值为
0
, 这使其自动计算。可接受范围是[0, 10]
.- fontfile
指定用于轴刻画的FreeType字体文件。如果未指定,则使用嵌入字体。请注意,使用字体文件或嵌入字体在使用自定义基频和结束频率时未实现,请改用轴文件选项。
- font
指定字体配置模式。它的优先级低于字体文件。
:
模式中的|
可能被替换以避免不必要的转义。- fontcolor
指定字体颜色表达式。这是一个应该返回整数值0xRRGGBB的算术表达式。它可以包含变量:
- frequency, freq, f
评估的频率
- timeclamp, tc
的值timeclamp选项
和函数:
- midi(f)
频率f的MIDI编号,一些MIDI编号:E0(16)、C1(24)、C2(36)、A4(69)
- r(x), g(x), b(x)
强度x的红、绿、蓝值。
默认值为
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
指定图像文件以刻画轴。这将覆盖字体文件和字体颜色选项。
- axis, text
启用/禁用向轴文字绘制。如果设置为
0
,绘制到轴上被禁用,忽略字体文件和轴文件选项。 默认值是1
.- csp
设置颜色空间。可接受的值是:
- ‘unspecified’
未指定(默认)
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470BG 或 BT.601-6 625
- ‘smpte170m’
SMPTE-170M 或 BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘bt2020ncl’
BT.2020,带非恒定亮度
- cscheme
设置频谱图颜色方案。这是浮点数值列表,格式为
left_r|left_g|left_b|right_r|right_g|right_b
。 默认值是1|0.5|0|0|0.5|1
.
37.22.1 示例
- 播放音频同时显示频谱:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
- 如上,但帧率为30 fps:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
- 播放,分辨率为1280x720:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
- 禁用声谱图显示:
sono_h=0
- A1及其谐波:A1,A2,(接近)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]'
- 如上,但在频率域中更高精度:
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]'
- 自定义音量:
bar_v=10:sono_v=bar_v*a_weighting(f)
- 自定义伽马值,现在频谱与振幅呈线性关系。
bar_g=2:sono_g=2
- 自定义tlength方程:
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)))'
- 自定义字体颜色和字体文件,C音符为绿色,其他音符为蓝色:
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
- 使用FontConfig自定义字体:
font='Courier New,Monospace,mono|bold'
- 使用图像文件以便设置自定义频率范围和轴:
axisfile=myaxis.png:basefreq=40:endfreq=10000
37.23 showcwt
将输入音频转化为视频输出,表示频谱, 使用连续小波变换和Morlet小波。
滤镜接受以下选项:
- size, s
指定输出的视频尺寸。关于此选项的语法, 可以查看(ffmpeg-utils)"视频尺寸"章节在ffmpeg-utils手册中。 默认值是
640x512
.- rate, r
设置输出帧速率。默认值是
25
.- scale
设置使用的频率比例。允许值有:
- linear
- log
- bark
- mel
- erbs
- sqrt
- cbrt
- qdrt
- fm
默认值是
linear
.- iscale
设置使用的强度比例。允许值有:
- linear
- log
- sqrt
- cbrt
- qdrt
默认值是
log
.- min
设置输出中将使用的最小频率。 默认值是
20
Hz。- max
设置输出中将使用的最大频率。 默认值是
20000
Hz。实际频率上限 取决于输入音频的采样率,并且在设置值超过奈奎斯特频率时会强制此值。- imin
设置输出中将使用的最小强度。
- imax
设置输出中将使用的最大强度。
- logb
设置亮度强度在将计算的幅值映射到像素值时所采用的对数基数。 允许范围是从
0
到1
. 默认值是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
.
37.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
设置处理音频时要使用的通道。 默认情况下处理所有通道。
37.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
设置输出帧率。
37.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过滤器非常类似;请参阅该部分中的示例。
37.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]'
37.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组件的像素格式输出时设置不透明度强度。
37.27.1 示例
- 提取完整音轨的音频频谱图
并以1024x1024图片表示
ffmpeg
:ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
37.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
或RMS:r
, 默认是p
.- ds
设置显示比例,可以是线性:
lin
或对数:log
, 默认是lin
.- dm
以秒为单位。 若设置为> 0.,将在过去几秒钟的最大水平线处显示线。 默认情况下是禁用:
0.
- dmc
最大线的颜色。 当
dm
选项设置为> 0时使用。 默认值是:orange
37.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
.
37.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]
37.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
.
37.30.1 示例
- 在1024x800图像中提取整个音轨波形的通道分割表示
ffmpeg
:ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
37.31 sidedata, asidedata
删除帧附加数据或基于它选择帧。
此滤镜接受以下选项:
- mode
设置滤镜的操作模式。
可以是以下之一:
- ‘select’
选择具有以下附加数据的每个帧:
type
.- ‘delete’
删除以下附加数据:
type
如果未设置type
,则删除帧中的所有附加数据。
- type
设置与所有模式一起使用的附加数据类型。必须为
select
模式设置。 有关帧附加数据类型的列表,请参阅AVFrameSideDataType
枚举 在libavutil/frame.h中。例如,要选择AV_FRAME_DATA_PANSCAN
附加数据,应指定PANSCAN
.
37.32 spectrumsynth
从2个输入视频频谱合成音频,第一个输入流表示跨时间的幅值,第二个输入流表示跨时间的相位。 滤镜将视频中显示的频域转换回音频输出呈现的时间域。
此滤镜主要用于反转处理后的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
.
37.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
37.33 split, asplit
将输入分成几个相同的输出。
asplit
适用于音频输入,split
适用于视频输入。
滤镜接受一个参数,用于指定输出的数量。如果未指定,默认值为2。
37.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];
- 使用生成输入音频的5个副本
ffmpeg
:ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
37.34 zmq, azmq
接收通过libzmq客户端发送的命令,并将它们转发到过滤器图中的滤镜。
zmq
和azmq
作为通路过滤器。zmq
必须插入在两个视频滤镜之间,azmq
插入在两个音频滤镜之间。
两者都能够向任何类型的滤镜发送消息。
要启用这些过滤器,您需要安装libzmq库和头文件,并通过以下方式配置FFmpeg:--enable-libzmq
.
有关libzmq的更多信息,请参阅:http://www.zeromq.org/
过滤器zmq
和azmq
作为libzmq服务器,
它接收通过网络接口定义的消息,接口通过bind_address(或"b"的缩写)选项定义。
该选项的默认值为tcp://localhost:5555。您可能需要根据需要更改此值,但不要忘记转义任何‘:’符号(见过滤器图逃逸)).
接收到的消息格式必须为:
目标 命令 [参数]
目标指定命令的目标,通常是滤波器类的名称或特定滤波器实例的名称。 默认的过滤器实例名称使用模式‘Parsed_<filter_name>_<index>’, 但是您可以通过使用‘filter_name@id’语法来覆盖默认值 (参阅过滤器图语法)。).
命令指定目标过滤器的命令名称。
参数是可选的,指定给定命令的可选参数列表。.
接收消息后,消息将被处理,并将相应的命令注入到过滤器图中。根据结果,过滤器将向客户端发送回复,回复格式为:
错误代码 错误原因 消息
消息是可选的。
37.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
38 多媒体来源
以下是当前可用的多媒体来源的描述。
38.1 amovie
与movie来源相同,但默认选择一个音频流。
38.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
设置前景/背景/附加颜色。
38.2.1 命令
此源支持某些上面的选项作为命令.
38.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
为打开的文件指定格式选项。格式选项可以指定为键=值对,使用':'分隔。 以下示例显示如何添加protocol_whitelist和protocol_blacklist选项:
ffplay -f lavfi "movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"
它允许在过滤器图主输入上覆盖第二个视频,示例显示如下过滤器图:
input -----------> deltapts0 --> overlay --> output ^ | movie --> scale--> deltapts1 -------+
38.3.1 示例
- 跳过AVI文件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的音频流;视频连接到标记为"视频"的插脚,音频连接到标记为"音频"的插脚:
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
38.3.2 命令
movie 和 amovie 同时支持以下命令:
- seek
使用"av_seek_frame"进行搜索。 语法为:搜索流索引|时间戳|标志
- 流索引: 如果 stream_index 为 -1,则选择一个默认流,并且时间戳会自动从 AV_TIME_BASE 单位转换为流特定的 time_base。
- 时间戳: 时间戳以 AVStream.time_base 单位表示,或者如果没有指定流,则以 AV_TIME_BASE 单位表示。
- 标志: 选择方向和查找模式的标志。
- get_duration
以 AV_TIME_BASE 单位获取电影时长。
39 外部库
FFmpeg 可以配合多种外部库使用,来支持更多的格式。这些库默认情况下不会使用,必须通过传递适当的标志显式请求使用它们。./configure
.
39.1 开放媒体联盟 (AOM)
FFmpeg 可以使用 AOM 库来进行 AV1 解码和编码。
访问http://aomedia.org/并按照安装库的说明操作。然后传递--enable-libaom
到 configure 来启用它。
39.2 AMD AMF/VCE
FFmpeg 可以使用 AMD 高级媒体框架库来加速具有视频编码引擎 (VCE) 的硬件的 H.264 和 HEVC (仅限 Windows) 编码。
要启用支持,您必须从以下地址获取 AMF 框架头文件(版本 1.4.9+):https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git.
在系统包含路径中创建一个AMF/
目录。将AMF/amf/public/include/
的内容复制到该目录中。然后使用--enable-amf
.
初始化 AMF 编码器按以下顺序进行: 1) 尝试通过 dx11 初始化 (仅限 Windows) 2) 尝试通过 dx9 初始化 (仅限 Windows) 3) 尝试通过 Vulkan 初始化
要在 Linux 上使用 H.264 (AMD VCE) 编码器,需要 amdgpu-pro 版本 19.20+ 和 amf-amdgpu-pro 包(amdgpu-pro 包含,但不会自动安装)。
可以使用官方 AMD 驱动程序存档中的 amdgpu-pro-install 脚本安装此驱动。
39.3 AviSynth
FFmpeg 可以将 AviSynth 脚本作为输入读取。要启用支持,请在安装由--enable-avisynth
to configure after installing the headers
provided by AviSynth+提供的头文件后传递-DHEADERS_ONLY:bool=on
到正常基于 CMake 的构建系统,或使用提供的GNUmakefile
.
对于 Windows,支持的 AviSynth 变体为AviSynth 2.6 RC1 或更高版本支持 32 位构建,以及AviSynth+ r1718 或更高版本支持 32 位和 64 位构建。
对于 Linux、macOS 和 BSD,唯一支持的 AviSynth 变体是AviSynth+,从版本 3.5 开始支持。
在 2016 年,AviSynth+ 添加了支持使用 GCC 构建。但是,由于 Windows 的调用约定的特殊性,使用 GCC 构建的 32 位 AviSynth+ 与典型的 32 位 FFmpeg 构建不兼容。
默认情况下,FFmpeg 假定与 MSVC 构建的 32 位 AviSynth+ 兼容,因为这是最广泛使用和令人信服的构建配置。用户可以通过传递-DAVSC_WIN32_GCC32
到--extra-cflags
在配置 FFmpeg 时覆盖此设置并启用对 GCC 构建的 32 位 AviSynth+ 的支持。
FFmpeg 的 64 位构建不受影响,可以使用 MSVC 或 GCC 构建的 AviSynth+,无需任何特殊标志。
AviSynth(+) 是动态加载的。分发者可以使用--enable-avisynth
构建 FFmpeg,即使最终用户未安装 AviSynth,该二进制文件也会正常工作。如果/当最终用户希望使用 AviSynth 脚本时,他们可以安装 AviSynth(+) 并且 FFmpeg 能够找到并使用它打开脚本。
39.4 Chromaprint
FFmpeg 可以使用 Chromaprint 库生成音频指纹。传递--enable-chromaprint
到 configure 来启用它。参见https://acoustid.org/chromaprint.
39.5 codec2
FFmpeg 可以使用 codec2 库进行 codec2 解码和编码。目前没有原生解码器,因此解码时必须使用 libcodec2。
访问http://freedv.org/下载“Codec 2 源代码归档”。
使用 CMake 构建并安装。Debian 用户可以安装 libcodec2-dev 包。
安装 libcodec2 后,可以传递--enable-libcodec2
到 configure 来启用它。
使用 codec2 最简单的方法是使用 .c2 文件,因为它们包含解码所需的模式信息。
要编码这样的文件,请使用 .c2 文件扩展名并为 libcodec2 编码器提供 -模式选项: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
.
39.6 dav1d
FFmpeg 可以使用 dav1d 库进行 AV1 视频解码。
访问https://code.videolan.org/videolan/dav1d并按照安装库的说明操作。然后传递--enable-libdav1d
到 configure 来启用它。
39.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 才能使用它。
39.8 uavs3d
FFmpeg 可以使用 uavs3d 库进行 AVS3-P2/IEEE1857.10 视频解码。
访问https://github.com/uavs3/uavs3d并按照安装库的说明操作。然后传递--enable-libuavs3d
到 configure 来启用它。
39.9 游戏音乐仿真
FFmpeg 可以使用游戏音乐仿真库来读取支持的视频游戏音乐文件格式中的音频。传递--enable-libgme
到 configure 来启用它。参见https://bitbucket.org/mpyne/game-music-emu/overview.
39.10 Intel QuickSync 视频
FFmpeg 可以使用 Intel QuickSync 视频 (QSV) 加速多个编解码器的解码和编码。
要使用 QSV,FFmpeg 必须链接到libmfx
调度器,以加载实际的解码库。
调度器是开源的,可以从以下地址下载https://github.com/lu-zero/mfx_dispatch.git。
FFmpeg 需要配置--enable-libmfx
选项,并且pkg-config
需要能够定位调度器的.pc
文件。
39.11 Kvazaar
FFmpeg 可以使用 Kvazaar 库进行 HEVC 编码。
访问https://github.com/ultravideo/kvazaar并按照安装库的说明操作。然后传递--enable-libkvazaar
到 configure 来启用它。
39.12 LAME
FFmpeg 可以使用 LAME 库进行 MP3 编码。
访问http://lame.sourceforge.net/并按照安装库的说明操作。
然后传递--enable-libmp3lame
到 configure 来启用它。
39.13 LCEVCdec
FFmpeg 可以使用 liblcevc_dec 库对支持的比特流进行 LCEVC 增强层解码。
访问https://github.com/v-novaltd/LCEVCdec并按照安装库的说明操作。然后传递--enable-liblcevc-dec
到 configure 来启用它。
LCEVCdec 遵循 BSD-3-Clause-Clear 许可证。
39.14 libilbc
iLBC 是 Google 在 WebRTC 项目中免费提供的一种窄带语音编解码器。libilbc 是 iLBC 编解码的包装友好副本。 FFmpeg 可以使用 libilbc 库进行 iLBC 解码和编码。
访问https://github.com/TimothyGu/libilbc并按照安装库的说明操作。然后传递--enable-libilbc
到 configure 来启用它。
39.15 libjxl
JPEG XL 是一种图像格式,旨在从长远来看完全取代老旧的 JPEG。请参阅https://jpegxl.info/了解更多信息,并参阅https://github.com/libjxl/libjxl获取库资源。您可以传递--enable-libjxl
到 configure 来启用 libjxl 包装器。
39.16 libvpx
FFmpeg 可以使用 libvpx 库进行 VP8/VP9 解码和编码。
访问http://www.webmproject.org/并按照安装库的说明操作。然后传递--enable-libvpx
到 configure 来启用它。
39.17 ModPlug
FFmpeg 可以使用该库(源自 Modplug-XMMS)从 MOD 类音乐文件中读取内容。
请参阅https://github.com/Konstanty/libmodplug。传递--enable-libmodplug
到 configure 来启用它。
39.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。
您必须通过传递以下内容将 FFmpeg 的许可证升级为 LGPL 版本 3(或如果您启用了 GPL 组件,则为 GPL 版本 3):--enable-version3
到 configure 才能使用。
Fraunhofer AAC 库的许可证与 GPL 不兼容。
因此,对于 GPL 构建,您必须传递--enable-nonfree
到
configure 才能使用。尽我们所知,它与 LGPL 兼容。
39.18.1 OpenCORE AMR
FFmpeg 可以使用 OpenCORE 库进行 AMR-NB 解码/编码和 AMR-WB 解码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明操作。
然后传递--enable-libopencore-amrnb
和/或--enable-libopencore-amrwb
到 configure 来启用它们。
39.18.2 VisualOn AMR-WB 编码库
FFmpeg 可以使用 VisualOn AMR-WBenc 库进行 AMR-WB 编码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明操作。
然后传递--enable-libvo-amrwbenc
到 configure 来启用它。
39.18.3 Fraunhofer AAC 库
FFmpeg 可以使用 Fraunhofer AAC 库进行 AAC 解码和编码。
访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明操作。
然后传递--enable-libfdk-aac
到 configure 来启用它。
39.18.4 LC3 库
FFmpeg 可以使用 Google LC3 库进行 LC3 解码和编码。
访问https://github.com/google/liblc3/并按照安装库的说明操作。
然后传递--enable-liblc3
到 configure 来启用它。
39.19 OpenH264
FFmpeg 可以使用 OpenH264 库进行 H.264 解码和编码。
访问http://www.openh264.org/并按照安装库的说明操作。然后传递--enable-libopenh264
到 configure 来启用它。
对于解码,此库比内置解码器 libavcodec 更为有限;目前,此库缺乏对解码 B 帧及某些主/高配置文件功能的支持。(它目前仅支持受限基线配置文件和 CABAC。)使用它主要用于测试及利用 Cisco 的专利组合许可证(http://www.openh264.org/BINARY_LICENSE.txt).
39.20 OpenJPEG
FFmpeg 可以使用 OpenJPEG 库进行 J2K 视频的解码和编码。访问http://www.openjpeg.org/获取库并按照安装说明操作。要在 FFmpeg 中启用使用 OpenJPEG,请传递--enable-libopenjpeg
到./configure.
39.21 rav1e
FFmpeg 可以通过 C 绑定使用 rav1e (Rust AV1 编码器) 对视频进行编码。
访问https://github.com/xiph/rav1e/并按照说明构建 C 库。要在 FFmpeg 中启用 rav1e,请传递--enable-librav1e
到./configure.
39.22 SVT-AV1
FFmpeg可以使用SVT-AV1库进行AV1编码。
前往https://gitlab.com/AOMediaCodec/SVT-AV1/并按照说明安装库。然后传递--enable-libsvtav1
到配置以启用它。
39.23 TwoLAME
FFmpeg可以使用TwoLAME库进行MP2编码。
前往http://www.twolame.org/并按照说明安装库。然后传递--enable-libtwolame
到配置以启用它。
39.24 VapourSynth
FFmpeg可以读取VapourSynth脚本作为输入。要启用支持,请传递--enable-vapoursynth
到配置。Vapoursynth通过pkg-config
进行检测。支持版本42或更高。
见http://www.vapoursynth.com/.
由于安全问题,Vapoursynth脚本将不会被自动检测,因此必须强制选择输入格式。对于ff* CLI工具,请添加-f vapoursynth
到输入之前。-i yourscript.vpy
.
39.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才能使用它。
39.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才能使用它。
39.27 xavs
FFmpeg可以使用xavs库进行AVS编码。
前往http://xavs.sf.net/并按照说明安装库。然后传递--enable-libxavs
到配置以启用它。
39.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才能使用它。
39.29 eXtra-fast Essential Video Encoder (XEVE)
FFmpeg可以使用XEVE库进行EVC视频编码。
前往https://github.com/mpeg5/xeve并按照说明安装XEVE库。然后传递--enable-libxeve
到配置以启用它。
39.30 eXtra-fast Essential Video Decoder (XEVD)
FFmpeg可以使用XEVD库进行EVC视频解码。
前往https://github.com/mpeg5/xevd并按照说明安装XEVD库。然后传递--enable-libxevd
到配置以启用它。
39.31 ZVBI
ZVBI是一种VBI解码库,FFmpeg可以使用它解码DVB电视文字页和DVB电视文字字幕。
前往http://sourceforge.net/projects/zapping/并按照说明安装库。然后传递--enable-libzvbi
到配置以启用它。
40 支持的文件格式、编解码器或功能
您可以使用-formats
和-codecs
选项获取详尽列表。
40.1 文件格式
FFmpeg通过libavformat
库支持以下文件格式:
名称 | 编码 | 解码 | 备注 |
3dostr | X | ||
4xm | X | 4X Technologies格式,用于某些游戏。 | |
8088flex TMV | X | ||
AAX | X | Audible增强音频格式,用于有声书。 | |
AA | X | Audible格式2、3和4,用于有声书。 | |
ACT语音 | X | 包含G.729音频 | |
Adobe影片条 | X | X | |
Audio IFF (AIFF) | X | X | |
American Laser Games MM | X | Multimedia format used in games like Mad Dog McCree. | |
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 游戏机的游戏。 |
Silicon Graphics Movie | X | ||
Sierra SOL | X | .sol 文件用于 Sierra Online 游戏。 | |
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 | 用于 Nintendo GameCube。 | |
Tiertex Limited SEQ | X | Tiertex 在 DOS CD-ROM 版游戏 Flashback 中使用的 .seq 文件。 | |
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 Televison (WTV) | X | X | |
Wing Commander III movie | X | Origin's 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 | XAudio 2 使用的 Microsoft 音频容器。 | |
扩展二进制文本 (XBIN) | X | ||
YUV4MPEG 管道 | X | X | |
Psygnosis YOP | X |
X
表示该列中的功能(编码 / 解码)已支持。
40.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 Paintbrush |
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 Paint | |
PNG | X | X | 便携式网络图形图像 |
PPM | X | X | 便携式像素图图像 |
PSD | X | Photoshop | |
PTX | X | V.Flash PTX 格式 | |
QOI | X | X | Quite OK 图像格式 |
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 Window Dump 图像格式 |
X
表示该列中的功能(编码 / 解码)已支持。
E
表示支持通过外部库提供。
40.3 视频编解码器
名称 | 编码 | 解码 | 备注 |
4X Movie | X | 用于某些电脑游戏。 | |
8088flex TMV | X | ||
A64 多色模式 | X | 创建适合在 Commodore 64 上播放的视频(多色模式)。 | |
Amazing Studio PAF 视频 | X | ||
American Laser Games MM | X | 用于游戏如 Mad Dog McCree。 | |
Amuse Graphics Movie | X | ||
AMV 视频 | X | X | 用于中国的 MP3 播放器。 |
ANSI/ASCII 艺术 | 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.
40.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 Movie | X | ||
ADPCM Argonaut Games | X | X | |
ADPCM CDROM XA | X | ||
ADPCM Creative Technology | X | 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2 | |
ADPCM Electronic Arts | X | 用于 EA 的各种游戏标题。 | |
ADPCM Electronic Arts Maxis CDROM XS | X | 用于《城市模拟3000》。 | |
ADPCM Electronic Arts R1 | X | ||
ADPCM Electronic Arts R2 | X | ||
ADPCM Electronic Arts R3 | X | ||
ADPCM Electronic Arts 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 Electronic Arts EACS | X | ||
ADPCM IMA Electronic Arts 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 | 用于部分 Sega Saturn 主机游戏。 | |
ADPCM IMA Duck DK4 | X | 用于部分 Sega Saturn 主机游戏。 | |
ADPCM IMA Radical | X | ||
ADPCM Microsoft | X | X | |
ADPCM MS IMA | X | X | |
ADPCM Nintendo Gamecube AFC | X | ||
ADPCM Nintendo Gamecube DTK | X | ||
ADPCM Nintendo THP | X | ||
ADPCM Playstation | X | ||
ADPCM QT IMA | X | X | |
ADPCM SEGA CRI ADX | X | X | 用于 Sega Dreamcast 游戏。 |
ADPCM Shockwave Flash | X | X | |
ADPCM Sound Blaster Pro 2-bit | X | ||
ADPCM Sound Blaster Pro 2.6-bit | X | ||
ADPCM Sound Blaster Pro 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 | ||
Apple 无损音频 | 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(部分支持) |
Dolby E | X | ||
DPCM 立方根-差分-精确 | X | 用于少量游戏。 | |
DPCM Gremlin | X | ||
DPCM id RoQ | X | X | 用于《雷神之锤 III》、《绝地武士2》等其他电脑游戏。 |
DPCM Marble WADY | X | ||
DPCM Interplay | X | 用于各种 Interplay 电脑游戏。 | |
DPCM 平方根-差分-精确 | X | 用于各种游戏。 | |
DPCM Sierra Online | X | 用于 Sierra Online 游戏音频文件。 | |
DPCM Sol | X | ||
DPCM Xan | X | 用于 Origin 的《银河飞行IV AVI文件》。 | |
DPCM Xilam DERF | X | ||
DSD (直接流数字),最小有效位最先 | X | ||
DSD (直接流数字),最大有效位最先 | X | ||
DSD (直接流数字),最小有效位最先,平面 | X | ||
DSD (直接流数字),最大有效位最先,平面 | X | ||
DSP Group TrueSpeech | X | ||
DST (直接流传输) | 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 | encoding supported through external library libgsm |
GSM Microsoft variant | E | X | encoding supported through external library libgsm |
IAC (Indeo Audio Coder) | X | ||
iLBC (Internet Low Bitrate Codec) | E | EX | encoding and decoding supported through external library libilbc |
IMC (Intel Music Coder) | X | ||
Interplay ACM | X | ||
LC3 | E | E | supported through external library liblc3 |
MACE (Macintosh Audio Compression/Expansion) 6:1 | X | ||
Marian’s A-pac audio | X | ||
MI-SC4 (Micronas SC-4 Audio) | X | ||
MLP (Meridian Lossless Packing) | X | X | Used in DVD-Audio discs. |
Monkey’s Audio | X | ||
MP1 (MPEG audio layer 1) | IX | ||
MP2 (MPEG audio layer 2) | IX | IX | encoding supported also through external library TwoLAME |
MP3 (MPEG audio layer 3) | E | IX | encoding supported through external library LAME, ADU MP3 and MP3onMP4 also supported |
MPEG-4 Audio Lossless Coding (ALS) | X | ||
MobiClip FastAudio | X | ||
Musepack SV7 | X | ||
Musepack SV8 | X | ||
Nellymoser Asao | X | X | |
On2 AVC (Audio for Video Codec) | X | ||
Opus | E | X | encoding supported through external library libopus |
OSQ (Original Sound Quality) | X | ||
PCM A-law | X | X | |
PCM mu-law | X | X | |
PCM Archimedes VIDC | X | X | |
PCM signed 8-bit planar | X | X | |
PCM signed 16-bit big-endian planar | X | X | |
PCM signed 16-bit little-endian planar | X | X | |
PCM signed 24-bit little-endian planar | X | X | |
PCM signed 32-bit little-endian planar | X | X | |
PCM 32-bit floating point big-endian | X | X | |
PCM 32-bit floating point little-endian | X | X | |
PCM 64-bit floating point big-endian | X | X | |
PCM 64-bit floating point little-endian | X | X | |
PCM D-Cinema audio signed 24-bit | X | X | |
PCM signed 8-bit | X | X | |
PCM signed 16-bit big-endian | X | X | |
PCM signed 16-bit little-endian | 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).
40.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.
40.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.
40.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.
40.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 |
41 See Also
ffplay, ffmpeg, ffprobe, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters
42 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.
Hosting provided by telepoint.bg