目錄
- 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 Metadata
- 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 音訊來源
- 29 音訊接收器
- 30 影片濾鏡
- 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 entropy
- 30.82 epx
- 30.83 eq
- 30.84 侵蝕
- 30.85 estdif
- 30.86 曝光
- 30.87 extractplanes
- 30.88 淡化
- 30.89 回饋
- 30.90 fftdnoiz
- 30.91 fftfilt
- 30.92 場
- 30.93 fieldhint
- 30.94 fieldmatch
- 30.95 fieldorder
- 30.96 填滿邊框
- 30.97 find_rect
- 30.98 填充
- 30.99 格式
- 30.100 fps
- 30.101 framepack
- 30.102 幀率
- 30.103 framestep
- 30.104 freezedetect
- 30.105 freezeframes
- 30.106 frei0r
- 30.107 fspp
- 30.108 fsync
- 30.109 gblur
- 30.110 geq
- 30.111 gradfun
- 30.112 graphmonitor
- 30.113 灰度世界
- 30.114 灰色邊緣
- 30.115 guided
- 30.116 haldclut
- 30.117 水平翻轉
- 30.118 histeq
- 30.119 直方圖
- 30.120 hqdn3d
- 30.121 hwdownload
- 30.122 hwmap
- 30.123 hwupload
- 30.124 hwupload_cuda
- 30.125 hqx
- 30.126 hstack
- 30.127 hsvhold
- 30.128 hsvkey
- 30.129 色相
- 30.130 色相飽和度
- 30.131 遲滯
- 30.132 iccdetect
- 30.133 iccgen
- 30.134 恆等
- 30.135 idet
- 30.136 il
- 30.137 膨脹
- 30.138 交錯
- 30.139 kerndeint
- 30.140 kirsch
- 30.141 lagfun
- 30.142 鏡頭校正
- 30.143 lensfun
- 30.144 lcevc
- 30.145 libplacebo
- 30.146 libvmaf
- 30.147 libvmaf_cuda
- 30.148 limitdiff
- 30.149 limiter
- 30.150 迴圈
- 30.151 lut1d
- 30.152 lut3d
- 30.153 lumakey
- 30.154 lut, lutrgb, lutyuv
- 30.155 lut2, tlut2
- 30.156 maskedclamp
- 30.157 maskedmax
- 30.158 maskedmerge
- 30.159 maskedmin
- 30.160 maskedthreshold
- 30.161 maskfun
- 30.162 mcdeint
- 30.163 中值
- 30.164 mergeplanes
- 30.165 mestimate
- 30.166 midequalizer
- 30.167 minterpolate
- 30.168 混合
- 30.169 單色
- 30.170 morpho
- 30.171 mpdecimate
- 30.172 msad
- 30.173 乘法
- 30.174 負片
- 30.175 nlmeans
- 30.176 nnedi
- 30.177 noformat
- 30.178 雜訊
- 30.179 正規化
- 30.180 null
- 30.181 ocr
- 30.182 ocv
- 30.183 示波器
- 30.184 疊加
- 30.185 overlay_cuda
- 30.186 owdenoise
- 30.187 邊框填充
- 30.188 palettegen
- 30.189 paletteuse
- 30.190 透視
- 30.191 相位
- 30.192 光敏感性
- 30.193 pixdesctest
- 30.194 像素化
- 30.195 pixscope
- 30.196 pp
- 30.197 pp7
- 30.198 預乘
- 30.199 prewitt
- 30.200 偽色
- 30.201 psnr
- 30.202 pullup
- 30.203 qp
- 30.204 qrencode
- 30.205 quirc
- 30.206 隨機
- 30.207 readeia608
- 30.208 readvitc
- 30.209 remap
- 30.210 removegrain
- 30.211 removelogo
- 30.212 repeatfields
- 30.213 反向
- 30.214 rgbashift
- 30.215 roberts
- 30.216 旋轉
- 30.217 sab
- 30.218 縮放
- 30.219 scale_cuda
- 30.220 scale_npp
- 30.221 scale2ref_npp
- 30.222 scale_vt
- 30.223 scharr
- 30.224 滾動
- 30.225 scdet
- 30.226 selectivecolor
- 30.227 separatefields
- 30.228 setdar, setsar
- 30.229 setfield
- 30.230 setparams
- 30.231 sharpen_npp
- 30.232 剪切
- 30.233 showinfo
- 30.234 showpalette
- 30.235 shuffleframes
- 30.236 shufflepixels
- 30.237 shuffleplanes
- 30.238 signalstats
- 30.239 簽名
- 30.240 siti
- 30.241 smartblur
- 30.242 sobel
- 30.243 spp
- 30.244 sr
- 30.245 ssim
- 30.246 stereo3d
- 30.247 streamselect, astreamselect
- 30.248 字幕
- 30.249 super2xsai
- 30.250 swaprect
- 30.251 swapuv
- 30.252 tblend
- 30.253 電影轉換
- 30.254 thistogram
- 30.255 閾值
- 30.256 縮圖
- 30.257 平鋪
- 30.258 tiltandshift
- 30.259 tinterlace
- 30.260 tmedian
- 30.261 tmidequalizer
- 30.262 tmix
- 30.263 色調映射
- 30.264 tpad
- 30.265 轉置
- 30.266 transpose_npp
- 30.267 修剪
- 30.268 解除預乘
- 30.269 銳化
- 30.270 untile
- 30.271 uspp
- 30.272 v360
- 30.273 vaguedenoiser
- 30.274 varblur
- 30.275 向量示波器
- 30.276 vidstabdetect
- 30.277 vidstabtransform
- 30.278 垂直翻轉
- 30.279 vfrdet
- 30.280 鮮豔度
- 30.281 vif
- 30.282 暗角
- 30.283 vmafmotion
- 30.284 vstack
- 30.285 w3fdif
- 30.286 波形
- 30.287 weave, doubleweave
- 30.288 xbr
- 30.289 xcorrelate
- 30.290 xfade
- 30.291 xmedian
- 30.292 xpsnr
- 30.293 xstack
- 30.294 yadif
- 30.295 yadif_cuda
- 30.296 yaepblur
- 30.297 zoompan
- 30.298 zscale
- 31 OpenCL 視訊濾鏡
- 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 視訊濾鏡
- 33 Vulkan 視訊濾鏡
- 34 QSV 視訊濾鏡
- 35 視訊來源
- 35.1 緩衝區
- 35.2 cellauto
- 35.3 coreimagesrc
- 35.4 ddagrab
- 35.5 漸層
- 35.6 mandelbrot
- 35.7 mptestsrc
- 35.8 frei0r_src
- 35.9 生命遊戲
- 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 視訊接收器
- 37 多媒體濾鏡
- 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 串聯
- 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 多媒體來源
- 39 外部函式庫
- 39.1 開放媒體聯盟 (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 和 Fraunhofer 函式庫
- 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 支援的檔案格式、編碼解碼器或功能
- 41 參見
- 42 作者
1 概要
ffplay [options] [input_url]
2 描述
FFplay 是一個非常簡單且可攜式的媒體播放器,使用 FFmpeg 函式庫和 SDL 函式庫。它主要用作各種 FFmpeg API 的測試平台。
3 選項
所有數值選項,除非另有說明,否則接受表示數字的字串作為輸入,後面可以跟隨 SI 單位字首,例如:「K」、「M」或「G」。
如果 SI 單位字首後附加「i」,則完整字首將被解釋為二進制倍數的單位字首,其基於 1024 的冪而不是 1000 的冪。在 SI 單位字首後附加「B」會將值乘以 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
將複製所有串流而不重新編碼。
串流指定符的可能形式為
- stream_index
匹配具有此索引的串流。例如,
-threads:1 4
會將第二個串流的執行緒計數設定為 4。如果 stream_index 用作額外的串流指定符(見下文),則它從匹配的串流中選擇串流編號 stream_index。串流編號基於 libavformat 偵測到的串流順序,除非也指定了串流群組指定符或程式 ID。在這種情況下,它基於群組或程式中串流的順序。- stream_type[:additional_stream_specifier]
stream_type 是以下其中之一:「v」或「V」代表視訊,「a」代表音訊,「s」代表字幕,「d」代表資料,「t」代表附件。「v」匹配所有視訊串流,「V」僅匹配非附加圖片、視訊縮圖或封面藝術的視訊串流。如果使用 additional_stream_specifier,則它匹配既具有此類型又匹配 additional_stream_specifier 的串流。否則,它匹配指定類型的所有串流。
- g:group_specifier[:additional_stream_specifier]
匹配屬於具有指定符 group_specifier 的群組的串流。如果使用 additional_stream_specifier,則它匹配既是群組的一部分又匹配 additional_stream_specifier 的串流。group_specifier 可以是以下之一
- group_index
匹配具有此群組索引的串流。
- #group_id 或 i:group_id
匹配具有此群組 ID 的串流。
- p:program_id[:additional_stream_specifier]
匹配屬於具有 ID program_id 的程式的串流。如果使用 additional_stream_specifier,則它匹配既是程式的一部分又匹配 additional_stream_specifier 的串流。
- #stream_id 或 i:stream_id
依串流 ID 匹配串流(例如,MPEG-TS 容器中的 PID)。
- m:key[:value]
匹配具有中繼資料標籤 key 且具有指定值的串流。如果未給定 value,則匹配包含具有任何值的給定標籤的串流。key 或 value 中的冒號字元「:」需要使用反斜線跳脫字元。
- disp:dispositions[:additional_stream_specifier]
匹配具有給定配置 (disposition) 的串流。dispositions 是使用「+」連接的一個或多個配置(由 -dispositions 選項列印)的列表。
- u
匹配具有可用配置的串流,編碼解碼器必須已定義,並且必須存在基本資訊,例如視訊尺寸或音訊取樣率。
請注意,在
ffmpeg
中,依中繼資料匹配僅適用於輸入檔案。
3.2 通用選項
這些選項在 ff* 工具之間共用。
- -L
顯示許可證。
- -h, -?, -help, --help [arg]
顯示說明。可以指定一個可選參數來列印有關特定項目的說明。如果未指定參數,則僅顯示基本(非進階)工具選項。
arg 的可能值為
- long
除了基本工具選項外,還列印進階工具選項。
- full
列印完整的選項列表,包括編碼器、解碼器、解多工器、多工器、濾鏡等共用和私有選項。
- decoder=decoder_name
列印有關名為 decoder_name 的解碼器的詳細資訊。使用 -decoders 選項取得所有解碼器的列表。
- encoder=encoder_name
列印有關名為 encoder_name 的編碼器的詳細資訊。使用 -encoders 選項取得所有編碼器的列表。
- demuxer=demuxer_name
列印有關名為 demuxer_name 的解多工器的詳細資訊。使用 -formats 選項取得所有解多工器和多工器的列表。
- muxer=muxer_name
列印有關名為 muxer_name 的多工器的詳細資訊。使用 -formats 選項取得所有多工器和解多工器的列表。
- filter=filter_name
列印有關名為 filter_name 的濾鏡的詳細資訊。使用 -filters 選項取得所有濾鏡的列表。
- bsf=bitstream_filter_name
列印有關名為 bitstream_filter_name 的位元串流濾鏡的詳細資訊。使用 -bsfs 選項取得所有位元串流濾鏡的列表。
- protocol=protocol_name
列印有關名為 protocol_name 的協定的詳細資訊。使用 -protocols 選項取得所有協定的列表。
- -version
顯示版本。
- -buildconf
顯示建置組態,每行一個選項。
- -formats
顯示可用的格式(包括裝置)。
- -demuxers
顯示可用的解多工器。
- -muxers
顯示可用的多工器。
- -devices
顯示可用的裝置。
- -codecs
顯示 libavcodec 已知的所有編碼解碼器。
請注意,在整個文件中,「編碼解碼器」一詞用作更正確的媒體位元串流格式的簡稱。
- -decoders
顯示可用的解碼器。
- -encoders
顯示所有可用的編碼器。
- -bsfs
顯示可用的位元串流濾鏡。
- -protocols
顯示可用的協定。
- -filters
顯示可用的 libavfilter 濾鏡。
- -pix_fmts
顯示可用的像素格式。
- -sample_fmts
顯示可用的取樣格式。
- -layouts
顯示聲道名稱和標準聲道配置。
- -dispositions
顯示串流配置。
- -colors
顯示已識別的顏色名稱。
- -sources device[,opt1=val1[,opt2=val2]...]
顯示輸入裝置的自動偵測來源。某些裝置可能會提供無法自動偵測的系統相關來源名稱。傳回的列表不能假定始終完整。
ffmpeg -sources pulse,server=192.168.0.4
- -sinks device[,opt1=val1[,opt2=val2]...]
顯示輸出裝置的自動偵測接收器。某些裝置可能會提供無法自動偵測的系統相關接收器名稱。傳回的列表不能假定始終完整。
ffmpeg -sinks pulse,server=192.168.0.4
- -loglevel [flags+]loglevel | -v [flags+]loglevel
設定日誌記錄級別和函式庫使用的旗標。
可選的 flags 字首可以包含以下值
- ‘repeat’
指示重複的日誌輸出不應壓縮到第一行,並且將省略「最後一條訊息重複 n 次」行。
- ‘level’
指示日誌輸出應在每條訊息行中添加
[level]
字首。這可以用作日誌著色的替代方案,例如,在將日誌轉儲到檔案時。
旗標也可以單獨使用,方法是添加「+」/「-」字首來設定/重設單個旗標,而不會影響其他 flags 或更改 loglevel。當同時設定 flags 和 loglevel 時,預期在最後一個 flags 值和 loglevel 之前使用「+」分隔符。
loglevel 是一個字串或數字,包含以下值之一
- ‘quiet, -8’
完全不顯示任何內容;保持靜音。
- ‘panic, 0’
僅顯示可能導致進程崩潰的致命錯誤,例如斷言失敗。目前未用於任何用途。
- ‘fatal, 8’
僅顯示致命錯誤。這些是進程絕對無法繼續的錯誤之後的錯誤。
- ‘error, 16’
顯示所有錯誤,包括可以從中恢復的錯誤。
- ‘warning, 24’
顯示所有警告和錯誤。將顯示與可能不正確或意外事件相關的任何訊息。
- ‘info, 32’
在處理期間顯示資訊性訊息。這是警告和錯誤之外的訊息。這是預設值。
- ‘verbose, 40’
與
info
相同,但更詳細。- ‘debug, 48’
顯示所有內容,包括除錯資訊。
- ‘trace, 56’
例如,要啟用重複的日誌輸出,添加
level
字首,並將 loglevel 設定為verbose
ffmpeg -loglevel repeat+level+verbose -i input output
另一個範例,啟用重複的日誌輸出,而不會影響
level
字首旗標或 loglevel 的目前狀態ffmpeg [...] -loglevel +repeat
預設情況下,程式會記錄到 stderr。如果終端機支援著色,則顏色用於標記錯誤和警告。可以透過設定環境變數
AV_LOG_FORCE_NOCOLOR
來停用日誌著色,或者可以透過設定環境變數AV_LOG_FORCE_COLOR
來強制啟用日誌著色。- -report
將完整命令列和日誌輸出轉儲到目前目錄中名為
program-YYYYMMDD-HHMMSS.log
的檔案中。此檔案對於錯誤報告很有用。它也隱含-loglevel debug
。將環境變數
FFREPORT
設定為任何值都具有相同的效果。如果該值是以「:」分隔的 key=value 序列,則這些選項將影響報告;如果選項值包含特殊字元或選項分隔符「:」,則必須對選項值進行跳脫字元處理(請參閱 ffmpeg-utils 手冊中的「引號和跳脫字元」部分)。以下選項被識別
- file
設定用於報告的檔案名稱;
%p
展開為程式的名稱,%t
展開為時間戳記,%%
展開為純%
- level
使用數值設定日誌詳細程度級別(請參閱
-loglevel
)。
例如,要使用日誌級別
32
(日誌級別info
的別名)將報告輸出到名為 ffreport.log 的檔案FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
剖析環境變數中的錯誤不是致命的,並且不會出現在報告中。
- -hide_banner
抑制列印橫幅。
所有 FFmpeg 工具通常都會顯示版權聲明、建置選項和函式庫版本。此選項可用於抑制列印此資訊。
- -cpuflags flags (global)
允許設定和清除 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 count (global)
覆寫 CPU 計數的偵測。此選項旨在用於測試。除非您知道自己在做什麼,否則請勿使用它。
ffmpeg -cpucount 2
- -max_alloc bytes
設定 ffmpeg 系列 malloc 函式在堆積上分配區塊的最大大小限制。使用此選項時請極其謹慎。如果您不了解這樣做的全部後果,請勿使用。預設值為 INT_MAX。
3.3 AVOptions
這些選項由 libavformat、libavdevice 和 libavcodec 函式庫直接提供。要查看可用 AVOption 的列表,請使用 -help 選項。它們分為兩類
- generic
可以為任何容器、編碼解碼器或裝置設定這些選項。通用選項列在容器/裝置的 AVFormatContext 選項下,以及編碼解碼器的 AVCodecContext 選項下。
- private
這些選項是針對給定的容器、裝置或編解碼器而設。私有選項列在它們各自對應的容器/裝置/編解碼器之下。
例如,若要將 ID3v2.3 標頭寫入 MP3 檔案,而不是預設的 ID3v2.4,請使用 MP3 多工器 (muxer) 的私有選項 id3v2_version
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有編解碼器 AVOptions 都是針對每個串流,因此應將串流指定符附加到它們
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
在以上範例中,多聲道音訊串流被對應輸出兩次。第一個實例使用 ac3 編解碼器和 640k 位元率進行編碼。第二個實例被降混為 2 個聲道,並使用 aac 編解碼器進行編碼。使用輸出串流的絕對索引為其指定了 128k 的位元率。
注意:-nooption 語法不能用於布林值 AVOptions,請使用 -option 0/-option 1。
注意:過去未公開的文件中,通過在選項名稱前加上 v/a/s 來指定每個串流 AVOptions 的舊方法現已過時,並將很快移除。
3.4 主要選項
- -x width
強制顯示寬度。
- -y height
強制顯示高度。
- -fs
以全螢幕模式啟動。
- -an
停用音訊。
- -vn
停用視訊。
- -sn
停用字幕。
- -ss pos
搜尋到 pos。請注意,在大多數格式中,無法精確搜尋,因此
ffplay
將搜尋到最接近 pos 的搜尋點。pos 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節。
- -t duration
播放 duration 秒的音訊/視訊。
duration 必須是時間長度規格,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間長度章節。
- -bytes
以位元組搜尋。
- -seek_interval
設定自訂間隔(秒),用於使用左右鍵搜尋。預設為 10 秒。
- -nodisp
停用圖形顯示。
- -noborder
無邊框視窗。
- -alwaysontop
視窗永遠在最上層。適用於:使用 SDL >= 2.0.5 的 X11,Windows SDL >= 2.0.6。
- -volume
設定啟動音量。0 代表靜音,100 代表無音量降低或放大。負值視為 0,高於 100 的值視為 100。
- -f fmt
強制格式。
- -window_title title
設定視窗標題(預設為輸入檔名)。
- -left title
設定視窗左側的 x 位置(預設為置中視窗)。
- -top title
設定視窗頂部的 y 位置(預設為置中視窗)。
- -loop number
循環播放影片 <number> 次。0 代表永遠循環。
- -showmode mode
設定要使用的顯示模式。mode 的可用值為
- ‘0, video’
顯示視訊
- ‘1, waves’
顯示音訊波形
- ‘2, rdft’
使用 RDFT ((反向) 實數離散傅立葉轉換) 顯示音訊頻帶
預設值為 "video",如果沒有視訊或無法播放視訊,則自動選擇 "rdft"。
您可以按下鍵來互動式循環切換可用的顯示模式w.
- -vf filtergraph
建立由 filtergraph 指定的濾鏡圖,並使用它來過濾視訊串流。
filtergraph 是要套用至串流的濾鏡圖描述,且必須具有單個視訊輸入和單個視訊輸出。在濾鏡圖中,輸入與標籤
in
關聯,輸出與標籤out
關聯。有關濾鏡圖語法的更多資訊,請參閱 ffmpeg-filters 手冊。您可以多次指定此參數,並按下按鍵,在指定的濾鏡圖和顯示模式之間循環切換w.
- -af filtergraph
filtergraph 是要套用至輸入音訊的濾鏡圖描述。使用選項 "-filters" 來顯示所有可用的濾鏡 (包括來源和接收器)。
- -i input_url
讀取 input_url。
3.5 進階選項
- -stats
印出多個播放統計資訊,特別是顯示串流持續時間、編解碼器參數、串流中的目前位置以及音訊/視訊同步偏移。預設情況下會顯示,除非記錄層級低於
info
。可以通過手動指定此選項來強制顯示。若要停用它,您需要指定-nostats
。- -fast
不符合規範的最佳化。
- -genpts
產生 pts。
- -sync type
將主時鐘設定為音訊 (
type=audio
)、視訊 (type=video
) 或外部 (type=ext
)。預設為音訊。主時鐘用於控制音訊-視訊同步。大多數媒體播放器使用音訊作為主時鐘,但在某些情況下 (串流或高品質廣播),有必要更改它。此選項主要用於除錯目的。- -ast audio_stream_specifier
使用給定的串流指定符選擇所需的音訊串流。串流指定符在 串流指定符 章節中描述。如果未指定此選項,則在已選定視訊串流的節目中選擇「最佳」音訊串流。
- -vst video_stream_specifier
使用給定的串流指定符選擇所需的視訊串流。串流指定符在 串流指定符 章節中描述。如果未指定此選項,則選擇「最佳」視訊串流。
- -sst subtitle_stream_specifier
使用給定的串流指定符選擇所需的字幕串流。串流指定符在 串流指定符 章節中描述。如果未指定此選項,則在已選定視訊或音訊串流的節目中選擇「最佳」字幕串流。
- -autoexit
影片播放完成時退出。
- -exitonkeydown
按下任何按鍵時退出。
- -exitonmousedown
按下任何滑鼠按鈕時退出。
- -codec:media_specifier codec_name
針對由 media_specifier 識別的串流強制使用特定的解碼器實作,media_specifier 可以採用值
a
(音訊)、v
(視訊) 和s
字幕。- -acodec codec_name
強制使用特定的音訊解碼器。
- -vcodec codec_name
強制使用特定的視訊解碼器。
- -scodec codec_name
強制使用特定的字幕解碼器。
- -autorotate
根據檔案元資料自動旋轉視訊。預設啟用,使用 -noautorotate 停用它。
- -framedrop
如果視訊不同步,則丟棄視訊影格。如果主時鐘未設定為視訊,則預設啟用。使用此選項為所有主時鐘來源啟用影格丟棄,使用 -noframedrop 停用它。
- -infbuf
不限制輸入緩衝區大小,盡可能快地從輸入讀取盡可能多的資料。對於即時串流預設啟用,如果未及時讀取資料,可能會丟失資料。使用此選項為所有輸入啟用無限緩衝區,使用 -noinfbuf 停用它。
- -filter_threads nb_threads
定義用於處理濾鏡管線的執行緒數量。每個管線將產生一個執行緒池,其中包含這麼多執行緒可用於並行處理。預設值為 0,表示執行緒計數將由可用的 CPU 數量決定。
- -enable_vulkan
使用 vulkan 渲染器而不是 SDL 內建渲染器。取決於 libplacebo。
- -vulkan_params
-
使用以 ":" 分隔的 key=value 鍵值對列表進行 Vulkan 配置。
- -hwaccel
使用硬體加速解碼。啟用此選項將自動啟用 vulkan 渲染器。
3.6 播放中
- q, ESC
退出。
- f
切換全螢幕。
- p, SPC
暫停。
- m
切換靜音。
- 9, 0
- /, *
分別降低和增加音量。
- a
在目前節目中循環切換音訊聲道。
- v
循環切換視訊聲道。
- t
在目前節目中循環切換字幕聲道。
- c
循環切換節目。
- w
循環切換視訊濾鏡或顯示模式。
- s
步進到下一個影格。
如果串流尚未暫停,則暫停,步進到下一個視訊影格,然後暫停。
- left/right
向後/向前搜尋 10 秒。
- down/up
向後/向前搜尋 1 分鐘。
- page down/page up
搜尋到上一個/下一個章節。或者,如果沒有章節,則向後/向前搜尋 10 分鐘。
- 滑鼠右鍵點擊
搜尋到檔案中對應於寬度比例的百分比位置。
- 滑鼠左鍵雙擊
切換全螢幕。
4 語法
本節記錄 FFmpeg 函式庫和工具使用的語法和格式。
4.1 引號和跳脫字元
除非另有明確規定,否則 FFmpeg 採用以下引號和跳脫字元機制。應用以下規則
- ‘'’ 和 ‘\’ 是特殊字元 (分別用於引號和跳脫字元)。除了它們之外,根據採用跳脫字元和引號的特定語法,可能還有其他特殊字元。
- 特殊字元通過在其前面加上 ‘\’ 來跳脫。
- 所有用 ‘''’ 括起來的字元都按字面包含在已剖析的字串中。引號字元 ‘'’ 本身無法被引號,因此您可能需要關閉引號並跳脫它。
- 除非跳脫或引號,否則已剖析字串中開頭和結尾的空白字元將被移除。
請注意,當使用命令列或腳本時,您可能需要新增第二層跳脫字元,這取決於採用的 shell 語言的語法。
libavutil/avstring.h 中定義的函式 av_get_token
可用於根據上述規則剖析引號或跳脫的符記。
FFmpeg 原始碼樹中的工具 tools/ffescape 可用於在腳本中自動引號或跳脫字串。
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
如果值為 "now",則採用目前時間。
時間為當地時間,除非附加 Z,在這種情況下,它被解釋為 UTC。如果未指定年-月-日部分,則採用目前的年-月-日。
4.3 時間長度
有兩種接受的語法來表示時間長度。
[-][HH:]MM:SS[.m...]
HH 表示小時數,MM 表示最多 2 位數的分鐘數,SS 表示最多 2 位數的秒數。結尾的 m 表示 SS 的小數值。
或
[-]S+[.m...][s|ms|us]
S 表示秒數,帶有可選的小數部分 m。可選的字面後綴 ‘s’、‘ms’ 或 ‘us’ 表示將該值分別解釋為秒、毫秒或微秒。
在這兩個表達式中,可選的 ‘-’ 表示負持續時間。
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 影片尺寸
指定來源視訊的大小,它可以是 widthxheight 形式的字串,或是大小縮寫的名稱。
以下縮寫被識別
- ‘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 影片速率
指定視訊的影格率,表示為每秒產生的影格數。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。
以下縮寫被識別
- ‘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 比例
比率可以表示為表達式,或以 numerator:denominator 的形式表示。
請注意,具有無限大 (1/0) 或負值的比率被視為有效,因此如果您想排除這些值,則應檢查傳回值。
未定義的值可以使用 "0:0" 字串表示。
4.7 色彩
它可以是如下定義的顏色名稱 (不區分大小寫比對) 或 [0x|#]RRGGBB[AA]
序列,可能後跟 @ 和表示 alpha 分量的字串。
alpha 分量可以是 "0x" 後跟十六進位數字或介於 0.0 和 1.0 之間的十進位數字組成的字串,它表示不透明度值 (‘0x00’ 或 ‘0.0’ 表示完全透明,‘0xff’ 或 ‘1.0’ 完全不透明)。如果未指定 alpha 分量,則假定為 ‘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
- ‘9.1.6’
FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR+TSL+TSR
- ‘hexadecagonal’
FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
- ‘binaural’
BIL+BIR
- ‘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」開頭的十六進制表示(請參閱 libavutil/channel_layout.h 中的
AV_CH_*
巨集)。
在 libavutil 版本 53 之前,指定聲道數量的尾隨字元「c」是選用的,但現在是必要的,而頻道佈局遮罩也可以指定為十進制數字(僅當且僅當後面沒有跟著「c」或「C」時)。
另請參閱 libavutil/channel_layout.h 中定義的 av_channel_layout_from_string
函數。
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 的位元 AND/OR 運算。
在執行位元運算之前,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)
尋找一個輸入值,使以 ld(0) 作為引數且由 expr 表示的函數在區間 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)
存取這些輸入值。若未指定 idx,則預設為 0。注意,當您擁有在 y 而非 0 處的導數時,可以使用
taylor(expr, x-y)
。- time(0)
傳回目前的(實際時間)時間,以秒為單位。
- trunc(expr)
將表示式 expr 的值朝零的方向四捨五入到最接近的整數。例如,"trunc(-1.5)" 的結果為 "-1.0"。
- while(cond, expr)
當表示式 cond 為非零值時,評估表示式 expr,並傳回最後一次 expr 評估的值,如果 cond 始終為 false,則傳回 NAN。
以下常數可用
- PI
單位圓盤的面積,約為 3.14
- E
exp(1)(歐拉數),約為 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 工具中指定 -option value 來設定選項,或者透過在 AVCodecContext
選項中明確設定值,或使用 libavutil/opt.h API 進行程式化使用。
以下是支援的選項列表:
- b integer (encoding,audio,video)
設定位元率,單位為位元/秒。預設值為 200K。
- ab integer (encoding,audio)
設定音訊位元率(單位為位元/秒)。預設值為 128K。
- bt integer (encoding,video)
設定視訊位元率容忍度(單位為位元/秒)。在單次編碼模式下,位元率容忍度指定了速率控制願意偏離目標平均位元率值的程度。這與最小/最大位元率無關。過度降低容忍度會對品質產生不利影響。
- flags flags (decoding/encoding,audio,video,subtitles)
設定通用旗標。
可能的值:
- ‘mv4’
每個巨集區塊使用四個運動向量 (mpeg4)。
- ‘qpel’
使用 1/4 像素運動補償。
- ‘loop’
使用迴路濾波器。
- ‘qscale’
使用固定 qscale。
- ‘pass1’
在第一次編碼模式中使用內部 2pass 速率控制。
- ‘pass2’
在第二次編碼模式中使用內部 2pass 速率控制。
- ‘gray’
僅解碼/編碼灰階。
- ‘psnr’
在編碼期間設定 error[?] 變數。
- ‘truncated’
輸入位元串流可能被隨機截斷。
- ‘drop_changed’
請勿輸出參數與串流中第一個解碼幀不同的幀。當幀被丟棄時,會傳回錯誤 AVERROR_INPUT_CHANGED。
- ‘ildct’
使用交錯 DCT。
- ‘low_delay’
強制低延遲。
- ‘global_header’
將全域標頭放置在 extradata 中,而不是每個關鍵幀中。
- ‘bitexact’
僅寫入與平台、建置和時間無關的資料(除了 (I)DCT 之外)。這確保了檔案和資料校驗和在平台之間是可重現且匹配的。其主要用途是用於迴歸測試。
- ‘aic’
套用 H263 進階幀內編碼 / mpeg4 ac 預測。
- ‘ilme’
套用交錯運動估計。
- ‘cgop’
使用封閉式 GOP。
- ‘output_corrupt’
輸出即使可能已損壞的幀。
- time_base rational number
設定編碼器時間基底。
它是時間的基本單位(以秒為單位),幀時間戳記以其表示。對於固定幀率內容,timebase 應為
1 / frame_rate
,並且時間戳記增量應完全為 1。- g integer (encoding,video)
設定圖片群組 (GOP) 大小。預設值為 12。
- ar integer (decoding/encoding,audio)
設定音訊取樣率(單位為 Hz)。
- ac integer (decoding/encoding,audio)
設定音訊聲道數。
- cutoff integer (encoding,audio)
設定截止頻寬。(僅受選定的編碼器支援,請參閱其各自的文件章節。)
- frame_size integer (encoding,audio)
設定音訊幀大小。
除了最後一幀之外,每個提交的幀都必須包含每個聲道恰好 frame_size 個樣本。當編碼器設定了 CODEC_CAP_VARIABLE_FRAME_SIZE 時,可以為 0,在這種情況下,幀大小不受限制。某些解碼器會設定它以指示恆定的幀大小。
- frame_number integer
設定幀編號。
- delay integer
- qcomp float (encoding,video)
設定視訊量化器比例壓縮 (VBR)。它在速率控制方程式中用作常數。預設 rc_eq 的建議範圍:0.0-1.0。
- qblur float (encoding,video)
設定視訊量化器比例模糊 (VBR)。
- qmin integer (encoding,video)
設定最小視訊量化器比例 (VBR)。必須包含在 -1 到 69 之間,預設值為 2。
- qmax integer (encoding,video)
設定最大視訊量化器比例 (VBR)。必須包含在 -1 到 1024 之間,預設值為 31。
- qdiff integer (encoding,video)
設定量化器比例 (VBR) 之間的最大差異。
- bf integer (encoding,video)
設定非 B 幀之間的最大 B 幀數。
必須是介於 -1 和 16 之間的整數。0 表示 B 幀已停用。如果使用值 -1,它將根據編碼器選擇自動值。
預設值為 0。
- b_qfactor float (encoding,video)
設定 P 幀和 B 幀之間的 qp 因子。
- codec_tag integer
- bug flags (decoding,video)
解決未自動偵測到的編碼器錯誤。
可能的值:
- ‘autodetect’
- ‘xvid_ilace’
Xvid 交錯錯誤(如果 fourcc==XVIX 則自動偵測)
- ‘ump4’
(如果 fourcc==UMP4 則自動偵測)
- ‘no_padding’
填充錯誤(自動偵測)
- ‘amv’
- ‘qpel_chroma’
- ‘std_qpel’
舊標準 qpel(每個 fourcc/版本自動偵測)
- ‘qpel_chroma2’
- ‘direct_blocksize’
direct-qpel-blocksize 錯誤(每個 fourcc/版本自動偵測)
- ‘edge’
邊緣填充錯誤(每個 fourcc/版本自動偵測)
- ‘hpel_chroma’
- ‘dc_clip’
- ‘ms’
解決 microsoft 損壞的解碼器中的各種錯誤。
- ‘trunc’
截斷的幀
- strict integer (decoding/encoding,audio,video)
指定嚴格遵循標準的程度。
可能的值:
- ‘very’
嚴格遵守規格或參考軟體的較舊且更嚴格的版本
- ‘strict’
嚴格遵守規格中的所有內容,無論後果如何
- ‘normal’
- ‘unofficial’
允許非官方擴展
- ‘experimental’
允許非標準化的實驗性事物、實驗性(未完成/正在進行中/未充分測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。
- b_qoffset float (encoding,video)
設定 P 幀和 B 幀之間的 QP 偏移。
- err_detect flags (decoding,audio,video)
設定錯誤偵測旗標。
可能的值:
- ‘crccheck’
驗證嵌入的 CRC
- ‘bitstream’
偵測位元串流規格偏差
- ‘buffer’
偵測不正確的位元串流長度
- ‘explode’
在偵測到輕微錯誤時中止解碼
- ‘ignore_err’
忽略解碼錯誤,並繼續解碼。如果您想要分析影片內容,並因此希望解碼所有內容(無論如何),這很有用。在發生錯誤的情況下,此選項不會產生令人賞心悅目的影片。
- ‘careful’
將違反規格且未在實際應用中發現的事物視為錯誤
- ‘compliant’
將所有不符合規格的事物視為錯誤
- ‘aggressive’
將健全的編碼器不應執行的事物視為錯誤
- has_b_frames integer
- block_align integer
- rc_override_count integer
- maxrate integer (encoding,audio,video)
設定最大位元率容忍度(單位為位元/秒)。需要設定 bufsize。
- minrate integer (encoding,audio,video)
設定最小位元率容忍度(單位為位元/秒)。在設定 CBR 編碼時最有用。在其他情況下幾乎沒有用處。
- bufsize integer (encoding,audio,video)
設定速率控制緩衝區大小(單位為位元)。
- i_qfactor float (encoding,video)
設定 P 幀和 I 幀之間的 QP 因子。
- i_qoffset float (encoding,video)
設定 P 幀和 I 幀之間的 QP 偏移。
- dct integer (encoding,video)
設定 DCT 演算法。
可能的值:
- ‘auto’
自動選擇一個好的演算法(預設)
- ‘fastint’
快速整數
- ‘int’
精確整數
- ‘mmx’
- ‘altivec’
- ‘faan’
浮點 AAN DCT
- lumi_mask float (encoding,video)
比中等區域更強烈地壓縮明亮區域。
- tcplx_mask float (encoding,video)
設定時間複雜度遮罩。
- scplx_mask float (encoding,video)
設定空間複雜度遮罩。
- p_mask float (encoding,video)
設定幀間遮罩。
- dark_mask float (encoding,video)
比中等區域更強烈地壓縮黑暗區域。
- idct integer (decoding/encoding,video)
選擇 IDCT 實作方式。
可能的值:
- ‘auto’
- ‘int’
- ‘simple’
- ‘simplemmx’
- ‘simpleauto’
自動選擇與 simple 相容的 IDCT
- ‘arm’
- ‘altivec’
- ‘sh4’
- ‘simplearm’
- ‘simplearmv5te’
- ‘simplearmv6’
- ‘simpleneon’
- ‘xvid’
- ‘faani’
浮點 AAN IDCT
- slice_count integer
- ec flags (decoding,video)
設定錯誤隱藏策略。
可能的值:
- ‘guess_mvs’
迭代運動向量 (MV) 搜尋(慢速)
- ‘deblock’
對損壞的 MB 使用強大的去區塊濾波器
- ‘favor_inter’
偏好從前一幀而不是目前幀進行預測
- bits_per_coded_sample integer
- aspect rational number (encoding,video)
設定樣本縱橫比。
- sar rational number (encoding,video)
設定樣本縱橫比。aspect 的別名。
- debug flags (decoding/encoding,audio,video,subtitles)
印出特定的偵錯資訊。
可能的值:
- ‘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 integer (encoding,video)
設定全像素 ME 比較函數。
可能的值:
- ‘sad’
絕對差總和,快速(預設)
- ‘sse’
平方誤差總和
- ‘satd’
絕對哈達瑪轉換差總和
- ‘dct’
絕對 DCT 轉換差總和
- ‘psnr’
平方量化誤差總和(避免使用,品質低)
- ‘bit’
區塊所需的位元數
- ‘rd’
速率失真最佳化,慢速
- ‘zero’
0
- ‘vsad’
垂直絕對差總和
- ‘vsse’
垂直平方差總和
- ‘nsse’
雜訊保留平方差總和
- ‘w53’
5/3 小波,僅用於雪景
- ‘w97’
9/7 小波,僅用於雪景
- ‘dctmax’
- ‘chroma’
- subcmp integer (encoding,video)
設定子像素 ME 比較函式。
可能的值:
- ‘sad’
絕對差總和,快速(預設)
- ‘sse’
平方誤差總和
- ‘satd’
絕對哈達瑪轉換差總和
- ‘dct’
絕對 DCT 轉換差總和
- ‘psnr’
平方量化誤差總和(避免使用,品質低)
- ‘bit’
區塊所需的位元數
- ‘rd’
速率失真最佳化,慢速
- ‘zero’
0
- ‘vsad’
垂直絕對差總和
- ‘vsse’
垂直平方差總和
- ‘nsse’
雜訊保留平方差總和
- ‘w53’
5/3 小波,僅用於雪景
- ‘w97’
9/7 小波,僅用於雪景
- ‘dctmax’
- ‘chroma’
- mbcmp integer (encoding,video)
設定巨集區塊比較函式。
可能的值:
- ‘sad’
絕對差總和,快速(預設)
- ‘sse’
平方誤差總和
- ‘satd’
絕對哈達瑪轉換差總和
- ‘dct’
絕對 DCT 轉換差總和
- ‘psnr’
平方量化誤差總和(避免使用,品質低)
- ‘bit’
區塊所需的位元數
- ‘rd’
速率失真最佳化,慢速
- ‘zero’
0
- ‘vsad’
垂直絕對差總和
- ‘vsse’
垂直平方差總和
- ‘nsse’
雜訊保留平方差總和
- ‘w53’
5/3 小波,僅用於雪景
- ‘w97’
9/7 小波,僅用於雪景
- ‘dctmax’
- ‘chroma’
- ildctcmp integer (encoding,video)
設定交錯式 DCT 比較函式。
可能的值:
- ‘sad’
絕對差總和,快速(預設)
- ‘sse’
平方誤差總和
- ‘satd’
絕對哈達瑪轉換差總和
- ‘dct’
絕對 DCT 轉換差總和
- ‘psnr’
平方量化誤差總和(避免使用,品質低)
- ‘bit’
區塊所需的位元數
- ‘rd’
速率失真最佳化,慢速
- ‘zero’
0
- ‘vsad’
垂直絕對差總和
- ‘vsse’
垂直平方差總和
- ‘nsse’
雜訊保留平方差總和
- ‘w53’
5/3 小波,僅用於雪景
- ‘w97’
9/7 小波,僅用於雪景
- ‘dctmax’
- ‘chroma’
- dia_size integer (encoding,video)
設定運動估計的菱形類型與大小。
- ‘(1024, INT_MAX)’
完整運動估計(最慢)
- ‘(768, 1024]’
UMH 運動估計
- ‘(512, 768]’
HEX 運動估計
- ‘(256, 512]’
L2S 菱形運動估計
- ‘[2,256]’
VAR 菱形運動估計
- ‘(-1, 2)’
小型菱形運動估計
- ‘-1’
趣味菱形運動估計
- ‘(INT_MIN, -1)’
SAB 菱形運動估計
- last_pred integer (encoding,video)
設定前一影格的運動預測子數量。
- precmp integer (encoding,video)
設定預先運動估計比較函式。
可能的值:
- ‘sad’
絕對差總和,快速(預設)
- ‘sse’
平方誤差總和
- ‘satd’
絕對哈達瑪轉換差總和
- ‘dct’
絕對 DCT 轉換差總和
- ‘psnr’
平方量化誤差總和(避免使用,品質低)
- ‘bit’
區塊所需的位元數
- ‘rd’
速率失真最佳化,慢速
- ‘zero’
0
- ‘vsad’
垂直絕對差總和
- ‘vsse’
垂直平方差總和
- ‘nsse’
雜訊保留平方差總和
- ‘w53’
5/3 小波,僅用於雪景
- ‘w97’
9/7 小波,僅用於雪景
- ‘dctmax’
- ‘chroma’
- pre_dia_size integer (encoding,video)
設定運動估計預先處理的菱形類型與大小。
- subq integer (encoding,video)
設定子像素運動估計品質。
- me_range integer (encoding,video)
設定限制運動向量範圍(DivX 播放器為 1023)。
- global_quality integer (encoding,audio,video)
- slice_flags integer
- mbd integer (encoding,video)
設定巨集區塊決策演算法(高品質模式)。
可能的值:
- ‘simple’
use mbcmp (default)
- ‘bits’
使用最少位元
- ‘rd’
use best rate distortion
- rc_init_occupancy integer (encoding,video)
設定解碼開始前應載入至 RC 緩衝區的位元數。
- flags2 flags (decoding/encoding,audio,video,subtitles)
-
可能的值:
- ‘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 flags (decoding/encoding,audio,video,subtitles)
-
可能的值:
- ‘mvs’
將運動向量匯出至影格邊數據(請參閱
AV_FRAME_DATA_MOTION_VECTORS
),適用於支援此功能的編解碼器。另請參閱 doc/examples/export_mvs.c。- ‘prft’
將編碼器 Producer Reference Time 匯出至封包邊數據(請參閱
AV_PKT_DATA_PRFT
),適用於支援此功能的編解碼器。- ‘venc_params’
透過影格邊數據匯出視訊編碼參數(請參閱
AV_FRAME_DATA_VIDEO_ENC_PARAMS
),適用於支援此功能的編解碼器。目前為 H.264 和 VP9。- ‘film_grain’
透過影格邊數據匯出膠片顆粒參數(請參閱
AV_FRAME_DATA_FILM_GRAIN_PARAMS
)。目前 AV1 解碼器支援。- ‘enhancements’
透過影格邊數據匯出圖像增強元數據,例如 LCEVC(請參閱
AV_FRAME_DATA_LCEVC
)。
- threads integer (decoding/encoding,video)
設定要使用的執行緒數量,如果選定的編解碼器實作支援多執行緒。
可能的值:
- ‘auto, 0’
自動選取要設定的執行緒數量
預設值為 ‘auto’。
- dc integer (encoding,video)
設定 intra_dc_precision。
- nssew integer (encoding,video)
設定 NSSE 權重。
- skip_top integer (decoding,video)
設定頂端要略過的巨集區塊列數。
- skip_bottom integer (decoding,video)
設定底端要略過的巨集區塊列數。
- profile integer (encoding,audio,video)
-
設定編碼器編解碼器描述檔。預設值為 ‘unknown’。編碼器特定描述檔記錄在相關的編碼器文件中。
- level integer (encoding,audio,video)
-
設定編碼器層級。此層級取決於特定的編解碼器,並且可能對應於描述檔層級。預設設定為 ‘unknown’。
可能的值:
- ‘unknown’
- lowres integer (decoding,audio,video)
以 1= 1/2、2=1/4、3=1/8 解析度解碼。
- mblmin integer (encoding,video)
設定最小巨集區塊拉格朗日乘數(VBR)。
- mblmax integer (encoding,video)
設定最大巨集區塊拉格朗日乘數(VBR)。
- skip_loop_filter integer (decoding,video)
- skip_idct integer (decoding,video)
- skip_frame integer (decoding,video)
-
根據選項值選取的影格類型,使解碼器捨棄處理。
skip_loop_filter 略過影格迴路濾波,skip_idct 略過影格 IDCT/反量化,skip_frame 略過解碼。
可能的值:
- ‘none’
不捨棄任何影格。
- ‘default’
捨棄無用的影格,例如 0 位元組大小的影格。
- ‘noref’
捨棄所有非參考影格。
- ‘bidir’
捨棄所有雙向影格。
- ‘nokey’
捨棄除了關鍵影格以外的所有影格。
- ‘nointra’
捨棄除了 I 影格以外的所有影格。
- ‘all’
捨棄所有影格。
預設值為 ‘default’。
- bidir_refine integer (encoding,video)
精緻化雙向巨集區塊中使用的兩個運動向量。
- keyint_min integer (encoding,video)
設定 IDR 影格之間的最小間隔。
- refs integer (encoding,video)
設定運動補償要考量的參考影格。
- trellis integer (encoding,audio,video)
設定速率失真最佳化量化。
- mv0_threshold integer (encoding,video)
- compression_level integer (encoding,audio,video)
- bits_per_raw_sample integer
- channel_layout integer (decoding/encoding,audio)
請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的聲道配置章節,以了解所需的語法。
- rc_max_vbv_use float (encoding,video)
- rc_min_vbv_use float (encoding,video)
- color_primaries integer (decoding/encoding,video)
可能的值:
- ‘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 integer (decoding/encoding,video)
可能的值:
- ‘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 integer (decoding/encoding,video)
可能的值:
- ‘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 NCL
- ‘bt2020c’
- ‘bt2020_cl’
BT.2020 CL
- ‘smpte2085’
SMPTE 2085
- ‘chroma-derived-nc’
色度衍生 NCL
- ‘chroma-derived-c’
色度衍生 CL
- ‘ictcp’
ICtCp
- color_range integer (decoding/encoding,video)
若作為輸入參數使用,則作為解碼器的提示,說明輸入具有的色彩範圍。可能的值
- ‘tv’
- ‘mpeg’
- ‘limited’
MPEG (219*2^(n-8))
- ‘pc’
- ‘jpeg’
- ‘full’
JPEG (2^n-1)
- chroma_sample_location integer (decoding/encoding,video)
可能的值:
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
- log_level_offset integer
設定日誌層級偏移。
- slices integer (encoding,video)
切片數量,用於平行化編碼。
- thread_type flags (decoding/encoding,video)
選取要使用的多執行緒方法。
使用 ‘frame’ 將使每個執行緒的解碼延遲增加一個影格,因此無法提供未來影格的用戶端不應使用它。
可能的值:
- ‘slice’
一次解碼單一影格的多個部分。
使用切片的多執行緒僅在視訊以切片編碼時才有效。
- ‘frame’
一次解碼多個影格。
預設值為 ‘slice+frame’。
- audio_service_type integer (encoding,audio)
設定音訊服務類型。
可能的值:
- ‘ma’
主要音訊服務
- ‘ef’
效果
- ‘vi’
視覺障礙
- ‘hi’
聽覺障礙
- ‘di’
對白
- ‘co’
評論
- ‘em’
緊急狀況
- ‘vo’
旁白
- ‘ka’
卡拉 OK
- request_sample_fmt sample_fmt (decoding,audio)
設定音訊解碼器應偏好的樣本格式。預設值為
none
。- pkt_timebase rational number
- sub_charenc encoding (decoding,subtitles)
設定輸入字幕字元編碼。
- field_order field_order (video)
設定/覆寫視訊的場序。可能的值
- ‘progressive’
循序掃描視訊
- ‘tt’
交錯式視訊,頂場優先編碼和顯示
- ‘bb’
交錯式視訊,底場優先編碼和顯示
- ‘tb’
交錯式視訊,頂場優先編碼,底場優先顯示
- ‘bt’
交錯式視訊,底場優先編碼,頂場優先顯示
- skip_alpha bool (decoding,video)
設定為 1 以停用 Alpha(透明度)處理。這與 flags 選項中的 ‘gray’ 旗標類似,後者會略過色度資訊而非 Alpha。預設值為 0。
- codec_whitelist list (input)
允許的解碼器之「,」分隔清單。預設情況下,全部都允許。
- dump_separator string (input)
用於分隔命令列上關於串流參數的欄位之分隔符號。例如,使用換行符號和縮排分隔欄位
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg
- max_pixels integer (decoding/encoding,video)
每個圖像的最大像素數。此值可用於避免因大型圖像而導致記憶體不足錯誤。
- apply_cropping bool (decoding,video)
如果裁切參數是左側和頂部參數所需對齊的倍數,則啟用裁切。如果未滿足對齊,裁切將部分應用以維持對齊。預設值為 1(啟用)。注意:所需的對齊取決於是否設定了
AV_CODEC_FLAG_UNALIGNED
和 CPU。AV_CODEC_FLAG_UNALIGNED
無法從命令列變更。此外,硬體解碼器不會套用左側/頂部裁切。
7 解碼器
解碼器是 FFmpeg 中已配置的元素,可解碼多媒體串流。
當您配置 FFmpeg 建置時,預設會啟用所有支援的原生解碼器。需要外部函式庫的解碼器必須透過對應的 --enable-lib
選項手動啟用。您可以使用配置選項 --list-decoders
列出所有可用的解碼器。
您可以使用配置選項 --disable-decoders
停用所有解碼器,並使用選項 --enable-decoder=DECODER
/ --disable-decoder=DECODER
選擇性地啟用/停用單個解碼器。
ff* 工具的選項 -decoders
將顯示已啟用解碼器的清單。
8 影片解碼器
以下是一些目前可用的視訊解碼器的描述。
8.1 av1
AOMedia Video 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 NALU 時)。- view_pos_available (MV-HEVC)
呼叫者可以讀取此選項以檢索活動 VPS 中可用的視圖位置(左、右或未指定)陣列,如
AVStereo3DView
值。當陣列可用時,其元素適用於 view_ids_available 的對應元素,即view_pos_available[i]
包含 ID 為view_ids_available[i]
的視圖位置。與 view_ids_available 相同的有效性限制適用於此選項。
8.3 rawvideo
原始視訊解碼器。
此解碼器解碼 rawvideo 串流。
8.3.1 選項
- top top_field_first
指定輸入視訊的假設場類型。
- -1
視訊預設為循序掃描(progressive)。
- 0
預設為底場優先(bottom-field-first)。
- 1
預設為頂場優先(top-field-first)。
8.4 libdav1d
dav1d AV1 解碼器。
libdav1d 允許 libavcodec 解碼 AOMedia Video 1 (AV1) 編碼格式。組態時需要 libdav1d 的標頭檔和函式庫。您需要明確地使用 --enable-libdav1d
組態建置。
8.4.1 選項
libdav1d wrapper 支援以下選項。
- framethreads
設定解碼時使用的影格執行緒數量。預設值為 0(自動偵測)。此選項在 libdav1d >= 1.0 版本中已被棄用,未來將會移除。請改用
max_frame_delay
選項和全域選項threads
。- tilethreads
設定解碼時使用的磚塊執行緒數量。預設值為 0(自動偵測)。此選項在 libdav1d >= 1.0 版本中已被棄用,未來將會移除。請改用全域選項
threads
。- max_frame_delay
設定解碼器內部可緩衝的最大影格數量。預設值為 0(自動偵測)。
- filmgrain
若位元流中存在 film grain,則將其套用至解碼後的視訊。預設值為函式庫的內部預設值。此選項已被棄用,未來將會移除。請參閱全域選項
export_side_data
以匯出 Film Grain 參數,而非直接套用。- oppoint
選擇可伸縮 AV1 位元流的操作點 (0 - 31)。預設值為函式庫的內部預設值。
- alllayers
輸出可伸縮 AV1 位元流的所有空間層。預設值為 false。
8.5 libdavs2
AVS2-P2/IEEE1857.4 視訊解碼器 wrapper。
此解碼器允許 libavcodec 使用 davs2 函式庫解碼 AVS2 串流。
8.6 libuavs3d
AVS3-P2/IEEE1857.10 視訊解碼器。
libuavs3d 允許 libavcodec 解碼 AVS3 串流。組態時需要 libuavs3d 的標頭檔和函式庫。您需要明確地使用 --enable-libuavs3d
組態建置。
8.6.1 選項
libuavs3d wrapper 支援以下選項。
- frame_threads
設定解碼時使用的影格執行緒數量。預設值為 0(自動偵測)。
8.7 libxevd
eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC 解碼器 wrapper。
此解碼器組態時需要 libxevd 的標頭檔和函式庫。您需要明確地使用 --enable-libxevd 組態建置。
xevd 專案網站位於 https://github.com/mpeg5/xevd。
8.7.1 選項
libxevd wrapper 支援以下選項。括號中列出 xevd 等效選項或值,以便輕鬆遷移。
若要取得更精確且詳盡的 libxevd 選項文件,請調用命令 xevd_app --help
或查閱 libxevd 文件。
- threads (threads)
強制使用特定數量的執行緒
8.8 QSV 解碼器
Intel QuickSync Video 解碼器系列 (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(自動偵測)。您可以對 BOXX 檔案中看到的無條紋 v210 使用特殊值 -1。
9 音訊解碼器
以下描述一些目前可用的音訊解碼器。
9.1 ac3
AC-3 音訊解碼器。
此解碼器實作 ATSC A/52:2010 和 ETSI TS 102 366 的一部分,以及未公開的文件 RealAudio 3 (又名 dnet)。
9.1.1 AC-3 解碼器選項
- -drc_scale value
動態範圍縮放因子。要從 AC-3 串流套用至動態範圍值的因子。此因子以指數方式套用。預設值為 1。有 3 個值得注意的縮放因子範圍
- drc_scale == 0
DRC 已停用。產生全範圍音訊。
- 0 < drc_scale <= 1
DRC 已啟用。套用串流 DRC 值的一部分。音訊重現介於全範圍和全壓縮之間。
- drc_scale > 1
DRC 已啟用。不對稱地套用 drc_scale。響亮的聲音被完全壓縮。柔和的聲音被增強。
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 解碼器 wrapper。
libcelt 允許 libavcodec 解碼 Xiph CELT 超低延遲音訊編碼格式。組態時需要 libcelt 的標頭檔和函式庫。您需要明確地使用 --enable-libcelt
組態建置。
9.5 libgsm
libgsm 解碼器 wrapper。
libgsm 允許 libavcodec 解碼 GSM 全速率音訊編碼格式。組態時需要 libgsm 的標頭檔和函式庫。您需要明確地使用 --enable-libgsm
組態建置。
此解碼器同時支援普通的 GSM 和 Microsoft 變體。
9.6 libilbc
libilbc 解碼器 wrapper。
libilbc 允許 libavcodec 解碼網際網路低位元速率編碼 (iLBC) 音訊編碼格式。組態時需要 libilbc 的標頭檔和函式庫。您需要明確地使用 --enable-libilbc
組態建置。
9.6.1 選項
libilbc wrapper 支援以下選項。
- enhance
-
設定為 1 時,啟用解碼音訊的增強功能。預設值為 0(停用)。
9.7 libopencore-amrnb
libopencore-amrnb 解碼器 wrapper。
libopencore-amrnb 允許 libavcodec 解碼自適應多速率窄頻音訊編碼格式。使用它需要 libopencore-amrnb 的標頭檔和函式庫。您需要明確地使用 --enable-libopencore-amrnb
組態建置。
FFmpeg 原生 AMR-NB 解碼器已存在,因此使用者可以在沒有此函式庫的情況下解碼 AMR-NB。
9.8 libopencore-amrwb
libopencore-amrwb 解碼器 wrapper。
libopencore-amrwb 允許 libavcodec 解碼自適應多速率寬頻音訊編碼格式。使用它需要 libopencore-amrwb 的標頭檔和函式庫。您需要明確地使用 --enable-libopencore-amrwb
組態建置。
FFmpeg 原生 AMR-WB 解碼器已存在,因此使用者可以在沒有此函式庫的情況下解碼 AMR-WB。
9.9 libopus
libopus 解碼器 wrapper。
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 path
設定 libaribb24 函式庫的基礎路徑。這用於讀取組態檔(用於自訂 Unicode 轉換),以及用於將非文字符號作為影像傾印到該位置下。
預設為未設定。
- -aribb24-skip-ruby-text boolean
告訴解碼器 wrapper 跳過包含半高 ruby 文字的文字區塊。
預設為啟用。
10.2 libaribcaption
另一個使用外部 libaribcaption 函式庫的 ARIB STD-B24 字幕解碼器。
實作日本 ARIB STD-B24 標準、巴西 ABNT NBR 15606-1 和菲律賓 ISDB-T 版本的設定檔 A 和 C。
組態時需要 libaribcaption 的標頭檔和函式庫 (https://github.com/xqq/libaribcaption)。您需要明確地使用 --enable-libaribcaption
組態建置。如果同時啟用 libaribb24 和 libaribcaption,則 libaribcaption 解碼器優先。
10.2.1 libaribcaption 解碼器選項
- -sub_type subtitle_type
指定解碼字幕的格式。
- ‘bitmap’
圖形影像。
- ‘ass’
ASS 格式化文字。
- ‘text’
不帶格式的簡單文字輸出。
預設值為 ass,與 libaribb24 解碼器相同。某些現有的播放器(例如,mpv)期望 ARIB 字幕為 ASS 格式。
- -caption_encoding encoding_scheme
指定輸入字幕文字的編碼方案。
- ‘auto’
自動偵測文字編碼(預設)。
- ‘jis’
ARIB STD B24 中定義的 8 位元字元 JIS 編碼。此編碼在日本用於 ISDB 字幕。
- ‘utf8’
ARIB STD B24 中定義的 UTF-8 編碼。此編碼在菲律賓用於 ISDB-T 字幕。
- ‘latin’
ABNT NBR 15606-1 中定義的拉丁字元編碼。此編碼在南美用於 SBTVD / ISDB-Tb 字幕。
- -font font_name[,font_name2,...]
指定要用於 bitmap 或 ass 類型字幕渲染的逗號分隔字型系列名稱列表。只有第一個字型名稱用於 ass 類型字幕。
如果未指定,則使用內部定義的預設字型系列。
- -ass_single_rect boolean
ARIB STD-B24 規範指出,某些字幕可能同時顯示在不同的位置(多矩形字幕)。由於某些播放器(例如,舊版 mpv)無法處理單個 AVSubtitle 中的多個 ASS 矩形,或具有相同開始時間戳記的多個持續時間不確定的 ASS 矩形,因此此選項可以更改行為,使所有文字都顯示在單個 ASS 矩形中。
預設值為 false。
如果您的播放器無法正確處理具有多個 ASS 矩形的 AVSubtitle,請將此選項設定為 true 或定義
ASS_SINGLE_RECT=1
以在編譯時更改預設行為。- -force_outline_text boolean
指定是否始終為所有字元渲染輪廓文字,無論字元樣式是否指示。
預設值為 false。
- -outline_width number (0.0 - 3.0)
指定輪廓文字的寬度,以點(相對)為單位。
預設值為 1.5。
- -ignore_background boolean
指定是否忽略背景顏色渲染。
預設值為 false。
- -ignore_ruby boolean
指定是否忽略 ruby 類(furigana)字元的渲染。
預設值為 false。
- -replace_drcs boolean
指定是否將取代的 DRCS 字元渲染為 Unicode 字元。
預設值為 true。
- -replace_msz_ascii boolean
指定是否將 MSZ(中尺寸;半寬)全形字母數字字元取代為半形字母數字字元。
預設值為 true。
- -replace_msz_japanese boolean
指定是否將一些 MSZ(中尺寸;半寬)全形日文特殊字元取代為半形字元。
預設值為 true。
- -replace_msz_glyph boolean
指定如果字型支援,是否將 MSZ(中尺寸;半寬)字元取代為半形字形。此選項適用於使用 Adobe-Japan1 相容字型的 FreeType 或 DirectWrite 渲染器。例如:IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho 和 Meiryo。
預設值為 true。
- -canvas_size image_size
指定用於渲染字幕的畫布解析度;通常,這應該是輸入視訊的影格大小。這僅適用於
-subtitle_type
設定為 bitmap 時。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
使用 ffplay
工具顯示輸入影格大小為 1920x1080 的 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 dvbsub
10.3.1 選項
- compute_clut
- -2
如果串流中沒有相符的 CLUT,則計算 CLUT 一次。
- -1
如果串流中沒有相符的 CLUT,則計算 CLUT。
- 0
永不計算 CLUT
- 1
始終計算 CLUT 並覆寫串流中提供的 CLUT。
- dvb_substream
選擇 dvb 子串流,如果為 -1(預設),則選擇所有子串流。
10.4 dvdsub
此編碼器解碼 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
組態建置。
10.5.1 選項
- txt_page
要解碼的圖文電視頁碼列表。不符合指定列表的頁面將被丟棄。您可以使用特殊字串
*
來比對所有頁面,或使用subtitle
來比對所有字幕頁面。預設值為 *。- txt_default_region
設定用於解碼的預設字元集,值介於 0 到 87 之間(請參閱 ETS 300 706,第 15 節,表 32)。預設值為 -1,不會覆寫 libzvbi 預設值。某些無法傳達正確字元集的舊版 1.0 傳輸需要此選項。
- txt_chop_top
捨棄頂部圖文電視行。預設值為 1。
- txt_format
指定解碼字幕的格式。
- bitmap
預設格式,您應該將此用於圖文電視頁面,因為某些圖形和顏色無法用簡單文字甚至 ASS 表示。
- text
不帶格式的簡單文字輸出。
- ass
格式化的 ASS 輸出,字幕頁面和圖文電視頁面以不同的樣式傳回,字幕頁面被簡化為文字,但會盡力保留文字對齊和格式。
- txt_left
產生位圖的 X 偏移量,預設值為 0。
- txt_top
產生位圖的 Y 偏移量,預設值為 0。
- txt_chop_spaces
移除產生文字前後的空格並刪除空白行。此選項適用於圖文電視字幕,其中行首或行尾可能存在空格,或者由於雙倍大小的圖文電視字符,字幕行之間可能存在空白行。預設值為 1。
- txt_duration
設定解碼後的圖文電視頁面或字幕的顯示持續時間,單位為毫秒。預設值為 -1,表示無限期或直到下一個字幕事件出現。
- txt_transparent
強制產生圖文電視點陣圖的透明背景。預設值為 0,表示不透明背景。
- txt_opacity
設定圖文電視背景的不透明度 (0-255)。如果未設定 txt_transparent,則僅影響起始方塊和結束方塊之間的字符,通常為字幕。如果設定了 txt_transparent,則預設值為 0,否則為 255。
11 位元流過濾器
當您配置 FFmpeg 建置時,預設會啟用所有支援的位元流過濾器。您可以使用配置選項 --list-bsfs
列出所有可用的過濾器。
您可以使用配置選項 --disable-bsfs
停用所有位元流過濾器,並使用選項 --enable-bsf=BSF
選擇性地啟用任何位元流過濾器,或者您可以使用選項 --disable-bsf=BSF
停用特定的位元流過濾器。
ff* 工具的 -bsfs
選項將顯示您的建置中包含的所有支援位元流過濾器的列表。
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 的 TU 開頭插入一個 TD。
- ‘remove’
從每個具有 TD 的 TU 開頭移除 TD。
- color_primaries
- transfer_characteristics
- matrix_coefficients
設定流中的顏色描述字段(請參閱 AV1 第 6.4.2 節)。
- color_range
設定流中的顏色範圍(請參閱 AV1 第 6.4.2 節;請注意,對於使用 BT.709 原色、sRGB 傳輸特性和恆等(RGB)矩陣係數的流,無法設定此項)。
- ‘tv’
有限範圍。
- ‘pc’
完整範圍。
- chroma_sample_position
設定流中的色度樣本位置(請參閱 AV1 第 6.4.2 節)。這只能針對 4:2:0 流設定。
- ‘vertical’
左側位置(與 MPEG-2 和 H.264 中的預設值相符)。
- ‘colocated’
左上位置。
- tick_rate
在序列標頭的計時資訊中設定滴答率 (time_scale / num_units_in_display_tick)。
- num_ticks_per_picture
設定每個圖片中的滴答數,以指示流具有固定的影格率。如果未同時設定 tick_rate,則忽略此項。
- delete_padding
刪除填充 OBU。
11.3 chomp
移除封包結尾的零填充。
11.4 dca_core
從 DCA/DTS 流中提取核心,捨棄 DTS-HD 等擴展。
11.5 dovi_rpu
操作 HEVC/AV1 位元流中的杜比視界元數據,可選擇啟用元數據壓縮。
- strip
如果啟用,則從流中移除所有杜比視界元數據(配置記錄 + RPU 數據塊)。
- compression
要啟用的壓縮級別。
- ‘none’
無元數據壓縮。
- ‘limited’
有限的元數據壓縮方案。應與大多數裝置相容。這是預設值。
- ‘extended’
擴展的元數據壓縮。裝置不一定需要支援此項。請注意,此級別目前在 libavcodec 中的行為與 ‘limited’ 相同。
11.6 dump_extra
將額外數據添加到已過濾封包的開頭,除非所述封包已精確地以打算添加的額外數據開始。
- freq
附加參數指定應過濾哪些封包。它接受以下值
- ‘k’
- ‘keyframe’
將額外數據添加到所有關鍵封包
- ‘e’
- ‘all’
將額外數據添加到所有封包
如果未指定,則假定為 ‘k’。
例如,以下 ffmpeg
命令強制 libx264 編碼器產生的 H.264 封包中使用全域標頭(因此停用個別封包標頭),但通過將儲存在額外數據中的標頭添加到關鍵封包來更正它們
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’
特定的錯誤狀態代碼
請參閱 http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的第 44-46 頁或第 5.5 節
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 單元類型 (nal_unit_type)(請參閱 H.264 和 HEVC 規範中的表 7-1 或 H.266 規範中的表 5),JPEG 的標記值(不帶 0xFF 前綴),以及 MPEG-2 的起始代碼(不帶起始代碼前綴,即 0x000001 後面的位元組)。對於 VP8 和 VP9,每個單元的類型都為零。
額外數據不受此轉換的影響,但請注意,如果流包含內嵌參數集,則如果移除它們,輸出可能無法使用。
例如,要從 H.264 流中移除所有非 VCL NAL 單元
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
要從 H.265 流中移除所有 AUD、SEI 和填充
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
要從 MPEG-2 流中移除所有使用者數據,包括隱藏式字幕
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
要從 H264 流中移除所有 SEI,包括隱藏式字幕
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
要從 HEVC 流中移除所有前綴和後綴 SEI,包括隱藏式字幕和動態 HDR
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
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’
預設值為 pass。
- sample_aspect_ratio
在 VUI 參數中設定流的樣本縱橫比。請參閱 H.264 表格 E-1。
- overscan_appropriate_flag
設定流是否適合使用過掃描顯示(請參閱 H.264 第 E.2.1 節)。
- video_format
- video_full_range_flag
設定流中的視訊格式(請參閱 H.264 第 E.2.1 節和表格 E-2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
設定流中的色彩描述(請參閱 H.264 第 E.2.1 節和表格 E-3、E-4 和 E-5)。
- chroma_sample_loc_type
設定流中的色度樣本位置(請參閱 H.264 第 E.2.1 節和圖 E-1)。
- tick_rate
在 VUI 參數中設定滴答率 (time_scale / num_units_in_tick)。這是流中可表示的最小時間單位,在許多情況下代表流的圖場率(影格率的兩倍)。
- fixed_frame_rate_flag
設定流是否具有固定影格率 - 通常這表示影格率正好是滴答率的一半,但確切含義取決於交錯掃描和圖片結構(請參閱 H.264 第 E.2.1 節和表格 E-6)。
- zero_new_constraint_set_flags
將 SPS 中的 constraint_set4_flag 和 constraint_set5_flag 歸零。這些位元在 H.264 規範的先前版本中是保留的,因此某些硬體解碼器要求這些位元為零。將其歸零的結果仍然是有效的位元流。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中設定影格裁剪偏移量。如果流已裁剪,這些值將取代目前的值。
這些字段以像素為單位設定。請注意,如果色度被子採樣或流是交錯掃描的,則某些大小可能無法表示(請參閱 H.264 第 7.4.2.1.1 節)。
- sei_user_data
將字串作為 SEI 未註冊使用者數據插入。參數的格式必須為 UUID+string,其中 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’
預設值為 pass。
插入模式與
rotate
和flip
選項結合使用。任何預先存在的顯示方向訊息都將在插入或移除模式下移除。提取模式將顯示矩陣作為邊數據附加到封包。- rotate
設定顯示方向 SEI 中的旋轉(逆時針角度,以度為單位)。範圍為 -360 到 +360。預設值為 NaN。
- flip
設定顯示方向 SEI 中的翻轉。
- ‘horizontal’
- ‘vertical’
預設值為未設定。
- level
level
在 SPS 中設定級別。請參閱 H.264 第 A.3 節和表格 A-1 至 A-5。
11.13 h264_mp4toannexb
參數必須是級別的名稱(例如,‘4.2’)、level_idc 值(例如,級別 5.1 的 ‘42’)或特殊名稱 ‘auto’,表示過濾器應嘗試從輸入流屬性中猜測級別。
將 H.264 位元流從長度前綴模式轉換為起始代碼前綴模式(如 ITU-T H.264 規範的附件 B 中定義)。
某些串流格式(通常為 MPEG-2 傳輸流格式(muxer mpegts
))需要此模式。
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
例如,要使用 ffmpeg
將包含 H.264 流的 MP4 檔案重新封裝為 mpegts 格式,您可以使用以下命令
11.14 h264_redundant_pps
請注意,對於 MPEG-TS(muxer mpegts
)和原始 H.264(muxer h264
)輸出格式,此過濾器會自動插入。
這會對某些 Blu-ray BDMV H264 流應用特定的修復,這些流包含多餘的 PPS。PPS 修改了流的不相關參數,混淆了其他需要正確額外數據的轉換。
在這些受影響的流上使用的編碼器會在整個流中添加額外的 PPS,從而改變初始 QP 以及是否啟用了加權預測。這會在將流複製到全域標頭容器後導致問題,因為起始 PPS 不適用於流的其餘部分。例如,一個副作用是搜尋將返回亂碼輸出,直到出現新的 PPS。
11.15 hevc_metadata
此 BSF 移除額外的 PPS,並重寫切片標頭,以便流在全域標頭中使用單個前導 PPS,從而解決問題。
- aud
在流的所有存取單元中插入或移除 AUD NAL 單元。
- ‘insert’
- ‘remove’
- sample_aspect_ratio
修改嵌入在 HEVC 流中的元數據。
- video_format
- video_full_range_flag
在 VUI 參數中設定流的樣本縱橫比。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
設定流中的視訊格式(請參閱 H.265 第 E.3.1 節和表格 E.2)。
- chroma_sample_loc_type
設定流中的色彩描述(請參閱 H.265 第 E.3.1 節和表格 E.3、E.4 和 E.5)。
- tick_rate
設定流中的色度樣本位置(請參閱 H.265 第 E.3.1 節和圖 E.1)。
- 在 VPS 和 VUI 參數中設定滴答率 (time_scale / num_units_in_tick)。與 num_ticks_poc_diff_one 結合使用,可以在流中設定恆定的影格率。請注意,當流在容器中時,它很可能會被容器參數覆蓋。
num_ticks_poc_diff_one
- crop_left
- crop_right
- crop_top
- crop_bottom
在 VPS 和 VUI 中設定 poc_proportional_to_timing_flag,並使用此值設定 num_ticks_poc_diff_one_minus1(請參閱 H.265 第 7.4.3.1 節和 E.3.1 節)。如果未同時設定 tick_rate,則忽略此項。
在 SPS 中設定符合性視窗裁剪偏移量。如果流已裁剪,這些值將取代目前的值。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
- width
height
- level
設定裁剪後的寬度和高度。
level
11.16 hevc_mp4toannexb
在 VPS 和 SPS 中設定級別。請參閱 H.265 第 A.4 節和表格 A.6 和 A.7。
將 H.264 位元流從長度前綴模式轉換為起始代碼前綴模式(如 ITU-T H.264 規範的附件 B 中定義)。
參數必須是級別的名稱(例如,‘5.1’)、general_level_idc 值(例如,級別 5.1 的 ‘153’)或特殊名稱 ‘auto’,表示過濾器應嘗試從輸入流屬性中猜測級別。
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
將 HEVC/H.265 位元流從長度前綴模式轉換為起始代碼前綴模式(如 ITU-T H.265 規範的附件 B 中定義)。
11.17 imxdump
例如,要使用 ffmpeg
將包含 HEVC 流的 MP4 檔案重新封裝為 mpegts 格式,您可以使用以下命令
請注意,對於 MPEG-TS(muxer mpegts
)和原始 HEVC/H.265(muxer h265
或 hevc
)輸出格式,此過濾器會自動插入。
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
11.18 mjpeg2jpeg
修改位元流以適應 MOV 並可供 Final Cut Pro 解碼器使用。此過濾器僅適用於 mpeg2video 編解碼器,並且對於 Final Cut Pro 7 及更新版本,使用適當的 -tag:v 可能不需要。
例如,要將 30 MB/sec NTSC IMX 重新封裝為 MOV
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
將 MJPEG/AVI1 封包轉換為完整的 JPEG/JFIF 封包。
Avery Lee 在 2001 年於 rec.video.desktop 新聞群組中評論道:「MJPEG,或至少是 AVIs 中使用 MJPG fourcc 的 MJPEG,是一種受限的 JPEG,具有固定的 – 且省略 – Huffman 表格。JPEG 必須是 YCbCr 色彩空間,必須是 4:2:2,而且必須使用基本的 Huffman 編碼,而不是算術或漸進式編碼……。您確實可以提取 MJPEG 幀並使用常規 JPEG 解碼器對其進行解碼,但您必須將 DHT 段添加到它們的前面,否則解碼器將不知道如何解壓縮數據。OpenDML 規範中給出了確切的必要表格。」
這個位元流過濾器修補從 MJPEG 流(帶有 AVI1 標頭 ID 且缺少 DHT 段)中提取的幀的標頭,以產生完全合格的 JPEG 圖像。
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg exiftran -i -9 frame*.jpg ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
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,則忽略此選項。
amount
和 drop
都接受包含以下變數的表達式
- ‘n’
封包的索引,從零開始。
- ‘tb’
封包時間戳的時間基底。
- ‘pts’
封包呈現時間戳。
- ‘dts’
封包解碼時間戳。
- ‘nopts’
表示 AV_NOPTS_VALUE 的常數。
- ‘startpts’
在串流中看到的第一個非 AV_NOPTS_VALUE PTS。
- ‘startdts’
在串流中看到的第一個非 AV_NOPTS_VALUE DTS。
- ‘duration’
- ‘d’
封包持續時間,以時間基底單位表示。
- ‘pos’
封包在輸入中的位置;當未知或未設定時可能為 -1。
- ‘size’
封包大小,以位元組為單位。
- ‘key’
封包是否標記為關鍵幀。
- ‘state’
一個偽隨機整數,主要從封包有效負載的內容中衍生而來。
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。
- pad, p
如果設定為 1,則過濾器將用靜音填充最後一個音訊封包,使其包含與前一個封包相同數量的樣本(或大致相同數量的樣本,請參閱 frame_rate)。預設值為 1。
- frame_rate, r
此選項使過濾器每秒輸出固定數量的封包,而不是每個封包固定數量的樣本。如果音訊採樣率不能被幀率整除,則樣本數將不是恆定的,而是會略有變化,以便每個封包都將盡可能靠近幀邊界開始。使用此選項優先於 nb_out_samples。
您可以使用 frame_rate 選項為 NTSC 幀率生成眾所周知的 1602-1601-1602-1601-1602 模式的 48kHz 音訊。
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 字幕的容器(muxer matroska
)需要這樣做。
11.27 prores_metadata
修改嵌入在 prores 串流中的顏色屬性元數據。
- color_primaries
設定顏色原色。可用值為
- ‘auto’
保持相同的顏色原色屬性(預設)。
- ‘unknown’
- ‘bt709’
- ‘bt470bg’
BT601 625
- ‘smpte170m’
BT601 525
- ‘bt2020’
- ‘smpte431’
DCI P3
- ‘smpte432’
P3 D65
- transfer_characteristics
設定顏色傳輸。可用值為
- ‘auto’
保持相同的傳輸特性屬性(預設)。
- ‘unknown’
- ‘bt709’
BT 601、BT 709、BT 2020
- ‘smpte2084’
SMPTE ST 2084
- ‘arib-std-b67’
ARIB STD-B67
- matrix_coefficients
設定矩陣係數。可用值為
- ‘auto’
保持相同的色彩空間屬性(預設)。
- ‘unknown’
- ‘bt709’
- ‘smpte170m’
BT 601
- ‘bt2020nc’
為檔案的每個幀設定 Rec709 色彩空間
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
為檔案的每個幀設定混合對數伽瑪參數
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 工具中指定 -option value 來設定選項,或者通過在 AVFormatContext
選項中顯式設定值,或者使用 libavutil/opt.h API 進行程式化使用。
支援的選項列表如下
- avioflags flags (輸入/輸出)
可能的值:
- ‘direct’
減少緩衝。
- probesize integer (輸入)
設定探測大小(以位元組為單位),即分析以獲取串流資訊的數據大小。較高的值將能夠檢測更多資訊(如果資訊分散到串流中),但會增加延遲。必須是不小於 32 的整數。預設值為 5000000。
- max_probe_packets integer (輸入)
設定探測編解碼器時緩衝的最大封包數。預設值為 2500 個封包。
- packetsize integer (輸出)
設定封包大小。
- fflags flags
設定格式標誌。某些標誌針對有限數量的格式實作。
輸入檔案的可能值
- ‘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 integer (輸入)
如果設定為 1,則允許在解多工器層級搜尋非關鍵幀(如果支援)。預設值為 0。
- analyzeduration integer (輸入)
指定分析輸入訊號所使用的微秒數。數值越高,就能偵測到更精確的資訊,但會增加延遲。預設值為 5,000,000 微秒 = 5 秒。
- cryptokey hexadecimal string (輸入)
設定解密金鑰。
- indexmem integer (輸入)
設定用於時間戳記索引的最大記憶體(每個串流)。
- rtbufsize integer (輸入)
設定用於緩衝即時影格的最大記憶體。
- fdebug flags (輸入/輸出)
印出特定的偵錯資訊。
可能的值:
- ‘ts’
- max_delay integer (輸入/輸出)
設定多工或解多工的最大延遲時間,單位為微秒。
- fpsprobesize integer (輸入)
設定用於偵測 FPS 的影格數量。
- audio_preload integer (輸出)
設定音訊封包應提前交錯的微秒數。
- chunk_duration integer (輸出)
設定每個區塊的微秒數。
- chunk_size integer (輸出)
設定每個區塊的大小,單位為位元組。
- err_detect, f_err_detect flags (輸入)
設定錯誤偵測旗標。
f_err_detect
已棄用,應僅透過ffmpeg
工具使用。可能的值:
- ‘crccheck’
驗證內嵌的 CRC。
- ‘bitstream’
偵測位元串流規格偏差。
- ‘buffer’
偵測不正確的位元串流長度。
- ‘explode’
在偵測到輕微錯誤時中止解碼。
- ‘careful’
將違反規格且在實際應用中未曾出現的情況視為錯誤。
- ‘compliant’
將所有不符合規格的情況視為錯誤。
- ‘aggressive’
將健全編碼器不應執行的操作視為錯誤。
- max_interleave_delta integer (輸出)
設定交錯處理的最大緩衝持續時間。持續時間以微秒表示,預設值為 10000000(10 秒)。
為了確保所有串流都正確交錯,libavformat 會等待直到每個串流都至少有一個封包,然後才實際將任何封包寫入輸出檔案。當某些串流是「稀疏的」(即,連續封包之間存在很大的間隔),這可能會導致過度緩衝。
此欄位指定多工佇列中第一個和最後一個封包之間時間戳記的最大差異,超過此差異時,libavformat 將輸出封包,無論它是否已為所有串流排隊封包。
如果設定為 0,libavformat 將繼續緩衝封包,直到每個串流都有一個封包,而不管緩衝封包之間的最大時間戳記差異。
- use_wallclock_as_timestamps integer (輸入)
如果設定為 1,則使用系統時鐘作為時間戳記。預設值為 0。
- avoid_negative_ts integer (輸出)
-
可能的值:
- ‘make_non_negative’
移動時間戳記以使其為非負數。另請注意,這僅影響前導負時間戳記,而不影響非單調負時間戳記。
- ‘make_zero’
移動時間戳記,使第一個時間戳記為 0。
- ‘auto (default)’
在目標格式需要時啟用移動。
- ‘disabled’
停用時間戳記移動。
啟用移動時,所有輸出時間戳記都會移動相同的量。與不移動的情況相比,音訊、視訊和字幕的 desyncing 和相對時間戳記差異會被保留。
- skip_initial_bytes integer (輸入)
如果設定為 1,則設定在讀取標頭和影格之前要跳過的位元組數。預設值為 0。
- correct_ts_overflow integer (輸入)
如果設定為 1,則校正單個時間戳記溢位。預設值為 1。
- flush_packets integer (輸出)
在每個封包之後刷新底層 I/O 串流。預設值為 -1(自動),這表示底層協議將決定,1 啟用它,並且具有減少延遲的效果,0 停用它,並且在某些情況下可能會提高 IO 吞吐量。
- output_ts_offset offset (輸出)
設定輸出時間偏移。
offset 必須是時間長度規格,請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節。
多工器將偏移量添加到輸出時間戳記。
指定正偏移量表示相應的串流延遲了 offset 中指定的時間長度。預設值為
0
(表示不套用偏移量)。- format_whitelist list (輸入)
允許的解多工器以「,」分隔的列表。預設情況下,允許所有解多工器。
- dump_separator string (input)
用於分隔命令列上關於串流參數的欄位之分隔符號。例如,使用換行符號和縮排分隔欄位
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg
- max_streams integer (輸入)
指定最大串流數。這可以用於拒絕由於大量串流而需要過多資源的檔案。
- skip_estimate_duration_from_pts bool (輸入)
如果估計輸入持續時間需要在檔案結尾額外探測 PTS,則跳過估計。目前,適用於 MPEG-PS 和 MPEG-TS。
- duration_probesize integer (輸入)
設定探測大小(以位元組為單位),用於在實際需要額外探測檔案結尾的 PTS 時估計輸入持續時間(目前:MPEG-PS 和 MPEG-TS)。它旨在為對自身有更好持續時間探測感興趣的使用者,或間接因為使用 concat 解多工器等。典型的用例是具有高位元率、高視訊緩衝且以類似視訊和音訊 PTS 結尾清理的 MPEG-TS CBR:在這種情況下,最後一個視訊封包和最後一個音訊封包之間的大物理間隙使得有必要讀取許多位元組以獲得視訊串流持續時間。另一個用例是預設探測行為僅達到單個視訊影格,由於影格重新排序,該影格不是串流的最後一個影格,因此持續時間不準確。即使對於小檔案,設定此選項也會產生效能影響,因為探測大小是固定的。預設行為是一種通用的權衡,在很大程度上是自適應的,但探測大小不會擴展到不惜一切代價獲得串流持續時間。必須是不小於 1 的整數,或 0 表示預設行為。
- strict, f_strict integer (輸入/輸出)
指定嚴格遵循標準的程度。
f_strict
已棄用,應僅透過ffmpeg
工具使用。可能的值:
- ‘very’
嚴格遵守規格或參考軟體的較舊且更嚴格的版本
- ‘strict’
嚴格遵守規格中的所有內容,無論後果如何
- ‘normal’
- ‘unofficial’
允許非官方擴展
- ‘experimental’
允許非標準化的實驗性事物、實驗性(未完成/正在進行中/未充分測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。
12.1 格式串流指定器
格式串流指定器允許選擇一個或多個符合特定屬性的串流。
串流指定器的確切語義由 avformat_match_stream_specifier()
函數定義,該函數在 libavformat/avformat.h 標頭中宣告,並記錄在 (ffmpeg)ffmpeg(1) 手冊中的串流指定器章節 中。
13 解多工器
解多工器是 FFmpeg 中的配置元素,可以從特定類型的文件中讀取多媒體串流。
當您配置 FFmpeg 建置時,預設情況下會啟用所有支援的解多工器。您可以使用配置選項 --list-demuxers
列出所有可用的解多工器。
您可以使用配置選項 --disable-demuxers
停用所有解多工器,並使用選項 --enable-demuxer=DEMUXER
選擇性地啟用單個解多工器,或使用選項 --disable-demuxer=DEMUXER
停用它。
ff* 工具的選項 -demuxers
將顯示已啟用的解多工器列表。使用 -formats
查看已啟用的解多工器和多工器的組合列表。
以下是一些目前可用的解多工器的描述。
13.1 aa
Audible Format 2、3 和 4 解多工器。
此解多工器用於解多工 Audible Format 2、3 和 4 (.aa) 檔案。
13.2 aac
Raw Audio Data Transport Stream AAC 解多工器。
此解多工器用於解多工 ADTS 輸入,其中包含單個 AAC 串流以及其中的任何 ID3v1/2 或 APE 標籤。
13.3 apng
Animated Portable Network Graphics 解多工器。
此解多工器用於解多工 APNG 檔案。所有標頭,但 PNG 簽名,直到(但不包括)第一個 fcTL 區塊都作為額外資料傳輸。然後將影格分割為兩個 fcTL 區塊之間或最後一個 fcTL 和 IEND 區塊之間的所有區塊。
- -ignore_loop bool
如果設定,則忽略檔案中的循環變數。預設為啟用。
- -max_fps int
最大影格率,單位為每秒影格數。預設值 0 表示不施加限制。
- -default_fps int
檔案中未指定時的預設影格率(0 表示盡可能快)。預設值為 15。
13.4 asf
Advanced Systems Format 解多工器。
此解多工器用於解多工 ASF 檔案和 MMS 網路串流。
- -no_resync_search bool
不要嘗試透過尋找特定的可選開始碼來重新同步。
13.5 concat
虛擬串聯腳本解多工器。
此解多工器從文字檔案讀取檔案列表和其他指令,並將它們逐個解多工,就好像它們的所有封包都已多工在一起。
檔案中的時間戳記會被調整,以便第一個檔案從 0 開始,而每個下一個檔案從前一個檔案結束的位置開始。請注意,它是全域完成的,如果所有串流的長度不完全相同,則可能會導致間隙。
所有檔案必須具有相同的串流(相同的編解碼器、相同的時基等)。
每個檔案的持續時間用於調整下一個檔案的時間戳記:如果持續時間不正確(因為它是使用位元率計算的,或者因為檔案被截斷了,例如),則可能會導致失真。duration
指令可用於覆蓋儲存在每個檔案中的持續時間。
13.5.1 語法
腳本是一個擴展 ASCII 文字檔案,每行一個指令。空白行、前導空格和以「#」開頭的行將被忽略。以下指令被識別
file path
要讀取的檔案路徑;特殊字元和空格必須使用反斜線或單引號逸出。
所有後續的檔案相關指令都適用於該檔案。
ffconcat version 1.0
識別腳本類型和版本。
為了使 FFmpeg 自動識別格式,此指令必須完全按原樣(沒有額外空格或位元組順序標記)出現在腳本的第一行。
duration dur
檔案的持續時間。此資訊可以從檔案中指定;在此處指定它可能更有效率,或者如果檔案中的資訊不可用或不準確,則可以提供幫助。
如果為所有檔案設定了持續時間,則可以在整個串聯視訊中搜尋。
inpoint timestamp
檔案的入點。當解多工器開啟檔案時,它會立即搜尋到指定的時間戳記。進行搜尋是為了使所有串流都可以在入點成功呈現。
此指令最適用於影格內編解碼器,因為對於非影格內編解碼器,您通常會在實際入點之前獲得額外的封包,並且解碼的內容很可能也包含入點之前的影格。
對於每個檔案,檔案入點之前的封包的時間戳記將小於檔案的計算開始時間戳記(在第一個檔案的情況下為負數),並且檔案的持續時間(如果未由
duration
指令指定)將根據其指定的入點而縮短。由於入點之前可能存在的封包,封包時間戳記可能在兩個串聯檔案之間重疊。
outpoint timestamp
檔案的出點。當解多工器在任何串流中達到指定的解碼時間戳記時,它會將其視為檔案結束條件,並跳過目前和所有剩餘的來自所有串流的封包。
出點是獨佔的,這表示解多工器不會輸出解碼時間戳記大於或等於出點的封包。
此指令最適用於影格內編解碼器和所有串流都緊密交錯的格式。對於非影格內編解碼器,您通常會在出點之後獲得具有呈現時間戳記的額外封包,因此解碼的內容很可能也包含出點之後的影格。如果您的串流沒有緊密交錯,您可能無法在出點之前從所有串流中獲得所有封包,並且您可能只能解碼最早的串流直到出點。
檔案的持續時間(如果未由
duration
指令指定)將根據其指定的出點而縮短。file_packet_metadata key=value
檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。此指令已棄用,請改用
file_packet_meta
。file_packet_meta key value
檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。
option key value
用於存取、開啟和探測檔案的選項。可以多次出現。
stream
在虛擬檔案中引入串流。所有後續的串流相關指令都適用於最後引入的串流。必須設定某些串流屬性,以便允許識別子檔案中的匹配串流。如果在腳本中未定義任何串流,則會複製第一個檔案中的串流。
exact_stream_id id
設定串流的 ID。如果給出此指令,則將使用子檔案中具有對應 ID 的字串。這對於 MPEG-PS (VOB) 檔案特別有用,其中串流的順序不可靠。
stream_meta key value
串流的中繼資料。可以多次出現。
stream_codec value
串流的編解碼器。
stream_extradata hex_string
串流的額外資料,以十六進制編碼。
chapter id start end
新增章節。id 是一個唯一識別碼,可能很小且連續。
13.5.2 選項
此解多工器接受以下選項
- safe
如果設定為 1,則拒絕不安全的文件路徑和指令。如果檔案路徑不包含協議規範並且是相對路徑,並且所有組件僅包含可移植字元集中的字元(字母、數字、句點、底線和連字號)並且組件開頭沒有句點,則該檔案路徑被認為是安全的。
如果設定為 0,則接受任何檔案名稱。
預設值為 1。
- auto_convert
如果設定為 1,則嘗試對封包資料執行自動轉換,使串流可串連。預設值為 1。
目前,唯一的轉換是將 h264_mp4toannexb 位元串流濾鏡添加到 MP4 格式的 H.264 串流。當解析度變更時,這尤其必要。
- segment_time_metadata
如果設定為 1,則每個封包將包含 <var>lavf.concat.start_time</var> 和 <var>lavf.concat.duration</var> 封包 metadata 值,這些值是以微秒表示的串連輸出中各檔案片段的 start_time 和 duration。duration metadata 僅在根據串連檔案得知時才會設定。預設值為 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 動態自適應串流解多工器。
此解多工器呈現 manifest 中找到的所有 AVStream。透過設定 AVStream 的 discard 旗標,呼叫者可以決定實際接收哪些串流。每個串流都反映 <code><Representation></code> 中的 <code>id</code> 和 <code>bandwidth</code> 屬性,作為名為 "id" 和 "variant_bitrate" 的 metadata 鍵值。
13.6.1 選項
此解多工器接受以下選項
- cenc_decryption_key
16 位元組金鑰,以十六進位表示,用於解密使用 ISO Common Encryption (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。
13.7 dvdvideo
DVD-Video 解多工器,由 libdvdnav 和 libdvdread 提供技術支援。
可以直接將 DVD 標題,特別是循序 PGC,攝取到轉換管線中。選單素材,例如背景視訊或音訊,也可以在給定選單座標的情況下進行解多工處理(盡力而為)。
接受區塊裝置 (DVD 光碟機)、ISO 檔案和目錄結構。在其中一個輸入前面使用 <code>-f dvdvideo</code> 啟動。
此解多工器不具備任何形式的解密程式碼。您需要自行處理加密 DVD,並且不應期望在這方面獲得支援。
底層播放由 libdvdnav 處理,結構剖析由 libdvdread 處理。FFmpeg 必須在可用的 GPL 函式庫支援以及組態開關 <code>--enable-libdvdnav</code> 和 <code>--enable-libdvdread</code> 的情況下建置。
您將需要提供所需的「標題編號」或確切的 PGC/PG 座標。許多開放原始碼 DVD 播放器和工具可以協助提供此資訊。如果未指定,解多工器將預設為標題 1,這適用於許多光碟。但是,由於格式的彈性,建議手動檢查。有許多光碟的製作方式很奇怪或標頭無效。
如果輸入是真實的 DVD 光碟機,請注意,有些光碟機可能會在從光碟讀取壞軌時靜默失敗,而是傳回隨機位元,這實際上是損壞的資料。這在老舊或腐爛的光碟上尤其突出。需要進行第二次掃描和完整性檢查才能偵測到損壞。這不是 FFmpeg 的問題。
13.7.1 背景
DVD-Video 不是傳統意義上可直接存取的線性容器格式。相反地,它允許複雜且程式化的播放,播放的內容是經過仔細多工處理的 MPEG-PS 串流,這些串流儲存在無標頭的 VOB 檔案中。對於終端使用者來說,這些串流簡稱為「標題」,但實際的邏輯播放順序是由標題內的一個或多個「PGC」(或程式群組鏈)定義的。PGC 又由多個「PG」(或程式)組成,這些程式是實際的視訊片段(對於典型的視訊功能來說,它們是依序排列的)。PGC 結構以及串流佈局和 metadata 儲存在需要剖析的 IFO 檔案中。PGC 可以被認為是更容易理解的播放清單。
實際的 DVD 播放器依賴使用者透過選單進行 GUI 互動和內部 VM 來驅動解多工的方向。一般來說,使用者可以導覽(透過選單)或自動重新導向到他們選擇的 PGC。在此過程和後續播放期間,DVD 播放器的內部 VM 也會維護狀態並執行指令,這些指令可以在播放期間建立跳轉到不同扇區的動作。這就是為什麼需要 libdvdnav 的原因,因為線性讀取光碟上的 MPEG-PS blob (VOB) 在許多情況下不足以產生正確的順序。
還有許多其他 DVD 結構(一個漫長的主題)在此不作討論。特別是 NAV 封包,此解多工器會處理這些封包以建立精確的計時,但不會作為串流發出。如需良好的高階理解,請參閱:<a href="https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures">https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures</a>
13.7.2 選項
此解多工器接受以下選項
- title <var>int</var>
要播放的標題編號。如果未設定 <samp>pgc</samp> 和 <samp>pg</samp>,則必須設定。不適用於選單。預設值為 0(自動),目前僅選擇第一個可用的標題(標題 1)並通知使用者相關的影響。
- chapter_start <var>int</var>
要從哪個章節或 PTT(標題的一部分)編號開始。不適用於選單。預設值為 1。
- chapter_end <var>int</var>
要結束於哪個章節或 PTT(標題的一部分)編號。不適用於選單。預設值為 0,這是一個特殊值,表示在最後一個可能的章節結束。
- angle <var>int</var>
視訊角度編號,指的是本質上是額外的視訊串流,該串流由 VOB 中交錯的替代影格組成。不適用於選單。預設值為 1。
- region <var>int</var>
用於播放的區域代碼。某些光碟可能會使用此代碼在不同區域以特定角度預設播放。如果將真實 DVD 光碟機用作輸入,此選項不會影響真實 DVD 光碟機的區域代碼。不適用於選單。預設值為 0,「世界」。
- menu <var>bool</var>
解多工處理選單素材,而不是導覽標題。需要選單的確切座標 (<samp>menu_lu</samp>、<samp>menu_vts</samp>、<samp>pgc</samp>、<samp>pg</samp>)。預設值為 false。
- menu_lu <var>int</var>
要解多工處理的選單語言。在 DVD 中,選單按語言分組。預設值為 1,第一個語言單元。
- menu_vts <var>int</var>
選單所在的 VTS,如果是 VMG 選單(根層級),則為 0。預設值為 1,第一個 VTS 的選單。
- pgc <var>int</var>
要開始播放的進入 PGC,與 <samp>pg</samp> 結合使用。作為設定 <samp>title</samp> 的替代方案。目前不支援章節標記。必須為選單明確設定。預設值為 0,從 <samp>title</samp> 的值自動解析。
- pg <var>int</var>
要開始播放的進入 PG,與 <samp>pgc</samp> 結合使用。作為設定 <samp>title</samp> 的替代方案。目前不支援章節標記。預設值為 1,PGC 的第一個 PG。
- preindex <var>bool</var>
啟用此選項可獲得精確的章節 (PTT) 標記和持續時間測量,這需要進行緩慢的第二次掃描讀取,以便從 NAV 封包為章節標記時間戳記建立索引。對於真實的光碟機來說,這是不理想的額外工作。建議且更快的方法是對儲存在硬碟上的 DVD 結構備份使用此選項。與 <samp>pgc</samp> 和 <samp>pg</samp> 不相容。預設值為 0,false。
- trim <var>bool</var>
跳過開頭的填充儲存格(即短於 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、PGC 1 解多工處理語言 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
Electronic Arts 多媒體格式解多工器。
此格式由各種 Electronic Arts 遊戲使用。
13.8.1 選項
- merge_alpha <var>bool</var>
-
正常情況下,VP6 alpha 通道(如果存在)會作為輔助視訊串流傳回,透過設定此選項,您可以使解多工器傳回單一視訊串流,其中包含 alpha 通道以及普通視訊。
13.9 imf
Interoperable Master Format 解多工器。
此解多工器呈現 IMF Composition 中找到的音訊和視訊串流,如 <a href="https://doi.org/10.5594/SMPTE.ST2067-2.2020">SMPTE ST 2067-2</a> 中所指定。
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
如果未指定 <code>-assetmaps</code>,則解多工器會在與 CPL 相同的目錄中尋找名為 <samp>ASSETMAP.xml</samp> 的檔案。
13.10 flv, live_flv, kux
Adobe Flash Video Format 解多工器。
此解多工器用於解多工處理 FLV 檔案和 RTMP 網路串流。對於即時網路串流,如果您強制格式,則可以使用 <code>live_flv</code> 選項而不是 <code>flv</code>,以在時間戳記不連續的情況下繼續運作。KUX 是 Youku 平台上使用的 flv 變體。
ffmpeg -f flv -i myfile.flv ... ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
- -flv_metadata <var>bool</var>
根據 onMetaData 陣列內容分配串流。
- -flv_ignore_prevtag <var>bool</var>
忽略先前標籤值的大小。
- -flv_full_metadata <var>bool</var>
輸出 onMetadata 的所有內容。
13.11 gif
Animated GIF 解多工器。
它接受以下選項
- min_delay
設定影格之間以百分之一秒為單位的最小有效延遲。範圍為 0 到 6000。預設值為 2。
- max_gif_delay
設定影格之間以百分之一秒為單位的最大有效延遲。範圍為 0 到 65535。預設值為 65535(將近 11 分鐘),這是規格允許的最大值。
- default_delay
設定影格之間以百分之一秒為單位的預設延遲。範圍為 0 到 6000。預設值為 10。
- ignore_loop
GIF 檔案可以包含循環特定次數(或無限次)的資訊。如果 <samp>ignore_loop</samp> 設定為 1,則會忽略輸入中的循環設定,並且不會發生循環。如果設定為 0,則會發生循環,並根據 GIF 循環指定的次數。預設值為 1。
例如,使用 overlay 濾鏡,將無限循環的 GIF 放在另一個視訊之上
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
請注意,在上面的範例中,overlay 濾鏡的最短選項用於在最短輸入檔案的長度處結束輸出視訊,在本例中為 <samp>input.mp4</samp>,因為此範例中的 GIF 無限循環。
13.12 hls
HLS 解多工器
Apple HTTP Live Streaming 解多工器。
此解多工器呈現所有變體串流中的所有 AVStream。id 欄位設定為位元率變體索引編號。透過設定 AVStream 的 discard 旗標(在 ffplay 中按 'a' 或 'v'),呼叫者可以決定實際接收哪些變體串流。串流所屬變體的總位元率可在名為 "variant_bitrate" 的 metadata 鍵值中取得。
它接受以下選項
- live_start_index
即時串流開始的片段索引(負值表示從結尾算起)。
- prefer_x_start
如果播放清單中有 #EXT-X-START,則優先使用它,而不是 live_start_index。
- allowed_extensions
hls 允許存取的檔案副檔名,以 ',' 分隔的清單。
- max_reload
嘗試重新載入不完整清單的最大次數。預設值為 1000。
- m3u8_hold_counters
當 m3u8 重新整理時,在沒有新片段的情況下,載入 m3u8 的最大次數。預設值為 1000。
- http_persistent
使用持續性 HTTP 連線。僅適用於 HTTP 串流。預設為啟用。
- http_multiple
使用多個 HTTP 連線下載 HTTP 片段。對於 HTTP/1.1 伺服器,預設為啟用。
- http_seekable
使用 HTTP 部分請求下載 HTTP 片段。0 = 停用,1 = 啟用,-1 = 自動,預設值為自動。
- seg_format_options
使用以 <code>:</code> 分隔的鍵值對清單,為媒體片段的解多工器設定選項。
- seg_max_retry
在錯誤時重新載入片段的最大次數,當不希望在網路錯誤時跳過片段時很有用。預設值為 0。
13.13 image2
影像檔案解多工器。
此解多工器從模式指定的影像檔案清單中讀取。模式的語法和含義由選項 <var>pattern_type</var> 指定。
模式可能包含一個後綴,用於自動判斷檔案中包含的影像格式。
對於序列中的所有檔案,每個影像的大小、像素格式和格式必須相同。
此解多工器接受以下選項
- framerate
設定視訊串流的影格率。預設值為 25。
- loop
如果設定為 1,則循環播放輸入。預設值為 0。
- pattern_type
選取用於解譯提供的檔名的模式類型。
<var>pattern_type</var> 接受以下值之一。
- none
停用模式比對,因此視訊將僅包含指定的影像。如果您不想從多個影像建立序列,並且您的檔名可能包含特殊模式字元,則應使用此選項。
- sequence
選取序列模式類型,用於指定由循序編號索引的檔案序列。
序列模式可以包含字串 "%d" 或 "%0<var>N</var>d",它指定在模式比對的每個檔名中,代表循序編號的字元位置。如果使用 "%d0<var>N</var>d" 形式,則每個檔名中代表編號的字串會以 0 填充,而 <var>N</var> 是代表編號的 0 填充位數總數。可以使用字串 "%%" 在模式中指定常值字元 '%'。
如果序列模式包含 "%d" 或 "%0<var>N</var>d",則模式指定的檔案清單的第一個檔名必須包含一個編號,該編號包含在 <var>start_number</var> 和 <var>start_number</var>+<var>start_number_range</var>-1 之間(包含端點),並且所有後續編號都必須是循序的。
例如,模式 "img-%03d.bmp" 將比對形式為 <samp>img-001.bmp</samp>、<samp>img-002.bmp</samp>、...、<samp>img-010.bmp</samp> 等的檔名序列;模式 "i%%m%%g-%d.jpg" 將比對形式為 <samp>i%m%g-1.jpg</samp>、<samp>i%m%g-2.jpg</samp>、...、<samp>i%m%g-10.jpg</samp> 等的檔名序列。
請注意,模式不一定必須包含 "%d" 或 "%0<var>N</var>d",例如,若要轉換單一影像檔案 <samp>img.jpeg</samp>,您可以使用以下命令
ffmpeg -i img.jpeg img.png
- glob
選取 glob 萬用字元模式類型。
模式的解譯方式與 <code>glob()</code> 模式相同。只有在 libavformat 是使用 globbing 支援編譯時,才能選取此選項。
- glob_sequence <em>(已棄用,將會移除)</em>
選取混合的 glob 萬用字元/序列模式。
如果您的 libavformat 版本是使用 globbing 支援編譯的,並且提供的模式包含至少一個 glob 元字元(在 <code>%*?[]{}</code> 中),該元字元前面有一個未逸出的 "%",則模式的解譯方式與 <code>glob()</code> 模式相同,否則其解譯方式與序列模式相同。
所有 glob 特殊字元 <code>%*?[]{}</code> 都必須以 "%" 作為前綴。若要逸出常值 "%",您應使用 "%%"。
例如,模式 <code>foo-%*.jpeg</code> 將比對所有以 "foo-" 為前綴並以 ".jpeg" 結尾的檔名,而 <code>foo-%?%?%?.jpeg</code> 將比對所有以 "foo-" 為前綴,後跟三個字元序列,並以 ".jpeg" 結尾的檔名。
此模式類型已棄用,建議改用 <var>glob</var> 和 <var>sequence</var>。
預設值為 <var>glob_sequence</var>。
- pixel_format
設定要讀取的影像的像素格式。如果未指定,則會從序列中的第一個影像檔案推測像素格式。
- start_number
設定要從中開始讀取的影像檔案模式比對的檔案索引。預設值為 0。
- start_number_range
設定在尋找序列中的第一個影像檔案時要檢查的索引間隔範圍,從 <var>start_number</var> 開始。預設值為 5。
- ts_from_file
如果設定為 1,則會將影格時間戳記設定為影像檔案的修改時間。請注意,不保證時間戳記的單調性:影像的順序與沒有此選項時相同。預設值為 0。如果設定為 2,則會以奈秒精度將影格時間戳記設定為影像檔案的修改時間。
- video_size
設定要讀取的影像的視訊大小。如果未指定,則會從序列中的第一個影像檔案推測視訊大小。
- export_path_metadata
若設為 1,將會為輸入中的 metadata 加入兩個額外欄位,使其也能用於其他濾鏡(範例請見 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" glob 樣式的圖片,亦即所有以 ".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 metadata 項目。
- sample_rate
設定匯出音軌的取樣率。範圍為 1000 至 999999。預設值為 44100。
- max_size (bytes)
解多工器會將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這會反過來作為可讀取檔案大小的上限。預設值為 50 MiB。
13.15 libmodplug
ModPlug based module 解多工器
請參閱 https://github.com/Konstanty/libmodplug
它會匯出一個 2 聲道 16 位元 44.1 kHz 音訊串流。選擇性地,可以匯出帶或不帶列印 metadata 的 pal8
16 色視訊串流。
它接受以下選項
- noise_reduction
套用簡單的低通濾波器。可為 1(開啟)或 0(關閉)。預設值為 0。
- reverb_depth
設定殘響量。範圍 0-100。預設值為 0。
- reverb_delay
設定延遲時間,單位為毫秒,限制在 40-250 毫秒。預設值為 0。
- bass_amount
套用低音擴展,又稱 XBass 或 megabass。範圍為 0(靜音)至 100(大聲)。預設值為 0。
- bass_range
設定截止頻率,即低音頻率的上限。範圍為 10-100 Hz。預設值為 0。
- surround_depth
套用 Dolby Pro-Logic 環繞音效。範圍為 0(靜音)至 100(重度)。預設值為 0。
- surround_delay
設定環繞延遲時間,單位為毫秒,限制在 5-40 毫秒。預設值為 0。
- max_size
解多工器會將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這會反過來作為可讀取檔案大小的上限。範圍為 0 至 100 MiB。0 移除緩衝區大小限制(不建議)。預設值為 5 MiB。
- video_stream_expr
字串,使用 eval API 評估以將顏色指派給產生的視訊串流。可使用的變數為
x
、y
、w
、h
、t
、speed
、tempo
、order
、pattern
和row
。- video_stream
產生視訊串流。可為 1(開啟)或 0(關閉)。預設值為 0。
- video_stream_w
設定視訊影格寬度,單位為「字元」,其中一個字元表示 8 像素。範圍為 20-512。預設值為 30。
- video_stream_h
設定視訊影格高度,單位為「字元」,其中一個字元表示 8 像素。範圍為 20-512。預設值為 30。
- video_stream_ptxt
在視訊串流上列印 metadata。包含
speed
、tempo
、order
、pattern
、row
和ts
(時間,單位為毫秒)。可為 1(開啟)或 0(關閉)。預設值為 1。
13.16 libopenmpt
libopenmpt based module 解多工器
更多資訊請參閱 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 Base Media File Format (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
忽略任何編輯列表原子 (atom)。預設情況下,解多工器會修改串流索引以反映編輯列表描述的時間軸。預設值為 false。
- advanced_editlist
修改串流索引以反映編輯列表描述的時間軸。
ignore_editlist
必須設定為 false,此選項才會生效。如果ignore_editlist
和此選項都設定為 false,則僅修改串流索引的開始位置,以反映編輯列表描述的初始停留時間或起始時間戳記。預設值為 true。- ignore_chapters
不要解析章節。這包括 GoPro 'HiLight' 標籤/時刻。請注意,僅在輸入可搜尋時才會解析章節。預設值為 false。
- use_mfra_for
對於可搜尋的片段化輸入,如果存在媒體片段隨機存取框 (media fragment random access box),則從中設定片段的起始時間戳記。
以下選項可用
- ‘auto’
自動偵測是否將 mfra 時間戳記設定為 PTS 或 DTS (預設)
- ‘dts’
將 mfra 時間戳記設定為 DTS
- ‘pts’
將 mfra 時間戳記設定為 PTS
- ‘0’
不使用 mfra 框來設定時間戳記
- use_tfdt
對於片段化輸入,將片段的起始時間戳記設定為來自
tfdt
框的baseMediaDecodeTime
。預設為啟用,這會優先使用tfdt
框來設定 DTS。停用以使用來自sidx
框的earliest_presentation_time
。在任何一種情況下,如果mfra
框可用且use_mfra_for
設定為 pts 或 dts,則會使用來自mfra
框的時間戳記。- export_all
將 udta 框中無法辨識的框匯出為 metadata 項目。框類型的頭四個字元會設定為金鑰。預設值為 false。
- export_xmp
將 XMP_ 框和 uuid 框的完整內容匯出為金鑰為
xmp
的字串。請注意,如果設定了export_all
且未設定此選項,則 XMP_ 框的內容仍會匯出,但金鑰為XMP_
。預設值為 false。- activation_bytes
解密 Audible AAX 和 AAX+ 檔案所需的 4 位元組金鑰。請參閱下方的 Audible AAX 子章節。
- audible_fixed_key
用於處理 Audible AAX/AAX+ 檔案的固定金鑰。它已預先設定,因此應該不需要指定。
- decryption_key
16 位元組金鑰,以十六進位表示,用於解密使用 ISO Common Encryption (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。
- max_stts_delta
在 trak 的 stts 框中寫入的極高取樣增量 (sample delta) 有時可能是故意的,但通常是錯誤寫入,或在視為帶正負號的 32 位元整數時,用於儲存 dts 校正的負值。此選項讓使用者設定上限,超過此上限時,增量會箝制為 1。如果轉換為 int32 時大於限制的值為負數,則會用於調整後續的 dts。
單位為音軌時間刻度。範圍為 0 至 UINT_MAX。預設值為
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
使用從 teletext 串流所屬且未捨棄的第一個程式的 PCR 計算的時間戳記,覆寫 teletext 封包 PTS 和 DTS 值。預設值為 1,如果您希望 teletext 封包 PTS 和 DTS 值保持不變,請將此選項設定為 0。
- ts_packetsize
輸出選項,攜帶原始封包大小(以位元組為單位)。顯示偵測到的原始封包大小,使用者無法設定。
- scan_all_pmts
掃描並合併所有 PMT。該值是一個整數,值從 -1 到 1(-1 表示自動設定,1 表示啟用,0 表示停用)。預設值為 -1。
- merge_pmt_versions
當 PMT 的版本更新且基本串流移動到不同的 PID 時,重複使用現有的串流。預設值為 0。
- max_packet_size
設定解多工器發出的封包最大大小,單位為位元組。超出此大小的有效負載將分割到多個封包中。範圍為 1 至 INT_MAX/2。預設值為 204800 位元組。
13.19 mpjpeg
MJPEG 封裝在 multi-part MIME 解多工器中。
此解多工器允許讀取 MJPEG,其中每個影格都表示為 multipart/x-mixed-replace 串流的一部分。
- strict_mime_boundary
預設實作對 multi-part MIME 邊界偵測套用寬鬆標準,以防止與許多現有端點(未產生正確的 MIME MJPEG 串流)發生回歸。透過將此選項設定為 1 來開啟它,將導致對邊界值進行更嚴格的檢查。
13.20 rawvideo
Raw video 解多工器。
此解多工器允許讀取原始視訊資料。由於沒有標頭指定假設的視訊參數,使用者必須指定它們才能正確解碼資料。
此解多工器接受以下選項
- framerate
設定輸入視訊影格率。預設值為 25。
- pixel_format
設定輸入視訊像素格式。預設值為
yuv420p
。- video_size
設定輸入視訊大小。此值必須明確指定。
例如,若要使用 ffplay
讀取像素格式為 rgb24
、視訊大小為 320x240
且影格率為每秒 10 個影像的 rawvideo 檔案 input.raw,請使用以下命令
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
13.21 rcwt
RCWT (Raw Captions With Time) 是 ccextractor 的原生格式,ccextractor 是一種常用的開放原始碼工具,用於處理 608/708 Closed Captions (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 script 解多工器。
此解多工器讀取 SBaGen http://uazu.net/sbagen/ 使用的腳本語言,以產生雙耳節拍 (binaural beats) 會議。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 Talks 的 JSON 字幕。
TED 不提供字幕連結,但可以從頁面猜測出來。FFmpeg 原始碼樹中的檔案 tools/bookmarklets.html 包含一個 bookmarklet 以公開它們。
此解多工器接受以下選項
- 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 wrapper。
由於安全考量,Vapoursynth 腳本將不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,在輸入 -i yourscript.vpy
之前新增 -f vapoursynth
。
此解多工器接受以下選項
- max_script_size
解多工器會將整個腳本緩衝到記憶體中。調整此值以設定最大緩衝區大小,這會反過來作為可讀取腳本大小的上限。預設值為 1 MiB。
13.25 w64
Sony Wave64 Audio 解多工器。
此解多工器接受以下選項
- max_size
請參閱 wav 解多工器的相同選項。
13.26 wav
RIFF Wave Audio 解多工器。
此解多工器接受以下選項
- max_size
指定解多工封包的最大封包大小(以位元組為單位)。預設情況下,此值設定為 0,這表示會根據輸入格式選擇一個合理的數值。
14 Metadata
FFmpeg 能夠將媒體檔案的 metadata 傾印到簡單的 UTF-8 編碼 INI 樣式文字檔中,然後使用 metadata 多工器/解多工器將其載回。
檔案格式如下
- 檔案由標頭和許多 metadata 標籤組成,這些標籤分為多個區段,每個區段各佔一行。
- 標頭是一個 ‘;FFMETADATA’ 字串,後接一個版本號碼(目前為 1)。
- 中繼資料標籤的格式為 ‘key=value’
- 標頭之後緊接著是全域中繼資料
- 全域中繼資料之後可能會有區段,包含每個串流/章節的中繼資料。
- 區段以大寫區段名稱(即 STREAM 或 CHAPTER)加上括號(‘[’、‘]’)開頭,並以next區段或檔案結尾結束。
- 在章節區段的開頭,可能會有一個選用的時基,用於開始/結束值。它必須是 ‘TIMEBASE=num/den’ 格式,其中 num 和 den 是整數。如果時基遺失,則開始/結束時間會假設為奈秒。
接下來,章節區段必須包含章節開始和結束時間,格式為 ‘START=num’、‘END=num’,其中 num 是一個正整數。
- 空白行和以 ‘;’ 或 ‘#’ 開頭的行會被忽略。
- 包含特殊字元(‘=’、‘;’、‘#’、‘\’ 和換行符)的中繼資料鍵或值,必須使用反斜線 ‘\’ 跳脫。
- 請注意,中繼資料中的空白字元(例如 ‘foo = bar’)會被視為標籤的一部分(在上面的範例中,鍵是 ‘foo ’,值是 ‘ bar’)。
一個 ffmetadata 檔案可能看起來像這樣
;FFMETADATA1 title=bike\\shed ;this is a comment artist=FFmpeg troll team [CHAPTER] TIMEBASE=1/1000 START=0 #chapter ends at 0:01:00 END=60000 title=chapter \#1 [STREAM] title=multi\ line
透過使用 ffmetadata 多工器和解多工器,可以從輸入檔案中提取中繼資料到 ffmetadata 檔案,然後將檔案轉碼為帶有編輯過的 ffmetadata 檔案的輸出檔案。
使用 ffmpeg 提取 ffmetadata 檔案的步驟如下
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
從 FFMETADATAFILE 檔案重新插入編輯過的中繼資料資訊可以這樣做
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
15 協定選項
libavformat 函式庫提供了一些通用的全域選項,可以設定在所有協定上。此外,每個協定可能支援所謂的私有選項,這些選項是該元件特有的。
可以通過在 FFmpeg 工具中指定 -option value 來設定選項,或者通過在 AVFormatContext
選項中顯式設定值,或者使用 libavutil/opt.h API 進行程式化使用。
支援的選項列表如下
- protocol_whitelist list (輸入)
設定一個以“,”分隔的允許協定列表。“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 是一種基於代理程式的發布-訂閱通訊協定。
FFmpeg 必須使用 –enable-librabbitmq 編譯才能支援 AMQP。還必須運行一個單獨的 AMQP 代理程式。一個範例開源 AMQP 代理程式是 RabbitMQ。
啟動代理程式後,FFmpeg 客戶端可以使用以下命令將資料串流到代理程式
ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]
其中 hostname 和 port(預設為 5672)是代理程式的位址。客戶端還可以設定使用者/密碼以進行身份驗證。兩個欄位的預設值都是 “guest”。代理程式上的虛擬主機名稱可以使用 vhost 設定。預設值為 “/”。
多個訂閱者可以使用以下命令從代理程式串流
ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]
在 RabbitMQ 中,所有發布到代理程式的資料都流經一個特定的交換器,並且每個訂閱客戶端都有一個已分配的佇列/緩衝區。當一個封包到達交換器時,它可能會被複製到客戶端的佇列,這取決於交換器和 routing_key 欄位。
支援以下選項
- exchange
設定要在代理程式上使用的交換器。RabbitMQ 有幾個預定義的交換器:“amq.direct” 是預設交換器,其中發布者和訂閱者必須具有相符的 routing_key;“amq.fanout” 與廣播操作相同(即,資料會轉發到 fanout 交換器上的所有佇列,而與 routing_key 無關);“amq.topic” 類似於 “amq.direct”,但允許更複雜的模式匹配(請參閱 RabbitMQ 文件)。
- routing_key
設定路由金鑰。預設值為 “amqp”。路由金鑰用於 “amq.direct” 和 “amq.topic” 交換器,以決定是否將封包寫入訂閱者的佇列。
- pkt_size
傳送/接收到代理程式的每個封包的最大大小。預設值為 131072。最小值為 4096,最大值可以是任何大值(可以用 int 表示)。接收封包時,這會在 FFmpeg 中設定一個內部緩衝區大小。它應該等於或大於發布到代理程式的封包大小。否則,接收到的訊息可能會被截斷,導致解碼錯誤。
- connection_timeout
與代理程式初始連線期間的逾時時間,以秒為單位。預設值為 rw_timeout,如果未設定 rw_timeout,則為 5 秒。
- delivery_mode mode
設定傳送到代理程式的每個訊息的傳遞模式。接受以下值
- ‘persistent’
傳遞模式設定為 “persistent” (2)。這是預設值。訊息可能會根據代理程式的設定寫入代理程式的磁碟。
- ‘non-persistent’
傳遞模式設定為 “non-persistent” (1)。訊息將保留在代理程式的記憶體中,除非代理程式處於記憶體壓力之下。
16.2 async
輸入串流的非同步資料填充包裝器。
在背景執行緒中填充資料,以將 I/O 操作與解多工執行緒分離。
async:URL async:http://host/resource async:cache:http://host/resource
16.3 bluray
讀取 BluRay 播放清單。
接受的選項為
- angle
BluRay 角度
- chapter
起始章節 (1...N)
- playlist
要讀取的播放清單 (BDMV/PLAYLIST/?????.mpls)
範例
從掛載到 /mnt/bluray 的 BluRay 讀取最長的播放清單
bluray:/mnt/bluray
從掛載到 /mnt/bluray 的 BluRay 讀取播放清單 4 的角度 2,從章節 2 開始
-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
16.4 cache
輸入串流的快取包裝器。
將輸入串流快取到暫存檔。它為直播串流帶來了搜尋功能。
接受的選項為
- read_ahead_limit
在不支援搜尋時,可以預讀的位元組數。範圍為 -1 到 INT_MAX。-1 表示無限制。預設值為 65536。
URL 語法為
cache:URL
16.5 concat
實體串聯協定。
從多個資源依序讀取和搜尋,如同它們是一個獨特的資源。
此協定接受的 URL 具有以下語法
concat:URL1|URL2|...|URLN
其中 URL1、URL2、...、URLN 是要串聯的資源的 URL,每個 URL 可能指定不同的協定。
例如,要使用 ffplay
讀取一系列檔案 split1.mpeg、split2.mpeg、split3.mpeg,請使用以下命令
ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
請注意,您可能需要跳脫字元 “|”,它在許多 shell 中是特殊的。
16.6 concatf
使用換行符號分隔的資源列表的實體串聯協定。
從多個資源依序讀取和搜尋,如同它們是一個獨特的資源。
此協定接受的 URL 具有以下語法
concatf:URL
其中 URL 是包含換行符號分隔的資源列表的 URL,這些資源將被串聯,每個資源都可能指定不同的協定。特殊字元必須使用反斜線或單引號跳脫。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的 “引號和跳脫” 章節。
例如,要使用 ffplay
讀取檔案 split.txt 中以單獨行條列的一系列檔案 split1.mpeg、split2.mpeg、split3.mpeg,請使用以下命令
ffplay concatf:split.txt
其中 split.txt 包含以下行
split1.mpeg split2.mpeg split3.mpeg
16.7 crypto
AES 加密串流讀取協定。
接受的選項為
- key
從給定的十六進制表示法設定 AES 解密金鑰二進制區塊。
- iv
從給定的十六進制表示法設定 AES 解密初始化向量二進制區塊。
接受的 URL 格式
crypto:URL crypto+URL
16.8 data
URI 中的內嵌資料。請參閱 http://en.wikipedia.org/wiki/Data_URI_scheme。
例如,要使用 ffmpeg
轉換內嵌的 GIF 檔案
ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png
16.9 fd
檔案描述符存取協定。
接受的語法是
fd: -fd file_descriptor
如果未指定 fd,預設情況下,標準輸出檔案描述符將用於寫入,標準輸入用於讀取。與 pipe 協定不同,fd 協定如果對應於常規檔案,則支援搜尋。fd 協定不支援透過 URL 傳遞檔案描述符以確保安全性。
此協定接受以下選項
- blocksize
設定 I/O 操作的最大區塊大小,以位元組為單位。預設值為
INT_MAX
,這會導致不限制請求的區塊大小。合理地降低此值可以改善使用者終止請求的反應時間,這在資料傳輸緩慢時很有價值。- fd
設定檔案描述符。
16.10 file
檔案存取協定。
從檔案讀取或寫入檔案。
檔案 URL 可以具有以下形式
file:filename
其中 filename 是要讀取的檔案路徑。
沒有協定前綴的 URL 將被假定為檔案 URL。根據建置,看起來像以磁碟機代號開頭的 Windows 路徑的 URL 也將被假定為檔案 URL(在類 Unix 系統的建置中通常不是這種情況)。
例如,要使用 ffmpeg
從檔案 input.mpeg 讀取,請使用以下命令
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
設定底層低階操作使用的 socket 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 方案名稱後指定 “+proto” 來宣告,其中 proto 是 “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
設定要在未來請求中傳送的 Cookie。每個 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 方法不符,則會向客戶端發送「錯誤請求」回應。如果未設定,目前不會檢查 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://server:port # Client side (receiving): ffmpeg -i http://server:port -c copy somefile.ogg # Client can also be done with wget: wget http://server:port -O somefile.ogg # Server side (receiving): ffmpeg -listen 1 -i http://server:port -c copy somefile.ogg # Client side (sending): ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://server:port # Client can also be done with wget: wget --post-file=somefile.ogg http://server:port
- resource
當實驗性 HTTP 伺服器在使用中時,客戶端請求的資源。
- reply_code
當實驗性 HTTP 伺服器在使用中時,返回給客戶端的 HTTP 代碼。
- short_seek_size
設定閾值(以位元組為單位),用於判斷何時應優先使用預讀而非搜尋和新的 HTTP 請求。例如,這對於確保同一個連線用於讀取大型視訊封包和中間的小型音訊封包非常有用。
16.15.1 HTTP Cookie
某些 HTTP 請求會被拒絕,除非請求中傳遞了 Cookie 值。cookies 選項允許指定這些 Cookie。至少,每個 Cookie 必須指定一個值以及路徑和網域。符合網域和路徑的 HTTP 請求將自動在 HTTP Cookie 標頭欄位中包含 Cookie 值。多個 Cookie 可以用換行符分隔。
播放指定 Cookie 的串流所需的語法為
ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8
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 的支援,這些版本不支援 HTTP PUT 方法,但支援 SOURCE 方法。
- tls
建立與 Icecast 的 TLS (HTTPS) 連線。
icecast://[username[:password]@]server:port/mountpoint
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(微軟媒體伺服器)透過 TCP 的協定。
16.19 mmsh
MMS(微軟媒體伺服器)透過 HTTP 的協定。
所需的語法為
mmsh://server[:port][/app][/playpath]
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:[number]
如果未指定 fd,則 number 是對應於管道檔案描述器的數字(例如,0 代表 stdin,1 代表 stdout,2 代表 stderr)。如果未指定 number,則預設情況下,stdout 檔案描述器將用於寫入,stdin 用於讀取。
例如,要使用 ffmpeg
從 stdin 讀取
cat test.wav | ffmpeg -i pipe:0 # ...this is the same as... cat test.wav | ffmpeg -i pipe:
要使用 ffmpeg
寫入 stdout
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 Code of Practice #3 Release 2 FEC 協定。
Pro-MPEG CoP#3 FEC 是一種用於 MPEG-2 傳輸串流透過 RTP 發送的 2D 奇偶校驗前向錯誤更正機制。
此協定必須與 rtp_mpegts
多工器和 rtp
協定結合使用。
所需的語法為
-f rtp_mpegts -fec prompeg=option=val... rtp://hostname:port
目標 UDP 埠對於列 FEC 串流為 port + 2
,對於行 FEC 串流為 port + 4
。
此協定接受以下選項
- l=n
列數 (4-20, LxD <= 100)
- d=n
行數 (4-20, LxD <= 100)
使用範例
-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://hostname:port
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[:port][/app][/instance][/playpath]
接受的參數為
- username
選用的使用者名稱(主要用於發布)。
- password
選用的密碼(主要用於發布)。
- server
RTMP 伺服器的位址。
- port
要使用的 TCP 埠號(預設為 1935)。
- app
要存取的應用程式名稱。它通常對應於應用程式安裝在 RTMP 伺服器上的路徑(例如,/ondemand/、/flash/live/ 等)。您也可以透過
rtmp_app
選項覆寫從 URI 解析的值。- playpath
要播放的資源路徑或名稱,參考 app 中指定的應用程式,可以加上 "mp4:" 前綴。您也可以透過
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 表示空值,後跟冒號。對於布林值,資料必須是 0 或 1,分別代表 FALSE 或 TRUE。同樣,對於物件,資料必須是 0 或 1,分別代表結束或開始物件。子物件中的資料項目可以命名,方法是在類型前面加上 'N',並在值之前指定名稱(即NB:myFlag:1
)。此選項可以多次使用,以建構任意 AMF 序列。- rtmp_enhanced_codecs
指定用戶端宣告支援的編解碼器列表,用於增強型 RTMP 串流。此選項應設定為以逗號分隔的 fourcc 值列表,例如
hvc1,av01,vp09
表示多個編解碼器,或hvc1
表示僅一個編解碼器。指定的列表將在 Connect Command Message 的 "fourCcLive" 屬性中呈現。- rtmp_flashver
用於執行 SWF 播放器的 Flash 外掛程式版本。預設值為 LNX 9,0,124,2。(發布時,預設值為 FMLE/3.0 (compatible; <libavformat version>))。
- rtmp_flush_interval
在同一個請求中刷新的封包數(僅 RTMPT)。預設值為 10。
- rtmp_live
指定媒體是即時串流。即時串流中無法恢復或搜尋。預設值為
any
,表示訂閱者首先嘗試播放 playpath 中指定的即時串流。如果找不到該名稱的即時串流,則播放錄製的串流。其他可能的值為live
和recorded
。- rtmp_pageurl
媒體嵌入其中的網頁 URL。預設情況下,不會發送任何值。
- rtmp_playpath
要播放或發布的串流識別碼。此選項會覆寫 URI 中指定的參數。
- rtmp_subscribe
要訂閱的即時串流名稱。預設情況下,不會發送任何值。僅當指定此選項或 rtmp_live 設定為 live 時才會發送。
- rtmp_swfhash
解壓縮的 SWF 檔案的 SHA256 雜湊值(32 位元組)。
- rtmp_swfsize
解壓縮的 SWF 檔案的大小,SWFVerification 所需。
- rtmp_swfurl
媒體的 SWF 播放器 URL。預設情況下,不會發送任何值。
- rtmp_swfverify
播放器 swf 檔案的 URL,自動計算雜湊值/大小。
- rtmp_tcurl
目標串流的 URL。預設為 proto://host[:port]/app。
- tcp_nodelay=1|0
設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。
注意:目前未最佳化對 Socket 的寫入操作,以最大程度地減少系統呼叫,並降低 TCP_NODELAY 的效率/效果。
例如,要使用 ffplay
從 RTMP 伺服器 "myserver" 的應用程式 "vod" 讀取名為 "sample" 的多媒體資源
ffplay rtmp://myserver/vod/sample
要發布到受密碼保護的伺服器,請分別傳遞 playpath 和 app 名稱
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
設定底層低階操作使用的 Socket 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
設定底層低階操作使用的 Socket 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)。
例如,要使用 ffmpeg
將檔案即時串流到 RTMP 伺服器
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][?options]
port 指定要使用的 RTP 埠。
options 包含以 &
分隔的選項列表,格式為 key=val。
支援以下 URL 選項
- ttl=n
設定 TTL(存活時間)值(僅適用於多播)。
- rtcpport=n
設定遠端 RTCP 埠為 n。
- localrtpport=n
設定本地 RTP 埠為 n。
- localrtcpport=n'
設定本地 RTCP 埠為 n。
- pkt_size=n
設定最大封包大小(以位元組為單位)為 n。
- buffer_size=size
設定最大 UDP socket 緩衝區大小(以位元組為單位)。
- connect=0|1
在 UDP socket 上執行
connect()
(若設定為 1)或不執行(若設定為 0)。- sources=ip[,ip]
列出允許的來源 IP 位址。
- block=ip[,ip]
列出不允許(封鎖)的來源 IP 位址。
- write_to_source=0|1
將封包傳送到最新接收封包的來源位址(若設定為 1)或預設遠端位址(若設定為 0)。
- localport=n
設定本地 RTP 埠為 n。
這是一個已棄用的選項。請改用 localrtpport。
- localaddr=addr
用於傳送封包或加入多播群組的網路介面的本地 IP 位址。
- timeout=n
設定 socket I/O 操作的逾時時間(以微秒為單位)為 n。
重要注意事項
- 若未設定 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 URL 的必要語法為
rtsp://hostname[:port]/path
選項可以在 ffmpeg
/ffplay
命令列中設定,或透過程式碼中的 AVOption
或在 avformat_open_input
中設定。
16.34.1 Muxer
支援以下選項。
- 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
設定最大 socket 緩衝區大小(以位元組為單位)。
- pkt_size
設定最大傳送封包大小(以位元組為單位)。預設值為 1472。
16.34.2 Demuxer
支援以下選項。
- initial_pause
若設定為 1,則不要立即開始播放串流。預設值為 0。
- rtsp_transport
設定 RTSP 傳輸協定。
它接受以下值
- ‘udp’
使用 UDP 作為底層傳輸協定。
- ‘tcp’
使用 TCP(在 RTSP 控制通道內交錯)作為底層傳輸協定。
- ‘udp_multicast’
使用 UDP 多播作為底層傳輸協定。
- ‘http’
使用 HTTP 隧道作為底層傳輸協定,這對於通過代理伺服器很有用。
- ‘https’
使用 HTTPs 隧道作為底層傳輸協定,這對於通過代理伺服器很有用,並且因安全考量而被廣泛使用。
可以指定多個底層傳輸協定,在這種情況下,它們會逐一嘗試(如果一個設定失敗,則嘗試下一個)。對於多工器,僅支援 ‘tcp’ 和 ‘udp’ 選項。
- rtsp_flags
設定 RTSP 旗標。
接受以下值
- ‘filter_src’
僅接受來自協商對等位址和埠的封包。
- ‘listen’
充當伺服器,監聽傳入的連線。
- ‘prefer_tcp’
如果 TCP 可用作 RTSP RTP 傳輸,則優先嘗試 TCP 進行 RTP 傳輸。
- ‘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
設定 socket TCP I/O 逾時時間(以微秒為單位)。
- user_agent
覆寫 User-Agent 標頭。若未指定,則預設為 libavformat 識別字串。
- buffer_size
設定最大 socket 緩衝區大小(以位元組為單位)。
當透過 UDP 接收資料時,解多工器會嘗試重新排序接收到的封包(因為它們可能亂序到達,或封包可能完全遺失)。可以透過將最大解多工延遲設定為零(透過 AVFormatContext 的 max_delay
欄位)來停用此功能。
當使用 ffplay
觀看多位元率 Real-RTSP 串流時,可以使用 `-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
會議宣告協定 (Session Announcement Protocol, SAP) (RFC 2974)。從技術上來說,這在 libavformat 中並非協定處理器,而是一個多工器和解多工器。它用於 RTP 串流的訊號傳輸,方法是在獨立埠上定期宣告串流的 SDP。
16.35.1 Muxer
給多工器的 SAP URL 語法為
sap://destination[:port][?options]
RTP 封包會傳送到埠 port 上的 destination,若未指定埠,則傳送到埠 5004。options 是以 &
分隔的列表。支援以下選項
- announce_addr=address
指定傳送宣告的目的地 IP 位址。若省略,宣告會傳送到常用的 SAP 宣告多播位址 224.2.127.254 (sap.mcast.net),或 ff0e::2:7ffe(若 destination 為 IPv6 位址)。
- 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
以及透過 IPv6 在 ffplay
中觀看
ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]
16.35.2 Demuxer
給解多工器的 SAP URL 語法為
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://host:port[?options]
此協定接受以下選項
- listen
若設定為任何值,則監聽連入連線。預設情況下會執行連出連線。
- max_streams
設定最大串流數量。預設情況下,未設定限制。
16.37 srt
Haivision 安全可靠傳輸協定 (SRT),透過 libsrt 實作。
SRT URL 的支援語法為
srt://hostname:port[?options]
options 包含以 &
分隔的選項列表,格式為 key=val。
或
options srt://hostname:port
options 包含 '-key val' 選項的列表。
此協定接受以下選項。
- connect_timeout=milliseconds
連線逾時;對於 RTT > 1500 毫秒(2 次握手交換),SRT 無法在預設連線逾時時間 3 秒內連線。此選項適用於呼叫者和會合連線模式。連線逾時時間是為會合模式設定的值的 10 倍(可用於解決早期版本的此連線問題)。
- ffs=bytes
飛行旗標大小(視窗大小),以位元組為單位。FFS 實際上是一個內部參數,您應將其設定為不小於 recv_buffer_size 和 mss。預設值相對較大,因此除非您設定非常大的接收器緩衝區,否則無需變更此選項。預設值為 25600。
- inputbw=bytes/seconds
寄件者標稱輸入速率,以位元組/秒為單位。當 maxbw 設定為相對值 (0) 時,與 oheadbw 一起使用,以在復原封包與主要媒體串流一起傳送時計算最大傳送速率:inputbw * (100 + oheadbw) / 100。若在 maxbw 設定為相對值 (0) 時未設定 inputbw,則實際輸入速率會在程式庫內部評估。預設值為 0。
- iptos=tos
IP 服務類型。僅適用於寄件者。預設值為 0xB8。
- ipttl=ttl
IP 存活時間。僅適用於寄件者。預設值為 64。
- latency=microseconds
基於時間戳記的封包傳遞延遲。用於吸收遺失封包重新傳輸的突發。此旗標將 rcvlatency 和 peerlatency 設定為相同的值。請注意,在 1.3.0 版之前,這是設定延遲的唯一旗標,但這實際上等同於在端為寄件者時設定 peerlatency,在端為接收器時設定 rcvlatency,且不支援雙向串流傳送。
- listen_timeout=microseconds
設定 socket 監聽逾時時間。
- maxbw=bytes/seconds
最大傳送頻寬,以位元組/秒為單位。-1 無限(CSRTCC 限制為 30mbps),0 相對於輸入速率(請參閱 inputbw),>0 絕對限制值。預設值為 0(相對)。
- mode=caller|listener|rendezvous
連線模式。caller 開啟用戶端連線。listener 啟動伺服器以監聽連入連線。rendezvous 使用會合連線模式。預設值為呼叫者。
- mss=bytes
最大區段大小,以位元組為單位。用於緩衝區配置和速率計算,使用封包計數器假設封包已完全填滿。使用對等方之間最小的 MSS。這在整個網際網路上預設為 1500。這是 UDP 封包的最大大小,只能減小,除非您有一些不尋常的專用網路設定。預設值為 1500。
- nakreport=1|0
若設定為 1,則接收器會定期傳送 ‘UMSG_LOSSREPORT’ 訊息,直到遺失的封包重新傳輸或有意丟棄。預設值為 1。
- oheadbw=percents
高於輸入速率的復原頻寬額外負荷,以百分比表示。請參閱 inputbw。預設值為 25%。
- passphrase=string
HaiCrypt 加密/解密密碼字串,長度從 10 到 79 個字元。密碼字串是寄件者和接收器之間的共用密碼。它用於使用 PBKDF2(基於密碼的金鑰衍生函數)產生金鑰加密金鑰。僅當 pbkeylen 為非零時才使用。僅當接收到的資料已加密時,才在接收器上使用。已設定的密碼字串無法復原(僅寫入)。
- enforced_encryption=1|0
若為 true,則連線雙方都必須設定相同的密碼(包括空白,即不加密)。若密碼不符或只有一方未加密,則連線會被拒絕。預設值為 true。
- kmrefreshrate=packets
在傳輸一定數量的封包後,加密金鑰會切換到新的金鑰。預設值為 -1。-1 表示自動(srt 程式庫中的 0x1000000)。此選項的範圍是 0 到
INT_MAX
的整數。- kmpreannounce=packets
傳送新加密金鑰和發生切換之間的時間間隔。此值也適用於發生切換和舊加密金鑰停用之間的後續間隔。預設值為 -1。-1 表示自動(srt 程式庫中的 0x1000)。此選項的範圍是 0 到
INT_MAX
的整數。- snddropdelay=microseconds
寄件者在丟棄封包之前的額外延遲。此延遲會新增至預設的丟棄延遲時間間隔值。
特殊值 -1:完全不要在寄件者上丟棄封包。
- payload_size=bytes
設定在即時模式下單次呼叫傳送函數期間傳輸的封包的最大宣告大小。若未使用此值(檔案模式下的預設值),則使用 0。預設值為 -1(自動),通常表示 MPEG-TS;如果您要使用 SRT 傳送任何不同類型的酬載,例如,將即時串流包裝在非常小的影格中,則可以使用更大的最大影格大小,但不得超過 1456 個位元組。
- pkt_size=bytes
‘payload_size’ 的別名。
- peerlatency=microseconds
由寄件者端設定為接收器最小值的延遲值(如 rcvlatency 中所述)。
- pbkeylen=bytes
發送者加密金鑰長度,以位元組為單位。僅能設定為 0、16、24 和 32。若非 0 則啟用發送者加密。接收者端非必要(設為 0),金鑰大小從 HaiCrypt 握手協商中從發送者取得。預設值為 0。
- rcvlatency=microseconds
封包從發送端送出到送達接收端應用程式的接收函式之間應經過的時間。此時間應為足夠大的緩衝時間,以涵蓋發送時間、意外延長的 RTT 時間,以及重新傳輸遺失的 UDP 封包所需的時間。有效延遲值將是此選項的值與對等端設定的 peerlatency 值兩者中的最大值。在 1.3.0 版本之前,此選項僅以 latency 提供。
- recv_buffer_size=bytes
設定 UDP 接收緩衝區大小,以位元組為單位表示。
- send_buffer_size=bytes
設定 UDP 發送緩衝區大小,以位元組為單位表示。
- timeout=microseconds
設定讀取、寫入和連線操作的引發錯誤逾時時間。請注意,SRT 函式庫有可單獨控制的內部逾時設定,此處設定的值僅為這些逾時的上限。
- tlpktdrop=1|0
過時封包丟棄。在接收端啟用時,它會跳過未及時送達的遺失封包,並在後續封包的播放時間到來時將其傳遞給應用程式。它也會向發送端發送偽造的 ACK。當在發送端和接收對等端都啟用時,發送端會丟棄沒有機會及時送達的較舊封包。如果接收端支援,則會在發送端自動啟用此功能。
- sndbuf=bytes
設定發送緩衝區大小,以位元組為單位表示。
- rcvbuf=bytes
設定接收緩衝區大小,以位元組為單位表示。
接收緩衝區不得大於 ffs。
- lossmaxttl=packets
重新排序容忍度可能增長到的值。當重新排序容忍度 > 0 時,封包遺失報告會延遲到收到該數量的封包後才發送。每次收到「延遲」封包時,重新排序容忍度都會增加,但並非由於重新傳輸(也就是說,當 UDP 封包傾向於亂序到達時),增加的量為最新序列和此封包序列之間的差異,但不超過此選項的值。預設值為 0,表示此機制已關閉,並且始終在遇到序列中的「間隙」時立即發送遺失報告。
- minversion
對等端所需的最低 SRT 版本。與不滿足最低版本要求的對等端的連線將被拒絕。
十六進制版本格式為 0xXXYYZZ,對應人類可讀格式 x.y.z。
- streamid=string
一個字串,限制為 512 個字元,可以在連線之前在 socket 上設定。監聽端可以從 srt_accept 返回的 socket 中檢索此串流 ID,該 socket 是由具有該設定串流 ID 的 socket 連線的。SRT 不強制對此字串的內容進行任何特殊解釋。此選項在 Rendezvous 連線中沒有意義;結果可能是簡單地一方會覆蓋另一方的值,而哪一方會獲勝則取決於運氣。
- srt_streamid=string
‘streamid’ 的別名,以避免與 ffmpeg 命令列選項衝突。
- smoother=live|file
用於該 socket 傳輸的平滑器類型,它負責傳輸和壅塞控制。連線雙方的平滑器類型必須完全相同,否則連線將被拒絕。
- messageapi=1|0
設定後,此 socket 使用訊息 API,否則使用緩衝區 API。請注意,在即時模式(請參閱 transtype)中,僅提供訊息 API。在檔案模式下,您可以選擇使用兩種模式之一
串流 API(預設值,當此選項為 false 時)。在此模式下,您可以使用一個發送指令發送任意多的資料,甚至可以使用直接從檔案讀取的專用函式。內部機制將負責任何速度和壅塞控制。接收時,您也可以接收任意多的資料,未提取的資料將等待下一次呼叫。在串流模式下,資料部分之間沒有邊界。
訊息 API。在此模式下,您的單個發送指令傳遞恰好一塊具有邊界的資料(訊息)。與即時模式相反,此訊息可以跨越多個 UDP 封包,唯一的尺寸限制是它應作為整體放入發送緩衝區中。接收者應使用盡可能大的緩衝區來接收訊息,否則將不會放棄該訊息。當訊息不完整(並非所有封包都已收到或發生封包遺失)時,將不會放棄該訊息。
- transtype=live|file
設定 socket 的傳輸類型,特別是,設定此選項會將多個其他參數設定為特定傳輸類型所需的預設值。
live:將選項設定為即時傳輸。在此模式下,您應該僅使用一個發送指令發送適合一個 UDP 封包的資料量,並限制為首先在 payload_size 中定義的值(在此模式下預設為 1316)。此模式下沒有速度控制,只有頻寬控制(如果已配置),以避免因額外傳輸(重新傳輸和控制封包)而超出頻寬。
file:將選項設定為非即時傳輸。有關更多說明,請參閱 messageapi
- linger=seconds
socket 在關閉時等待未發送資料的秒數。預設值為 -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://hostname:port[?options]
options 包含以 &
分隔的選項列表,格式為 key=val。
以下是支援的選項列表。
- listen=2|1|0
監聽連入連線。0 停用監聽,1 在單一用戶端模式下啟用監聽,2 在多用戶端模式下啟用監聽。預設值為 0。
- local_addr=addr
用於 tcp socket 連線的網路介面的本機 IP 位址。
- local_port=port
用於 tcp socket 連線的本機埠。
- timeout=microseconds
設定引發錯誤逾時時間,以微秒為單位表示。
此選項僅在讀取模式下相關:如果在超過此時間間隔內沒有資料到達,則引發錯誤。
- listen_timeout=milliseconds
設定監聽逾時時間,以毫秒為單位表示。
- recv_buffer_size=bytes
設定接收緩衝區大小,以位元組為單位表示。
- send_buffer_size=bytes
設定發送緩衝區大小,以位元組為單位表示。
- tcp_nodelay=1|0
設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。
注意:目前未最佳化對 Socket 的寫入操作,以最大程度地減少系統呼叫,並降低 TCP_NODELAY 的效率/效果。
- tcp_mss=bytes
設定傳出 TCP 封包的最大區段大小,以位元組為單位表示。
以下範例示範如何使用 ffmpeg
設定監聽 TCP 連線,然後使用 ffplay
存取該連線
ffmpeg -i input -f format tcp://hostname:port?listen ffplay tcp://hostname:port
16.42 tls
傳輸層安全性 (TLS) / 安全 Socket 層 (SSL)
TLS/SSL URL 的必要語法為
tls://hostname:port[?options]
以下參數可以透過命令列選項設定(或在程式碼中透過 AVOption
設定)
- ca_file, cafile=filename
包含憑證授權單位 (CA) 根憑證的檔案,用於視為受信任的憑證。如果連結的 TLS 函式庫包含預設值,則可能不需要指定此項即可進行驗證,但並非所有函式庫和設定都內建預設值。該檔案必須為 OpenSSL PEM 格式。
- tls_verify=1|0
如果啟用,請嘗試驗證與我們通訊的對等端。請注意,如果使用 OpenSSL,目前僅確保對等端憑證由 CA 資料庫中的根憑證之一簽署,但它不會驗證憑證是否實際符合我們嘗試連線的主機名稱。(使用其他後端,也會驗證主機名稱。)
預設情況下停用此功能,因為在許多情況下,它需要呼叫者提供 CA 資料庫。
- cert_file, cert=filename
包含憑證的檔案,用於在與對等端進行握手時使用。(當作為伺服器在監聽模式下運作時,對等端通常更需要此憑證,而用戶端憑證僅在某些設定中是強制性的。)
- key_file, key=filename
包含憑證私密金鑰的檔案。
- listen=1|0
如果啟用,則監聽提供的埠上的連線,並在握手中承擔伺服器角色而不是用戶端角色。
- http_proxy
要透過其建立通道的 HTTP Proxy,例如
http://example.com:1234
。Proxy 必須支援 CONNECT 方法。
命令列範例
建立提供輸入串流的 TLS/SSL 伺服器。
ffmpeg -i input -f format tls://hostname:port?listen&cert=server.crt&key=server.key
使用 ffplay
從 TLS/SSL 伺服器播放串流
ffplay tls://hostname:port
16.43 udp
用戶資料報協定。
UDP URL 的必要語法為
udp://hostname:port[?options]
options 包含以 &
分隔的選項列表,格式為 key=val。
如果系統上啟用了執行緒,則會使用循環緩衝區來儲存傳入的資料,這允許減少因 UDP socket 緩衝區溢位而造成的資料遺失。fifo_size 和 overrun_nonfatal 選項與此緩衝區相關。
以下是支援的選項列表。
- buffer_size=size
設定 UDP 最大 socket 緩衝區大小(以位元組為單位)。這用於設定接收或發送緩衝區大小,具體取決於 socket 的用途。輸出的預設值為 32 KB,輸入的預設值為 384 KB。另請參閱 fifo_size。
- bitrate=bitrate
如果設定為非零值,則如果輸入有足夠的封包來維持,則輸出將具有指定的恆定位元率。
- burst_bits=bits
使用 bitrate 時,此選項指定封包叢發中的最大位元數。
- localport=port
覆寫要綁定的本機 UDP 埠。
- localaddr=addr
用於傳送封包或加入多播群組的網路介面的本地 IP 位址。
- pkt_size=size
設定 UDP 封包的大小(以位元組為單位)。
- reuse=1|0
明確允許或禁止重複使用 UDP socket。
- ttl=ttl
設定存活時間值(僅適用於多播)。
- connect=1|0
使用
connect()
初始化 UDP socket。在這種情況下,稍後無法使用 ff_udp_set_remote_url 變更目的地位址。如果一開始不知道目的地位址,也可以在 ff_udp_set_remote_url 中指定此選項。這允許使用 getsockname 找出封包的來源位址,並使寫入在收到「目的地不可達」時傳回 AVERROR(ECONNREFUSED)。對於接收,這帶來僅接收來自指定對等端位址/埠的封包的好處。- sources=address[,address]
僅接收從指定位址發送的封包。在多播的情況下,也僅訂閱來自這些位址的多播流量。
- block=address[,address]
忽略從指定位址發送的封包。在多播的情況下,也排除多播訂閱中的來源位址。
- fifo_size=units
設定 UDP 接收循環緩衝區大小,以 188 位元組大小的封包數量表示。如果未指定,則預設為 7*4096。
- overrun_nonfatal=1|0
在 UDP 接收循環緩衝區溢位的情況下存活。預設值為 0。
- timeout=microseconds
設定引發錯誤逾時時間,以微秒為單位表示。
此選項僅在讀取模式下相關:如果在超過此時間間隔內沒有資料到達,則引發錯誤。
- broadcast=1|0
明確允許或禁止 UDP 廣播。
請注意,廣播在具有廣播風暴保護的網路上可能無法正常運作。
16.43.1 範例
- 使用
ffmpeg
透過 UDP 串流傳輸到遠端端點ffmpeg -i input -f format udp://hostname:port
- 使用
ffmpeg
以 mpegts 格式透過 UDP 串流傳輸,使用 188 大小的 UDP 封包,並使用大型輸入緩衝區ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
- 使用
ffmpeg
從遠端端點透過 UDP 接收ffmpeg -i udp://[multicast-address]:port ...
16.44 unix
Unix 本機 socket
Unix socket URL 的必要語法為
unix://filepath
以下參數可以透過命令列選項設定(或在程式碼中透過 AVOption
設定)
- timeout
逾時時間,單位為毫秒。
- listen
在監聽模式下建立 Unix socket。
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 Pub-Sub 模式實作的。伺服器端綁定到一個埠並發佈資料。用戶端連線到伺服器(透過 IP 位址/埠)並訂閱串流。伺服器和用戶端啟動的順序通常無關緊要。
ffmpeg 必須使用 –enable-libzmq 選項編譯才能支援此協定。
可以在 ffmpeg
/ffplay
命令列上設定選項。支援以下選項
- pkt_size
強制發送/接收資料的最大封包大小。預設值為 131,072 位元組。在伺服器端,這設定了透過 ZeroMQ 發送的封包的最大大小。在用戶端,它設定了接收封包的內部緩衝區大小。請注意,用戶端上的 pkt_size 應等於或大於伺服器上的 pkt_size。否則,收到的訊息可能會被截斷,導致解碼錯誤。
17 裝置選項
libavdevice 函式庫提供與 libavformat 相同的介面。也就是說,輸入裝置被視為解多工器,輸出裝置被視為多工器,介面和通用裝置選項與 libavformat 提供的相同(請參閱 ffmpeg-formats 手冊)。
此外,每個輸入或輸出裝置都可能支援所謂的私有選項,這些選項是該元件特有的。
選項可以透過在 FFmpeg 工具中指定 -option value 來設定,或者透過在裝置 AVFormatContext
選項中明確設定值,或使用 libavutil/opt.h API 進行程式化使用。
18 輸入裝置
輸入裝置是 FFmpeg 中配置的元件,可讓您存取來自連接到系統的多媒體裝置的資料。
當您配置 FFmpeg 建置時,所有支援的輸入裝置預設為啟用。您可以使用配置選項「–list-indevs」列出所有可用的輸入裝置。
您可以使用配置選項「–disable-indevs」停用所有輸入裝置,並使用選項「–enable-indev=INDEV」選擇性地啟用輸入裝置,或者您可以使用選項「–disable-indev=INDEV」停用特定的輸入裝置。
ff* 工具的「-devices」選項將顯示支援的輸入裝置列表。
以下是有關目前可用輸入裝置的描述。
18.1 alsa
ALSA (Advanced Linux Sound Architecture) 輸入裝置。
若要在配置期間啟用此輸入裝置,您需要在系統上安裝 libasound。
此裝置允許從 ALSA 裝置擷取。要擷取的裝置名稱必須是 ALSA 卡識別碼。
ALSA 識別碼具有以下語法
hw:CARD[,DEV[,SUBDEV]]
其中 DEV 和 SUBDEV 元件是選用的。
這三個引數(依序為:CARD、DEV、SUBDEV)指定卡號或識別碼、裝置號碼和子裝置號碼(-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
設定取樣率,單位為 Hz。預設值為 48000。
- channels
設定聲道數量。預設值為 2。
18.2 android_camera
Android 相機輸入裝置。
此輸入裝置使用 Android Camera2 NDK API,該 API 在 API level 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 上,您需要透過 widl
執行 IDL 檔案。
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
如果設定為非零值,則會從垂直輔助資料中擷取額外的圖文電視串流。支援 SD PAL (576i) 和 HD (1080i 或 1080p) 來源。對於 HD 來源,會解碼 OP47 封包。
此選項是擷取的 SD PAL VBI 行的位元遮罩,特別是行 6 到 22 以及行 318 到 335。行 6 是遮罩中的 LSB。選定的不包含圖文電視資訊的行將被忽略。您可以使用特殊的 all 常數來選擇所有可能的行,或使用 standard 來跳過與所有接收器不相容的行 6、318 和 319。
對於 SD 來源,ffmpeg 需要使用
--enable-libzvbi
編譯。對於 HD 來源,在較舊(4K 前)的 DeckLink 卡型號上,您必須以 10 位元模式擷取。- channels
定義要擷取的音訊聲道數。必須為 ‘2’、‘8’ 或 ‘16’。預設值為 ‘2’。
- duplex_mode
設定 decklink 裝置雙工/設定檔模式。必須為 ‘unset’、‘half’、‘full’、‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half’ 預設值為 ‘unset’。
注意:DeckLink SDK 11.0 已將雙工屬性替換為設定檔屬性。對於 DeckLink Duo 2 和 DeckLink Quad 2,設定檔在任何 2 個使用相同連接器的子裝置之間共用。對於 DeckLink 8K Pro,設定檔在所有 4 個子裝置之間共用。因此 DeckLink 8K Pro 支援四個設定檔。
DeckLink 8K Pro 的有效設定檔模式(使用 DeckLink SDK >= 11.0):‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half’
DeckLink Quad 2 和 DeckLink Duo 2 的有效設定檔模式:‘half’、‘full’
- timecode_format
要包含在幀和視訊串流中繼資料中的時間碼類型。必須為 ‘none’、‘rp188vitc’、‘rp188vitc2’、‘rp188ltc’、‘rp188hfr’、‘rp188any’、‘vitc’、‘vitc2’ 或 ‘serial’。預設值為 ‘none’(不包含)。
為了正確支援 50/60 fps 時間碼,對於 >30 fps 內容,‘rp188any’ 查詢的時間碼類型順序為 HFR、VITC1、VITC2 和 LTC。請注意,這與 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 個不同硬體裝置之間保持輸入同步非常有用。在使用此選項之前,不同硬體裝置的系統時間應使用 NTP 或 PTP 等協定進行同步。請注意,此方法並非萬無一失。在某些邊緣情況下,由於作業系統中的執行緒排程抖動,可能不會發生輸入同步。同步可能會錯過 1 個幀,或者在較罕見的情況下錯過 timestamp_align 秒。預設值為 ‘0’。
- wait_for_tc (bool)
丟棄幀,直到收到帶有時間碼的幀。有時,序列時間碼不會與第一個輸入幀一起收到。如果發生這種情況,則儲存的串流時間碼將不準確。如果此選項設定為 true,則會丟棄輸入幀,直到收到帶有時間碼的幀。timecode_format 選項必須指定。預設值為 false。
- enable_klv(bool)
如果設定為 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 支援會被啟用。目前僅支援音訊和視訊裝置。
多個裝置可以作為個別的輸入開啟,但它們也可以在同一個輸入上開啟,這應該可以改善它們之間的同步性。
輸入名稱應為以下格式
TYPE=NAME[:TYPE=NAME]
其中 TYPE 可以是 audio 或 video,而 NAME 是裝置的名稱或別名。
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 裝置的視訊輸入針腳編號。這將被路由到 crossbar 裝置的視訊解碼器輸出針腳。請注意,更改此值可能會影響未來的調用(設定新的預設值),直到系統重新啟動。
- crossbar_audio_input_pin_number
選擇 crossbar 裝置的音訊輸入針腳編號。這將被路由到 crossbar 裝置的音訊解碼器輸出針腳。請注意,更改此值可能會影響未來的調用(設定新的預設值),直到系統重新啟動。
- show_video_device_dialog
若設定為 true,則在開始擷取之前,彈出一個顯示對話框給終端使用者,允許他們手動更改視訊濾鏡屬性和配置。請注意,對於 crossbar 裝置,有時可能需要調整此對話框中的值,以在 PAL (25 fps) 和 NTSC (29.97) 輸入幀率、尺寸、交錯掃描等之間切換。更改這些值可以啟用不同的掃描率/幀率,並避免底部的綠條、閃爍的掃描線等。請注意,對於某些裝置,更改這些屬性也可能會影響未來的調用(設定新的預設值),直到系統重新啟動。
- show_audio_device_dialog
若設定為 true,則在開始擷取之前,彈出一個顯示對話框給終端使用者,允許他們手動更改音訊濾鏡屬性和配置。
- show_video_crossbar_connection_dialog
若設定為 true,則在開始擷取之前,當開啟視訊裝置時,彈出一個顯示對話框給終端使用者,允許他們手動修改 crossbar 針腳路由。
- show_audio_crossbar_connection_dialog
若設定為 true,則在開始擷取之前,當開啟音訊裝置時,彈出一個顯示對話框給終端使用者,允許他們手動修改 crossbar 針腳路由。
- 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
- 開啟視訊裝置 Camera
$ ffmpeg -f dshow -i video="Camera"
- 開啟第二個名稱為 Camera 的視訊裝置
$ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
- 開啟視訊裝置 Camera 和音訊裝置 Microphone
$ 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"
- 配置 crossbar 裝置,指定 crossbar 針腳,允許使用者在啟動時調整視訊擷取屬性
$ 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 framebuffer 輸入裝置。
Linux 幀緩衝區是一個圖形硬體獨立的抽象層,用於在電腦螢幕上顯示圖形,通常在控制台上。它通過檔案裝置節點存取,通常是 /dev/fb0。
如需更詳細的資訊,請閱讀 Linux 原始碼樹中包含的 Documentation/fb/framebuffer.txt 檔案。
另請參閱 http://linux-fbdev.sourceforge.net/ 和 fbset(1)。
要使用 ffmpeg
從幀緩衝區裝置 /dev/fb0 錄製
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=window_title
或
hwnd=window_hwnd
第一個選項將擷取整個桌面,或桌面的固定區域。第二個和第三個選項將改為擷取單個視窗的內容,而不管其在螢幕上的位置。
例如,要使用 ffmpeg
抓取整個桌面
ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg
在位置 10,20
抓取 640x480 區域
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
在螢幕上顯示抓取的區域。
如果 show_region 設定為
1
,則抓取區域將在螢幕上指示。使用此選項,如果僅抓取螢幕的一部分,則很容易知道正在抓取什麼。請注意,show_region 與抓取單個視窗的內容不相容。
例如
ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
- video_size
設定視訊幀大小。如果選擇 desktop,則預設為擷取全螢幕;如果選擇 title=window_title,則預設為擷取完整視窗大小。
- offset_x
當使用 video_size 擷取區域時,設定從螢幕或桌面左邊緣的距離。
請注意,偏移量計算是從 Windows 上主螢幕的左上角開始的。如果您的螢幕位於主螢幕的左側,則需要使用負 offset_x 值將區域移動到該螢幕。
- offset_y
當使用 video_size 擷取區域時,設定從螢幕或桌面頂部邊緣的距離。
請注意,偏移量計算是從 Windows 上主螢幕的左上角開始的。如果您的螢幕位於主螢幕的上方,則需要使用負 offset_y 值將區域移動到該螢幕。
18.9 iec61883
使用 libiec61883 的 FireWire DV/HDV 輸入裝置。
要啟用此輸入裝置,您需要在系統上安裝 libiec61883、libraw1394 和 libavc1394。使用 configure 選項 --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 可寫入的客戶端,每個音訊聲道一個,名稱為 client_name:input_N,其中 client_name 是應用程式提供的名稱,而 N 是一個識別聲道的數字。每個可寫入的客戶端都會將獲取的資料傳送到 FFmpeg 輸入裝置。
一旦您建立了一個或多個 JACK 可讀取的客戶端,您需要將它們連接到一個或多個 JACK 可寫入的客戶端。
要連接或斷開 JACK 客戶端,您可以使用 jack_connect
和 jack_disconnect
程式,或通過圖形介面進行操作,例如使用 qjackctl
。
要列出 JACK 客戶端及其屬性,您可以調用命令 jack_lsp
。
以下範例展示如何使用 ffmpeg
擷取 JACK 可讀取的客戶端。
# Create a JACK writable client with name "ffmpeg". $ ffmpeg -f jack -i ffmpeg -y out.wav # Start the sample jack_metro readable client. $ jack_metro -b 120 -d 0.2 -f 4000 # List the current JACK clients. $ jack_lsp -c system:capture_1 system:capture_2 system:playback_1 system:playback_2 ffmpeg:input_1 metro:120_bpm # Connect metro to the ffmpeg writable client. $ jack_connect metro:120_bpm ffmpeg:input_1
如需更多資訊,請閱讀:http://jackaudio.org/
18.10.1 選項
- channels
設定聲道數量。預設值為 2。
18.11 kmsgrab
KMS 視訊輸入裝置。
擷取與指定 CRTC 或平面相關聯的 KMS 掃描輸出幀緩衝區,作為可傳遞給其他硬體功能的 DRM 物件。
需要 DRM master 或 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 開始的數字,對應於裝置產生的映射輸入流。第一個未標記的輸出會自動分配給 "out0" 標籤,但所有其他輸出都需要明確指定。
後綴 "+subcc" 可以附加到輸出標籤,以建立一個額外的流,其中封閉字幕封包附加到該輸出(實驗性;目前僅適用於 EIA-608 / CEA-708)。subcc 流在所有正常流之後創建,順序與對應的流相同。例如,如果有 "out19+subcc"、"out7+subcc" 以及最多 "out42",則流 #43 是流 #7 的 subcc,而流 #44 是流 #19 的 subcc。
如果未指定,則預設為輸入裝置指定的檔案名稱。
- graph_file
設定要讀取並傳送到其他濾鏡的濾鏡圖檔案名稱。濾鏡圖的語法與選項 graph 指定的語法相同。
- 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
。
此裝置允許播放和抓取音訊 CD。
例如,若要使用 ffmpeg
複製 /dev/sr0 中的整個音訊 CD,您可以執行以下命令
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’。
有關可用復原模式的更多資訊,請參閱 paranoia 專案文件。
18.14 libdc1394
IIDC1394 輸入裝置,基於 libdc1394 和 libraw1394。
需要組態選項 --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
組態 FFmpeg。
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 的一部分,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。
例如,若要使用 ffmpeg
從 /dev/dsp 抓取,請使用以下命令
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 輸入裝置。
若要啟用此輸出裝置,您需要使用 --enable-libpulse
組態 FFmpeg。
提供給輸入裝置的檔案名稱是來源裝置或字串 "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。
例如,若要使用 ffmpeg
從 /dev/audio0 抓取,請使用以下命令
ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
18.18.1 選項
- sample_rate
設定取樣率,單位為 Hz。預設值為 48000。
- channels
設定聲道數量。預設值為 2。
18.19 video4linux2, v4l2
Video4Linux2 輸入視訊裝置。
"v4l2" 可以用作 "video4linux2" 的別名。
如果 FFmpeg 是使用 v4l-utils 支援建置的 (透過使用 --enable-libv4l2
組態選項),則可以將其與 -use_libv4l2
輸入裝置選項一起使用。
要抓取的裝置名稱是一個檔案裝置節點,通常 Linux 系統在裝置 (例如 USB 網路攝影機) 插入系統時會自動建立此類節點,並且具有 /dev/videoN 類型的名稱,其中 N 是與裝置關聯的數字。
Video4Linux2 裝置通常支援一組有限的 widthxheight 大小和影格速率。您可以使用 -list_formats all
檢查 Video4Linux2 裝置支援哪些格式。某些裝置 (例如電視卡) 支援一個或多個標準。可以使用 -list_standards all
列出所有支援的標準。
時間戳記的時間基底為 1 微秒。根據核心版本和組態,時間戳記可能衍生自即時時鐘 (Unix Epoch 的原點) 或單調時鐘 (原點通常在啟動時間,不受 NTP 或手動時鐘變更的影響)。-timestamps abs 或 -ts abs 選項可用於強制轉換為即時時鐘。
以下是一些搭配 ffmpeg
和 ffplay
使用 video4linux2 裝置的範例
- 列出 video4linux2 裝置支援的格式
ffplay -f video4linux2 -list_formats all /dev/video0
- 抓取並顯示 video4linux2 裝置的輸入
ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
- 抓取並錄製 video4linux2 裝置的輸入,保留先前設定的影格速率和大小
ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
有關 Video4Linux 的更多資訊,請查看 http://linuxtv.org/。
18.19.1 選項
- standard
設定標準。必須是支援標準的名稱。若要取得支援標準的列表,請使用 list_standards 選項。
- channel
設定輸入聲道號碼。預設為 -1,表示使用先前選取的聲道。
- video_size
設定視訊影格大小。引數必須是 WIDTHxHEIGHT 形式的字串或有效的尺寸縮寫。
- 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 (Video for Windows) 擷取輸入裝置。
作為輸入傳遞的檔案名稱是擷取驅動程式編號,範圍從 0 到 9。您可以使用 "list" 作為檔案名稱來列印驅動程式列表。任何其他檔案名稱都將被解釋為裝置編號 0。
18.20.1 選項
- video_size
設定視訊幀大小。
- framerate
設定抓取幀率。預設值為
ntsc
,對應於30000/1001
的幀率。
18.21 x11grab
X11 視訊輸入裝置。
若要在組態設定期間啟用此輸入裝置,您的系統上需要安裝 libxcb。它將在組態設定期間自動偵測到。
此裝置允許擷取 X11 顯示器的區域。
作為輸入傳遞的檔案名稱具有以下語法
[hostname]:display_number.screen_number[+x_offset,y_offset]
hostname:display_number.screen_number 指定要從中抓取的螢幕的 X11 顯示器名稱。hostname 可以省略,預設為 "localhost"。環境變數 DISPLAY
包含預設顯示器名稱。
x_offset 和 y_offset 指定抓取區域相對於 X11 螢幕左上邊界的偏移量。它們預設為 0。
有關更詳細的資訊,請查看 X11 文件 (例如 man X
)。
使用 xdpyinfo
程式來取得有關您的 X11 顯示器屬性的基本資訊 (例如 grep "name" 或 "dimensions")。
例如,若要使用 ffmpeg
從 :0.0 抓取
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
會提示使用者透過點擊和拖曳以圖形方式選取抓取區域。單擊但不拖曳將選取整個螢幕。寬度或高度為零的區域也將選取整個螢幕。此選項會覆寫 video_size、grab_x 和 grab_y 選項。預設值為0
。- draw_mouse
指定是否繪製滑鼠指標。值為
0
指定不繪製指標。預設值為1
。- follow_mouse
使抓取區域跟隨滑鼠。引數可以是
centered
或像素數 PIXELS。當指定為 "centered" 時,抓取區域會跟隨滑鼠指標,並將指標保持在區域中心;否則,僅當滑鼠指標到達區域邊緣的 PIXELS (大於零) 範圍內時,區域才會跟隨。
例如
ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
僅當滑鼠指標到達邊緣 100 像素範圍內時才跟隨
ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
- framerate
設定抓取幀率。預設值為
ntsc
,對應於30000/1001
的幀率。- show_region
在螢幕上顯示抓取的區域。
如果 show_region 設定為
1
,則抓取區域將在螢幕上指示。使用此選項,如果僅抓取螢幕的一部分,則很容易知道正在抓取什麼。- region_border
如果使用 -show_region 1,則設定區域邊框粗細。範圍為 1 到 128,預設值為 3 (僅限於基於 XCB 的 x11grab)。
例如
ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
使用 follow_mouse
ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
- window_id
抓取此視窗,而不是整個螢幕。預設值為 0,這對應於整個螢幕 (根視窗)。
可以使用
xwininfo
程式找到視窗的 ID,可能帶有選項 -tree 和 -root。如果稍後放大視窗,則不會錄製新區域。當視窗關閉、取消映射 (即圖示化) 或縮小到超出視訊大小 (預設為初始視窗大小) 時,視訊結束。
此選項會停用選項 follow_mouse 和 select_region。
- video_size
設定視訊影格大小。預設值為完整桌面或視窗。
- grab_x
- grab_y
設定抓取區域座標。它們表示為從 X11 視窗左上角開始的偏移量,並對應於裝置名稱中的 x_offset 和 y_offset 參數。這兩個選項的預設值均為 0。
19 重新取樣器選項
音訊重新取樣器支援以下具名選項。
選項可以透過在 FFmpeg 工具中指定 -option value、aresample 濾波器的 option=value、在 SwrContext
選項中明確設定值,或使用 libavutil/opt.h API 以程式設計方式使用來設定。
- 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’
選擇 modified-e-weighted 雜訊塑形遞色
- ‘improved_e_weighted’
選擇 improved-e-weighted 雜訊塑形遞色
- resampler
設定重新取樣引擎。預設值為 swr。
支援的值
- ‘swr’
選擇原生 SW 重新取樣器;在此情況下,濾波器選項 precision 和 cheby 不適用。
- ‘soxr’
選擇 SoX 重新取樣器(如果可用);在此情況下,補償和濾波器選項 filter_size、phase_shift、exact_rational、filter_type 和 kaiser_beta 不適用。
- filter_size
僅適用於 swr,設定重新取樣濾波器大小,預設值為 32。
- phase_shift
僅適用於 swr,設定重新取樣相位偏移,預設值為 10,且必須在 [0,30] 區間內。
- linear_interp
啟用時使用線性內插(預設)。如果當 exact_rational 失敗時您想要保留速度而非品質,請停用它。
- exact_rational
僅適用於 swr,啟用時,嘗試使用基於輸入和輸出取樣率的精確 phase_count。但是,如果它大於
1 << phase_shift
,phase_count 將會回退為1 << phase_shift
。預設為啟用。- cutoff
設定截止頻率(swr:-6dB 點;soxr:0dB 點)比率;必須是介於 0 和 1 之間的浮點數值。使用 swr 時預設值為 0.97,使用 soxr 時預設值為 0.91(在 44100 的取樣率下,這保留了整個音訊頻帶至 20kHz)。
- precision
僅適用於 soxr,重新取樣訊號將被計算到的位元精度。預設值 20(透過適當的遞色,適用於 16 的目標位元深度)提供 SoX 的「高品質」;值 28 提供 SoX 的「非常高品質」。
- cheby
僅適用於 soxr,選擇通帶滾降 none (Chebyshev) 和用於「非有理」比率的更高精度近似值。預設值為 0。
- async
僅適用於 swr,使用拉伸、擠壓、填充和修剪的簡單 1 參數音訊同步到時間戳記。將此設定為 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 視窗化 sinc
- ‘kaiser’
選擇 Kaiser 視窗化 sinc
- kaiser_beta
僅適用於 swr,設定 Kaiser 視窗 beta 值。必須是 [2,16] 區間內的雙精度浮點數值,預設值為 9。
- output_sample_bits
僅適用於 swr,設定用於遞色的已使用輸出樣本位元數。必須是 [0,64] 區間內的整數,預設值為 0,表示未使用。
20 縮放器選項
視訊縮放器支援以下具名選項。
選項可以透過在 FFmpeg 工具中指定 -option value 來設定,少數僅限 API 的例外情況如下所述。對於程式化使用,它們可以在 SwsContext
選項中或透過 libavutil/opt.h API 顯式設定。
- sws_flags
設定縮放器旗標。這也用於設定縮放演算法。只能選擇單一演算法。預設值為 ‘bicubic’。
它接受以下值
- ‘fast_bilinear’
選擇快速雙線性縮放演算法。
- ‘bilinear’
選擇雙線性縮放演算法。
- ‘bicubic’
選擇雙立方縮放演算法。
- ‘experimental’
選擇實驗性縮放演算法。
- ‘neighbor’
選擇最近鄰重新縮放演算法。
- ‘area’
選擇平均區域重新縮放演算法。
- ‘bicublin’
選擇用於亮度分量的雙立方縮放演算法,用於色度分量的雙線性演算法。
- ‘gauss’
選擇高斯重新縮放演算法。
- ‘sinc’
選擇 sinc 重新縮放演算法。
- ‘lanczos’
選擇 Lanczos 重新縮放演算法。預設寬度 (alpha) 為 3,可以透過設定
param0
來變更。- ‘spline’
選擇自然雙立方 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’
bayer 遞色
- ‘ed’
錯誤擴散遞色
- ‘a_dither’
算術遞色,基於加法
- ‘x_dither’
算術遞色,基於 xor(比 a_dither 更隨機/更不明顯的圖案)。
- alphablend
設定當輸入具有 alpha 但輸出沒有時要使用的 alpha 混合。預設值為 ‘none’。
- ‘uniform_color’
混合到均勻背景顏色上
- ‘checkerboard’
混合到西洋棋盤上
- ‘none’
無混合
21 濾鏡簡介
FFmpeg 中的濾波透過 libavfilter 函式庫啟用。
在 libavfilter 中,濾波器可以有多個輸入和多個輸出。為了說明可能實現的各種功能,我們考慮以下濾波器圖。
[main] input --> split ---------------------> overlay --> output | ^ |[tmp] [flip]| +-----> crop --> vflip -------+
此濾波器圖將輸入串流分割為兩個串流,然後將一個串流透過 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 tools 目錄中包含的 graph2dot 程式可用於解析濾波器圖描述,並以 dot 語言發出對應的文字表示形式。
調用命令
graph2dot -h
以查看如何使用 graph2dot。
然後,您可以將 dot 描述傳遞給 dot 程式(來自 graphviz 程式套件),並獲得濾波器圖的圖形表示形式。
例如,命令序列
echo GRAPH_DESCRIPTION | \ tools/graph2dot -o graph.tmp && \ dot -Tpng graph.tmp -o graph.png && \ display graph.png
可用於建立和顯示表示由 GRAPH_DESCRIPTION 字串描述的圖形的影像。請注意,此字串必須是完整的自包含圖形,其輸入和輸出已明確定義。例如,如果您的命令列格式如下
ffmpeg -i infile -vf scale=640:360 outfile
您的 GRAPH_DESCRIPTION 字串將需要採用以下格式
nullsrc,scale=640:360,nullsink
您可能還需要設定 nullsrc 參數並新增 format 濾波器,以便模擬特定的輸入檔案。
23 濾鏡圖描述
濾波器圖是連接濾波器的有向圖。它可以包含循環,並且濾波器對之間可以有多個連結。每個連結在一側都有一個輸入墊,將其連接到一個濾波器,它從該濾波器獲取其輸入,而在另一側有一個輸出墊,將其連接到一個接受其輸出的濾波器。
濾波器圖中的每個濾波器都是應用程式中註冊的濾波器類別的實例,該類別定義了濾波器的功能以及輸入和輸出墊的數量。
沒有輸入墊的濾波器稱為「來源」,沒有輸出墊的濾波器稱為「接收器」。
23.1 濾鏡圖語法
濾波器圖具有文字表示形式,可由 ffmpeg
中的 -filter/-vf/-af 和 -filter_complex 選項以及 ffplay
中的 -vf/-af 選項以及 libavfilter/avfilter.h 中定義的 avfilter_graph_parse_ptr()
函式識別。
濾波器鏈由一系列連接的濾波器組成,每個濾波器都連接到序列中的前一個濾波器。濾波器鏈由以「,」分隔的濾波器描述列表表示。
濾波器圖由一系列濾波器鏈組成。一系列濾波器鏈由以「;」分隔的濾波器鏈描述列表表示。
濾波器由以下形式的字串表示:[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
濾波器採用像素格式列表),則列表中的項目通常以 ‘|’ 分隔。
可以使用字元 ‘'’ 作為起始和結束標記來引用參數列表,並使用字元 ‘\’ 來轉義引號文字中的字元;否則,當遇到下一個特殊字元(屬於集合 ‘[]=;,’)時,參數字串將被視為終止。
ffmpeg
CLI 工具中實作了一種特殊的語法,允許從檔案載入選項值。這是透過在選項名稱前面加上斜線 '/' 來完成的,然後提供的數值會被解釋為從中載入實際值的路徑。例如:
ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>
會從 /tmp/some_text 載入要繪製的文字。希望實作類似功能的 API 使用者應將 avfilter_graph_segment_*()
函數與自訂 IO 程式碼一起使用。
濾鏡的名稱和引數可以選擇性地在前面和後面加上連結標籤列表。連結標籤允許使用者命名連結,並將其與濾鏡輸出或輸入埠關聯。前面的標籤 in_link_1 ... in_link_N 與濾鏡輸入埠相關聯,後面的標籤 out_link_1 ... out_link_M 與輸出埠相關聯。
當在濾鏡圖中找到兩個名稱相同的連結標籤時,將會在對應的輸入和輸出埠之間建立連結。
如果輸出埠沒有標籤,則預設會連結到濾鏡鏈中下一個濾鏡的第一個未標籤的輸入埠。例如,在濾鏡鏈中
nullsrc, split[L1], [L2]overlay, nullsink
split 濾鏡實例有兩個輸出埠,而 overlay 濾鏡實例有兩個輸入埠。split 的第一個輸出埠標記為 "L1",overlay 的第一個輸入埠標記為 "L2",而 split 的第二個輸出埠連結到 overlay 的第二個輸入埠,兩者都未標籤。
在濾鏡描述中,如果第一個濾鏡的輸入標籤未指定,則假定為 "in";如果最後一個濾鏡的輸出標籤未指定,則假定為 "out"。
在完整的濾鏡鏈中,所有未標籤的濾鏡輸入和輸出埠都必須連接。如果所有濾鏡鏈的所有濾鏡輸入和輸出埠都已連接,則濾鏡圖被視為有效。
濾鏡圖規格中分隔符號(空格、tab 鍵或換行符號)的前導和尾隨空白會被忽略。這表示可以使用空行和空格來表達濾鏡圖,以提高可讀性。
例如,濾鏡圖
testsrc,split[L1],hflip[L2];[L1][L2] hstack
可以表示為
testsrc, split [L1], hflip [L2]; [L1][L2] hstack
Libavfilter 會在需要格式轉換的地方自動插入 scale 濾鏡。可以透過在濾鏡圖描述前面加上 sws_flags=flags;
來為那些自動插入的縮放器指定 swscale 旗標。
以下是濾鏡圖語法的 BNF 描述
NAME ::= sequence of alphanumeric characters and '_' FILTER_NAME ::= NAME["@"NAME] LINKLABEL ::= "[" NAME "]" LINKLABELS ::= LINKLABEL [LINKLABELS] FILTER_ARGUMENTS ::= sequence of chars (possibly quoted) FILTER ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS] FILTERCHAIN ::= FILTER [,FILTERCHAIN] FILTERGRAPH ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]
23.2 關於濾鏡圖跳脫字元的注意事項
濾鏡圖描述的組成需要多個層級的跳脫字元。有關所採用的跳脫字元程序的更多資訊,請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「引號和跳脫字元」章節。
第一層跳脫字元會影響每個濾鏡選項值的內容,其中可能包含特殊字元 :
(用於分隔值)或跳脫字元 \'
之一。
第二層跳脫字元會影響整個濾鏡描述,其中可能包含跳脫字元 \'
或濾鏡圖描述使用的特殊字元 [],;
。
最後,當您在 shell 命令列上指定濾鏡圖時,您需要對其中包含的 shell 特殊字元執行第三層跳脫字元。
例如,考慮要嵌入 drawtext 濾鏡描述 text 值中的以下字串
this is a 'string': may contain one, or more, special characters
此字串包含 '
特殊跳脫字元和 :
特殊字元,因此需要以這種方式跳脫字元
text=this is a \'string\'\: may contain one, or more, special characters
當將濾鏡描述嵌入濾鏡圖描述中時,需要第二層跳脫字元,以便跳脫所有濾鏡圖特殊字元。因此,上面的範例變為
drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
(請注意,除了 \'
跳脫字元之外,也需要跳脫 ,
)。
最後,當在 shell 命令中編寫濾鏡圖描述時,需要額外一層跳脫字元,這取決於所採用 shell 的跳脫字元規則。例如,假設 \
是特殊的,需要用另一個 \
進行跳脫字元,則先前的字串最終將導致
-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
為了避免在使用接受濾鏡規格作為輸入的命令列工具時出現繁瑣的跳脫字元,建議避免直接在 shell 中包含濾鏡或選項規格。
例如,在 drawtext 濾鏡 的情況下,您可能更喜歡使用 textfile 選項而不是 text 來指定要呈現的文字。
24 時間軸編輯
某些濾鏡支援通用的 enable 選項。對於支援時間軸編輯的濾鏡,此選項可以設定為在將影格傳送到濾鏡之前評估的表達式。如果評估為非零值,則會啟用濾鏡,否則影格將保持不變地傳送到濾鏡圖中的下一個濾鏡。
該表達式接受以下值
- ‘t’
以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN
- ‘n’
輸入影格的序號,從 0 開始
- ‘pos’
輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用
- ‘w’
- ‘h’
如果是視訊,則為輸入影格的寬度和高度
此外,這些濾鏡支援 enable 命令,可用於重新定義表達式。
與任何其他濾鏡選項一樣,enable 選項遵循相同的規則。
例如,從 10 秒到 3 分鐘啟用模糊濾鏡 (smartblur),以及從 3 秒開始啟用 curves 濾鏡
smartblur = enable='between(t,10,3*60)', curves = enable='gte(t,3)' : preset=cross_process
請參閱 ffmpeg -filters
以檢視哪些濾鏡具有時間軸支援。
25 在執行時透過命令變更選項
某些選項可以在濾鏡運作期間使用命令變更。這些選項在 ffmpeg
-h 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 並將 makeup 提高到此位準會產生比來源響度高兩倍的訊號。為了在壓縮中獲得更柔和的進入,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 dB。
- ‘4th’
每八度音程 24 dB。
- ‘6th’
每八度音程 36 dB。
- ‘8th’
每八度音程 48 dB。
- ‘10th’
每八度音程 60 dB。
- ‘12th’
每八度音程 72 dB。
- ‘14th’
每八度音程 84 dB。
- ‘16th’
每八度音程 96 dB。
- ‘18th’
每八度音程 108 dB。
- ‘20th’
每八度音程 120 dB。
預設值為 4th。
- level
設定輸入增益位準。允許範圍從 0 到 1。預設值為 1。
- gains
設定每個頻帶的輸出增益。所有頻帶的預設值為 1。
- precision
設定處理樣本時要使用的精度。
- auto
根據其他濾鏡自動選擇內部樣本格式。
- float
始終使用單精度浮點樣本格式。
- double
始終使用雙精度浮點樣本格式。
預設值為
auto
。
27.6.1 範例
- 將輸入音訊串流分割成兩個頻帶(低頻和高頻),分割頻率為 1500 Hz,每個頻帶將在單獨的串流中
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- 與上述相同,但濾鏡階數更高
ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
- 與上述相同,但也有額外的中頻帶(頻率介於 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
降低音訊位元解析度。
此濾波器是具有增強功能的位元破壞器。位元破壞器用於聽覺上減少音訊訊號的取樣位元數。這完全不會改變位元深度,它只是產生效果。位元深度降低的素材聽起來更刺耳和「數位」。此濾波器甚至能夠捨入為連續值,而不是離散位元深度。此外,它還具有 D/C 偏移,這會導致訊號的下半部分和上半部分產生不同的破壞效果。抗鋸齒設定能夠產生「較柔和」的破壞聲音。
此濾波器的另一個功能是對數模式。此設定從位元之間的線性距離切換為對數距離。結果是聲音更「自然」的破壞器,例如,不會閘控低訊號。人耳具有對數感知,因此這種破壞方式更令人愉悅。對數破壞也能够進行抗鋸齒處理。
此濾鏡接受以下選項
- level_in
設定輸入電平。
- level_out
設定輸出電平。
- bits
設定位元縮減。
- mix
設定混合量。
- mode
可以是線性的:
lin
或對數的:log
。- dc
設定直流偏移 (DC)。
- aa
設定抗鋸齒 (anti-aliasing)。
- 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
通過添加極低電平的雜訊來補救音訊中的次常態數 (denormals)。
此濾波器應放置在任何可能產生次常態數的濾波器之前。
以下是接受參數的說明。
- level
設定添加雜訊的電平,以 dB 為單位。預設值為
-351
。允許範圍為 -451 到 -90。- type
設定添加雜訊的類型。
- dc
添加直流 (DC) 訊號。
- ac
添加交流 (AC) 訊號。
- square
添加方波訊號。
- pulse
添加脈衝訊號。
預設值為
dc
。
27.13.1 命令
此濾鏡支援所有上述選項作為 命令。
27.14 aderivative, aintegral
計算音訊流的導數/積分。
連續應用這兩個濾波器會產生原始音訊。
27.15 adrc
將頻譜動態範圍控制器濾波器應用於輸入音訊流。
以下是可接受選項的描述。
- transfer
設定傳輸表達式。
表達式可以包含以下常數
- ch
目前通道號碼
- sn
目前樣本號碼
- nb_channels
通道數量
- t
以秒為單位表示的時間戳記
- sr
取樣率
- p
目前頻率功率值,以 dB 為單位
- f
目前頻率,以 Hz 為單位
預設值為
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
選擇 Columbia。
- 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
激勵器 (exciter) 用於產生原始訊號中不存在的高頻聲音。這是通過創建訊號的諧波失真來完成的,這些諧波失真在範圍內受到限制並添加到原始訊號中。激勵器提高了音訊訊號的上限,而不仅仅像等化器那樣簡單地提高高頻,從而創造更「清脆」或「明亮」的聲音。
此濾鏡接受以下選項
- 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。
- 曲線
設定淡入淡出轉換的曲線。
它接受以下值
- tri
選擇三角形、線性斜率(預設)
- qsin
選擇四分之一正弦波
- hsin
選擇半個正弦波
- esin
選擇指數正弦波
- log
選擇對數
- ipar
選擇反向拋物線
- qua
選擇二次方
- cub
選擇立方
- squ
選擇平方根
- cbr
選擇立方根
- par
選擇拋物線
- exp
選擇指數
- iqsin
選擇反向四分之一正弦波
- ihsin
選擇反向半個正弦波
- dese
選擇雙指數座
- desi
選擇雙指數 S 型曲線
- losi
選擇邏輯 S 型曲線
- sinc
選擇正弦基數函數
- isinc
選擇反向正弦基數函數
- quat
選擇四次方
- quatr
選擇四次方根
- qsin2
選擇平方四分之一正弦波
- hsin2
選擇平方半個正弦波
- nofade
不套用淡入淡出
- silence
設定淡入的初始增益或淡出的最終增益。預設值為
0.0
。- unity
設定淡出的初始增益或淡入的最終增益。預設值為
1.0
。
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
設定適應性因子,用於控制每個頻率倉位增益調整的適應速度。值 0 啟用即時適應,而較高的值反應較慢。允許範圍為 0 到 1。預設值為 0.5。
- floor_offset, fo
設定噪聲基底偏移因子。此選項用於調整套用於測量噪聲基底的偏移量。僅在啟用噪聲基底追蹤時有效。允許範圍為 -2.0 到 2.0。預設值為 1.0。
- noise_link, nl
設定用於多聲道音訊的噪聲連結。
它接受以下值
- none
使用未變更聲道的噪聲基底。
- min
使用所有聲道測量的最小噪聲基底。
- max
使用所有聲道測量的最大噪聲基底。
- average
使用所有聲道測量的平均噪聲基底。
預設值為 min。
- band_multiplier, bm
設定頻帶乘數因子,用於控制頻帶在頻率倉位之間擴散的程度。允許範圍為 0.2 到 5。預設值為 1.25。
- sample_noise, sn
切換從輸入音訊捕獲和測量噪聲輪廓。
它接受以下值
- start, begin
開始樣本噪聲捕獲。
- stop, end
停止樣本噪聲捕獲並測量新的噪聲頻帶輪廓。
預設值為
none
。
- gain_smooth, gs
設定增益平滑空間半徑,用於平滑應用於每個頻率倉位的增益。有助於減少隨機音樂噪聲偽影。值越高,增益平滑度越高。允許範圍為
0
到50
。預設值為0
。
27.23.1 命令
此濾波器支援上述某些選項作為 命令。
27.23.2 範例
- 降低白噪聲 10dB,並使用先前測量的 -40dB 噪聲基底
afftdn=nr=10:nf=-40
- 降低白噪聲 10dB,同時將初始噪聲基底設定為 -80dB,並啟用噪聲基底自動追蹤,以便噪聲基底在處理過程中逐漸變化
afftdn=nr=10:nf=-80:tn=1
- 降低噪聲 20dB,使用 -40dB 的噪聲基底,並使用命令獲取輸入音訊前 0.4 秒的噪聲輪廓
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
27.24 afftfilt
將任意表達式套用於頻域中的樣本。
- real
為每個單獨的聲道設定頻域實部表達式,以 '|' 分隔。預設值為 "re"。如果輸入聲道數大於表達式數,則最後指定的表達式將用於剩餘的輸出聲道。
- imag
為每個單獨的聲道設定頻域虛部表達式,以 '|' 分隔。預設值為 "im"。
real 和 imag 中的每個表達式都可以包含以下常數和函數
- sr
取樣率
- b
目前頻率倉位編號
- nb
可用倉位數
- ch
目前表達式的通道號碼
- chs
通道數量
- pts
目前影格 pts
- re
目前聲道的頻率倉位的目前實部
- im
目前聲道的頻率倉位的目前虛部
- real(b, ch)
傳回位置 (bin, channel) 處頻率倉位的實部值
- imag(b, ch)
傳回位置 (bin, channel) 處頻率倉位的虛部值
- win_size
設定視窗大小。允許範圍為 16 到 131072。預設值為
4096
- win_func
設定視窗函數。
它接受以下值
- ‘rect’
- ‘bartlett’
- ‘hann, hanning’
- ‘hamming’
- ‘blackman’
- ‘welch’
- ‘flattop’
- ‘bharris’
- ‘bnuttall’
- ‘bhann’
- ‘sine’
- ‘nuttall’
- ‘lanczos’
- ‘gauss’
- ‘tukey’
- ‘dolph’
- ‘cauchy’
- ‘parzen’
- ‘poisson’
- ‘bohman’
- ‘kaiser’
預設值為
hann
。- overlap
設定視窗重疊。如果設定為 1,將會選取建議用於所選視窗函數的重疊。預設值為
0.75
。
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 係數。如果非第一個串流包含單聲道,則它將用於第一個串流中的所有輸入聲道,否則非第一個串流中的聲道數必須與第一個串流中的聲道數相同。
它接受以下參數
- dry
設定乾聲增益。這會設定輸入增益。
- wet
設定濕聲增益。這會設定最終輸出增益。
- length
設定脈衝響應濾波器長度。預設值為 1,表示處理整個 IR。
- gtype
此選項已棄用,且不執行任何操作。
- irnorm
設定在濾波前套用於 IR 係數的範數。允許範圍為 -1 到 2。IR 係數會使用此選項設定的計算向量範數進行正規化。對於負值,不會計算範數,且 IR 係數完全不會修改。預設值為 1。
- irlink
對於多聲道 IR,如果此選項設定為 true,則所有 IR 聲道都將使用所有 IR 聲道係數的最大測量增益進行正規化,如
irnorm
選項所設定。停用時,每個 IR 聲道中的所有 IR 係數將獨立正規化。預設值為 true。- irgain
設定在濾波前套用於 IR 係數的增益。允許範圍為 0 到 1。此增益在以 irnorm 選項套用的任何增益之後套用。
- irfmt
設定 IR 串流的格式。可以是
mono
或input
。預設值為input
。- maxir
設定允許的最大脈衝響應濾波器持續時間,單位為秒。預設值為 30 秒。允許範圍為 0.1 到 60 秒。
- response
此選項已棄用,且不執行任何操作。
- channel
此選項已棄用,且不執行任何操作。
- size
此選項已棄用,且不執行任何操作。
- rate
此選項已棄用,且不執行任何操作。
- minp
設定用於迴旋積的最小分割大小。預設值為 8192。允許範圍為 1 到 65536。較低的值會降低延遲,但會增加 CPU 使用率。
- maxp
設定用於迴旋積的最大分割大小。預設值為 8192。允許範圍為 8 到 65536。較低的值可能會增加 CPU 使用率。
- nbirs
設定將在執行時可切換的輸入脈衝響應串流數量。允許範圍為 1 到 32。預設值為 1。
- ir
設定將用於迴旋積的 IR 串流,從 0 開始,應始終低於
nbirs
選項提供的 值。預設值為 0。此選項可以在執行時透過 命令 變更。- precision
設定處理樣本時要使用的精度。
- auto
根據其他濾鏡自動選擇內部樣本格式。
- float
始終使用單精度浮點樣本格式。
- double
始終使用雙精度浮點樣本格式。
預設值為 auto。
- 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
設定噪聲 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
閘道主要用於減少訊號的較低部分。這種訊號處理方式減少了有用訊號之間的干擾噪聲。
閘道處理是透過偵測低於選定位準 threshold 的音量,並將其除以 ratio 設定的因子來完成的。噪聲基底的底部透過 range 設定。由於對訊號的精確操作會導致波形失真,因此可以在一段時間內調整減少量。這透過設定 attack 和 release 來完成。
attack 決定訊號必須低於閾值多久才會發生任何減少,而 release 設定訊號必須高於閾值多久才能再次減少減少量。短於所選啟動時間的訊號將保持不變。
- 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 範例
- 套用一個 2 極點橢圓陷波器,頻率約為 5000Hz,取樣率為 48000 Hz
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 階類比正規化 Butterworth 低通濾波器,使用類比傳遞函數格式
aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
27.31 alimiter
限制器可防止輸入訊號超過所需的閾值。此限制器使用前瞻技術來防止訊號失真。這表示在訊號處理後會有一個小的延遲。請記住,它產生的延遲是您設定的 attack time(啟動時間)。
此濾鏡接受以下選項
- 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
補償使用 attack 參數設定的前瞻緩衝區所引入的延遲。同時在串流到達 EOF 時刷新前瞻緩衝區中的有效音訊資料。
根據選擇的設定,建議在使用此濾波器之前,使用 aresample 將輸入升採樣 2 倍或 4 倍。
27.32 allpass
套用一個雙極點全通濾波器,其中心頻率 (以 Hz 為單位) 為 frequency,濾波器寬度為 width。全通濾波器會更改音訊的頻率與相位關係,而不會更改其頻率與幅度關係。
此濾鏡接受以下選項
- frequency, f
設定頻率,單位為 Hz。
- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- 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
變更全通頻率。指令語法為:「frequency」
- width_type, t
變更全通 width_type。指令語法為:「width_type」
- width, w
變更全通 width。指令語法為:「width」
- mix, m
變更全通 mix。指令語法為:「mix」
27.33 aloop
循環播放音訊樣本。
此濾鏡接受以下選項
- loop
設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。
- size
設定最大樣本數。預設值為 0。
- start
設定循環的第一個樣本。預設值為 0。
- time
設定循環開始時間,單位為秒。僅當名為 start 的選項設定為
-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
- 假設 input.mkv 中有多個合併,包含 1 個視訊串流和 6 個音訊串流
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 個輸入音訊串流混合為單個輸出,其持續時間與第一個輸入相同,並且 dropout transition time(衰減過渡時間)為 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
-
此選項字串的格式為:「cchn f=cf w=w g=g t=f | ...」。每個等化器頻段以 ’|’ 分隔。
- chn
設定將套用等化的聲道號碼。如果輸入沒有該聲道,則忽略該條目。
- f
設定頻段的中心頻率。如果輸入沒有該頻率,則忽略該條目。
- w
設定頻寬,單位為赫茲。
- g
設定頻段增益,單位為 dB。
- t
設定頻段的濾波器類型,可選,可以是
- ‘0’
Butterworth,這是預設值。
- ‘1’
Chebyshev type 1(柴比雪夫第一型)。
- ‘2’
Chebyshev type 2(柴比雪夫第二型)。
- curves
啟用此選項後,將在視訊串流中顯示等化器的頻率響應。
- size
設定視訊串流大小。僅在啟用 curves 選項時有用。
- mgain
設定將顯示的最大增益。僅在啟用 curves 選項時有用。將此值設定為合理的值,可以顯示從相鄰頻段導出的增益,這些頻段彼此太靠近,因此在同時啟用時會產生更高的增益。
- fscale
設定用於在視訊輸出中繪製頻率響應的頻率比例。可以是線性或對數。預設值為對數。
- colors
設定將在視訊串流中顯示的每個聲道曲線的顏色。這是以空格或 ’|’ 分隔的顏色名稱列表。無法辨識或遺失的顏色將替換為白色。
27.37.1 範例
- 使用 Chebyshev type 1 濾波器,將前 2 個聲道的中心頻率 200Hz 和頻寬 100 Hz 的增益降低 10
anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
27.37.2 命令
此濾波器支援以下指令
- change
變更現有的濾波器參數。指令語法為:「fN|f=freq|w=width|g=gain」
fN 是現有的濾波器編號,從 0 開始,如果沒有此濾波器,則會傳回錯誤。freq 設定新的頻率參數。width 設定新的頻寬參數,單位為赫茲。gain 設定新的增益參數,單位為 dB。
使用 asendcmd 的完整濾波器調用可能如下所示:asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...
27.38 anlmdn
使用 Non-Local Means 演算法降低音訊樣本中的寬頻雜訊。
每個樣本都透過尋找其他具有相似上下文的樣本進行調整。此上下文相似性是透過比較其周圍大小為 p 的 patch(區塊)來定義的。在樣本周圍 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
使用第二個音訊串流,將 Normalized Least-Mean-(Squares|Fourth) 演算法套用於第一個音訊串流。
此自適應濾波器用於模擬所需的濾波器,方法是找到與產生誤差訊號 (所需訊號,第二個輸入音訊串流和實際訊號,第一個輸入音訊串流之間的差異) 的最小均方值相關的濾波器係數。
以下是可接受選項的描述。
- order
設定濾波器階數。
- mu
設定濾波器 mu。
- eps
設定濾波器 eps。
- leakage
設定濾波器 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 aphaser
將相位效果新增到輸入音訊。
相位器濾波器會在頻譜中產生一系列的波峰和波谷。波峰和波谷的位置會被調變,使其隨時間變化,產生掃頻效果。
以下是接受參數的說明。
- in_gain
設定輸入增益。預設值為 0.4。
- out_gain
設定輸出增益。預設值為 0.74
- 延遲
設定延遲時間,單位為毫秒。預設值為 3.0。
- 衰減
設定衰減量。預設值為 0.4。
- speed
設定調變速度,單位為赫茲 (Hz)。預設值為 0.5。
- type
設定調變類型。預設值為三角波。
它接受以下值
- ‘三角波, t’
- ‘正弦波, s’
27.43 aphaseshift
對輸入音訊樣本應用相位偏移。
此濾鏡接受以下選項
- shift
指定相位偏移量。允許範圍為 -1.0 到 1.0。預設值為 0.0。
- level
設定套用於最終輸出的輸出增益。允許範圍為 0.0 到 1.0。預設值為 1.0。
- order
設定用於濾波的濾波器階數。允許範圍為 1 到 16。預設值為 8。
27.43.1 命令
此濾鏡支援所有上述選項作為 命令。
27.44 apsnr
測量音訊峰值訊號雜訊比。
此濾波器接受兩個音訊流作為輸入,並輸出第一個音訊流。結果單位為 dB 每聲道,於任一輸入結束時計算。
27.45 apsyclip
對輸入音訊流應用心理聲學削波器。
此濾鏡接受以下選項
- level_in
設定輸入增益。預設值為 1。範圍為 [0.015625 - 64]。
- level_out
設定輸出增益。預設值為 1。範圍為 [0.015625 - 64]。
- 削波
設定削波開始值。預設值為 0dBFS 或 1。
- 差異
僅輸出差異樣本,可用於聽取引入的失真。預設為停用。
- adaptive
設定自適應失真強度。預設值為 0.5。允許範圍為 0 到 1。
- 迭代次數
設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。
- level
自動調整輸出訊號音量。預設為停用。啟用時,會將音訊正規化回 0dBFS。
27.45.1 命令
此濾鏡支援所有上述選項作為 命令。
27.46 apulsator
音訊脈衝器介於自動聲像器和顫音器之間。但它也可以產生有趣的立體聲效果。脈衝器根據 LFO(低頻振盪器)改變左右聲道的音量,LFO 具有不同的波形和偏移相位。此濾波器能夠定義左右聲道之間的偏移量。偏移量為 0 表示兩個 LFO 形狀相互匹配。左右聲道以相同方式改變 - 傳統的顫音效果。偏移量為 50% 表示右聲道的形狀在相位上完全偏移(或向後移動約半個頻率)- 脈衝器充當自動聲像器。在 1 時,兩個曲線再次匹配。介於兩者之間的每個設定都會在所有階段之間無間隙地移動相位偏移,並使用正弦波和三角波形產生一些「旁通」聲音。您將偏移量設定得越接近 1(從 0.5 開始),訊號從左揚聲器傳遞到右揚聲器的速度就越快。
此濾鏡接受以下選項
- level_in
設定輸入增益。預設值為 1。範圍為 [0.015625 - 64]。
- level_out
設定輸出增益。預設值為 1。範圍為 [0.015625 - 64]。
- mode
設定 LFO 將使用的波形形狀。可以是以下之一:正弦波、三角波、方波、鋸齒波向上或鋸齒波向下。預設值為正弦波。
- amount
設定調變量。定義原始訊號受 LFO 影響的程度。
- 左聲道偏移量
設定左聲道偏移量。預設值為 0。允許範圍為 [0 - 1]。
- 右聲道偏移量
設定右聲道偏移量。預設值為 0.5。允許範圍為 [0 - 1]。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
設定脈衝寬度。預設值為 1。允許範圍為 [0 - 2]。
- 定時
設定可能的定時模式。可以是以下之一:bpm、ms 或 hz。預設值為 hz。
- bpm
設定 bpm。預設值為 120。允許範圍為 [30 - 300]。僅在定時設定為 bpm 時使用。
- ms
設定 ms。預設值為 500。允許範圍為 [10 - 2000]。僅在定時設定為 ms 時使用。
- hz
設定頻率,單位為赫茲 (Hz)。預設值為 2。允許範圍為 [0.01 - 100]。僅在定時設定為 hz 時使用。
27.47 aresample
使用 libswresample 函式庫將輸入音訊重新取樣至指定的參數。如果未指定任何參數,則濾波器會自動在其輸入和輸出之間轉換。
此濾波器還可以拉伸/擠壓音訊資料以使其符合時間戳記,或注入靜音/剪切音訊以使其符合時間戳記,或執行兩者的組合,或都不執行。
濾波器接受語法 [取樣率:]重新取樣器選項,其中 取樣率 表示取樣率,而 重新取樣器選項 是 鍵=值 對的列表,以 ":" 分隔。有關支援選項的完整列表,請參閱 (ffmpeg-resampler) 手冊中的「重新取樣器選項」章節。
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
傳遞誤差訊號估計樣本。
預設值為 o。
- precision
設定處理樣本時要使用的精度。
- auto
根據其他濾鏡自動選擇內部樣本格式。
- float
始終使用單精度浮點樣本格式。
- double
始終使用雙精度浮點樣本格式。
27.50 arnndn
使用遞迴神經網路減少語音中的噪音。
此濾波器接受以下選項
- 模型, m
設定要載入的訓練模型檔案。此選項為必填項。
- mix
設定將濾波後的樣本混合到最終輸出的程度。允許範圍為 -1 到 1。預設值為 1。負值是特殊的,它們設定在最終濾波器輸出中保留多少濾波後的噪音。將此選項設定為 -1 可聽到從輸入訊號中實際移除的噪音。
27.50.1 命令
此濾鏡支援所有上述選項作為 命令。
27.51 asdr
測量音訊訊號失真比。
此濾波器接受兩個音訊流作為輸入,並輸出第一個音訊流。結果單位為 dB 每聲道,於任一輸入結束時計算。
27.52 asetnsamples
設定每個輸出音訊幀的樣本數。
最後一個輸出封包可能包含不同數量的樣本,因為當輸入音訊發出結束訊號時,濾波器將刷新所有剩餘的樣本。
此濾鏡接受以下選項
- nb_out_samples, n
設定每個輸出音訊幀的幀數。此數字是指每個聲道的樣本數。預設值為 1024。
- pad, p
如果設定為 1,濾波器將用零填充最後一個音訊幀,以便最後一個幀將包含與前一個幀相同數量的樣本。預設值為 1。
例如,若要將每幀樣本數設定為 1234 並停用最後一幀的填充,請使用
asetnsamples=n=1234:p=0
27.53 asetrate
設定取樣率,但不更改 PCM 資料。這將導致速度和音調的變化。
此濾鏡接受以下選項
- 取樣率, r
設定輸出取樣率。預設值為 44100 Hz。
27.54 ashowinfo
顯示包含每個輸入音訊幀各種資訊的行。輸入音訊不會被修改。
顯示的行包含 鍵:值 形式的鍵/值對序列。
輸出中顯示以下值
- n
輸入幀的(順序)編號,從 0 開始。
- pts
輸入幀的呈現時間戳記,以時間基底單位表示;時間基底取決於濾波器輸入填充,通常為 1/取樣率。
- pts_time
輸入幀的呈現時間戳記,單位為秒。
- fmt
樣本格式。
- 聲道佈局
聲道佈局。
- rate
音訊幀的取樣率。
- nb_samples
幀中的樣本數(每個聲道)。
- checksum
音訊資料的 Adler-32 檢查和(以十六進制印出)。對於平面音訊,資料被視為所有平面都已串連。
- plane_checksums
每個資料平面的 Adler-32 檢查和列表。
27.55 asisdr
測量音訊縮放不變訊號失真比。
此濾波器接受兩個音訊流作為輸入,並輸出第一個音訊流。結果單位為 dB 每聲道,於任一輸入結束時計算。
27.56 asoftclip
應用音訊柔削波。
柔削波是一種失真效果,其中訊號的振幅沿著平滑曲線飽和,而不是硬削波的突兀形狀。
此濾波器接受以下選項
- type
設定柔削波的類型。
它接受以下值
- 硬削波
- 雙曲正切
- 反正切
- 三次函數
- exp
- 演算法
- 五次函數
- 正弦波
- 誤差函數
- threshold
設定開始削波的閾值。預設值為 0dB 或 1。
- 輸出
設定應用於輸出的增益。預設值為 0dB 或 1。
- 參數
設定控制 S 型函數的附加參數。
- 過度取樣
設定過度取樣因子。
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
。- 測量
選擇要測量的參數。元資料鍵可以用作旗標,預設值為 全部,表示測量所有項目。無 停用所有測量。
以下是每個元資料鍵的列表
- 平均值
- 變異數
- 質心
- 擴散度
- 偏度
- 峰度
- 熵
- 平坦度
- 峰值因數
- 通量
- slope
- 衰減
- 滾降
27.58 asr
自動語音辨識
此濾波器使用 PocketSphinx 進行語音辨識。若要啟用此濾波器的編譯,您需要使用 --enable-pocketsphinx
配置 FFmpeg。
它接受以下選項
- 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
。預設為停用。每個聲道可用的鍵為:位元深度 峰值因數 直流偏移 動態範圍 熵 平坦因數 最大差異 最大音量 平均差異 最小差異 最小音量 噪音基底 噪音基底計數 無限值數量 非數值數量 次常態值數量 峰值計數 絕對峰值計數 峰值音量 RMS 差異 RMS 峰值 RMS 谷值 過零點 過零率
而
Overall
的鍵為:位元深度 直流偏移 熵 平坦因數 最大差異 最大音量 平均差異 最小差異 最小音量 噪音基底 噪音基底計數 無限值數量 非數值數量 次常態值數量 樣本數量 峰值計數 絕對峰值計數 峰值音量 RMS 差異 RMS 音量 RMS 峰值 RMS 谷值例如,完整的鍵看起來像
lavfi.astats.1.DC_offset
或lavfi.astats.Overall.Peak_count
。請閱讀以下內容以了解鍵的描述。
- 重置
設定在重置之前計算累計統計資訊的幀數。預設為停用。
- measure_perchannel
選擇每個聲道測量的參數。元資料鍵可以用作旗標,預設值為 全部,表示測量所有項目。無 停用所有每個聲道的測量。
- measure_overall
選擇整體測量的參數。元資料鍵可以用作旗標,預設值為 全部,表示測量所有項目。無 停用所有整體測量。
以下是測量鍵的描述
- none
無測量
- all
所有測量
- 位元深度
音訊的整體位元深度,即每個樣本使用的位元數
- 峰值因數
峰值與 RMS 音量之間的標準比率(注意:不是以 dB 為單位)
- 直流偏移
與零點的平均振幅位移
- 動態範圍
音訊的測量動態範圍,單位為 dB
- 熵
在整個音訊中測量的熵,對於白噪音,通常測得的熵值接近 1.0
- 平坦因數
訊號在其峰值音量(即 最小音量 或 最大音量)的平坦度(即具有相同值的連續樣本)
- 最大差異
兩個連續樣本之間的最大差異
- 最大音量
最大樣本音量
- 平均差異
兩個連續樣本之間的平均差異,即兩個連續樣本之間每個差異的平均值
- 最小差異
兩個連續樣本之間的最小差異
- 最小音量
最小樣本音量
- 噪音基底
在短視窗內測得的最小局部峰值,單位為 dBFS
- 噪音基底計數
訊號達到 噪音基底 的次數(不是樣本數)
- 無限值數量
具有無限值的樣本數
- 非數值數量
具有 NaN(非數字)值的樣本數
- 次常態值數量
具有次常態值的樣本數
- 樣本數量
樣本數
- 峰值計數
訊號達到 最小音量 或 最大音量 的次數(不是樣本數)
- 絕對峰值計數
從訊號中取得的絕對樣本達到 最小音量 和 最大音量 的最大絕對值的次數
- 峰值音量
以 dBFS 為單位測量的標準峰值音量
- RMS 差異
兩個連續樣本之間的均方根差異
- RMS 音量
以 dBFS 為單位測量的標準 RMS 音量
- RMS 峰值
- RMS 谷值
在短視窗內測量的 RMS 音量峰值和谷值,單位為 dBFS。
- 過零點
波形穿過零音量軸的點數
- 過零率
過零率和音訊樣本數
27.60 asubboost
增強超低音頻率。
此濾鏡接受以下選項
- dry
設定乾聲增益,保留多少原始訊號。允許範圍為 0 到 1。預設值為 1.0。
- wet
設定濕聲增益,保留多少濾波後的訊號。允許範圍為 0 到 1。預設值為 1.0。
- 增強
設定最大增強因子。允許範圍為 1 到 12。預設值為 2。
- 衰減
設定延遲線衰減增益值。允許範圍為 0 到 1。預設值為 0.0。
- 回饋
設定延遲線回饋增益值。允許範圍為 0 到 1。預設值為 0.9。
- cutoff
設定截止頻率,單位為赫茲 (Hertz)。允許範圍為 50 到 900。預設值為 100。
- slope
設定截止頻率的斜率量。允許範圍為 0.0001 到 1。預設值為 0.5。
- 延遲
設定延遲時間。允許範圍為 1 到 100。預設值為 20。
- channels
設定要處理的聲道。預設值為所有可用聲道。
27.60.1 命令
此濾鏡支援所有上述選項作為 命令。
27.61 asubcut
削減超低音頻率。
此濾波器允許設定比高通濾波器更陡峭的滾降,因此能夠更有效地衰減阻帶中的頻率成分。
此濾鏡接受以下選項
- cutoff
設定截止頻率,單位為赫茲 (Hertz)。允許範圍為 2 到 200。預設值為 20。
- order
設定濾波器階數。可用值為 3 到 20。預設值為 10。
- level
設定輸入增益位準。允許範圍從 0 到 1。預設值為 1。
27.61.1 命令
此濾鏡支援所有上述選項作為 命令。
27.62 asupercut
削減超高音頻率。
此濾鏡接受以下選項
- cutoff
設定截止頻率,單位為赫茲 (Hertz)。允許範圍為 20000 到 192000。預設值為 20000。
- order
設定濾波器階數。可用值為 3 到 20。預設值為 10。
- level
設定輸入增益位準。允許範圍從 0 到 1。預設值為 1。
27.62.1 命令
此濾鏡支援所有上述選項作為 命令。
27.63 asuperpass
應用高階巴特沃斯帶通濾波器。
此濾鏡接受以下選項
- 中心頻率
設定中心頻率,單位為赫茲 (Hertz)。允許範圍為 2 到 999999。預設值為 1000。
- order
設定濾波器階數。可用值為 4 到 20。預設值為 4。
- Q 因子
設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。
- level
設定輸入增益音量。允許範圍為 0 到 2。預設值為 1。
27.63.1 命令
此濾鏡支援所有上述選項作為 命令。
27.64 asuperstop
應用高階巴特沃斯帶阻濾波器。
此濾鏡接受以下選項
- 中心頻率
設定中心頻率,單位為赫茲 (Hertz)。允許範圍為 2 到 999999。預設值為 1000。
- order
設定濾波器階數。可用值為 4 到 20。預設值為 4。
- Q 因子
設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。
- level
設定輸入增益音量。允許範圍為 0 到 2。預設值為 1。
27.64.1 命令
此濾鏡支援所有上述選項作為 命令。
27.65 atempo
調整音訊速度。
這個濾波器只接受一個參數,即音訊速度 (tempo)。如果未指定,則濾波器會假定標準速度為 1.0。速度必須在 [0.5, 100.0] 範圍內。
請注意,速度大於 2 時,會跳過一些取樣 (samples) 而不是將它們混合在一起。如果基於任何原因這是個問題,始終可以串聯多個 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
設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。
- slope
設定傾斜的斜率方向。預設值為 0。允許範圍為 -1 到 1。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
設定傾斜的寬度。預設值為 1000。允許範圍為 100 到 10000。
- order
設定傾斜濾波器的階數。
- level
設定輸入音量級別。允許範圍為 0 到 4。預設值為 1。
27.66.1 命令
此濾鏡支援所有上述選項作為 命令。
27.67 atrim
修剪輸入,使輸出包含輸入的一個連續子部分。
它接受以下參數
- start
要保留的區段的開始時間戳記(以秒為單位)。也就是說,時間戳記為 start 的音訊取樣將是輸出中的第一個取樣。
- end
指定將被丟棄的第一個音訊取樣的時間,也就是說,緊接在時間戳記為 end 的音訊取樣之前的取樣將是輸出中的最後一個取樣。
- start_pts(開始時間戳記點)
與 start 相同,不同之處在於此選項以取樣 (samples) 而不是秒來設定開始時間戳記。
- end_pts(結束時間戳記點)
與 end 相同,不同之處在於此選項以取樣 (samples) 而不是秒來設定結束時間戳記。
- 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 和 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 bandpass
應用二極點 Butterworth 帶通濾波器,中心頻率為 frequency,(3dB 點)頻寬為 width。csg 選項選擇恆定裙邊增益(峰值增益 = Q),而不是預設值:恆定 0dB 峰值增益。濾波器以每八度音程 6dB(每十年 20dB)的速率滾降。
此濾鏡接受以下選項
- frequency, f
設定濾波器的中心頻率。預設值為
3000
。- csg(恆定裙邊增益)
如果設定為 1,則為恆定裙邊增益。預設值為 0。
- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
以 width_type 單位指定濾波器的頻寬。
- mix, m
輸出中要使用多少濾波訊號。預設值為 1。範圍介於 0 和 1 之間。
- channels, c
指定要濾波的聲道,預設情況下會濾波所有可用的聲道。
- normalize, n
正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。
- transform, a
設定 IIR 濾波器的轉換類型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
設定濾波精度。
- auto
根據環繞濾波器選擇自動取樣格式。
- s16
始終使用有號 16 位元。
- s32
始終使用有號 32 位元。
- f32
始終使用 32 位元浮點數。
- f64
始終使用 64 位元浮點數。
- block_size, b(區塊大小)
設定用於反向 IIR 處理的區塊大小。如果此值設定得足夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變成線性相位;否則,如果不夠大,則只會產生難看的雜訊。
請注意,當設定為非零值時,濾波器延遲將正好是這麼多個取樣。
27.69.1 命令
此濾波器支援以下指令
- frequency, f
更改帶通頻率。指令語法為:「frequency」
- width_type, t
更改帶通寬度類型。指令語法為:「width_type」
- width, w
更改帶通寬度。指令語法為:「width」
- mix, m
更改帶通混合。指令語法為:「mix」
27.70 bandreject
應用二極點 Butterworth 帶拒濾波器,中心頻率為 frequency,(3dB 點)頻寬為 width。濾波器以每八度音程 6dB(每十年 20dB)的速率滾降。
此濾鏡接受以下選項
- frequency, f
設定濾波器的中心頻率。預設值為
3000
。- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
以 width_type 單位指定濾波器的頻寬。
- mix, m
輸出中要使用多少濾波訊號。預設值為 1。範圍介於 0 和 1 之間。
- channels, c
指定要濾波的聲道,預設情況下會濾波所有可用的聲道。
- normalize, n
正規化雙二階濾波器係數,預設為停用。啟用後,將直流的幅度響應正規化為 0dB。
- transform, a
設定 IIR 濾波器的轉換類型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
設定濾波精度。
- auto
根據環繞濾波器選擇自動取樣格式。
- s16
始終使用有號 16 位元。
- s32
始終使用有號 32 位元。
- f32
始終使用 32 位元浮點數。
- f64
始終使用 64 位元浮點數。
- block_size, b(區塊大小)
設定用於反向 IIR 處理的區塊大小。如果此值設定得足夠高(高於脈衝響應長度在接近零值時被截斷的長度),則濾波將變成線性相位;否則,如果不夠大,則只會產生難看的雜訊。
請注意,當設定為非零值時,濾波器延遲將正好是這麼多個取樣。
27.70.1 命令
此濾波器支援以下指令
- frequency, f
更改帶拒頻率。指令語法為:「frequency」
- width_type, t
更改帶拒寬度類型。指令語法為:「width_type」
- width, w
更改帶拒寬度。指令語法為:「width」
- mix, m
更改帶拒混合。指令語法為:「mix」
27.71 bass, lowshelf
使用二極點 shelving 濾波器增強或衰減音訊的低音(較低)頻率,其響應類似於標準高傳真音響的音調控制。這也稱為 shelving 等化 (EQ)。
此濾鏡接受以下選項
- 增益 (gain), g
給出 0 Hz 的增益。其有用範圍約為 -20(大幅衰減)到 +20(大幅增強)。使用正增益時請注意削波。
- frequency, f
設定濾波器的中心頻率,因此可用於擴展或縮減要增強或衰減的頻率範圍。預設值為
100
Hz。- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
決定濾波器的 shelving 過渡有多陡峭。
- 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
更改低音頻率。指令語法為:「frequency」
- width_type, t
更改低音寬度類型。指令語法為:「width_type」
- width, w
更改低音寬度。指令語法為:「width」
- 增益 (gain), g
更改低音增益。指令語法為:「gain」
- mix, m
更改低音混合。指令語法為:「mix」
27.72 biquad
應用具有給定係數的 biquad IIR 濾波器。其中 b0、b1、b2 和 a0、a1、a2 分別是分子和分母係數。而 channels、c 指定要濾波的聲道,預設情況下會濾波所有可用的聲道。
27.72.1 命令
此濾波器支援以下指令
- a0
- a1
- a2
- b0
- b1
- b2
更改 biquad 參數。指令語法為:「value」
- 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 立體聲到雙耳轉換,可改善立體聲音訊記錄的耳機聆聽體驗。
若要啟用此濾波器的編譯,您需要使用 --enable-libbs2b
配置 FFmpeg。
它接受以下參數
- profile
預定義的串音 (crossfeed) 級別。
- default
預設級別 (fcut=700, feed=50)。
- cmoy
Chu Moy 電路 (fcut=700, feed=60)。
- jmeier
Jan Meier 電路 (fcut=650, feed=95)。
- fcut(截止頻率)
截止頻率(單位為 Hz)。
- feed(串音量)
串音量級別。
27.74 channelmap
將輸入聲道重新映射到新的位置。
它接受以下參數
- 映射 (map)
將聲道從輸入映射到輸出。參數是以「|」分隔的映射列表,每個映射的格式為
in_channel-out_channel
或in_channel
。in_channel 可以是輸入聲道的名稱(例如 FL 代表前置左聲道),也可以是其在輸入聲道佈局中的索引。out_channel 是輸出聲道的名稱或其在輸出聲道佈局中的索引。如果未給定 out_channel,則隱含地為索引,從零開始,並且每個映射遞增一。不允許混合不同類型的映射,否則會導致剖析錯誤。- channel_layout(聲道佈局)
輸出流的聲道佈局。如果未指定,則濾波器將根據 out_channel 名稱或映射數量來猜測它。猜測的佈局不一定會包含按映射順序排列的聲道。
如果沒有映射存在,則濾波器將隱含地將輸入聲道映射到輸出聲道,並保留索引。
27.74.1 範例
- 例如,假設一個 5.1+downmix 輸入 MOV 檔案,
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
將從輸入的 downmix 聲道建立一個標記為立體聲的輸出 WAV 檔案。
- 若要修正以 AAC 原生聲道順序錯誤編碼的 5.1 WAV 檔案
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
27.75 channelsplit
將輸入音訊流中的每個聲道分割成單獨的輸出流。
它接受以下參數
- channel_layout(聲道佈局)
輸入流的聲道佈局。預設值為「stereo」(立體聲)。
- channels
描述要提取為單獨輸出流的聲道的聲道佈局,或「all」(全部)以將每個輸入聲道提取為單獨的流。預設值為「all」(全部)。
選擇輸入聲道佈局中不存在的聲道將導致錯誤。
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 chorus
將合唱 (chorus) 效果添加到音訊。
可以使單一人聲聽起來像合唱,但也可以應用於樂器。
合唱類似於具有短暫延遲的回音效果,但與回音的延遲是恆定不同,合唱的延遲是使用正弦或三角調變來變化的。調變深度定義了調變延遲在延遲之前或之後播放的範圍。因此,延遲的聲音聽起來會更慢或更快,也就是說,延遲的聲音圍繞原始聲音進行調整,就像合唱中某些人聲略微走調一樣。
它接受以下參數
- in_gain
設定輸入增益。預設值為 0.4。
- out_gain
設定輸出增益。預設值為 0.4。
- delays
設定延遲 (delays)。典型的延遲約為 40 毫秒到 60 毫秒。
- decays
設定衰減 (decays)。
- 速度 (speeds)
設定速度 (speeds)。
- 深度 (depths)
設定深度 (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 compand
壓縮或擴展音訊的動態範圍。
它接受以下參數
- 啟動時間 (attacks)
- decays
每個聲道的以秒為單位的時間列表,輸入訊號的瞬時級別在這些時間內取平均值以確定其音量。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。
- 延遲
設定延遲,單位為秒。輸入音訊會立即分析,但在饋送到音量調整器之前會延遲音訊。指定大約等於啟動/衰減時間的延遲允許濾波器有效地以預測模式而不是反應模式運作。預設值為 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
- 壓縮器/閘 (Compressor/Gate)
compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
- 擴展器 (Expander)
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
- -35 dB 硬雜訊閘
compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
- 軟限制器 (Soft limiter)
compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
27.78 compensationdelay
補償延遲線是一種基於度量的延遲,用於補償麥克風或揚聲器的不同位置。
例如,您使用放置在不同位置的兩個麥克風錄製了吉他。由於聲波的正面在正常條件下具有固定的速度,因此麥克風的相位可能會有所不同,並且取決於它們的位置和相互位置。當這些麥克風同相(同步)時,可以實現最佳的聲音混合。請注意,麥克風之間約 30 公分的距離會使一個麥克風捕獲的訊號與另一個麥克風異相。這會使最終的混音聽起來不穩定。此濾波器通過向每個麥克風音軌添加不同的延遲並使它們同步,來幫助解決相位問題。
當您以一個音軌作為基礎並將其他音軌逐個與其同步時,可以達到最佳結果。請記住,同步/延遲容限也取決於取樣率。較高的取樣率將提供更大的容限。
濾波器接受以下參數
- mm(毫米)
設定毫米距離。這是用於微調的補償距離。預設值為 0。
- cm(公分)
設定公分距離。這是用於收緊距離設定的補償距離。預設值為 0。
- m
設定公尺距離。這是用於硬性距離設定的補償距離。預設值為 0。
- dry
設定乾聲量。未處理(乾聲)訊號的量。預設值為 0。
- wet
設定濕聲量。已處理(濕聲)訊號的量。預設值為 1。
- temp(溫度)
設定溫度,單位為攝氏度。這是環境溫度。預設值為 20。
27.78.1 命令
此濾鏡支援所有上述選項作為 命令。
27.79 crossfeed
應用耳機串音 (crossfeed) 濾波器。
串音是混合立體聲音訊記錄的左右聲道的過程。它主要用於減少低頻的極端立體聲分離。
目的是為聽眾產生更像揚聲器的聲音。
此濾鏡接受以下選項
- strength(強度)
設定串音強度。預設值為 0.2。允許範圍為 0 到 1。這設定了立體聲像側邊部分的 low shelf 濾波器的增益。預設值為 -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 crystalizer
簡單的音訊雜訊銳化演算法。
此濾波器線性地增加每個音訊樣本之間的差異。
此濾鏡接受以下選項
- i
設定效果強度 (預設值:2.0)。必須在 -10.0 到 0 (聲音不變) 到 10.0 (最大效果) 的範圍內。要反向濾波,請使用負值。
- c
啟用削波。預設為啟用。
27.80.1 命令
此濾鏡支援所有上述選項作為 命令。
27.81 dcshift
對音訊套用直流偏移。
這可用於從音訊中移除直流偏移 (可能由錄音鏈中的硬體問題引起)。直流偏移的效果是降低動態餘裕,進而降低音量。可以使用 astats 濾波器來判斷訊號是否具有直流偏移。
- shift
設定直流偏移量,允許範圍為 [-1, 1]。這表示音訊的偏移量。
- 限制器增益 (limitergain)
選填。它應該有一個遠小於 1 的值 (例如 0.05 或 0.02),並且用於防止削波。
27.82 deesser
對音訊樣本套用齒音消除。
- i
設定觸發齒音消除的強度。允許範圍為 0 到 1。預設值為 0。
- m
設定聲音高音部分的衰減量。允許範圍為 0 到 1。預設值為 0.5。
- f
在齒音消除時保留多少原始頻率內容。允許範圍為 0 到 1。預設值為 0.5。
- s
設定輸出模式。
它接受以下值
- i
不變更地傳遞輸入。
- o
輸出已濾除的齒音。
- e
僅輸出齒音。
預設值為 o。
27.83 dialoguenhance
增強立體聲音訊中的對話。
此濾波器接受立體聲輸入並產生環繞 (3.0) 聲道輸出。新產生的前置中央聲道具有增強的語音對話,這些對話原本在兩個立體聲聲道中都有。此濾波器輸出的前置左聲道和前置右聲道與立體聲輸入中的聲道相同。
此濾鏡接受以下選項
- 原始 (original)
設定在前置中央聲道輸出中保留的原始中央聲道因子。允許範圍為 0 到 1。預設值為 1。
- enhance
設定要放入前置中央聲道輸出的對話增強因子。允許範圍為 0 到 3。預設值為 1。
- 語音 (voice)
設定語音偵測因子。允許範圍為 2 到 32。預設值為 2。
27.83.1 命令
此濾鏡支援所有上述選項作為 命令。
27.84 drmeter
測量音訊動態範圍。
DR 值為 14 或更高表示動態範圍非常大的素材。DR 值為 8 到 13 表示動態範圍過渡的素材。而任何小於 8 的值都表示動態範圍非常差且經過高度壓縮。
此濾鏡接受以下選項
- length
設定用於將音訊分割成等長片段的視窗長度 (秒)。預設值為 3 秒。
27.85 dynaudnorm
動態音訊正規化器。
此濾波器會對輸入音訊套用一定量的增益,以使其峰值幅度達到目標水平 (例如 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 型」閾值函數。這樣,增益因子將平滑地接近閾值,但永遠不會超過該值。
- 目標 RMS (targetrms, r)
設定目標 RMS。範圍為 0.0 到 1.0。預設值為 0.0 - 停用。預設情況下,「動態音訊正規化器」執行「峰值」正規化。這表示每個幀的最大本地增益因子 (僅) 由幀的最高幅度樣本定義。這樣,樣本可以盡可能放大,而不會超過最大訊號水平,即不會削波。但是,選擇性地,「動態音訊正規化器」也可以考量幀的均方根值 (縮寫為 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 的值將進行較不保守的增益調整,例如當 framelen 選項設定為較小的值時,如果 framelen 選項值針對非零重疊進行補償,則與零重疊情況相比,增益調整將在時間上更平滑。
- 曲線 (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
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
以 width_type 單位指定濾波器的頻寬。
- 增益 (gain), g
以分貝 (dB) 為單位設定所需的增益或衰減。使用正增益時請注意削波。
- 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.87.1 範例
- 在 1000 Hz 時衰減 10 dB,頻寬為 200 Hz
equalizer=f=1000:t=h:width=200:g=-10
- 在 1000 Hz 時套用 2 dB 增益,Q 值為 1;在 100 Hz 時衰減 5 dB,Q 值為 2
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
27.87.2 命令
此濾波器支援以下指令
- frequency, f
變更等化器頻率。指令語法為:「frequency」
- width_type, t
變更等化器寬度類型。指令語法為:「width_type」
- width, w
變更等化器寬度。指令語法為:「width」
- 增益 (gain), g
變更等化器增益。指令語法為:「gain」
- mix, m
變更等化器混合。指令語法為:「mix」
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
- 聲道 ID (chid)
聲道 ID,請參閱 libavutil/channel_layout.h,當停用多聲道評估時設定為第一個聲道 ID
- chs
通道數量
- 聲道佈局
聲道佈局 (channel_layout),請參閱 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
此選項亦可作為指令使用。
- 延遲
設定濾波器延遲時間,單位為秒。數值越高表示越精確。預設值為
0.01
。- accuracy
設定濾波器精確度,單位為 Hz。數值越低表示越精確。預設值為
5
。- wfunc
設定視窗函數。可接受的值為
- rectangular
矩形視窗,當增益曲線已平滑時很有用
- hann
hann 視窗 (預設)
- hamming
hamming 視窗
- blackman
blackman 視窗
- nuttall3
3 項連續一階導數 nuttall 視窗
- mnuttall3
最小 3 項不連續 nuttall 視窗
- nuttall
4 項連續一階導數 nuttall 視窗
- bnuttall
最小 4 項不連續 nuttall (blackman-nuttall) 視窗
- bharris
blackman-harris 視窗
- tukey
tukey 視窗
- fixed
若啟用,則使用固定數量的音訊取樣。這在以較大延遲進行濾波時可提高速度。預設為停用。
- multi
啟用增益的多聲道評估。預設為停用。
- zero_phase
啟用零相位模式,透過減去時間戳記以補償延遲。預設為停用。
- scale
設定增益使用的比例。可接受的值為
- linlin
線性頻率,線性增益
- linlog
線性頻率,對數 (以 dB 為單位) 增益 (預設)
- loglin
對數 (在 20 Hz 為 0 的八度音階) 頻率,線性增益
- loglog
對數頻率,對數增益
- dumpfile
設定用於傾印 (dumping) 的檔案,適用於 gnuplot。
- dumpscale
設定 dumpfile 的比例。可接受的值與 scale 選項相同。預設值為 linlog。
- fft2
啟用使用複數 FFT 的 2 聲道迴旋積運算。這可顯著提高速度。預設為停用。
- min_phase
啟用最小相位脈衝響應。預設為停用。
27.89.1 範例
- lowpass at 1000 Hz
firequalizer=gain='if(lt(f,1000), 0, -INF)'
- lowpass at 1000 Hz with gain_entry
firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
- custom equalization
firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
- higher delay with zero phase to compensate delay
firequalizer=delay=0.1:fixed=on:zero_phase=on
- lowpass on left channel, highpass on right channel
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 flanger
將鑲邊 (flanging) 效果套用至音訊。
此濾鏡接受以下選項
- 延遲
設定基礎延遲時間,單位為毫秒。範圍從 0 到 30。預設值為 0。
- depth
設定新增的掃頻延遲時間,單位為毫秒。範圍從 0 到 10。預設值為 2。
- regen
設定再生百分比 (延遲訊號回饋)。範圍從 -95 到 95。預設值為 0。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
設定與原始訊號混合的延遲訊號百分比。範圍從 0 到 100。預設值為 71。
- speed
設定每秒掃頻次數 (Hz)。範圍從 0.1 到 10。預設值為 0.5。
- shape
設定掃頻波形狀,可以是 triangular 或 sinusoidal。預設值為 sinusoidal。
- phase
設定多聲道掃頻波形狀的百分比偏移。範圍從 0 到 100。預設值為 25。
- interp
設定延遲線內插法,linear 或 quadratic。預設值為 linear。
27.91 haas
將哈斯 (Haas) 效應套用至音訊。
請注意,這最適合套用於單聲道訊號。將此濾波器套用於單聲道訊號時,它會產生一些方向性並擴展其立體聲影像。
此濾鏡接受以下選項
- level_in
設定輸入音量。預設值為 1,或 0dB
- level_out
設定輸出音量。預設值為 1,或 0dB。
- side_gain
設定套用於訊號側邊部分的增益。預設值為 1。
- middle_source
設定中間來源的種類。可以是下列其中之一
- ‘left’
選取左聲道。
- ‘right’
選取右聲道。
- ‘mid’
選取立體聲影像的中間部分訊號。
- ‘side’
選取立體聲影像的側邊部分訊號。
- middle_phase
變更中間相位。預設為停用。
- left_delay
設定左聲道延遲時間。預設值為 2.05 毫秒。
- left_balance
設定左聲道平衡。預設值為 -1。
- left_gain
設定左聲道增益。預設值為 1。
- left_phase
變更左相位。預設為停用。
- right_delay
設定右聲道延遲時間。預設值為 2.12 毫秒。
- right_balance
設定右聲道平衡。預設值為 1。
- right_gain
設定右聲道增益。預設值為 1。
- right_phase
變更右相位。預設為啟用。
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
一起處理立體聲聲道。如果聲道之間的 target_gain 不符,則視為無效並使用最後一個有效的 target_gain。
- cdt_ms
設定程式碼偵測計時器週期,單位為毫秒。
- force_pe
即使未發出 PE 訊號,也始終擴展高於 -3dBFS 的峰值。
- analyze_mode
將音訊替換為純音,並調整振幅以表示解碼過程的某些特定方面。輸出檔案可以與原始檔案一起載入音訊編輯器中,以協助分析。
analyze_mode=pe:force_pe=true
可用於查看 PE 位準以上的所有取樣。模式為
- ‘0, off’
停用
- ‘1, lle’
每個取樣的增益調整位準
- ‘2, pe’
發生峰值擴展的取樣
- ‘3, cdt’
程式碼偵測計時器處於作用中的取樣
- ‘4, tgm’
聲道之間目標增益不符的取樣
27.93 headphone
套用頭部相關傳輸函數 (HRTF) 以在使用者周圍建立虛擬揚聲器,以便透過耳機進行雙耳聆聽。HRIR 透過額外串流提供,每個聲道需要一個立體聲輸入串流。
此濾鏡接受以下選項
- 映射 (map)
設定迴旋積運算的輸入串流對應。引數是以 ’|’ 分隔的聲道名稱清單,依序作為濾波器的額外串流輸入提供。這也指定輸入串流的數量。輸入串流的數量不得少於第一個串流中的聲道數量加一。
- 增益 (gain)
設定套用至音訊的增益。值以 dB 為單位。預設值為 0。
- type
設定處理類型。可以是 time 或 freq。time 是在時域中處理音訊,速度較慢。freq 是在頻域中處理音訊,速度較快。預設值為 freq。
- lfe
設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。
- size
設定訊框大小,以一次處理的取樣數量表示。預設值為 1024。允許範圍從 1024 到 96000。
- hrir
設定 hrir 串流的格式。預設值為 stereo。替代值為 multich。如果值設定為 stereo,則額外串流的數量應大於或等於第一個輸入串流中的輸入聲道數量。此外,每個額外串流應具有立體聲聲道數量。如果值設定為 multich,則額外串流的數量應正好為一個。此外,額外串流的輸入聲道數量應等於或大於第一個輸入串流的聲道數量的兩倍。
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 降混,但現在採用 multich 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 highpass
套用具有 3dB 點頻率的高通濾波器。此濾波器可以是單極或雙極 (預設)。濾波器的滾降率為每極每八度音程 6dB (每極每十年 20dB)。
此濾鏡接受以下選項
- frequency, f
設定頻率,單位為 Hz。預設值為 3000。
- poles, p
設定極點數。預設值為 2。
- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供 Butterworth 響應。
- 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.94.1 命令
此濾波器支援以下指令
- frequency, f
變更高通頻率。指令語法為:「frequency」
- width_type, t
變更高通 width_type。指令語法為:「width_type」
- width, w
變更高通 width。指令語法為:「width」
- mix, m
變更高通 mix。指令語法為:「mix」
27.95 join
將多個輸入串流合併為一個多聲道串流。
它接受以下參數
- inputs
輸入串流的數量。預設為 2。
- channel_layout(聲道佈局)
所需的輸出聲道配置。預設為立體聲。
- 映射 (map)
將聲道從輸入對應到輸出。引數是以 ’|’ 分隔的對應清單,每個對應的格式為
input_idx.in_channel-out_channel
。input_idx 是輸入串流的從 0 開始的索引。in_channel 可以是輸入聲道的名稱 (例如 FL 代表前置左聲道) 或其在指定輸入串流中的索引。out_channel 是輸出聲道的名稱。
當未明確指定對應時,濾波器會嘗試猜測對應。它會先嘗試尋找未使用的相符輸入聲道,如果失敗,則會選取第一個未使用的輸入聲道。
合併 3 個輸入 (具有正確設定的聲道配置)
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
從 6 個單聲道串流建立 5.1 輸出
ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE' out
27.96 ladspa
載入 LADSPA (Linux Audio Developer’s Simple Plugin API) 外掛程式。
若要啟用此濾波器的編譯,您需要使用 --enable-ladspa
配置 FFmpeg。
- file, f
指定要載入的 LADSPA 外掛程式庫的名稱。如果已定義環境變數
LADSPA_PATH
,則會在LADSPA_PATH
中以冒號分隔的清單所指定的每個目錄中搜尋 LADSPA 外掛程式,否則會在標準 LADSPA 路徑中搜尋,順序如下:HOME/.ladspa/lib/、/usr/local/lib/ladspa/、/usr/lib/ladspa/。- plugin, p
指定程式庫內的外掛程式。有些程式庫僅包含一個外掛程式,但其他程式庫包含許多外掛程式。如果未設定此項,濾波器將列出指定程式庫內的所有可用外掛程式。
- controls, c
設定 ’|’ 分隔的控制項清單,這些控制項是零個或多個浮點值,用於決定載入的外掛程式的行為 (例如延遲、臨界值或增益)。控制項需要使用以下語法定義:c0=value0|c1=value1|c2=value2|...,其中 valuei 是在第 i 個控制項上設定的值。或者,它們也可以使用以下語法定義:value0|value1|value2|...,其中 valuei 是在第 i 個控制項上設定的值。如果 controls 設定為
help
,則會印出所有可用的控制項及其有效範圍。- sample_rate, s
指定取樣率,預設為 44100。僅當外掛程式具有零個輸入時使用。
- nb_samples, n
設定每個輸出訊框中每個聲道的取樣數量,預設為 1024。僅當外掛程式具有零個輸入時使用。
- duration, d
設定來源音訊的最小持續時間。請參閱 ffmpeg-utils(1) 手冊中的「時間持續時間」章節以瞭解可接受的語法。請注意,產生的持續時間可能大於指定的持續時間,因為產生的音訊始終在完整訊框的末尾截斷。如果未指定,或表示的持續時間為負數,則音訊應永久產生。僅當外掛程式具有零個輸入時使用。
- latency, l
啟用延遲補償,預設為停用。僅當外掛程式具有輸入時使用。
27.96.1 範例
- 列出 amp (LADSPA 範例外掛程式) 程式庫中的所有可用外掛程式
ladspa=file=amp
- 列出來自
VCF
程式庫的vcf_notch
外掛程式的所有可用控制項及其有效範圍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 plugins) 外掛程式將殘響新增至音訊
ladspa=file=tap_reverb:tap_reverb
- 產生白噪音,振幅為 0.2
ladspa=file=cmt:noise_source_white:c=c0=.2
- 使用來自
C* Audio Plugin Suite
(CAPS) 程式庫的外掛程式C* Click - Metronome
產生 20 bpm 的滴答聲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
SWH Plugins
合輯的快速前瞻限制器將音量提高 20dBladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
- 使用來自 Steve Harris
SWH Plugins
合輯的多頻段 EQ 衰減低頻ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
- 使用來自
C* Audio Plugin Suite
(CAPS) 程式庫的Narrower
縮減立體聲影像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 個控制項值。
如果指定的數值無效,則會忽略它並保留先前的數值。
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
輸入檔案的測量 IL。範圍為 -99.0 - +0.0。
- measured_LRA, measured_lra
輸入檔案的測量 LRA。範圍為 0.0 - 99.0。
- measured_TP, measured_tp
輸入檔案的測量真實峰值。範圍為 -99.0 - +99.0。
- measured_thresh
輸入檔案的測量臨界值。範圍為 -99.0 - +0.0。
- offset
設定偏移增益。增益會在真實峰值限制器之前套用。範圍為 -99.0 - +99.0。預設值為 +0.0。
- linear
透過線性縮放來源音訊進行標準化。必須指定
measured_I
、measured_LRA
、measured_TP
和measured_thresh
。目標 LRA 不應低於來源 LRA,且整合音量的變更不應導致真實峰值超過目標 TP。如果未滿足任何這些條件,標準化模式將還原為 dynamic。選項為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
octave
- s
slope
- k
kHz
- width, w
以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供 Butterworth 響應。
- 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.98.1 範例
- 僅對 LFE 聲道進行低通濾波,如果沒有 LFE 則不執行任何操作
lowpass=c=LFE
27.98.2 命令
此濾波器支援以下指令
- frequency, f
變更低通頻率。指令語法為:「frequency」
- width_type, t
變更低通 width_type。指令語法為:「width_type」
- width, w
變更低通 width。指令語法為:「width」
- mix, m
變更低通 mix。指令語法為:「mix」
27.99 lv2
載入 LV2 (LADSPA Version 2) 外掛程式。
若要啟用此濾波器的編譯,您需要使用 --enable-lv2
配置 FFmpeg。
- plugin, p
指定插件 URI。您可能需要跳脫字元 ’:’。
- controls, c
設定以 ’|’ 分隔的控制項列表,這些控制項是零或多個浮點數值,用於決定已載入插件的行為(例如延遲、閾值或增益)。如果 controls 設定為
help
,則會印出所有可用的控制項及其有效範圍。- sample_rate, s
指定取樣率,預設為 44100。僅當外掛程式具有零個輸入時使用。
- nb_samples, n
設定每個輸出訊框中每個聲道的取樣數量,預設為 1024。僅當外掛程式具有零個輸入時使用。
- duration, d
設定來源音訊的最小持續時間。請參閱 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
多頻段壓縮或擴展音訊的動態範圍。
輸入音訊使用四階 Linkwitz-Riley IIRs 分割成多個頻段。這類似於揚聲器的分頻器,並且在沒有動態壓縮器作用時產生平坦的頻率響應。
它接受以下參數
- args
此選項語法為:attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 有關每個項目的說明,請參閱 compand 濾鏡文件。
27.101 pan
混合具有特定增益等級的聲道。此濾鏡接受輸出聲道佈局,後跟一組聲道定義。
此濾鏡也設計用於有效率地重新對應音訊串流的聲道。
此濾鏡接受以下形式的參數:"l|outdef|outdef|..."
- l
輸出聲道佈局或聲道數量
- outdef
輸出聲道規格,形式為:"out_name=[gain*]in_name[(+-)[gain*]in_name...]"
- out_name
要定義的輸出聲道,可以是聲道名稱(FL、FR 等)或聲道編號(c0、c1 等)
- 增益 (gain)
聲道的乘法係數,1 表示音量不變
- in_name
要使用的輸入聲道,詳細資訊請參閱 out_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
配置 FFmpeg。
此濾鏡接受以下選項
- 速度 (tempo)
設定速度比例因子。
- pitch
設定音調比例因子。
- transients
設定瞬態偵測器。可能的值為
- crisp
- mixed
- smooth
- detector
設定偵測器。可能的值為
- compound
- percussive
- soft
- phase
phase
- 設定相位。可能的值為
- laminar
- independent
window
- standard
- 設定處理視窗大小。可能的值為
- long
- short
smoothing
- 設定平滑化。可能的值為
- off
- on
formant
- 在音調偏移時啟用共振峰保留。可能的值為
- shifted
- preserved
pitchq
- 設定音調品質。可能的值為
- speed
- quality
- channels
consistency
- channels
- 設定聲道。可能的值為
27.104.1 命令
此濾波器支援以下指令
- 速度 (tempo)
更改濾波器的速度比例因子。指令語法為:「tempo」
- pitch
apart
27.105 sidechaincompress
together
此濾鏡接受以下選項
- level_in
設定輸入增益。預設值為 1。範圍介於 0.015625 和 64 之間。
- mode
設定壓縮器運作模式。可以是
upward
或downward
。預設值為downward
。- threshold
變更濾鏡音調比例因子。指令語法為:「pitch」
- ratio
此濾鏡的作用類似於一般壓縮器,但能夠使用第二個輸入訊號壓縮偵測到的訊號。它需要兩個輸入串流,並傳回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。然後,經過濾波的訊號可以在後續處理階段使用其他濾鏡進行濾波。請參閱 pan 和 amerge 濾鏡。
- attack
訊號必須上升到閾值之上多少毫秒才會開始增益降低。預設值為 20。範圍介於 0.01 和 2000 之間。
- release
訊號必須下降到閾值之下多少毫秒才會再次降低降低幅度。預設值為 250。範圍介於 0.01 和 9000 之間。
- makeup
設定處理後訊號將被放大的量。預設值為 1。範圍從 1 到 64。
- knee
彎曲閾值周圍的銳利邊緣,以更柔和地進入增益降低。預設值為 2.82843。範圍介於 1 和 8 之間。
- link
如果第二個串流的訊號高於此位準,它將影響第一個串流的增益衰減。預設值為 0.125。範圍介於 0.00097563 和 1 之間。
- detection
設定訊號衰減的比率。1:2 表示如果位準高於閾值 4dB,則衰減後將僅高於 2dB。預設值為 2。範圍介於 1 和 20 之間。
- 選擇側鏈串流的所有聲道之間的
average
位準,還是側鏈串流中較響亮的 (maximum
) 聲道會影響衰減。預設值為average
。 在
peak
的情況下,應採用精確訊號,還是在rms
的情況下採用 RMS 訊號。預設值為rms
,主要是為了更平滑。- mix
在輸出中使用多少壓縮訊號。預設值為 1。範圍介於 0 和 1 之間。
27.105.1 命令
此濾鏡支援所有上述選項作為 命令。
27.105.2 範例
- level_sc
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
設定側鏈增益。預設值為 1。範圍介於 0.015625 和 64 之間。
此濾鏡接受以下選項
- level_in
設定濾波前的輸入位準。預設值為 1。允許範圍為 0.015625 到 64。
- mode
設定操作模式。可以是
upward
或downward
。預設值為downward
。如果設定為upward
模式,則會放大訊號的較高部分,向上擴展動態範圍。否則,在downward
的情況下,會減少訊號的較低部分。- range
設定訊號低於閾值時的增益減少量。預設值為 0.06125。允許範圍為 0 到 1。將此值設定為 0 會停用減少,然後濾波器的行為類似於擴展器。
- threshold
如果訊號升至此位準之上,則會釋放增益減少。預設值為 0.125。允許範圍為 0 到 1。
- ratio
完整的 ffmpeg 範例,採用 2 個音訊輸入,第一個輸入根據第二個輸入的訊號進行壓縮,然後將壓縮後的訊號與第二個輸入合併
- attack
訊號必須升至閾值之上多少毫秒,增益減少才會停止。預設值為 20 毫秒。允許範圍為 0.01 到 9000。
- release
訊號必須降至閾值之下多少毫秒,減少量才會再次增加。預設值為 250 毫秒。允許範圍為 0.01 到 9000。
- makeup
設定處理後訊號的放大倍數。預設值為 1。允許範圍為 1 到 64。
- knee
使尖銳的膝部曲線在閾值附近變得平緩,以便更柔和地進入增益衰減。預設值為 2.828427125。允許範圍為 1 到 8。
- detection
側鏈閘道器的作用類似於一般(寬頻)閘道器,但能夠在將偵測到的訊號傳送到增益衰減階段之前對其進行濾波。通常,閘道器使用全頻訊號來偵測高於閾值的位準。例如:如果您從側鏈訊號中切除所有低頻,則閘道器僅在沒有足夠高頻出現時才會降低音軌的音量。使用此技術,您可以減少自然鼓的共振,或消除嚴重失真吉他的悶音筆劃的「隆隆聲」。它需要兩個輸入串流,並傳回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。
- link
設定訊號衰減的比率。預設值為 2。允許的範圍為 1 到 9000。
- 選擇側鏈串流的所有聲道之間的
average
位準,還是側鏈串流中較響亮的 (maximum
) 聲道會影響衰減。預設值為average
。 選擇應採用精確訊號進行偵測,還是類似 RMS 的訊號。預設值為 rms。可以是 peak 或 rms。
27.106.1 命令
此濾鏡支援所有上述選項作為 命令。
27.107 silencedetect
選擇所有聲道之間的平均位準,還是較響亮的聲道會影響衰減。預設值為 average。可以是 average 或 maximum。
設定側鏈增益。預設值為 1。範圍介於 0.015625 到 64 之間。
偵測音訊串流中的靜音。
當此濾鏡偵測到輸入音訊音量小於或等於雜訊容忍值,且持續時間大於或等於最小偵測雜訊持續時間時,它會記錄訊息。
此濾鏡接受以下選項
- noise, n
印出的時間和持續時間以秒為單位表示。
lavfi.silence_start
或lavfi.silence_start.X
metadata 金鑰設定在時間戳記等於或超過偵測持續時間的第一個影格上,並且它包含靜音的第一個影格的時間戳記。- duration, d
lavfi.silence_duration
或lavfi.silence_duration.X
和lavfi.silence_end
或lavfi.silence_end.X
metadata 金鑰設定在靜音之後的第一個影格上。如果啟用 mono,並且每個聲道都單獨評估,則會使用帶有.X
後綴的金鑰,而X
對應於聲道編號。- 設定雜訊容忍值。可以 dB(如果指定值附加 "dB")或振幅比率指定。預設值為 -60dB 或 0.001。
設定靜音持續時間直到通知(預設值為 2 秒)。有關接受的語法,請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節。
27.107.1 範例
- mono, m
silencedetect=n=-50dB:d=5
- 單獨處理每個聲道,而不是組合處理。預設為停用。
ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
27.108 silenceremove
偵測 5 秒靜音,雜訊容忍值為 -50dB
此濾鏡接受以下選項
- 使用
ffmpeg
偵測 silence.mp3 中雜訊容忍值為 0.0001 的靜音的完整範例 移除音訊開頭、中間或結尾的靜音。
- start_periods
此值用於指示是否應在音訊開頭修剪音訊。值為零表示不應從開頭修剪靜音。當指定非零值時,它會修剪音訊直到找到非靜音。通常,從音訊開頭修剪靜音時,start_periods 將為
1
,但可以增加到更高的值,以修剪所有音訊,直到特定的非靜音週期計數。預設值為0
。- start_duration
指定在停止修剪音訊之前必須偵測到非靜音的時間長度。透過增加持續時間,可以將突發雜訊視為靜音並修剪掉。預設值為
0
。- start_threshold
這表示應將哪個樣本值視為靜音。對於數位音訊,值
0
可能可以,但對於從類比錄製的音訊,您可能希望增加該值以考慮背景雜訊。可以 dB(如果指定值附加 "dB")或振幅比率指定。預設值為0
。- start_silence
指定在修剪後將保留的開頭靜音的最大持續時間。預設值為 0,相當於修剪所有偵測為靜音的樣本。
- start_mode
指定在多聲道音訊開頭偵測靜音結束的模式。可以是 any 或 all。預設值為 any。使用 any,從任何聲道的任何樣本中偵測到非靜音將觸發音訊串流開頭的靜音修剪結束。使用 all,僅當從每個聲道的每個樣本中偵測到非靜音時,才會觸發音訊串流開頭的靜音修剪結束,使用受限。
- stop_periods
設定從音訊結尾修剪靜音的計數。當指定正值時,它會在找到指定的靜音週期後修剪音訊。若要移除檔案中間的靜音,請指定負數的 stop_periods。然後此值將被視為正值,並用於指示效果應根據 stop_periods 指定的方式重新啟動處理,使其適用於移除音訊中間的靜音週期。預設值為
0
。- stop_duration
指定必須存在的靜音持續時間,之後才不再複製音訊。透過指定較長的持續時間,可以將想要的靜音保留在音訊中。預設值為
0
。- stop_threshold
這與 start_threshold 相同,但用於從音訊結尾修剪靜音。可以 dB(如果指定值附加 "dB")或振幅比率指定。預設值為
0
。- stop_silence
指定在修剪後將保留的結尾靜音的最大持續時間。預設值為 0,相當於修剪所有偵測為靜音的樣本。
- detection
stop_mode
- 指定在多聲道音訊開始後偵測靜音開始的模式。可以是 any 或 all。預設值為 all。使用 any,從任何聲道的任何樣本中偵測到靜音將觸發音訊串流開始後的靜音修剪開始,使用受限。使用 all,僅當從每個聲道的每個樣本中偵測到靜音時,才會觸發音訊串流開始後的靜音修剪開始。
設定如何偵測靜音。
- avg
移動視窗中樣本絕對值的平均值。
- rms
移動視窗中樣本絕對值的均方根值。
- peak
移動視窗中樣本絕對值的最大值。
- median
移動視窗中樣本絕對值的中位數。
- ptp
移動視窗中樣本最大峰值到最小峰值差異的絕對值。
dev
- independent
移動視窗中樣本值的標準差。
- 預設值為
rms
。 設定以秒為單位的持續時間,用於計算視窗大小(以樣本數表示),以偵測靜音。使用
0
將有效地停用任何視窗化,並且僅對每個聲道使用單個樣本進行靜音偵測。在這種情況下,可能也需要將 start_silence 和/或 stop_silence 設定為非零值,同時也將 start_duration 和/或 stop_duration 設定為非零值。預設值為0.02
。允許的範圍為0
到10
。- timestamp
設定每個音訊影格輸出時間戳記的處理模式。
- write
完整時間戳記重寫,僅保留第一個輸出影格的開始時間。
copy
27.108.1 範例
- 未捨棄的影格保留與輸入音訊影格相同時間戳記。
silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
- 預設值為
write
。silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
- 以下範例顯示如何使用此濾鏡來啟動錄製,該錄製不包含在按下錄製按鈕和效能開始之間通常發生的延遲
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 個數位靜音樣本,並且在串流中的相同位置在所有聲道中偵測到數位靜音
silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
- 修剪從開頭到結尾遇到的每第 2 個靜音週期,其中每個靜音週期的音訊中有超過 1 秒的靜音
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 命令
與上述類似,但從每個修剪的週期中保留最多 0.5 秒的靜音
27.109 sofalizer
SOFAlizer 使用頭部相關轉換函數 (HRTF) 為使用者在耳機聆聽時創建環繞虛擬揚聲器(支援高達 9 聲道的音訊格式)。HRTF 儲存在 SOFA 檔案中(資料庫請參閱 http://www.sofacoustics.org/)。SOFAlizer 由奧地利科學院聲學研究所 (ARI) 開發。
若要啟用此濾波器的編譯,您需要使用 --enable-libmysofa
配置 FFmpeg。
此濾鏡接受以下選項
- sofa
設定用於渲染的 SOFA 檔案。
- 增益 (gain)
設定套用至音訊的增益。值以 dB 為單位。預設值為 0。
- rotation
設定虛擬揚聲器的旋轉角度,單位為度。預設值為 0。
- elevation
設定虛擬揚聲器的高度角,單位為度。預設值為 0。
- radius
設定揚聲器與聆聽者之間的距離,單位為公尺,適用於近場 HRTF。預設值為 1。
- type
設定處理類型。可以是 time 或 freq。time 是在時域中處理音訊,速度較慢。freq 是在頻域中處理音訊,速度較快。預設值為 freq。
- speakers
設定虛擬揚聲器的自訂位置。此選項的語法為:<CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。每個虛擬揚聲器都以簡短的聲道名稱描述,後接方位角和仰角,單位為度。每個虛擬揚聲器描述以 '|' 分隔。例如,若要覆寫前置左聲道和前置右聲道的位置,請使用:'speakers=FL 45 15|FR 345 15'。無法辨識的聲道名稱描述將被忽略。
- lfegain
設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。
- framesize
設定自訂幀大小,單位為樣本數。預設值為 1024。允許範圍為 1024 至 96000。僅當選項 ‘type’ 設定為 freq 時使用。
- normalize
是否應在匯入 SOFA 檔案時正規化所有 IR。預設為啟用。
- interpolate
如果精確位置不符,是否應使用相鄰 IR 來內插最近的 IR。預設為停用。
- minphase
在載入 SOFA 檔案時,將所有 IR 設為最小相位。預設為停用。
- anglestep
設定鄰近搜尋角度步長。僅當啟用 interpolate 選項時使用。
- radstep
設定鄰近搜尋半徑步長。僅當啟用 interpolate 選項時使用。
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
語音正規化器。
此濾波器會根據閾值擴展或壓縮音訊樣本的每個半週期(局部樣本集,全部高於或全部低於零,並介於兩個最近的過零點之間),使音訊在以下選項控制的條件下達到目標峰值。
此濾鏡接受以下選項
- 峰值 (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。
- 延遲
設定延遲時間,單位為毫秒,表示右聲道延遲左聲道和反之亦然的時間量。預設值為 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
此濾波器透過抑制兩個聲道共有的訊號,並將左聲道的訊號延遲到右聲道,反之亦然,從而增強立體聲效果,擴展立體聲效果。
此濾鏡接受以下選項
- 延遲
左聲道訊號延遲到右聲道和反之亦然的時間,單位為毫秒。預設值為 20 毫秒。
- 回饋
延遲訊號到右聲道和反之亦然的增益量。產生左聲道訊號在右聲道輸出中延遲的效果,反之亦然,從而產生擴展效果。預設值為 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) 手冊中的聲道配置章節,以了解所需的語法。
- chl_in
設定輸入聲道佈局。預設情況下,這是 stereo。
請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的聲道配置章節,以了解所需的語法。
- level_in
設定輸入音量位準。預設情況下,這是 1。
- level_out
設定輸出音量位準。預設情況下,這是 1。
- lfe
如果輸出聲道佈局具有 LFE 聲道輸出,則啟用它。預設情況下,這是啟用的。
- lfe_low
設定 LFE 低截止頻率。預設情況下,這是 128 Hz。
- lfe_high
設定 LFE 高截止頻率。預設情況下,這是 256 Hz。
- lfe_mode
設定 LFE 模式,可以是 add 或 sub。預設值為 add。在 add 模式下,LFE 聲道是從輸入音訊建立並添加到輸出。在 sub 模式下,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 tiltshelf
使用雙極 shelving 濾波器(響應類似於標準高傳真音響的音調控制)來增強或削減音訊的低頻,並削減或增強高頻。這也稱為 shelving 等化 (EQ)。
此濾鏡接受以下選項
- 增益 (gain), g
給出 0 Hz 的增益。其有用範圍約為 -20(大幅衰減)到 +20(大幅增強)。使用正增益時請注意削波。
- frequency, f
設定濾波器的中心頻率,因此可用於擴展或縮減要增強或削減的頻率範圍。預設值為
3000
Hz。- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
決定濾波器的 shelving 過渡有多陡峭。
- 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.115.1 命令
此濾波器支援某些選項,如指令。
27.116 treble, highshelf
使用雙極 shelving 濾波器(響應類似於標準高傳真音響的音調控制)來增強或削減音訊的高音(高頻)。這也稱為 shelving 等化 (EQ)。
此濾鏡接受以下選項
- 增益 (gain), g
給定在約 22 kHz 和奈奎斯特頻率中較低者的增益。其有用範圍約為 -20(大幅削減)到 +20(大幅增強)。使用正增益時請注意削波。
- frequency, f
設定濾波器的中心頻率,因此可用於擴展或縮減要增強或削減的頻率範圍。預設值為
3000
Hz。- width_type, t
設定指定濾波器頻寬的方法。
- h
Hz
- q
Q 因子
- o
octave
- s
slope
- k
kHz
- width, w
決定濾波器的 shelving 過渡有多陡峭。
- 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.116.1 命令
此濾波器支援以下指令
- frequency, f
變更高音頻率。指令語法為:「frequency」
- width_type, t
變更高音 width_type。指令語法為:「width_type」
- width, w
變更高音 width。指令語法為:「width」
- 增益 (gain), g
變更高音 gain。指令語法為:「gain」
- mix, m
變更高音 mix。指令語法為:「mix」
27.117 tremolo
正弦波振幅調變。
此濾鏡接受以下選項
- f
調變頻率,單位為赫茲。次諧波範圍(20 Hz 或更低)中的調變頻率將產生顫音效果。此濾波器也可用作環狀調變器,方法是指定高於 20 Hz 的調變頻率。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。
- d
調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。
27.118 vibrato
正弦波相位調變。
此濾鏡接受以下選項
- f
調變頻率,單位為赫茲。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。
- d
調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。
27.119 virtualbass
套用音訊虛擬低音濾波器。
此濾波器接受立體聲輸入,並產生具有 LFE (2.1) 聲道輸出的立體聲。新產生的 LFE 聲道具有增強的虛擬低音,最初從兩個立體聲聲道獲得。此濾波器輸出前左和前右聲道,與立體聲輸入中可用的聲道相同,且未經變更。
此濾鏡接受以下選項
- cutoff
設定虛擬低音截止頻率。預設值為 250 Hz。允許範圍從 100 到 500 Hz。
- strength(強度)
設定虛擬低音強度。允許範圍從 0.5 到 3。預設值為 3。
27.120 volume
調整輸入音訊音量。
它接受以下參數
- 音量 (volume)
設定音訊音量表達式。
輸出值會被削波至最大值。
輸出音訊音量由以下關係式給出
output_volume = volume * input_volume
volume 的預設值為 "1.0"。
- precision
此參數代表數學精度。
它決定了哪些輸入樣本格式將被允許,這會影響音量縮放的精度。
- fixed
8 位元定點;這將輸入樣本格式限制為 U8、S16 和 S32。
- float
32 位元浮點;這將輸入樣本格式限制為 FLT。(預設)
- double
64 位元浮點;這將輸入樣本格式限制為 DBL。
- replaygain
選擇在輸入影格中遇到 ReplayGain 側資料時的行為。
- drop
移除 ReplayGain 側資料,忽略其內容(預設)。
- ignore
忽略 ReplayGain 側資料,但將其保留在影格中。
- track
如果存在,則偏好音軌增益。
- album
如果存在,則偏好專輯增益。
- replaygain_preamp
要套用於選定的 replaygain 增益的預放大增益,單位為 dB。
replaygain_preamp 的預設值為 0.0。
- replaygain_noclip
透過限制套用的增益來防止削波。
replaygain_noclip 的預設值為 1。
- eval
設定何時評估音量表達式。
它接受以下值
- ‘once’
僅在濾波器初始化期間或在發送 ‘volume’ 指令時評估表達式一次
- ‘frame’
為每個輸入影格評估表達式
預設值為 ‘once’。
音量表達式可以包含以下參數。
- n
影格編號(從零開始)
- nb_channels
通道數量
- nb_consumed_samples
濾波器消耗的樣本數
- nb_samples
目前影格中的樣本數
- pos
檔案中原始影格位置;已棄用,請勿使用
- pts
影格 PTS
- sample_rate
取樣率
- startpts
串流開始時的 PTS
- startt
串流開始時的時間
- t
影格時間
- tb
時間戳記時基
- 音量 (volume)
上次設定的音量值
請注意,當 eval 設定為 ‘once’ 時,只有 sample_rate 和 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 volumedetect
偵測輸入視訊的音量。
此濾波器沒有參數。它僅支援 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
將用於提交影格的時間戳記的時基。它必須是浮點數或 numerator/denominator 形式。
- sample_rate
輸入音訊緩衝區的取樣率。
- sample_fmt
輸入音訊緩衝區的樣本格式。樣本格式名稱或其在 libavutil/samplefmt.h 中 enum AVSampleFormat 的對應整數表示。
- channel_layout(聲道佈局)
輸入音訊緩衝區的聲道佈局。來自 libavutil/channel_layout.c 中 channel_layout_map 的聲道佈局名稱,或其在 libavutil/channel_layout.h 中 AV_CH_LAYOUT_* 巨集的對應整數表示。
- channels
輸入音訊緩衝區的聲道數。如果同時指定 channels 和 channel_layout,則它們必須一致。
28.1.1 範例
abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
將指示來源接受 44100Hz 的平面 16 位元帶正負號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,且 "stereo" 聲道佈局對應於值 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。
exprs 中的每個表達式都可以包含以下常數
- n
已評估樣本的編號,從 0 開始
- t
評估樣本的時間,以秒為單位表示,從 0 開始
- s
取樣率
28.2.1 範例
- 產生靜音
aevalsrc=0
- 產生頻率為 440 Hz 的正弦波訊號,設定取樣率為 8000 Hz
aevalsrc="sin(440*2*PI*t):s=8000"
- 產生雙聲道訊號,明確指定聲道佈局(前置中央 + 後置中央)
aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
- 產生白雜訊
aevalsrc="-2+random(0)"
- 產生振幅調變訊號
aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
- 在 360 Hz 載波上產生 2.5 Hz 雙耳節拍
aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
28.3 afdelaysrc
產生分數延遲 FIR 係數。
產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。
此濾鏡接受以下選項
- delay, d
設定分數延遲。預設值為 0。
- 取樣率, r
設定取樣率,預設為 44100。
- nb_samples, n
設定每個影格的樣本數。預設值為 1024。
- taps, t
設定輸出音訊串流中的濾波器係數數量。預設值為 0。
- channel_layout, c
指定聲道佈局,可以是代表聲道佈局的字串。 channel_layout 的預設值為 "stereo"。
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
。- 取樣率, 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 設定的每個頻率點設定相位值。值的數量必須與頻率點的數量相同。值以空格分隔。
- 取樣率, r
設定取樣率,預設為 44100。
- nb_samples, n
設定每個影格的樣本數。預設值為 1024。
- win_func, w
設定視窗函數。預設值為 blackman。
28.6 anullsrc
空音訊來源,傳回未處理的音訊影格。它主要用作範本,並用於分析/偵錯工具中,或作為忽略輸入資料的濾波器的來源(例如 sox synth 濾波器)。
此來源接受以下選項
- channel_layout, cl
-
指定聲道佈局,可以是整數或代表聲道佈局的字串。 channel_layout 的預設值為 "stereo"。
查看 libavutil/channel_layout.c 中的 channel_layout_map 定義,以了解字串和聲道佈局值之間的對應關係。
- 取樣率, 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 函式庫合成語音發音。
若要啟用此濾波器的編譯,您需要使用 --enable-libflite
設定 FFmpeg。
請注意,2.0 之前的 flite 函式庫版本不是執行緒安全的。
此濾鏡接受以下選項
- list_voices
若設定為 1,則列出可用語音的名稱並立即退出。預設值為 0。
- nb_samples, n
設定每個影格的最大樣本數。預設值為 512。
- textfile
設定包含要說出的文字的檔案名稱。
- text
設定要說出的文字。
- voice, v
設定用於語音合成的語音。預設值為
kal
。另請參閱 list_voices 選項。
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
產生雜訊音訊訊號。
此濾鏡接受以下選項
- 取樣率, 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 濾波器一起使用,以濾波音訊訊號。
此濾鏡接受以下選項
- 取樣率, r
設定取樣率,預設為 44100。
- nb_samples, n
設定每個影格的樣本數。預設值為 1024。
- hp
設定高通頻率。預設值為 0。
- lp
設定低通頻率。預設值為 0。如果高通頻率低於低通頻率,且低通頻率高於 0,則濾波器將建立帶通濾波器係數,否則為帶拒濾波器係數。
- phase
設定濾波器相位響應。預設值為 50。允許範圍為 0 到 100。
- beta
設定 Kaiser 視窗 beta 值。
- att
設定阻帶衰減。預設值為 120dB,允許範圍為 40 到 180 dB。
- round
啟用捨入,預設為停用。
- hptaps
設定高通濾波器的抽頭數。
- lptaps
設定低通濾波器的抽頭數。
28.11 sine
產生由振幅為 1/8 的正弦波組成的音訊訊號。
音訊訊號是位元精確的。
此濾鏡接受以下選項
- frequency, f
設定載波頻率。預設值為 440 Hz。
- beep_factor, b
啟用每秒發出週期性嗶聲,頻率為 beep_factor 乘以載波頻率。預設值為 0,表示停用嗶聲。
- 取樣率, 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
- 產生一個遵循
1602,1601,1602,1601,1602
NTSC 模式的 1 kHz 正弦波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 編碼。因此,如果影格的大部分要以約 30 的 QP 編碼,則此區域將獲得約 24 的 QP(偏移約為 -1/10 * (51 - -12) = -6.3)。極端值 -1 表示無論影格其餘部分的處理方式如何,都應以最佳品質編碼此區域 - 也就是說,應以 -12 的 QP 編碼。
- 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 (Advanced Substation Alpha) 字幕檔案。
除了 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
並行。或者可以設定為s
串行。並行可能比串行更快,而反之則不然。並行將在第一個變化大於閾值時提前中止,而串行將在影格的另一側相等或低於閾值時繼續處理。
- 0s
- 1s
- 2s
設定第 1 個平面、第 2 個平面或第 3 個平面的 sigma 值。預設值為 32767。有效範圍為 0 到 32767。此選項控制大小定義的半徑中每個像素的權重。預設值表示每個像素都具有相同的權重。將此選項設定為 0 會有效地停用濾波。
30.6.1 命令
除了選項 s
之外,此濾波器還支援與選項相同的 指令。該指令接受與相應選項相同的語法。
30.7 avgblur
套用平均模糊濾波器。
此濾鏡接受以下選項
- sizeX
設定水平半徑大小。
- planes
設定要篩選的平面。預設情況下,所有平面都會被篩選。
- sizeY
設定垂直半徑大小,如果為零,則與
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
設定高斯函數的 sigma 值以計算空間權重。允許範圍為 0 到 512。預設值為 0.1。
- sigmaR
設定高斯函數的 sigma 值以計算範圍權重。允許範圍為 0 到 1。預設值為 0.1。
- planes
設定要篩選的平面。預設值為僅第一個。
30.10.1 命令
此濾鏡支援所有上述選項作為 命令。
30.11 bilateral_cuda
CUDA 加速雙邊濾波器,一種保留邊緣的濾波器。由於使用了 GPU 加速,此濾波器在數學上是精確的。為了獲得最佳輸出品質,請使用一對一色度子取樣,即 yuv444p 格式。
此濾鏡接受以下選項
- sigmaS
設定高斯函數的 sigma 值以計算空間權重,也稱為 sigma 空間。允許範圍為 0.1 到 512。預設值為 0.1。
- sigmaR
設定高斯函數的 sigma 值以計算顏色範圍權重,也稱為 sigma 顏色。允許範圍為 0.1 到 512。預設值為 0.1。
- window_size
設定雙邊函數的視窗大小,以確定要迴圈的鄰居數量。如果輸入的數字是偶數,則會自動加 1。允許範圍為 1 到 255。預設值為 1。
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
設定將圖片視為「黑色」的閾值。表示比率的最小值
nb_black_pixels / nb_pixels
圖片被視為黑色的比率。預設值為 0.98。
- pixel_black_th, pix_th
設定將像素視為「黑色」的閾值。
閾值表示像素被視為「黑色」的最大像素亮度值。提供的值根據以下方程式縮放
absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size
luma_range_size 和 luma_minimum_value 取決於輸入視訊格式,對於 YUV 全範圍格式,範圍為 [0-255],對於 YUV 非全範圍格式,範圍為 [16-235]。
預設值為 0.10。
以下範例將最大像素閾值設定為最小值,並且僅偵測 2 秒或更長時間的黑色間隔
blackdetect=d=2:pix_th=0.00
30.14 blackframe
偵測(幾乎)完全黑色的影格。可用於偵測章節過場或廣告。輸出線包含偵測到影格的影格編號、黑色百分比、檔案中的位置(如果已知)或 -1 以及以秒為單位的時間戳記。
為了顯示輸出線,您需要將日誌級別至少設定為 AV_LOG_INFO 值。
此濾波器匯出影格元資料 lavfi.blackframe.pblack
。該值表示圖片中低於閾值的像素百分比。
它接受以下參數
- amount
必須低於閾值的像素百分比;預設值為
98
。- threshold, thresh
像素值被視為黑色的閾值;預設值為
32
。
30.15 blend
將兩個視訊影格混合在一起。
blend
濾波器接收兩個輸入串流並輸出一個串流,第一個輸入是「頂部」圖層,第二個輸入是「底部」圖層。預設情況下,輸出會在最長輸入終止時終止。
tblend
(時間混合)濾波器從單個串流中接收兩個連續的影格,並輸出透過將新影格混合在舊影格之上而獲得的結果。
以下是可接受選項的描述。
- 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
濾鏡也支援 framesync 選項。
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 命令
此濾鏡支援與選項相同的 commands。
30.16 blockdetect
判斷影格的區塊效應,而不會改變輸入影格。
基於 Remco Muijs 和 Ihor Kirenko:「用於自適應視訊處理的無參考區塊效應測量」。2005 年第 13 屆歐洲訊號處理會議。
此濾鏡接受以下選項
- 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 連通性與低閾值選擇的「弱」邊緣像素連接。
low 和 high 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high。
low 的預設值為
20/255
,high 的預設值為50/255
。- radius
定義在邊緣像素周圍搜尋局部最大值的半徑。
- block_pct
僅針對最重要的區塊(以百分比表示)判斷模糊度。
- block_width
針對寬度為 block_width 的區塊判斷模糊度。如果設定為小於 1 的任何值,則不使用區塊,並且無論 block_height 為何,都會將整個影像視為一個區塊進行處理。
- block_height
針對高度為 block_height 的區塊判斷模糊度。如果設定為小於 1 的任何值,則不使用區塊,並且無論 block_width 為何,都會將整個影像視為一個區塊進行處理。
- planes
設定要篩選的平面。預設值為僅第一個。
30.17.1 範例
- 針對 80% 最重要的 32x32 區塊判斷模糊度
blurdetect=block_width=32:block_height=32:block_pct=80
30.18 bm3d
使用區塊匹配 3D 演算法對影格進行降噪。
此濾鏡接受以下選項。
- sigma
設定降噪強度。預設值為 1。允許範圍為 0 到 999.9。降噪演算法對 sigma 非常敏感,因此請根據來源調整。
- block
設定局部修補程式大小。這會設定 2D 中的尺寸。
- bstep
設定處理區塊的滑動步長。預設值為 4。允許範圍為 1 到 64。較小的值允許處理更多參考區塊,但速度較慢。
- group
設定第三維度的相似區塊最大數量。預設值為 1。當設定為 1 時,不會執行區塊匹配。較大的值允許在單一群組中使用更多區塊。允許範圍為 1 到 256。
- range
設定搜尋區塊匹配的半徑。預設值為 9。允許範圍為 1 到 INT32_MAX。
- mstep
設定區塊匹配的兩個搜尋位置之間的步長。預設值為 1。允許範圍為 1 到 64。較小的值速度較慢。
- thmse
設定區塊匹配的均方誤差閾值。有效範圍為 0 到 INT32_MAX。
- hdthr
設定 3D 轉換域中硬閾值處理的閾值參數。較大的值會導致頻域中更強的硬閾值濾波。
- estim
設定濾波估計模式。可以是
basic
或final
。預設值為basic
。- ref
如果啟用,濾鏡將使用第二個串流進行區塊匹配。對於 estim 選項的
basic
值,預設為停用,而如果 estim 的值為final
,則始終啟用。- planes
設定要濾波的平面。預設值為所有可用平面,但 Alpha 平面除外。
30.18.1 範例
- 使用 bm3d 進行基本濾波
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
- 與上述相同,但僅濾波亮度
bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
- 與上述相同,但使用兩種估計模式
split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
- 與上述相同,但改為使用 nlmeans 濾鏡進行預先濾波
split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
30.19 boxblur
將盒狀模糊演算法套用至輸入視訊。
它接受以下參數
- luma_radius, lr
- luma_power, lp
- chroma_radius, cr
- chroma_power, cp
- alpha_radius, ar
- alpha_power, ap
以下是可接受選項的描述。
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
設定用於模糊對應輸入平面的盒狀半徑(以像素為單位)的表達式。
半徑值必須是非負數,且對於亮度和平面的值不得大於表達式
min(w,h)/2
,對於色度平面則不得大於min(cw,ch)/2
。luma_radius 的預設值為 "2"。如果未指定,chroma_radius 和 alpha_radius 預設為針對 luma_radius 設定的對應值。
表達式可以包含以下常數
- w
- h
輸入寬度和高度(以像素為單位)。
- cw
- ch
輸入色度影像的寬度和高度(以像素為單位)。
- hsub
- vsub
水平和垂直色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
指定將盒狀模糊濾鏡套用至對應平面的次數。
luma_power 的預設值為 2。如果未指定,chroma_power 和 alpha_power 預設為針對 luma_power 設定的對應值。
值為 0 將停用效果。
30.19.1 範例
- 套用盒狀模糊濾鏡,亮度、色度和 Alpha 半徑設定為 2
boxblur=luma_radius=2:luma_power=1 boxblur=2:1
- 將亮度半徑設定為 2,Alpha 和色度半徑設定為 0
boxblur=2:1:cr=0:ar=0
- 將亮度和色度半徑設定為視訊尺寸的一部分
boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
30.20 bwdif
對輸入視訊進行去交錯處理("bwdif" 代表 "Bob Weaver Deinterlacing Filter")。
基於 yadif 的運動自適應去交錯處理,使用 w3fdif 和立方插值演算法。它接受以下參數
- mode
要採用的交錯模式。它接受以下其中一個值
- 0, send_frame
針對每個影格輸出一個影格。
- 1, send_field
針對每個場景輸出一個影格。
預設值為
send_field
。- parity
為輸入交錯視訊假設的圖像場景同位。它接受以下其中一個值
- 0, tff
假設頂場景優先。
- 1, bff
假設底場景優先。
- -1, auto
啟用自動偵測場景同位。
預設值為
auto
。如果交錯未知或解碼器未匯出此資訊,則將假設頂場景優先。- deint
指定要對哪些影格進行去交錯處理。接受以下其中一個值
- 0, all
對所有影格進行去交錯處理。
- 1, interlaced
僅對標記為交錯的影格進行去交錯處理。
預設值為
all
。
30.21 bwdif_cuda
使用 bwdif 演算法對輸入視訊進行去交錯處理,但以 CUDA 實作,使其可以作為 GPU 加速管線的一部分與 nvdec 和/或 nvenc 一起運作。
它接受以下參數
- mode
要採用的交錯模式。它接受以下其中一個值
- 0, send_frame
針對每個影格輸出一個影格。
- 1, send_field
針對每個場景輸出一個影格。
預設值為
send_field
。- parity
為輸入交錯視訊假設的圖像場景同位。它接受以下其中一個值
- 0, tff
假設頂場景優先。
- 1, bff
假設底場景優先。
- -1, auto
啟用自動偵測場景同位。
預設值為
auto
。如果交錯未知或解碼器未匯出此資訊,則將假設頂場景優先。- deint
指定要對哪些影格進行去交錯處理。接受以下其中一個值
- 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 命令
此濾鏡支援與選項相同的 commands。
30.24 chromahold
移除除特定顏色之外的所有顏色的所有色彩資訊。
此濾鏡接受以下選項
- color
不會以中性色度取代的顏色。
- similarity
與上述顏色的相似度百分比。0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
- blend
混合百分比。0.0 使像素完全灰階,或完全不灰階。較高的值會導致更多保留的顏色。
- yuv
表示傳遞的顏色已採用 YUV 而非 RGB。
啟用此功能後,文字顏色(如「綠色」或「紅色」)不再有意義。這可用於以十六進位數字傳遞精確的 YUV 值。
30.24.1 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.25 chromakey
YUV 色彩空間顏色/色度鍵控。
此濾鏡接受以下選項
- color
將被透明度取代的顏色。
- similarity
與關鍵顏色的相似度百分比。
0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
- blend
混合百分比。
0.0 使像素完全透明,或完全不透明。
較高的值會產生半透明像素,像素顏色越接近關鍵顏色,透明度越高。
- yuv
表示傳遞的顏色已採用 YUV 而非 RGB。
啟用此功能後,文字顏色(如「綠色」或「紅色」)不再有意義。這可用於以十六進位數字傳遞精確的 YUV 值。
30.25.1 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
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 色彩空間顏色/色度鍵控。
此濾鏡的工作方式與一般色度鍵濾鏡類似,但在 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 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
30.28 chromashift
水平和/或垂直移動色度像素。
此濾鏡接受以下選項
- cbh
設定水平移動藍色色度的量。
- cbv
設定垂直移動藍色色度的量。
- crh
設定水平移動紅色色度的量。
- crv
設定垂直移動紅色色度的量。
- edge
設定邊緣模式,可以是 smear(預設)或 warp。
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
修正 scope 上顯示的伽瑪值,預設為啟用。
- showwhite
在 CIE 圖上顯示白點,預設為停用。
- gamma
設定輸入伽瑪值。僅適用於 XYZ 輸入色彩空間。
- fill
以 CIE 顏色填滿。預設為啟用。
30.30 codecview
視覺化某些編碼器匯出的資訊。
某些編碼器可以使用側資料或其他方式透過影格匯出資訊。例如,某些基於 MPEG 的編碼器透過編碼器 flags2 選項中的 export_mvs 旗標匯出運動向量。
此濾波器接受以下選項
- block
使用亮度平面顯示區塊分割結構。
- mv
設定要視覺化的運動向量。
mv 的可用旗標為
- ‘pf’
P 影格的向前預測 MV
- ‘bf’
B 影格的向前預測 MV
- ‘bb’
B 影格的向後預測 MV
- qp
使用彩度平面顯示量化參數。
- mv_type, mvt
設定要視覺化的動態向量類型。除非 frame_type 選項另有指定,否則包含所有影格的動態向量。
mv_type 的可用旗標如下
- ‘fp’
向前預測動態向量
- ‘bp’
向後預測動態向量
- frame_type, ft
設定要視覺化動態向量的影格類型。
frame_type 的可用旗標如下
- ‘if’
幀內編碼影格 (I-frames)
- ‘pf’
預測影格 (P-frames)
- ‘bf’
雙向預測影格 (B-frames)
30.30.1 範例
- 使用
ffplay
視覺化所有影格的向前預測動態向量ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
- 使用
ffplay
視覺化 P 影格和 B 影格的多方向動態向量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
設定每個
rc
、gm
、by
選項值的權重。預設值為 0.0。允許範圍為 0.0 到 1.0。如果所有權重均為 0.0,則停用濾鏡。- 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
以外的任何值,則會分析每個影格,並使用衍生參數來過濾輸出影格。可能的值為
- ‘manual’
- ‘average’
- ‘minmax’
- ‘median’
預設值為
manual
。
30.33.1 命令
此濾鏡支援所有上述選項作為 命令。
30.34 colorchannelmixer
透過重新混合顏色通道來調整視訊輸入影格。
此濾鏡會藉由新增與相同像素的其他通道相關聯的值來修改顏色通道。例如,如果要修改的值為紅色,則輸出值將為
red=red*rr + blue*rb + green*rg + alpha*ra
此濾鏡接受以下選項
- rr
- rg
- rb
- ra
調整輸入紅色、綠色、藍色和 Alpha 通道對輸出紅色通道的貢獻。 rr 的預設值為
1
,rg、rb 和 ra 的預設值為0
。- gr
- gg
- gb
- ga
調整輸入紅色、綠色、藍色和 Alpha 通道對輸出綠色通道的貢獻。 gg 的預設值為
1
,gr、gb 和 ga 的預設值為0
。- br
- bg
- bb
- ba
調整輸入紅色、綠色、藍色和 Alpha 通道對輸出藍色通道的貢獻。 bb 的預設值為
1
,br、bg 和 ba 的預設值為0
。- ar
- ag
- ab
- aa
調整輸入紅色、綠色、藍色和 Alpha 通道對輸出 Alpha 通道的貢獻。 aa 的預設值為
1
,ar、ag 和 ab 的預設值為0
。選項的允許範圍為
[-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 colorize
在視訊串流上疊加純色。
此濾鏡接受以下選項
- 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 colorkey
RGB 色彩空間色彩去背。此濾鏡在 8 位元 RGB 格式影格上運作,方法是將每個像素的 Alpha 分量設定為 0,這些像素落在關鍵色的相似度半徑內。相似度半徑外的像素的 Alpha 值取決於混合選項的值。
此濾鏡接受以下選項
- color
設定 Alpha 將設定為 0(完全透明)的顏色。請參閱 ffmpeg-utils 手冊中的「Color」(色彩)章節。預設值為
black
。- similarity
設定從關鍵色開始的半徑,在此半徑內其他顏色也具有完全透明度。計算出的距離與關鍵色和像素色彩的 RGB 值之間 3D 空間中的單位分數距離有關。範圍為 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 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.37 colorhold
移除所有 RGB 顏色的所有色彩資訊,但特定顏色除外。
此濾鏡接受以下選項
- color
不會被中性灰取代的顏色。
- similarity
與上述顏色的相似度百分比。0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
- blend
混合百分比。0.0 使像素完全變為灰色。較高的值會產生更多保留的色彩。
30.37.1 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.38 colorlevels
使用色階調整視訊輸入影格。
此濾鏡接受以下選項
- 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 colormap
將自訂色彩對應套用至視訊串流。
此濾鏡需要三個輸入視訊串流。第一個串流是要過濾掉的視訊串流。第二個和第三個視訊串流指定來源顏色到目標顏色對應的色彩修補程式。
此濾鏡接受以下選項
- patch_size
設定來源和目標視訊串流修補程式大小(以像素為單位)。
- nb_patches
設定來源和目標視訊串流中使用的修補程式最大數量。預設值為額外視訊串流中可用的修補程式數量。允許的最大修補程式數量為
64
。- type
設定用於目標顏色的調整。可以是
relative
或absolute
。預設值為absolute
。- kernel
設定用於測量對應顏色之間色彩差異的核心。
接受的值為
- ‘euclidean’
- ‘weuclidean’
預設值為
euclidean
。
30.40 colormatrix
轉換色彩矩陣。
此濾鏡接受以下選項
- 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 colorspace
轉換色彩空間、傳輸特性或色彩原色。輸入視訊必須具有偶數大小。
此濾鏡接受以下選項
- 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’
適用於 10 位元內容的 BT.2020
- ‘bt2020-12’
適用於 12 位元內容的 BT.2020
- 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’
film
- ‘smpte431’
SMPTE-431
- ‘smpte432’
SMPTE-432
- ‘bt2020’
BT.2020
- ‘jedec-p22’
JEDEC P22 螢光粉
- range
指定輸出色彩範圍。
接受的值為
- ‘tv’
TV (受限) 範圍
- ‘mpeg’
MPEG (受限) 範圍
- ‘pc’
PC (完整) 範圍
- ‘jpeg’
JPEG (完整) 範圍
- format
指定輸出色彩格式。
接受的值為
- ‘yuv420p’
YUV 4:2:0 平面 8 位元
- ‘yuv420p10’
YUV 4:2:0 平面 10 位元
- ‘yuv420p12’
YUV 4:2:0 平面 12 位元
- ‘yuv422p’
YUV 4:2:2 平面 8 位元
- ‘yuv422p10’
YUV 4:2:2 平面 10 位元
- ‘yuv422p12’
YUV 4:2:2 平面 12 位元
- ‘yuv444p’
YUV 4:4:4 平面 8 位元
- ‘yuv444p10’
YUV 4:4:4 平面 10 位元
- ‘yuv444p12’
YUV 4:4:4 平面 12 位元
- fast
執行快速轉換,這會跳過伽瑪/原色校正。這會大幅減少 CPU 使用量,但在數學上不正確。若要取得與 colormatrix 濾鏡產生的輸出相容的輸出,請使用 fast=1。
- dither
指定遞色模式。
接受的值為
- ‘none’
無遞色
- ‘fsb’
Floyd-Steinberg 遞色
- wpadapt
白點適應模式。
接受的值為
- ‘bradford’
Bradford 白點適應
- ‘vonkries’
von Kries 白點適應
- ‘identity’
身分識別白點適應(亦即,無白點適應)
- iall
一次覆寫所有輸入屬性。與 all 接受的值相同。
- ispace
覆寫輸入色彩空間。與 space 接受的值相同。
- iprimaries
覆寫輸入色彩原色。與 primaries 接受的值相同。
- itrc
覆寫輸入傳輸特性。與 trc 接受的值相同。
- irange
覆寫輸入色彩範圍。與 range 接受的值相同。
此濾鏡會將傳輸特性、色彩空間和色彩原色轉換為指定的使用者值。如果未指定輸出值,則會根據 "all" 屬性設定預設值。如果也未指定該屬性,則濾鏡會記錄錯誤。輸出色彩範圍和格式預設為與輸入色彩範圍和格式相同的值。輸入傳輸特性、色彩空間、色彩原色和色彩範圍應在輸入資料上設定。如果缺少其中任何一項,則濾鏡會記錄錯誤,且不會進行轉換。
例如,若要將輸入轉換為 SMPTE-240M,請使用命令
colorspace=smpte240m
30.42 colorspace_cuda
colorspace 濾鏡的 CUDA 加速實作。
與軟體 colorspace 濾鏡相比,它絕非功能完整,且目前僅支援 jpeg/完整範圍和 mpeg/受限範圍之間的色彩範圍轉換。
此濾鏡接受以下選項
- range
指定輸出色彩範圍。
接受的值為
- ‘tv’
TV (受限) 範圍
- ‘mpeg’
MPEG (受限) 範圍
- ‘pc’
PC (完整) 範圍
- ‘jpeg’
JPEG (完整) 範圍
30.43 colortemperature
調整視訊中的色溫,以模擬環境色溫的變化。
此濾鏡接受以下選項
- temperature
以克耳文為單位設定溫度。允許範圍為 1000 到 40000。預設值為 6500 K。
- mix
設定與過濾後輸出的混合。允許範圍為 0 到 1。預設值為 1。
- pl
設定保留亮度的量。允許範圍為 0 到 1。預設值為 0。
30.43.1 命令
此濾鏡支援與選項相同的 commands。
30.44 convolution
套用 3x3、5x5、7x7 或水平/垂直(最多 49 個元素)的迴旋積。
此濾鏡接受以下選項
- 0m
- 1m
- 2m
- 3m
為每個平面設定矩陣。矩陣是 square 模式中 9、25 或 49 個帶正負號整數的序列,以及 row 模式中 1 到 49 個奇數個帶正負號整數的序列。
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
為每個平面的計算值設定乘數。如果未設定或為 0,則將為 1/所有矩陣元素總和。
- 0bias
- 1bias
- 2bias
- 3bias
為每個平面設定偏移。此值會新增至乘法結果。適用於使整體影像更亮或更暗。預設值為 0.0。
- 0mode
- 1mode
- 2mode
- 3mode
為每個平面設定矩陣模式。可以是 square、row 或 column。預設值為 square。
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 convolve
使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 迴旋積。
此濾鏡接受以下選項
- planes
設定要處理的平面。
- impulse
設定將處理哪個脈衝視訊影格,可以是 first 或 all。預設值為 all。
convolve
濾鏡也支援 framesync 選項。
30.46 copy
將輸入視訊來源不變地複製到輸出。這主要用於測試目的。
30.47 coreimage
在 OSX 上使用 Apple 的 CoreImage API 在 GPU 上進行視訊過濾。
硬體加速基於 OpenGL 環境。通常,這表示它由視訊硬體處理。但是,存在基於軟體的 OpenGL 實作,這表示不保證硬體處理。這取決於各自的 OSX。
Apple 提供了許多濾鏡和影像產生器,它們具有各種各樣的選項。濾鏡必須依其名稱及其選項來參照。
coreimage 濾鏡接受以下選項
- list_filters
列出所有可用的濾鏡和產生器,以及它們各自的選項,以及可能的最小值和最大值,以及預設值。
list_filters=true
- filter
依據濾鏡各自的名稱和選項指定所有濾鏡。使用 list_filters 來決定所有有效的濾鏡名稱和選項。數值選項由浮點數值指定,並且會自動箝制在其各自的值範圍內。向量和顏色選項必須由空格分隔的浮點數值列表指定。必須進行字元跳脫。可以使用特殊的選項名稱
default
來使用濾鏡的預設選項。必須指定
default
或至少一個濾鏡選項。所有省略的選項都將使用其預設值。濾鏡字串的語法如下filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
- output_rect
指定一個矩形,濾鏡鏈的輸出將複製到輸入圖像中。它由空格分隔的浮點數值列表給出
output_rect=x\ y\ width\ height
如果未給定,則輸出矩形等於輸入圖像的尺寸。輸出矩形會自動在輸入圖像的邊界處裁剪。每個分量都可以使用負值。
output_rect=25\ 25\ 100\ 100
可以鏈接多個濾鏡以進行連續處理,而無需 GPU-HOST 傳輸,從而可以快速處理複雜的濾鏡鏈。目前,僅支援具有零個(產生器)或恰好一個(濾鏡)輸入圖像和一個輸出圖像的濾鏡。此外,轉換濾鏡尚未能如預期般使用。
某些濾鏡會根據各自的濾鏡核心產生具有額外填充的輸出圖像。填充會自動移除,以確保濾鏡輸出與輸入圖像具有相同的大小。
對於圖像產生器,輸出圖像的大小取決於濾鏡鏈先前輸出的圖像或整個濾鏡鏈的輸入圖像(以較前者為準)。產生器不使用此圖像的像素資訊來產生其輸出。但是,產生的輸出會混合到此圖像上,導致部分或完全覆蓋輸出圖像。
可以使用 coreimagesrc 視訊來源來產生直接饋入濾鏡鏈的輸入圖像。透過使用它,不需要由另一個視訊來源或輸入視訊提供輸入圖像。
30.47.1 範例
- 列出所有可用的濾鏡
coreimage=list_filters=true
- 使用預設選項的 CIBoxBlur 濾鏡來模糊圖像
coreimage=filter=CIBoxBlur@default
- 使用一個濾鏡鏈,其中包含預設值的 CISepiaTone 和中心位於 100x100 且半徑為 50 像素的 CIVignetteEffect
coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
- 使用 nullsrc 和 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 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’
透過內插周圍的像素來覆蓋它
預設值為 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。
out_w、out_h、x、y 參數是包含以下常數的表達式
- x
- y
x 和 y 的計算值。它們會針對每個新影格進行評估。
- in_w
- in_h
輸入寬度和高度。
- iw
- ih
這些與 in_w 和 in_h 相同。
- out_w
- out_h
輸出(裁剪後)寬度和高度。
- ow
- oh
這些與 out_w 和 out_h 相同。
- a
與 iw / ih 相同
- sar
輸入樣本縱橫比
- dar
輸入顯示縱橫比,與 (iw / ih) * sar 相同
- hsub
- vsub
水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。
- n
輸入影格的編號,從 0 開始。
- pos
輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用
- t
以秒為單位的時間戳記。如果輸入時間戳記未知,則為 NAN。
out_w 的表達式可能取決於 out_h 的值,而 out_h 的表達式可能取決於 out_w,但它們不能取決於 x 和 y,因為 x 和 y 是在 out_w 和 out_h 之後評估的。
x 和 y 參數指定輸出(未裁剪)區域的左上角位置的表達式。它們會針對每個影格進行評估。如果評估值無效,則會近似為最接近的有效值。
x 的表達式可能取決於 y,而 y 的表達式可能取決於 x。
30.50.1 範例
- 以位置 (12,34) 裁剪大小為 100x100 的區域。
crop=100:100:12:34
使用具名選項,上述範例變為
crop=w=100:h=100:x=12:y=34
- 裁剪大小為 100x100 的中央輸入區域
crop=100:100
- 裁剪大小為輸入視訊 2/3 的中央輸入區域
crop=2/3*in_w:2/3*in_h
- 裁剪輸入視訊中央正方形
crop=out_w=in_h crop=in_h
- 劃定矩形,其左上角放置在位置 100:100,右下角對應於輸入圖像的右下角。
crop=in_w-100:in_h-100:100:100
- 從左右邊界裁剪 10 個像素,從上下邊界裁剪 20 個像素
crop=in_w-2*10:in_h-2*20
- 僅保留輸入圖像的右下四分之一
crop=in_w/2:in_h/2:in_w/2:in_h/2
- 裁剪高度以獲得希臘和諧比例
crop=in_w:1/PHI*in_w
- 套用顫抖效果
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
- 套用取決於時間戳記的不穩定攝影機效果
crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
- 設定取決於 y 值的 x
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
30.50.2 命令
此濾波器支援以下指令
- w, out_w
- h, out_h
- x
- y
設定輸出視訊的寬度/高度以及輸入視訊中的水平/垂直位置。此命令接受對應選項的相同語法。
如果指定的表達式無效,則會保持其目前的值。
30.51 cropdetect
自動偵測裁剪大小。
它會計算必要的裁剪參數,並透過日誌系統印出建議的參數。偵測到的尺寸對應於輸入視訊中根據 mode 的非黑色或視訊區域。
它接受以下參數
- mode
根據 mode,裁剪偵測基於周圍像素的純黑色值,或基於運動向量和邊緣像素的組合。
- ‘black’
偵測播放視訊周圍的黑色像素。如需精細控制,請使用選項 limit。
- ‘mvedges’
透過視訊內部的運動向量和掃描通常形成播放視訊邊界的邊緣像素來偵測播放視訊。
- limit
設定較高的黑色值閾值,可以選擇從無 (0) 到全部(對於基於 8 位元的格式為 255)指定。強度值大於設定值則被視為非黑色。預設值為 24。您也可以指定介於 0.0 和 1.0 之間的值,該值將根據像素格式的位元深度進行縮放。
- round
寬度/高度應可被整除的值。預設值為 16。偏移量會自動調整以使視訊居中。使用 2 可以僅獲得偶數尺寸(4:2:2 視訊需要)。編碼為大多數視訊編解碼器時,16 是最佳選擇。
- skip
設定要跳過的初始影格數。預設值為 2。範圍為 0 到 INT_MAX。
- reset_count, reset
設定計數器,該計數器決定在多少影格之後,cropdetect 將重置先前偵測到的最大視訊區域,並重新開始偵測當前最佳的裁剪區域。預設值為 0。
當頻道標誌扭曲視訊區域時,這可能很有用。0 表示「永不重置」,並傳回播放期間遇到的最大區域。
- mv_threshold
設定以像素單位表示的運動作為運動偵測的閾值。預設值為 8。
- low
- high
設定 Canny 邊緣偵測演算法使用的低和高閾值。
高閾值選擇「強」邊緣像素,然後透過 8 連通性與低閾值選擇的「弱」邊緣像素連接。
low 和 high 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high。
low 的預設值為
5/255
,而 high 的預設值為15/255
。
30.51.1 範例
- 尋找被黑色邊框包圍的視訊區域
ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
- 尋找嵌入式視訊區域,預先產生運動向量
ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
- 尋找嵌入式視訊區域,使用來自解碼器的運動向量
ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
30.51.2 命令
此濾波器支援以下指令
- limit
此命令接受對應選項的相同語法。如果指定的表達式無效,則會保持其目前值。
30.52 cue
延遲視訊濾鏡處理,直到給定的掛鐘時間戳記。濾鏡首先傳遞 preroll 量的影格,然後緩衝最多 buffer 量的影格並等待提示。到達提示後,它會轉發緩衝的影格以及隨後在其輸入中進入的任何影格。
此濾鏡可用於同步多個 ffmpeg 程序的輸出,以用於即時輸出裝置,例如 decklink。透過將延遲放在濾鏡鏈中並預先緩衝影格,程序可以在到達目標掛鐘時間戳記後幾乎立即將資料傳遞到輸出。
無法保證完美的影格準確度,但結果對於某些用例來說已足夠好。
- cue
以微秒為單位的 UNIX 時間戳記表示的提示時間戳記。預設值為 0。
- preroll
要作為預先滾動傳遞的內容持續時間,以秒為單位表示。預設值為 0。
- buffer
在等待提示之前要緩衝的內容最大持續時間,以秒為單位表示。預設值為 0。
30.53 curves
使用曲線套用色彩調整。
此濾鏡類似於 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 命令
此濾鏡支援與選項相同的 commands。
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'
- 使用
ffmpeg
和gnuplot
查看cross_process
設定檔的曲線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 datascope
視訊資料分析濾鏡。
此濾鏡顯示部分視訊的十六進制像素值。
此濾鏡接受以下選項
- size, s
設定輸出視訊大小。
- x
設定從何處選取像素的 x 偏移量。
- y
設定從何處選取像素的 y 偏移量。
- mode
設定 scope 模式,可以是下列其中一種
- ‘mono’
在黑色背景上用白色繪製十六進制像素值。
- ‘color’
在黑色背景上用輸入視訊像素顏色繪製十六進制像素值。
- ‘color2’
在從輸入視訊中選取的彩色背景上繪製十六進制像素值,文字顏色會以使其始終可見的方式選取。
- axis
在視訊的左側和頂部繪製行號和列號。
- opacity
設定背景不透明度。
- format
設定顯示數字格式。可以是
hex
或dec
。預設值為hex
。- components
設定要顯示的像素組件。預設情況下,會顯示所有像素組件。
30.54.1 命令
此濾鏡支援與選項相同的 指令,但不包括 size
選項。
30.55 dblur
套用方向模糊濾鏡。
此濾鏡接受以下選項
- angle
設定方向模糊的角度。預設值為
45
。- radius
設定方向模糊的半徑。預設值為
5
。- planes
設定要篩選的平面。預設情況下,所有平面都會被篩選。
30.55.1 命令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.56 dctdnoiz
使用 2D DCT(頻域濾波)對影格進行降噪。
此濾鏡並非設計用於即時處理。
此濾鏡接受以下選項
- sigma, s
設定雜訊 sigma 常數。
此 sigma 定義了
3 * sigma
的硬閾值;絕對值低於此閾值的每個 DCT 係數都將被捨棄。如果您需要更進階的濾波,請參閱 expr。
預設值為
0
。- overlap
設定每個區塊的重疊像素數。由於濾鏡可能速度較慢,您可能會想要降低此值,但代價是濾鏡效果較差,並且有產生各種瑕疵的風險。
如果重疊值不允許處理整個輸入寬度或高度,將會顯示警告,並且相應的邊界將不會被降噪。
預設值為 blocksize-1,這是最佳設定。
- expr, e
設定係數因子表達式。
對於 DCT 區塊的每個係數,此表達式將被評估為係數的乘數值。
如果設定了此選項,則會忽略 sigma 選項。
係數的絕對值可以透過 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 deband
從輸入視訊中移除條帶狀瑕疵。其運作方式是將條帶狀像素替換為參考像素的平均值。
此濾鏡接受以下選項
- 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 deblock
從輸入視訊中移除區塊狀瑕疵。
此濾鏡接受以下選項
- filter
設定濾鏡類型,可以是 weak 或 strong。預設值為 strong。這控制了要套用哪種類型的去區塊效應。
- block
設定區塊大小,允許範圍為 4 到 512。預設值為 8。
- alpha
- beta
- gamma
- delta
設定區塊檢測閾值。允許範圍為 0 到 1。預設值為:alpha 為 0.098,其餘選項為 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 decimate
以固定間隔捨棄重複影格。
此濾鏡接受以下選項
- cycle
設定將捨棄一個影格的影格數。將此值設定為 N 表示每批 N 個影格中將捨棄一個影格。預設值為
5
。- dupthresh
設定重複檢測的閾值。如果影格的差異度量小於或等於此值,則宣告為重複。預設值為
1.1
- scthresh
設定場景變更閾值。預設值為
15
。- blockx
- blocky
設定度量計算期間使用的 x 軸和 y 軸區塊的大小。較大的區塊可提供更好的雜訊抑制,但也使小動作的檢測效果變差。必須是 2 的冪。預設值為
32
。- ppsrc
將主要輸入標記為預先處理的輸入,並啟動乾淨的來源輸入串流。這允許使用各種濾鏡對輸入進行預先處理,以幫助度量計算,同時保持影格選擇的無損。當設定為
1
時,第一個串流用於預先處理的輸入,第二個串流是乾淨的來源,從中選擇保留的影格。預設值為0
。- chroma
設定是否在度量計算中考慮色度。預設值為
1
。- mixed
設定輸入是否僅部分包含要抽取的內容。預設值為
false
。如果啟用,視訊輸出串流將為可變影格率。
30.60 deconvolve
使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 反褶積。
此濾鏡接受以下選項
- planes
設定要處理的平面。
- impulse
設定將處理哪個脈衝視訊影格,可以是 first 或 all。預設值為 all。
- noise
設定在進行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者如果卷積之前的串流有雜訊時,此值很有用。
deconvolve
濾鏡也支援 framesync 選項。
30.61 dedot
減少視訊中的交叉亮度(點爬)和交叉色彩(彩虹)。
它接受以下選項
- 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’
如果原始內容是從 24 到 30 fps 的電視電影(膠片到 NTSC)。
- ‘5’
如果原始內容是從 25 到 30 fps 的電視電影(PAL 到 NTSC)。
- ‘20’
如果是兩者的混合。
預設值為 ‘4’。
30.65 delogo
透過簡單地插值周圍的像素來抑制電視台標誌。只需設定一個覆蓋標誌的矩形,然後觀看它消失(有時甚至會出現更難看的東西 - 結果可能因情況而異)。
它接受以下參數
- x
- y
指定標誌的左上角座標。它們必須被指定。
- w
- h
指定要清除的標誌的寬度和高度。它們必須被指定。
- 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 for C 函式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用
--enable-libtensorflow
配置 FFmpeg
- model
設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow 只能載入其格式的檔案。
要獲得完整功能(例如異步執行),請使用 dnn_processing 濾鏡。
30.67 deshake
嘗試修復水平和/或垂直偏移中的微小變化。此濾鏡有助於消除手持相機、碰撞三腳架、在車輛上移動等造成的相機震動。
此濾鏡接受以下選項
- x
- y
- w
- h
指定一個矩形區域,以限制運動向量的搜尋範圍。如果需要,可以將運動向量的搜尋限制在影格的矩形區域內,該矩形區域由其左上角、寬度和高度定義。這些參數的含義與 drawbox 濾鏡相同,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
設定要去除剩餘溢色的程度。
- 紅色
控制溢色區域中紅色的量。
- 綠色
控制溢色區域中綠色的量。綠幕應為 -1。
- 藍色
控制溢色區域中藍色的量。藍幕應為 -1。
- brightness
控制溢色區域的亮度,同時保留顏色。
- alpha
從產生的溢色圖修改 Alpha 值。
30.68.1 命令
此濾鏡支援所有上述選項作為 命令。
30.69 detelecine
套用電視電影操作的精確反向操作。它需要使用 pattern 選項指定的預定義模式,該模式必須與傳遞給電視電影濾鏡的模式相同。
此濾波器接受以下選項
- 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 影片尺寸的 rgb 輸入添加波紋效果
ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
- 為 hd720 影片尺寸的 rgb 輸入添加波動效果
ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
30.72 dnn_classify
使用基於邊界框的深度神經網路進行分類。
此濾鏡接受以下選項
- dnn_backend
指定用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,將會加入 tensorflow 後端。
- model
設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。
- 輸入
設定 dnn 網路的輸入名稱。
- 輸出
設定 dnn 網路的輸出名稱。
- 信心度
設定信心度閾值(預設值:0.5)。
- 標籤
設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,尾隨空格和空行將被跳過。第一行是標籤 ID 0 的名稱,第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。
- 後端配置
設定要傳遞到後端的配置
對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 來取得您系統的配置。
30.73 dnn_detect
使用深度神經網路進行物件偵測。
此濾鏡接受以下選項
- dnn_backend
指定用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,將會加入 tensorflow 後端。
- model
設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。
- 輸入
設定 dnn 網路的輸入名稱。
- 輸出
設定 dnn 網路的輸出名稱。
- 信心度
設定信心度閾值(預設值:0.5)。
- 標籤
設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,尾隨空格和空行將被跳過。第一行是標籤 ID 0 的名稱(通常是 'background'),第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。
- 後端配置
設定要傳遞到後端的配置。若要使用非同步執行,請設定 async(預設值:設定)。如果後端不支援非同步,則回退到同步執行。
30.74 dnn_processing
使用深度神經網路進行影像處理。它與另一個濾鏡協同工作,該濾鏡將影格的像素格式轉換為 dnn 網路所需格式。
此濾鏡接受以下選項
- dnn_backend
指定用於模型載入和執行的 DNN 後端。此選項接受以下值
- ‘tensorflow’
TensorFlow 後端。要啟用此後端,您需要安裝 TensorFlow for C 函式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用
--enable-libtensorflow
配置 FFmpeg- ‘openvino’
OpenVINO 後端。若要啟用此後端,您需要建置並安裝 OpenVINO for C 函式庫(請參閱 https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md)並使用
--enable-libopenvino
配置 FFmpeg(如果標頭檔和函式庫未安裝到系統路徑中,可能需要 –extra-cflags=-I... –extra-ldflags=-L...)。- ‘torch’
Libtorch 後端。若要啟用此後端,您需要建置並安裝 Libtroch for C++ 函式庫。請下載 cxx11 ABI 版本(請參閱 https://pytorch.dev.org.tw/get-started/locally)並使用
--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/
配置 FFmpeg。
- model
設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 和 Libtorch 後端只能載入其格式的檔案。
- 輸入
設定 dnn 網路的輸入名稱。
- 輸出
設定 dnn 網路的輸出名稱。
- 後端配置
設定要傳遞到後端的配置。若要使用非同步執行,請設定 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 (支援平面 YUV 格式) 影格的 Y 通道(請參閱 sr 濾鏡)
./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 (支援平面 YUV 格式) 格式的 Y 通道(請參閱 sr 濾鏡),這會更改影格大小,請使用 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 drawbox
在輸入影像上繪製彩色方框。
它接受以下參數
- x
- y
指定方框左上角座標的表達式。預設值為 0。
- width, w
- 高度、h
指定方框寬度和高度的表達式;如果為 0,則解釋為輸入寬度和高度。預設值為 0。
- 顏色、c
指定要繪製的方框顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。如果使用特殊值
invert
,則方框邊緣顏色與亮度反轉的影片相同。- 粗細、t
設定方框邊緣粗細的表達式。值為
fill
將建立一個填滿的方框。預設值為3
。請參閱下方接受的常數列表。
- 取代
如果輸入具有 alpha 通道,則適用。值為
1
時,繪製方框的像素將覆寫影片的顏色和 alpha 像素。預設值為0
,這會將方框合成到輸入上,保持影片的 alpha 通道完整。
參數 x、y、w 和 h 以及 t 是包含以下常數的表達式
- dar
輸入顯示長寬比,與 (w / h) * sar 相同。
- hsub
- vsub
水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。
- in_h、ih
- in_w、iw
輸入寬度和高度。
- sar
輸入樣本長寬比。
- x
- y
方框繪製位置的 x 和 y 偏移座標。
- w
- h
繪製方框的寬度和高度。
- box_source
如果您想使用側資料偵測邊界框中的方框資料,則可以將方框來源設定為 side_data_detection_bboxes。
如果設定了 box_source,則會忽略 x、y、width 和 height,並且仍然使用側資料偵測邊界框中的方框資料。因此,如果您不確定方框來源,請不要使用此參數。
- t
繪製方框的粗細。
這些常數允許 x、y、w、h 和 t 表達式互相引用,因此您可以例如指定
y=x/dar
或h=w/dar
。
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 drawgraph
使用輸入影片元資料繪製圖表。
它接受以下參數
- m1
設定第一個影格元資料鍵,圖表將使用此鍵的元資料值來繪製。
- fg1
設定第一個前景顏色表達式。
- m2
設定第二個影格元資料鍵,圖表將使用此鍵的元資料值來繪製。
- fg2
設定第二個前景顏色表達式。
- m3
設定第三個影格元資料鍵,圖表將使用此鍵的元資料值來繪製。
- fg3
設定第三個前景顏色表達式。
- m4
設定第四個影格元資料鍵,圖表將使用此鍵的元資料值來繪製。
- fg4
設定第四個前景顏色表達式。
- min
設定元資料值的最小值。
- max
設定元資料值的最大值。
- bg
設定圖表背景顏色。預設值為白色。
- mode
設定圖表模式。
模式的可用值為
- ‘bar’
- ‘dot’
- ‘line’
預設值為
line
。- 滑動
設定滑動模式。
滑動的可用值為
- ‘frame’
到達右邊界時繪製新影格。
- ‘replace’
用新的列取代舊的列。
- ‘scroll’
從右向左滾動。
- ‘rscroll’
從左向右滾動。
- ‘picture’
繪製單張圖片。
預設值為
frame
。- size
設定圖表影片的大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Video size" 章節。預設值為
900x256
。- 幀率、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 drawgrid
在輸入影像上繪製網格。
它接受以下參數
- x
- y
指定網格交點的某些點座標的表達式(用於配置偏移)。兩者預設值均為 0。
- width, w
- 高度、h
指定網格單元格寬度和高度的表達式,如果為 0,則分別解釋為輸入寬度和高度減去
thickness
,因此影像會被框住。預設值為 0。- 顏色、c
指定網格的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。如果使用特殊值
invert
,則網格顏色與亮度反轉的影片相同。- 粗細、t
設定網格線粗細的表達式。預設值為
1
。請參閱下方接受的常數列表。
- 取代
如果輸入具有 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 drawtext
使用 libfreetype 函式庫在影片頂部繪製文字字串或來自指定檔案的文字。
若要啟用此濾鏡的編譯,您需要使用 --enable-libfreetype
和 --enable-libharfbuzz
配置 FFmpeg。若要啟用預設字型回退和 font 選項,您需要使用 --enable-libfontconfig
配置 FFmpeg。若要啟用 text_shaping 選項,您需要使用 --enable-libfribidi
配置 FFmpeg。
30.78.1 語法
它接受以下參數
- 方框
用於使用背景顏色在文字周圍繪製方框。值必須為 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"。
-
- boxcolor
用於在文字周圍繪製方框的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。
boxcolor 的預設值為 "white"。
- line_spacing
設定行距(以像素為單位)。 line_spacing 的預設值為 0。
- text_align
設定文字相對於方框邊界的垂直和水平對齊方式。該值是標誌的組合,一個用於垂直對齊(T=頂部、M=中間、B=底部),另一個用於水平對齊(L=左側、C=中心、R=右側)。請注意,僅在左側水平對齊的情況下才支援 Tab 字元。
- y_align
指定 y 值所指的內容。可能的值為
-
text
第一行文字的最高字形的頂部放置在 y 處 -
baseline
第一行文字的基線放置在 y 處 -
font
第一行文字的基線放置在 y 處,再加上字型度量中定義的上升高度(以像素為單位)
為了向後相容性,y_align 的預設值為 "text"。
-
- borderw
設定要使用 bordercolor 在文字周圍繪製的邊框寬度。 borderw 的預設值為 0。
- bordercolor
設定用於在文字周圍繪製邊框的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。
bordercolor 的預設值為 "black"。
- expansion
選擇如何展開 text。可以是
none
、strftime
(已棄用)或normal
(預設)。請參閱下方的 文字展開 章節以了解詳細資訊。- basetime
設定計數的開始時間。值以微秒為單位。僅在已棄用的
strftime
展開模式中適用。若要在正常展開模式中模擬,請使用pts
函數,並將開始時間(以秒為單位)作為第二個參數提供。- fix_bounds
如果為 true,則檢查並修正文字座標以避免剪裁。
- fontcolor
用於繪製字型的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。
fontcolor 的預設值為 "black"。
- 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 支援的標誌,並且是以下值的組合
- default
- no_scale
- no_hinting
- render
- no_bitmap
- vertical_layout
- force_autohint
- crop_bitmap
- pedantic
- ignore_global_advance_width
- no_recurse
- ignore_transform
- monochrome
- linear_design
- no_autohint
預設值為 "default"。
如需更多資訊,請參閱 FT_LOAD_* libfreetype 標誌的文件。
- shadowcolor
用於在繪製文字後方繪製陰影的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。
shadowcolor 的預設值為 "black"。
- boxw
設定要繪製在文字周圍的方框寬度。 boxw 的預設值會自動計算以符合文字寬度
- boxh
設定要繪製在文字周圍的方框高度。 boxh 的預設值會自動計算以符合文字高度
- shadowx
- shadowy
文字陰影位置相對於文字位置的 x 和 y 偏移量。它們可以是正值或負值。兩者的預設值皆為 "0"。
- start_number
n/frame_num 變數的起始影格編號。預設值為 "0"。
- tabsize
用於呈現 Tab 字元的空格數量大小。預設值為 4。
- timecode
設定初始時間碼表示方式,格式為 "hh:mm:ss[:;.]ff"。可搭配或不搭配文字參數使用。timecode_rate 選項必須指定。
- timecode_rate, rate, r
設定時間碼影格速率 (僅限時間碼)。數值將四捨五入至最接近的整數。最小值為 "1"。影格速率 30 和 60 支援 Drop-frame 時間碼。
- 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
對於所有渲染的字形,從基準線到用於放置字形輪廓點的最高/上網格座標的最大距離。由於網格的方向 Y 軸向上,因此為正值。
- max_glyph_d, descent
對於所有渲染的字形,從基準線到用於放置字形輪廓點的最低網格座標的最大距離。由於網格的方向 Y 軸向上,因此為負值。
- max_glyph_h
最大字形高度,即渲染文字中包含的所有字形的最大高度,相當於 ascent - descent。
- max_glyph_w
最大字形寬度,即渲染文字中包含的所有字形的最大寬度
- font_a
字體度量中定義的上升尺寸
- font_d
字體度量中定義的下降尺寸
- top_a
第一行文字字形的最大上升部
- bottom_d
最後一行文字字形的最大下降部
- n
輸入影格編號,從 0 開始
- rand(min, max)
傳回介於 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 選項的值、作為篩選器圖形描述中的篩選器引數,甚至可能為了 shell 進行逸出,最多可達四層逸出;使用帶有 textfile 選項的文字檔可以避免這些問題。
以下函數可用
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
列印的。在導致 drawtext 篩選器的篩選器中產生的字串元數據也可用。
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'
帶有 sendcmd 的完整篩選器調用如下所示
sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
如果無法解析或應用整個引數作為有效值,則篩選器將繼續使用其現有參數。
以下選項也作為 命令 支援
- x
- y
- alpha
- fontsize
- fontcolor
- boxcolor
- bordercolor
- shadowcolor
- 方框
- 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'"
- 使用大小為 24 的 FreeSerif 字體在 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'
- 繪製 "Test Text",字體大小取決於視訊的高度。
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 edgedetect
偵測並繪製邊緣。篩選器使用 Canny 邊緣偵測演算法。
此濾鏡接受以下選項
- low
- high
設定 Canny 邊緣偵測演算法使用的低和高閾值。
高閾值選擇「強」邊緣像素,然後透過 8 連通性與低閾值選擇的「弱」邊緣像素連接。
low 和 high 閾值必須在 [0,1] 範圍內選擇,且 low 應小於或等於 high。
low 的預設值為
20/255
,high 的預設值為50/255
。- mode
定義繪圖模式。
- ‘wires’
在黑色背景上繪製白色/灰色線條。
- ‘colormix’
混合顏色以創建繪畫/卡通效果。
- ‘canny’
對所有選定的平面應用 Canny 邊緣偵測器。
預設值為 wires。
- planes
選擇要篩選的平面。預設情況下,所有可用的平面都會被篩選。
30.79.1 範例
- 具有自訂遲滯閾值標準邊緣偵測
edgedetect=low=0.1:high=0.4
- 無閾值繪畫效果
edgedetect=mode=colormix:high=0
30.80 elbg
使用 ELBG (Enhanced 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 entropy
測量視訊影格顏色通道直方圖中的灰階熵。
它接受以下參數
- mode
可以是 normal 或 diff。預設值為 normal。
diff 模式測量直方圖增量值 (相鄰直方圖值之間的絕對差值) 的熵。
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 指令
此濾鏡支援與選項相同的 commands。
30.86 曝光
調整視訊串流的曝光。
此濾鏡接受以下選項
- exposure
設定 EV 中的曝光校正。允許範圍從 -3.0 到 3.0 EV。預設值為 0 EV。
- black
設定黑階校正。允許範圍從 -1.0 到 1.0。預設值為 0。
30.86.1 指令
此濾鏡支援與選項相同的 commands。
30.87 extractplanes
從輸入視訊串流中提取色彩通道成分到獨立的灰階視訊串流中。
此濾波器接受以下選項
- 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 通道(如果輸入中存在)。預設值為 0。
- start_time, st
指定開始應用淡化效果的幀的時間戳(以秒為單位)。如果同時指定了 start_frame 和 start_time,則淡化將在最後一個發生的時間開始。預設值為 0。
- duration, d
淡化效果必須持續的秒數。在淡入效果結束時,輸出視訊將具有與輸入視訊相同的強度;在淡出轉換結束時,輸出視訊將填充選定的 color。如果同時指定了 duration 和 nb_frames,則使用 duration。預設值為 0(預設情況下使用 nb_frames)。
- 顏色、c
指定淡化的顏色。預設值為 "black"。
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 幀上淡入 Alpha 通道
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
使用 3D FFT(頻域濾鏡)對幀進行降噪。
此濾鏡接受以下選項
- sigma
設定雜訊 sigma 常數。這會設定降噪強度。預設值為 1。允許範圍從 0 到 30。在高重疊率下使用非常高的 sigma 值可能會產生區塊效應。
- amount
設定降噪量。預設情況下,會減少所有偵測到的雜訊。預設值為 1。允許範圍從 0 到 1。
- block
設定區塊大小(以像素為單位),預設值為 32,範圍為 8 到 256。
- overlap
設定區塊重疊率。預設值為 0.5。允許範圍從 0.2 到 0.8。
- method
設定降噪方法。預設值為
wiener
,也可以是hard
。- prev
設定用於降噪的先前幀數。預設值為 0。
- next
設定用於降噪的後續幀數。預設值為 0。
- planes
設定要濾鏡處理的平面,預設情況下,會濾鏡處理所有可用的平面,但 Alpha 通道除外。
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 場
使用步幅運算從交錯影像中提取單個場,以避免浪費 CPU 時間。輸出幀標記為非交錯。
此濾鏡接受以下選項
- type
指定要提取頂場(如果值為
0
或top
)還是底場(如果值為1
或bottom
)。
30.93 fieldhint
透過複製提示檔案中以數字形式提供的周圍幀的頂場和底場來建立新幀。
- hint
設定包含提示的檔案:絕對/相對幀編號。
剪輯片段中的每個幀必須有一行。每行必須包含兩個以逗號分隔的數字,選擇性地後跟
-
或+
。檔案每行提供的數字不能超出 [N-1, N+1] 範圍,其中 N 是absolute
模式的目前幀編號,或超出relative
模式的 [-1, 1] 範圍。第一個數字表示從哪個幀中擷取頂場,第二個數字表示從哪個幀中擷取底場。如果選擇性地後跟
+
,則輸出幀將標記為交錯;否則,如果後跟-
,則輸出幀將標記為漸進式;否則,它將標記為與輸入幀相同。如果選擇性地後跟t
,則輸出幀將僅使用頂場,或者如果是b
,則僅使用底場。如果行以#
或;
開頭,則會跳過該行。- mode
可以是項目
absolute
或relative
或pattern
。預設值為absolute
。pattern
模式與relative
模式相同,不同之處在於,如果在檔案的最後一個條目之後有更多幀要處理,則hint
檔案會尋找回到開頭。
relative
模式的 hint
檔案的前幾行範例
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
需要接著使用抽取濾鏡,例如濾鏡圖中的 decimate。
場匹配和抽取的分離主要是為了在兩者之間插入去交錯濾鏡回退的可能性。如果來源具有混合的電影電視轉換和真實交錯內容,fieldmatch
將無法為交錯部分匹配場。但是,這些剩餘的梳狀幀將被標記為交錯,因此可以由稍後的濾鏡(例如 yadif)在抽取之前進行去交錯處理。
除了各種組態選項外,fieldmatch
還可以採用可選的第二個串流,透過 ppsrc 選項啟用。如果啟用,幀重建將基於來自第二個串流的場和幀。這允許預先處理第一個輸入,以幫助濾鏡的各種演算法,同時保持輸出無損(假設場已正確匹配)。通常,場感知降噪器或亮度/對比度調整可以有所幫助。
請注意,此濾鏡使用與 TIVTC/TFM (AviSynth 專案) 和 VIVTC/VFM (VapourSynth 專案) 相同的演算法。後者是 TFM 的輕量級副本,fieldmatch
基於此副本。雖然語義和用法非常接近,但某些行為和選項名稱可能會有所不同。
decimate 濾鏡目前僅適用於恆定幀率輸入。如果您的輸入具有混合的電影電視轉換 (30fps) 和幀率較低的漸進式內容(如 24fps),請使用以下濾鏡鏈來產生必要的 cfr 串流:dejudder,fps=30000/1001,fieldmatch,decimate
。
此濾鏡接受以下選項
- order
指定輸入串流的假定場序。可用值為
- ‘auto’
自動偵測奇偶性(使用 FFmpeg 的內部奇偶性值)。
- ‘bff’
假設底場優先。
- ‘tff’
假設頂場優先。
請注意,有時建議不要信任串流宣告的奇偶性。
預設值為 auto。
- 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’
三向匹配,如果所有 3 個原始匹配都被偵測為梳狀,則嘗試第四個/第五個匹配 (p/c/n + u/b)
結尾的括號表示在 order=tff(且 field 為 auto 或 top)的情況下將用於該模式的匹配項。
就速度而言,pc 模式是最快的,而 pcn_ub 是最慢的。
預設值為 pc_n。
- ppsrc
將主輸入串流標記為預先處理的輸入,並啟用輔助輸入串流作為從中選取場的乾淨來源。有關更多詳細資訊,請參閱濾鏡簡介。它類似於 VFM/TFM 中的 clip2 功能。
預設值為
0
(停用)。- field
設定要從中匹配的場。建議將此設定為與 order 相同的值,除非您在使用該設定時遇到匹配失敗的情況。在某些情況下,變更用於匹配的場可能會對匹配效能產生重大影響。可用值為
- ‘auto’
自動(與 order 值相同)。
- ‘bottom’
從底場匹配。
- ‘top’
從頂場匹配。
預設值為 auto。
- mchroma
設定在匹配比較期間是否包含色度。在大多數情況下,建議保持啟用狀態。僅當您的剪輯片段有不良的色度問題(例如嚴重的彩虹紋或其他瑕疵)時,才應將此設定為
0
。將此設定為0
也可用於加快速度,但會犧牲一些準確性。預設值為
1
。- y0
- y1
這些定義了一個排除帶,該排除帶會將 y0 和 y1 之間的線條排除在場匹配決策之外。排除帶可用於忽略字幕、標誌或其他可能干擾匹配的事物。y0 設定起始掃描線,y1 設定結束線;y0 和 y1 之間的所有線條(包括 y0 和 y1)都將被忽略。將 y0 和 y1 設定為相同的值將停用此功能。y0 和 y1 預設為
0
。- scthresh
將場景變更偵測閾值設定為亮度平面上最大變更的百分比。良好的值在
[8.0, 14.0]
範圍內。場景變更偵測僅在 combmatch=sc 的情況下相關。scthresh 的範圍為[0.0, 100.0]
。預設值為
12.0
。- combmatch
當 combatch 不是 none 時,
fieldmatch
將在決定要使用哪個匹配作為最終匹配時,將考慮匹配的梳狀分數。可用值為- ‘none’
不進行基於梳狀分數的最終匹配。
- ‘sc’
僅在偵測到場景變更時才使用梳狀分數。
- ‘full’
始終使用梳狀分數。
預設值為 sc。
- combdbg
強制
fieldmatch
計算某些匹配的梳狀指標並列印它們。此設定在 TFM/VFM 詞彙中稱為 micout。可用值為- ‘none’
不強制計算。
- ‘pcn’
強制 p/c/n 計算。
- ‘pcnub’
強制 p/c/n/u/b 計算。
預設值為 none。
- 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
數字對應於欄位相關的漸進式幀。在此,前兩個幀是漸進式的,第 3 和第 4 個是梳狀化的,依此類推。
當 fieldmatch
配置為從底部 (field=bottom) 執行匹配時,輸入串流會轉換成這樣
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
由於欄位匹配的結果,我們可以看見有些幀被複製了。要執行完整的反向電視電影處理,您需要在此操作之後依賴抽取濾鏡。請參閱例如 decimate 濾鏡。
現在從頂部欄位 (field=top) 匹配的相同操作看起來像這樣
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,底部:2)。根據匹配結果,在每個匹配的欄位上方和下方放置一個 'x'。
使用底部匹配 (field=bottom)
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=top)
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 範例
頂部欄位優先電視電影串流的簡單 IVTC
fieldmatch=order=tff:combmatch=none, decimate
進階 IVTC,針對仍然是梳狀化的幀回退到 yadif
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
30.95 fieldorder
轉換輸入視訊的欄位順序。
它接受以下參數
- order
輸出的欄位順序。有效值為 tff(頂部欄位優先)或 bff(底部欄位優先)。
預設值為 ‘tff’。
轉換是通過將圖片內容向上或向下移動一行,並用適當的圖片內容填充剩餘行來完成的。此方法與大多數廣播欄位順序轉換器一致。
如果輸入視訊未標記為交錯式掃描,或者已經標記為所需的輸出欄位順序,則此濾鏡不會更改輸入視訊。
當轉換為或從 PAL DV 素材轉換時,它非常有用,PAL DV 素材是底部欄位優先。
例如
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
30.96 填滿邊框
填充輸入視訊的邊框,而不更改視訊串流尺寸。有時視訊的四個邊緣可能有雜訊,您可能不想裁剪視訊輸入以保持尺寸為某個數字的倍數。
此濾波器接受以下選項
- 左邊
從左邊框填充的像素數。
- 右邊
從右邊框填充的像素數。
- 頂部
從頂部邊框填充的像素數。
- 底部
從底部邊框填充的像素數。
- mode
設定填充模式。
它接受以下值
- ‘smear’
使用最外層像素填充像素
- ‘mirror’
使用鏡像(半樣本對稱)填充像素
- ‘fixed’
使用常數值填充像素
- ‘reflect’
使用反射(全樣本對稱)填充像素
- ‘wrap’
使用環繞填充像素
- ‘fade’
將像素淡化為常數值
- ‘margins’
使用邊框附近像素的加權平均值填充頂部和底部的像素
預設值為 smear。
- color
設定固定或淡化模式中像素的顏色。預設值為 black。
30.96.1 指令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.97 find_rect
在輸入視訊中尋找矩形物件。
要搜尋的物件必須指定為 gray8 圖像,並使用 object 選項指定。
對於每個可能的匹配,都會計算一個分數。如果分數達到指定的閾值,則認為已找到該物件。
如果輸入視訊包含物件的多個實例,則濾鏡將僅找到其中一個。
當找到物件時,會在匹配的幀中設定以下元資料條目
- lavfi.rect.w
物件寬度
- lavfi.rect.h
物件高度
- lavfi.rect.x
物件的 x 位置
- lavfi.rect.y
物件的 y 位置
- lavfi.rect.score
找到物件的匹配分數
它接受以下選項
- object
物件圖像的檔案路徑,需要為 gray8 格式。
- threshold
偵測閾值,表示為 0-1 範圍內的十進制數字。
閾值 0.01 表示僅精確匹配,閾值 0.99 表示幾乎所有內容都匹配。
預設值為 0.5。
- mipmaps
mipmap 的數量,預設值為 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
通過複製或丟棄幀(視需要),將視訊轉換為指定的恆定幀率。
它接受以下參數
- fps
所需的輸出幀率。它接受包含以下常數的表達式
- ‘source_fps’
輸入的幀率
- ‘ntsc’
30000/1001
的 NTSC 幀率- ‘pal’
25.0
的 PAL 幀率- ‘film’
24.0
的電影幀率- ‘ntsc_film’
24000/1001
的 NTSC 電影幀率
預設值為
25
。- start_time
假設第一個 PTS 應該是給定的值(以秒為單位)。這允許在串流開始時進行填充/修剪。預設情況下,不會對第一個幀的預期 PTS 做出任何假設,因此不會進行填充或修剪。例如,如果視訊串流在音訊串流之後開始,或者要修剪任何具有負 PTS 的幀,則可以將其設定為 0 以用第一個幀的副本填充開頭。
- round
時間戳記 (PTS) 捨入方法。
可能的值為
- zero
朝 0 捨入
- inf
遠離 0 捨入
- down
朝 - 無限大捨入
- up
朝 + 無限大捨入
- near
捨入到最近的整數
預設值為
near
。- eof_action
讀取最後一個幀時執行的動作。
可能的值為
- round
使用與其他幀相同的時間戳記捨入方法。
- pass
如果尚未達到輸入持續時間,則傳遞最後一個幀。
預設值為
round
。
或者,選項可以指定為扁平字串:fps[:start_time[:round]]。
另請參閱 setpts 濾鏡。
30.100.1 範例
- 將 fps 設定為 25 的典型用法
fps=fps=25
- 將 fps 設定為 24,使用縮寫和捨入方法捨入到最近的整數
fps=fps=film:round=near
30.101 framepack
將兩個不同的視訊串流打包到立體視訊中,在支援的編解碼器上設定適當的元資料。兩個視圖應具有相同的大小和幀率,並且當較短的視訊結束時,處理將停止。請注意,您可以使用 scale 和 fps 濾鏡方便地調整視圖屬性。
它接受以下參數
- format
所需的打包格式。支援的值為
- sbs
視圖彼此相鄰(預設)。
- tab
視圖在彼此的頂部。
- lines
視圖按行打包。
- columns
視圖按列打包。
- frameseq
視圖在時間上交錯。
一些範例
# Convert left and right views into a frame-sequential video ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT # Convert views into a side-by-side video with the same output resolution as the input ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
30.102 幀率
通過從來源幀內插新的視訊輸出幀來更改幀率。
此濾鏡並非設計為與交錯式掃描媒體正確運作。如果您希望更改交錯式掃描媒體的幀率,則需要在此濾鏡之前進行反交錯,並在此濾鏡之後重新交錯。
以下是可接受選項的描述。
- fps
指定每秒輸出幀數。此選項也可以單獨指定為一個值。預設值為
50
。- interp_start
指定範圍的開始位置,在此範圍內,輸出幀將建立為兩個幀的線性內插值。範圍為 [
0
-255
],預設值為15
。- interp_end
指定範圍的結束位置,在此範圍內,輸出幀將建立為兩個幀的線性內插值。範圍為 [
0
-255
],預設值為240
。- scene
指定場景變更偵測的級別,值介於 0 到 100 之間,以指示新場景;低值反映目前幀引入新場景的可能性較低,而較高的值表示目前幀更可能是一個新場景。預設值為
8.2
。- flags
指定影響濾鏡過程的標誌。
flags 的可用值為
- scene_change_detect, scd
使用選項 scene 的值啟用場景變更偵測。預設情況下啟用此標誌。
30.103 framestep
每 N 個幀選擇一個幀。
此濾鏡接受以下選項
- step
每隔
step
個幀選擇幀。允許值為大於 0 的正整數。預設值為1
。
30.104 freezedetect
偵測靜止視訊。
當此濾鏡偵測到輸入視訊在指定持續時間內內容沒有顯著變化時,它會記錄訊息並設定幀元資料。視訊凍結偵測計算視訊幀所有分量的平均絕對差,並將其與雜訊基底進行比較。
列印的時間和持續時間以秒為單位表示。lavfi.freezedetect.freeze_start
元資料鍵設定在時間戳記等於或超過偵測持續時間的第一個幀上,並且它包含凍結的第一個幀的時間戳記。lavfi.freezedetect.freeze_duration
和 lavfi.freezedetect.freeze_end
元資料鍵設定在凍結之後的第一個幀上。
此濾鏡接受以下選項
- noise, n
設定雜訊容忍度。可以以 dB 為單位指定(如果將 "dB" 附加到指定值),或者作為 0 到 1 之間的差異比率。預設值為 -60dB 或 0.001。
- duration, d
設定凍結持續時間直到通知(預設為 2 秒)。
30.105 freezeframes
凍結視訊幀。
此濾鏡使用來自第二個輸入的幀凍結視訊幀。
此濾鏡接受以下選項
- first
設定開始凍結的第一個幀的編號。
- last
設定結束凍結的最後一個幀的編號。
- 取代
設定將用於替換幀的第二個輸入的幀編號。
30.106 frei0r
將 frei0r 效果應用於輸入視訊。
要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 --enable-frei0r
配置 FFmpeg。
它接受以下參數
- filter_name
要載入的 frei0r 效果的名稱。如果定義了環境變數
FREI0R_PATH
,則會在FREI0R_PATH
中以冒號分隔的列表指定的每個目錄中搜尋 frei0r 效果。否則,將按此順序搜尋標準 frei0r 路徑:HOME/.frei0r-1/lib/、/usr/local/lib/frei0r-1/、/usr/lib/frei0r-1/。- filter_params
以 ’|’ 分隔的參數列表,用於傳遞到 frei0r 效果。
frei0r 效果參數可以是布林值(其值為 "y" 或 "n")、雙精度浮點數、顏色(指定為 R/G/B,其中 R、G 和 B 是介於 0.0 和 1.0 之間的浮點數,包含端點)或 (ffmpeg-utils) "顏色" 章節在 ffmpeg-utils 手冊中指定的顏色描述、位置(指定為 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 指令
此濾鏡支援作為 commands 的 filter_params 選項。
30.107 fspp
應用快速且簡單的後處理。它是 spp 的更快版本。
它將 (I)DCT 分割為水平/垂直通道。與簡單的後處理濾鏡不同,其中一個通道是每個區塊執行一次,而不是每個像素執行一次。這允許更高的速度。
此濾鏡接受以下選項
- 設定音調品質。可能的值為
設定品質。此選項定義平均的級別數。它接受 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 選項 -stats_mux_pre
記錄到地圖檔案中,並對相應幀進行進一步處理,例如品質比較。
地圖檔案的每一行必須包含每個輸入幀的三個項目:輸入 PTS (十進制)、輸出 PTS (十進制) 和輸出 TIMEBASE (十進制/十進制),以空格分隔。此檔案格式對應於 -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
設定水平 sigma,即高斯模糊的標準差。預設值為
0.5
。- steps
設定高斯近似的步驟數。預設值為
1
。- planes
設定要篩選的平面。預設情況下,所有平面都會被篩選。
- sigmaV
設定垂直 sigma,若為負值,則與
sigma
相同。預設值為-1
。
30.109.1 指令
此濾波器支援與選項相同的指令。該指令接受與相應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.110 geq
將通用方程式套用於每個像素。
此濾鏡接受以下選項
- lum_expr, lum
設定亮度表達式。
- cb_expr, cb
設定色度藍色表達式。
- cr_expr, cr
設定色度紅色表達式。
- alpha_expr, a
設定 Alpha 表達式。
- red_expr, r
設定紅色表達式。
- green_expr, g
設定綠色表達式。
- blue_expr, b
設定藍色表達式。
色彩空間會根據指定的選項選擇。如果指定了 lum_expr、cb_expr 或 cr_expr 選項之一,濾鏡將自動選擇 YCbCr 色彩空間。如果指定了 red_expr、green_expr 或 blue_expr 選項之一,它將選擇 RGB 色彩空間。
如果未定義色度表達式之一,它會回退到另一個。如果未指定 Alpha 表達式,它將評估為不透明值。如果未指定任何色度表達式,它們將評估為亮度表達式。
表達式可以使用以下變數和函數
- N
已過濾影格的序號,從
0
開始。- X
- Y
目前樣本的座標。
- W
- H
影像的寬度和高度。
- SW
- SH
寬度和高度縮放取決於當前過濾的平面。它是相應亮度平面像素數與當前平面像素數之間的比率。例如,對於 YUV4:2:0,亮度平面的值為
1,1
,色度平面的值為0.5,0.5
。- T
目前影格的時間,以秒為單位表示。
- p(x, y)
傳回當前平面位置 (x,y) 的像素值。
- lum(x, y)
傳回亮度平面位置 (x,y) 的像素值。
- cb(x, y)
傳回藍色差色度平面位置 (x,y) 的像素值。若沒有此平面,則傳回 0。
- cr(x, y)
傳回紅色差色度平面位置 (x,y) 的像素值。若沒有此平面,則傳回 0。
- r(x, y)
- g(x, y)
- b(x, y)
傳回紅色/綠色/藍色分量位置 (x,y) 的像素值。若沒有此分量,則傳回 0。
- alpha(x, y)
傳回 Alpha 平面位置 (x,y) 的像素值。若沒有此平面,則傳回 0。
- psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
從 (0,0) 到 (x,y) 矩形中樣本值的總和,這允許取得矩形內樣本的總和。請參閱不帶 sum 後綴的函數。
- interpolation
設定插值方法之一
- nearest, n
- bilinear, b
預設值為雙線性。
對於函數,如果 x 和 y 超出區域,則值將自動裁剪到較近的邊緣。
請注意,此濾鏡可以使用多個線程,在這種情況下,每個切片將具有自己的表達式狀態。如果您希望僅使用單個表達式狀態,因為您的表達式依賴於先前的狀態,則應將濾鏡線程數限制為 1。
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 濾鏡)
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(強度)
濾鏡將更改任何一個像素的最大量。這也是檢測近乎平坦區域的閾值。可接受的值範圍為 0.51 到 64;預設值為 1.2。超出範圍的值將被裁剪到有效範圍。
- radius
擬合漸層的鄰域。較大的半徑會產生更平滑的漸層,但也阻止濾鏡修改詳細區域附近的像素。可接受的值為 8-32;預設值為 16。超出範圍的值將被裁剪到有效範圍。
或者,選項可以指定為平面字串:strength[:radius]
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。
‘pts_delta’
- 顯示當前幀和前一幀之間的 pts 差異。
‘time’
- 顯示當前過濾幀的時間。
‘time_delta’
- 顯示當前幀和前一幀之間的時間差異。
‘timebase’
- 顯示濾鏡鏈接的時間基底。
‘format’
- ‘size’
顯示濾鏡鏈接使用的格式。
- ‘size’
顯示影片大小或濾鏡鏈接使用的音訊通道數。
- ‘rate’
顯示影片幀率或濾鏡鏈接使用的音訊採樣率。
- ‘eof’
顯示鏈接輸出狀態。
- ‘sample_count_in’
顯示從濾鏡取得的樣本數。
- ‘sample_count_out’
顯示從濾鏡輸出的樣本數。
- ‘disabled’
‘sample_count_delta’
- 幀率、r
顯示上述兩個值之間的樣本數差異。
30.113 灰度世界
顯示時間軸濾鏡狀態。
設定輸出串流的影片速率上限,預設值為 25。這保證輸出影片幀率不會高於此值。
基於灰度世界假設應用色彩校正的色彩恆定性濾鏡
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。
- sigma
minknorm
30.114.1 範例
- 用於計算 Minkowski 距離的 Minkowski 參數。必須在 [0,20] 範圍內選擇,預設值為 1。設定為 0 以取得最大值而不是計算 Minkowski 距離。
greyedge=difford=1:minknorm=5:sigma=2
- sigma
greyedge=difford=1:minknorm=0:sigma=2
30.115 guided
要應用於場景的高斯模糊的標準差。必須在 [0,1024.0] 範圍內選擇,預設值 = 1。floor( sigma * break_off_sigma(3) ) 若 difford 大於 0,則不能等於 0。
此濾鏡接受以下選項
- radius
灰邊
- eps
最大邊緣
- mode
應用導引濾鏡進行邊緣保留平滑、去霧等。
- 設定以像素為單位的框半徑。允許範圍為 1 到 20。預設值為 3。
設定正則化參數 (帶平方)。允許範圍為 0 到 1。預設值為 0.01。
- mode
設定濾鏡模式。可以是
basic
或fast
。預設值為basic
。- planes
設定要篩選的平面。預設值為僅第一個。
30.115.1 指令
此濾鏡支援所有上述選項作為 命令。
30.115.2 範例
- sub
ffmpeg -i in.png -vf guided out.png
- 為
fast
模式設定子採樣率。範圍為 2 到 64。預設值為 4。basic
模式下不進行子採樣。ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
30.116 haldclut
guidance
設定導引模式。可以是 off
或 on
。預設值為 off
。如果為 off
,則需要單個輸入。如果為 on
,則需要兩個具有相同解析度和像素格式的輸入。第二個輸入用作導引。
此濾鏡接受以下選項
- 使用導引濾鏡進行邊緣保留平滑
使用導引濾鏡進行去霧、結構傳輸過濾、細節增強。有關導引圖像的生成,請參閱論文 "Guided Image Filtering"。請參閱:http://kaiminghe.com/publications/pami12guidedfilter.pdf。
- shortest
將 Hald CLUT 套用於影片串流。
- repeatlast
第一個輸入是要處理的影片串流,第二個輸入是 Hald CLUT。Hald CLUT 輸入可以是簡單的圖片或完整的影片串流。
clut
此濾鏡也支援 framesync 選項。
設定將從第二個輸入串流處理哪個 CLUT 影片幀,可以是 first 或 all。預設值為 all。
30.116.1 指令
當最短的輸入終止時強制終止。預設值為 0
。
30.116.2 工作流程範例
30.116.2.1 Hald CLUT 視訊串流
continue
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
在串流結束後繼續套用最後一個 CLUT。值為 0
時,在到達 CLUT 的最後一幀後停用濾鏡。預設值為 1
。
haldclut
也具有與 lut3d 相同的插值選項 (兩個濾鏡共享相同的內部結構)。
ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
有關 Hald CLUT 的更多資訊,請參閱 Eskil Steenberg 的網站 (Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html。
30.116.2.2 帶預覽的 Hald CLUT
此濾鏡支援 commands 中的 interp
選項。
產生使用各種效果更改的恆等 Hald CLUT 串流
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
注意:請確保您使用無損編解碼器。
然後將其與 haldclut
一起使用以將其套用於某些隨機串流
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
30.117 水平翻轉
Hald CLUT 將套用於前 10 秒 (clut.nut
的持續時間),然後該 CLUT 串流的最新圖片將套用於 mandelbrot
串流的剩餘幀。
Hald CLUT 應該是 Level*Level*Level
x Level*Level*Level
像素的方形圖像。對於給定的 Hald CLUT,FFmpeg 將選擇從圖片左上角開始的最大可能正方形。剩餘的填充像素 (底部或右側) 將被忽略。此區域可用於新增 Hald CLUT 的預覽。
ffmpeg -i in.avi -vf "hflip" out.avi
30.118 histeq
通常,haldclut
濾鏡將支援以下產生的 Hald CLUT
它包含原始圖像和 CLUT 效果的預覽:SMPTE 彩條顯示在右上角,下方是經過色彩變更處理的相同彩條。
此濾鏡接受以下選項
- strength(強度)
然後,可以使用以下命令可視化此 Hald CLUT 的效果
- 水平翻轉輸入影片。
設定可以產生的最大強度,並適當地縮放輸出值。強度應根據需要設定,然後可以在需要時限制強度,以避免色彩沖刷。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.210。
- 反條帶
設定反條帶等級。如果啟用,濾鏡會隨機少量改變輸出像素的亮度,以避免直方圖出現條帶。可能的值為
none
、weak
或strong
。預設值為none
。
30.119 直方圖
計算並繪製輸入視訊的色彩分佈直方圖。
計算出的直方圖代表影像中色彩成分的分佈。
標準直方圖顯示影像中色彩成分的分佈。顯示每個色彩成分的顏色圖表。根據輸入格式,顯示目前影格中 Y、U、V、A 或 R、G、B 成分的分佈。每個圖表下方都會顯示色彩成分刻度表。
此濾鏡接受以下選項
- 層級高度
設定層級高度。預設值為
200
。允許範圍為 [50, 2048]。- 刻度高度
設定顏色刻度高度。預設值為
12
。允許範圍為 [0, 40]。- 顯示模式
設定顯示模式。它接受以下值
- ‘stack’
每個色彩成分圖表都彼此堆疊放置。
- ‘parade’
每個色彩成分圖表都並排放置。
- ‘overlay’
呈現與
parade
相同的資訊,但代表色彩成分的圖表會直接疊加在一起。
預設值為
stack
。- 層級模式
設定模式。可以是
linear
或logarithmic
。預設值為linear
。- components
設定要顯示哪些色彩成分。預設值為
7
。- 前景不透明度
設定前景不透明度。預設值為
0.7
。- 背景不透明度
設定背景不透明度。預設值為
0.5
。- 色彩模式
設定色彩模式。它接受以下值
- ‘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*luma_spatial/4.0。
- luma_tmp (亮度時間)
一個浮點數,指定亮度時間強度。預設值為 6.0*luma_spatial/4.0。
- chroma_tmp (色度時間)
一個浮點數,指定色度時間強度。預設值為 luma_tmp*chroma_spatial/luma_spatial。
30.120.1 指令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.121 hwdownload
將硬體影格下載到系統記憶體。
輸入必須為硬體影格,輸出為非硬體格式。並非所有格式都將在輸出上受到支援 - 可能需要在圖表中緊接著插入額外的 format 濾鏡,以獲得支援的輸出格式。
30.122 hwmap
將硬體影格對應到系統記憶體或另一個裝置。
此濾鏡有幾種不同的操作模式;使用的模式取決於輸入和輸出格式
- 硬體影格輸入,一般影格輸出
將輸入影格對應到系統記憶體,並將其傳遞到輸出。如果稍後需要原始硬體影格(例如,在將其他內容疊加在其部分之上之後),則可以在下一個模式中再次使用 hwmap 濾鏡來檢索它。
- 一般影格輸入,硬體影格輸出
如果輸入實際上是軟體對應的硬體影格,則取消對應 - 也就是說,傳回原始硬體影格。
否則,必須提供裝置。在該裝置上為輸出建立新的硬體表面,然後將它們對應回輸入端的軟體格式,並將這些影格提供給前面的濾鏡。這將像 hwupload 濾鏡一樣運作,但當輸入已經是相容格式時,可能會避免額外的複製。
- 硬體影格輸入和輸出
必須為輸出提供裝置,可以直接提供,也可以使用 derive_device 選項提供。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體環境(例如,參考相同的顯示卡)。
如果輸入影格最初是在輸出裝置上建立的,則取消對應以檢索原始影格。
否則,將影格對應到輸出裝置 - 在輸出端建立新的硬體影格,對應於輸入端的影格。
接受以下額外參數
- mode
設定影格對應模式。以下選項的組合
- read (讀取)
對應的影格應該是可讀取的。
- timestamp
write (寫入)
- 對應的影格應該是可寫入的。
overwrite (覆寫)
對應將始終覆寫整個影格。
- 在某些情況下,這可能會提高效能,因為不需要載入影格的原始內容。
direct (直接)
對應不得涉及任何複製。
如果未指定,則預設為 read+write。
- derive_device type (衍生裝置 type)
而不是使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生一個新的 type 類型裝置。
- reverse (反向)
在硬體到硬體的對應中,反向對應 - 在接收器中建立影格,並將它們對應回來源。在某些情況下,當需要單向對應,但所用裝置僅支援反向對應時,這可能是必要的。
此選項很危險 - 如果對前一個濾鏡的輸出有任何額外限制,它可能會以未定義的方式破壞前一個濾鏡。請勿在未完全理解其使用影響的情況下使用它。
30.123 hwupload
將系統記憶體影格上傳到硬體表面。
要上傳到的裝置必須在初始化濾鏡時提供。如果使用 ffmpeg,請使用 -filter_hw_device 選項或 derive_device 選項選擇適當的裝置。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體環境(例如,參考相同的顯示卡)。
接受以下額外參數
- derive_device type (衍生裝置 type)
而不是使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生一個新的 type 類型裝置。
30.124 hwupload_cuda
將系統記憶體影格上傳到 CUDA 裝置。
它接受以下選用參數
- device
要使用的 CUDA 裝置編號
30.125 hqx
應用專為像素藝術設計的高品質放大濾鏡。此濾鏡最初由 Maxim Stepin 創建。
它接受以下選項
- n
設定縮放維度:
2
代表 `hq2x`,3
代表 `hq3x`,4
代表 `hq4x`。預設值為3
。
30.126 hstack
水平堆疊輸入視訊。
所有串流必須具有相同的像素格式和相同的高度。
請注意,此濾鏡比使用 overlay 和 pad 濾鏡創建相同輸出更快。
此濾波器接受以下選項
- inputs
設定輸入串流數量。預設值為 2。
- shortest
如果設定為 1,則強制在最短輸入終止時終止輸出。預設值為 0。
30.127 hsvhold
將特定的 HSV 範圍轉換為灰度值。
此濾鏡測量選項中設定的 HSV 色彩與視訊串流中測量的色彩之間的顏色差異。根據選項,輸出顏色可以更改為灰度或不更改。
此濾鏡接受以下選項
- hue
hue (色相)
- 設定將用於顏色差異計算的色相值。允許範圍為 -360 到 360。預設值為 0。
sat (飽和度)
- 設定將用於顏色差異計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。
val (明度)
- similarity
設定將用於顏色差異計算的明度值。允許範圍為 -1 到 1。預設值為 0。
設定與關鍵顏色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。
- blend
0.00001 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
混合百分比。允許範圍為 0 到 1。預設值為 0。
0.0 使像素完全為灰度,或完全不為灰度。
30.128 hsvkey
較高的值會產生更多灰度像素,像素顏色與關鍵顏色越相似,灰度像素越高。
將特定的 HSV 範圍轉換為透明度。
此濾鏡接受以下選項
- hue
hue (色相)
- 設定將用於顏色差異計算的色相值。允許範圍為 -360 到 360。預設值為 0。
sat (飽和度)
- 設定將用於顏色差異計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。
val (明度)
- similarity
設定將用於顏色差異計算的明度值。允許範圍為 -1 到 1。預設值為 0。
設定與關鍵顏色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。
- blend
0.00001 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
0.0 使像素完全透明,或完全不透明。
較高的值會產生半透明像素,像素顏色越接近關鍵顏色,透明度越高。
30.129 色相
此濾鏡測量選項中設定的 HSV 色彩與視訊串流中測量的色彩之間的顏色差異。根據選項,可以透過新增 Alpha 通道將輸出顏色更改為透明。
它接受以下參數
- h
修改輸入的色相和/或飽和度。
- s
以度數指定色相角。它接受表達式,預設值為 "0"。
- H
在 [-10,10] 範圍內指定飽和度。它接受表達式,預設值為 "1"。
- b
以弧度指定色相角。它接受表達式,預設值為 "0"。
在 [-10,10] 範圍內指定亮度。它接受表達式,預設值為 "0"。
h 和 H 是互斥的,不能同時指定。
- n
從 0 開始的輸入影格計數
- pts
b、h、H 和 s 選項值是包含以下常數的表達式
- r
輸入視訊的影格速率,若輸入影格速率未知則為 NAN
- t
以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN
- tb
輸入影格的呈現時間戳記,以時間基底單位表示
30.129.1 範例
- 輸入視訊的時間基底
hue=h=90:s=1
- 將色相設定為 90 度,飽和度設定為 1.0
hue=H=PI/2:s=1
- 相同的命令,但以弧度表示色相
hue="H=2*PI*t: s=sin(2*PI*t)+1"
- 旋轉色相並使飽和度在 1 秒內在 0 到 2 之間擺動
hue="s=min(t/3\,1)"
從 0 開始應用 3 秒飽和度淡入效果
hue="s=min(0\, max((t-START)/DURATION\, 1))"
- 一般淡入表達式可以寫成
hue="s=max(0\, min(1\, (8-t)/3))"
從 5 秒開始應用 3 秒飽和度淡出效果
hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
30.129.2 指令
此濾波器支援以下指令
- b
- s
- h
- H
一般淡出表達式可以寫成
如果指定的表達式無效,則會保持其目前的值。
30.130 色相飽和度
修改輸入視訊的色相和/或飽和度和/或亮度。該命令接受相應選項的相同語法。
將色相-飽和度-強度調整應用於輸入視訊串流。
此濾波器接受以下選項
- hue
此濾鏡在 RGB 色彩空間中運作。
- saturation
設定要應用的色相偏移量(以度為單位)。預設值為 0。允許範圍為 -180 到 180。
- 水平翻轉輸入影片。
設定飽和度偏移量。預設值為 0。允許範圍為 -1 到 1。
- colors
設定強度偏移量。預設值為 0。允許範圍為 -1 到 1。
- ‘r’
設定要調整哪些原色和互補色。此選項透過提供一個或多個值來設定。這可以一次選擇多種顏色。預設情況下,會選擇所有顏色。
- ‘y’
調整紅色。
- ‘g’
調整黃色。
- 調整綠色。
‘c’ (青色)
- ‘b’
調整青色。
- 調整藍色。
‘m’ (洋紅色)
- ‘a’
調整洋紅色。
- strength(強度)
調整所有顏色。
- 設定濾鏡強度。允許範圍為 0 到 100。預設值為 1。
rw, gw, bw (紅色權重、綠色權重、藍色權重)
- lightness
設定每個 RGB 成分的權重。允許範圍為 0 到 1。預設設定為 0.333、0.334、0.333。這些選項用於飽和度和亮度處理。
30.131 遲滯
設定保留亮度,預設情況下停用。調整色相可能會改變原始 RGB 三元組的亮度,啟用此選項後,亮度將保持相同值。
此濾波器接受以下選項
- planes
透過連接組件,將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。
- threshold
設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,將處理所有平面。
設定濾鏡中使用的閾值。如果像素組件值高於此值,則會啟動用於連接組件的濾鏡演算法。預設值為 0。
30.132 iccdetect
`hysteresis` 濾鏡也支援 framesync 選項。
此濾波器接受以下選項
- 從嵌入的 ICC 描述檔(如果存在)偵測色彩空間,並相應地更新影格的標籤。
強制
30.133 iccgen
如果為 true,則影格現有的色彩空間標籤將始終被從 ICC 描述檔偵測到的值覆寫。否則,它們僅在包含 `unknown` 時才会被分配。預設情況下啟用。
此濾波器接受以下選項
- color_primaries
- 產生 ICC 描述檔並將其附加到影格。
color_trc (色彩轉換曲線)
設定將為其產生 ICC 描述檔的色彩空間。預設值 `auto` 從輸入影格的元數據推斷值,並在適當時預設為 BT.709/sRGB。
- 從嵌入的 ICC 描述檔(如果存在)偵測色彩空間,並相應地更新影格的標籤。
有關可能值的列表,請參閱 setparams 濾鏡,但請注意,`unknown` 不是此濾鏡的有效值。
30.134 恆等
如果為 true,即使會覆寫已存在的 ICC 描述檔,也會產生 ICC 描述檔。預設情況下停用。
此濾鏡採用兩個輸入視訊。
為了使此濾鏡正常運作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的影格數,並且會逐個比較影格。
取得兩個輸入視訊之間的識別分數。
獲得的每個組件、平均值、最小值和最大值識別分數會透過日誌系統印出。
此濾鏡也支援 framesync 選項。
在以下範例中,正在處理的輸入檔案 main.mpg 將與參考檔案 ref.mpg 進行比較。
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
30.135 idet
濾鏡將每個影格的計算識別分數儲存在影格元數據中。
偵測視訊交錯類型。
此濾鏡嘗試偵測輸入影格是否為交錯、漸進式、頂場優先或底場優先。它還將嘗試偵測相鄰影格之間重複的場(電視電影的跡象)。
單影格偵測在分類每個影格時僅考慮緊鄰的影格。多影格偵測包含先前影格的分類歷史記錄。
- 濾鏡將記錄這些元數據值
偵測當前影格的類型,使用單影格偵測。選項包括:「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
解交錯或交錯場。
此濾鏡允許使用者在不解交錯的情況下處理交錯影像場。解交錯會將輸入影格分割成 2 個場(所謂的半張圖片)。奇數行移動到輸出影像的上半部分,偶數行移動到下半部分。您可以獨立處理(濾鏡)它們,然後重新交錯它們。
此濾鏡接受以下選項
- luma_mode, l
- chroma_mode, c
- alpha_mode, a
luma_mode、chroma_mode 和 alpha_mode 的可用值為
- ‘none’
不做任何事。
- ‘deinterleave, d’
解交錯場,將一個場放在另一個場之上。
- ‘interleave, i’
交錯場。反轉解交錯的效果。
預設值為
none
。- luma_swap, ls
- chroma_swap, cs
- alpha_swap, as
交換亮度/色度/Alpha 場。交換偶數行 & 奇數行。預設值為
0
。
30.136.1 指令
此濾鏡支援所有上述選項作為 命令。
30.137 膨脹
對影片套用膨脹效果。
此濾鏡透過僅考慮高於像素的值,將像素替換為局部(3x3)平均值。
它接受以下選項
- threshold0
- threshold1
- threshold2
- threshold3
限制每個平面的最大變化量,預設值為 65535。如果為 0,平面將保持不變。
30.137.1 指令
此濾鏡支援所有上述選項作為 命令。
30.138 交錯
來自循序內容的簡單交錯濾鏡。此濾鏡將奇數影格的上(或下)行與偶數影格的下(或上)行交錯,將影格率減半並保留影像高度。
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
緩慢更新較暗的像素。
此濾鏡使短暫的閃光看起來更長。此濾鏡接受以下選項
- 衰減
設定衰減係數。預設值為 0.95。允許範圍為 0 到 1。
- planes
設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。
30.141.1 指令
此濾鏡支援所有上述選項作為 命令。
30.142 鏡頭校正
校正徑向鏡頭失真
此濾鏡可用於校正廣角鏡頭使用可能導致的徑向失真,從而重新校正影像。要找到正確的參數,可以使用例如 opencv 一部分提供的工具,或簡單地進行試錯。要使用 opencv,請使用 opencv 來源中的校準範例(在 samples/cpp 下),並從結果矩陣中提取 k1 和 k2 係數。
請注意,實際上相同的濾鏡在 KDE 專案的開源工具 Krita 和 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
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’
啟用鏡頭幾何失真和色差的修正。
- ‘all’
啟用所有可能的校正。
- focal_length
影像/影片的焦距(變焦;預期影片為常數)。例如,18–55mm 鏡頭的焦距範圍為 [18–55],因此在使用該鏡頭時應選擇該範圍內的值。預設值為 18。
- aperture
影像/影片的光圈(預期影片為常數)。請注意,光圈僅用於暈影校正。預設值為 3.5。
- scale
focus_distance
- 影像/影片的對焦距離(預期影片為常數)。請注意,對焦距離僅用於暈影,並且僅稍微影響暈影校正過程。如果未知,請將其保留為預設值(即 1000)。
scale
- 轉換後套用的縮放係數。校正後,影片不再一定是矩形的。此參數控制輸出的影像可見多少。值 0 表示將自動選擇一個值,以便輸出影像中幾乎沒有或沒有未映射的區域。1.0 表示不進行額外的縮放。較低的值可能會使更多校正後的影像可見,而較高的值可能會避免輸出中出現未映射的區域。
- target_geometry
- 輸出影像/影片的目標幾何形狀。以下值是有效選項
- ‘rectilinear (default)’
- ‘fisheye’
- ‘panoramic’
- ‘equirectangular’
- ‘fisheye_orthographic’
- reverse (反向)
‘fisheye_stereographic’
- interpolation
‘fisheye_equisolid’
- ‘fisheye_thoby’
- reverse
- ‘lanczos’
30.143.1 範例
- 套用影像校正的反向操作(不是校正失真,而是套用失真)。
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
- interpolation
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 lcevc
校正失真時使用的插值類型。以下值是有效選項
30.145 libplacebo
‘nearest’
30.145.1 選項
‘linear (default)’
30.145.1.1 輸出模式
套用鏡頭校正,廠牌為「Canon」,相機型號為「Canon EOS 100D」,鏡頭型號為「Canon EF-S 18-55mm f/3.5-5.6 IS STM」,焦距為「18」,光圈為「8.0」。
- inputs
套用與之前相同的設定,但僅適用於影片的前 5 秒。
- w
- h
基於 liblcevc_dec 的低複雜度增強影片編碼濾鏡 (https://github.com/v-novaltd/LCEVCdec)。
基於 libplacebo 的彈性 GPU 加速處理濾鏡 (https://code.videolan.org/videolan/libplacebo)。
- 此濾鏡的選項分為以下幾個部分
- 這些選項控制整體輸出模式。預設情況下,libplacebo 將盡力保留來源的色彩空間和尺寸,但它將套用來源影格中存在的任何嵌入式膠片顆粒、杜比視界元數據或變形 SAR。
inputs
- 設定輸入的數量。這可以與
idx
變數一起使用,以允許將多個輸入放置/混合在輸出影格內。這實際上啟用了類似於 hstack、overlay 等的功能。 - output_w, ow
output_h, oh
- 設定輸出影片尺寸表達式。預設值為
iw
和ih
。 - 允許與 scale 濾鏡相同的表達式。
crop_x
- crop_y
- 設定輸入裁剪 x/y 表達式,預設值為
(iw-cw)/2
和(ih-ch)/2
。 crop_w
- fps
crop_h
- format
設定輸入裁剪寬度/高度表達式,預設值為
iw
和ih
。- pos_x
- pos_y
設定輸出放置 x/y 表達式,預設值為
(ow-pw)/2
和(oh-ph)/2
。- pos_w
pos_h
- 設定輸出放置寬度/高度表達式,預設值為
ow
和oh
。 framerate, fps
- 設定輸出影格率。這可以是 rational,例如
60000/1001
。如果設定為特殊字串none
(預設值),則輸入時間戳將會改為未修改地傳遞到輸出。否則,輸入影片影格將會根據需要進行插值,以將影片重新縮放到指定的目標影格率,方式由 frame_mixer 選項決定。 format
- 設定輸出格式覆寫。如果未設定(預設值),則影格將以與各自輸入影格相同的格式輸出。否則,將執行格式轉換。
force_original_aspect_ratio
- force_divisible_by
與相同的 scale 濾鏡選項的工作方式相同。
-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
- normalize_sar
- color_primaries
- 產生 ICC 描述檔並將其附加到影格。
- range
如果啟用,輸出影格將始終具有 1:1 的像素縱橫比。這將根據需要引入額外的填充/裁剪。如果停用(預設值),則任何縱橫比不匹配(包括例如來自變形影片來源的縱橫比不匹配)都會轉發到輸出像素縱橫比。
pad_crop_ratio
- 指定當輸入縱橫比與輸出縱橫比不匹配且 normalize_sar 生效時,填充和裁剪之間的比例(介於
0.0
和1.0
之間)。預設值0.0
始終使用黑色邊框填充內容,而值1.0
始終裁剪掉部分內容。可以使用中間值,從而導致兩種方法的混合。 若來源影格中存在膠卷顆粒 (例如 AV1 或 H.274),則套用膠卷顆粒並從輸出中去除。預設為啟用。
- apply_dolbyvision
若來源影格中存在 Dolby Vision RPU 元數據,則套用 Dolby Vision RPU 元數據並從輸出中去除。預設為啟用。請注意,Dolby Vision 始終會輸出 BT.2020+PQ,覆寫常用的輸入影格元數據。這些也會被選為各自影格輸出選項的
auto
值。
除了 scale 濾鏡文件中記載的表達式常數之外,crop_w、crop_h、crop_x、crop_y、pos_w、pos_h、pos_x 和 pos_y 選項也可以包含以下常數
- in_idx, idx
目前活動輸入串流的(從 0 開始)數字索引。
- crop_w, cw
- crop_h, ch
crop_w 和 crop_h 的計算值。
- pos_w, pw
- pos_h, ph
pos_w 和 pos_h 的計算值。
- in_t, t
輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。
- out_t, ot
輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。
- n
輸入影格編號,從 0 開始。
30.145.1.2 縮放
本節中的選項控制 libplacebo 如何執行升頻和(必要時)降頻。請注意,libplacebo 始終會在內部以 4:4:4 內容運作,因此任何子採樣色度格式(例如 yuv420p
)都必然會在渲染過程中進行升頻和降頻。這表示即使來源和目標解析度相同,縮放也可能生效。
- upscaler
- downscaler
設定用於升頻和降頻的濾鏡核心。各自的預設值為
spline36
和mitchell
。如需可能值的完整列表,請將help
傳遞給這些選項。最重要的值為- ‘none’
強制使用內建 GPU 紋理採樣(通常為雙線性)。速度極快但品質差,尤其是在降頻時。
- ‘bilinear’
雙線性插值。通常可以在 GPU 上免費完成,除非這樣做會導致混疊。速度快且品質低。
- ‘fisheye_thoby’
最近鄰插值。銳利但高度混疊。
- ‘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
在升頻期間啟用 S 型壓縮。略微減少振鈴。預設為啟用。
30.145.1.3 去色帶
Libplacebo 隨附內建去色帶濾鏡,可有效對抗許多常見的色帶和色塊來源。只要希望獲得品質,強烈建議開啟此功能。
- deband
啟用(快速)去色帶演算法。預設為停用。
- deband_iterations
去色帶演算法的去色帶迭代次數。每次迭代都以逐漸增加的半徑(和減小的閾值)執行。建議值範圍為
1
到4
。預設為1
。- deband_threshold
去色帶濾鏡強度。數值越高,去色帶效果越強。預設為
4.0
。- deband_radius
去色帶濾鏡半徑。較高的半徑更適合緩慢的漸變,而較低的半徑更適合陡峭的漸變。預設為
16.0
。- deband_grain
要新增的額外輸出顆粒量。有助於隱藏瑕疵。預設為
6.0
。
30.145.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
Gamma 調整,介於
0.0
和16.0
之間。預設為1.0
。- cones
用於色盲模擬的錐狀細胞模型。接受
l
、m
和s
的任意組合。以下是一些範例- 調整藍色。
Deuteranomaly / 綠色盲/綠視錐細胞功能不全 (影響 3%-4% 的人口)
- ‘l’
Protanomaly / 紅色盲/紅色視錐細胞功能不全 (影響 1%-2% 的人口)
- ‘l+m’
Monochromacy / 單色視覺 (非常罕見)
- ‘l+m+s’
Achromatopsy / 全色盲 (完全喪失日間視覺,極其罕見)
- cone-strength
由
cones
指定的錐狀細胞的增益係數,介於0.0
和10.0
之間。值1.0
會導致色彩視覺沒有變化。值0.0
(預設值)模擬完全喪失這些錐狀細胞。高於1.0
的值會誇大錐狀細胞之間的差異,這可能有助於彌補色彩視覺的降低。
30.145.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.145.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 中定義的主觀增益/偏移/ Gamma 控制。- ‘bt.2390’
來自 ITU-R 報告 BT.2390 的 EETF,這是一種具有線性段的 Hermite 樣條滾降。膝點偏移是可設定的。請注意,此參數預設為
1.0
,而不是 ITU-R 規格中的值0.5
。- ‘bt.2446a’
來自 ITU-R 報告 BT.2446 的 EETF,方法 A。專為良好母帶製作的 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 渲染的電玩遊戲中的使用而普及。能非常好地保留暗部和亮部細節,但缺點是會顯著改變平均亮度。這在某種程度上類似於參數為
0.24
的reinhard
。- ‘gamma’
擬合 Gamma(冪)函式以在來源和目標色彩空間之間傳輸,有效地產生感知硬膝部,將兩個大致線性的段接合在一起。這可以相當準確地保留所有比例的細節,但可能會導致影像外觀柔和或暗淡。該參數用作截止點,預設為
0.5
。- ‘linear’
在 PQ 空間中線性拉伸輸入範圍以適應輸出範圍。這將準確地保留所有細節,但會導致平均亮度顯著不同。除了常規色調映射之外,還可用於反向色調映射。該參數可用作額外的線性增益係數(預設為
1.0
)。
- tonemapping_param
對於可調整的色調映射函式,此參數可用於微調曲線行為。請參閱
tonemapping
的文件。預設值0.0
會被曲線的首選預設設定取代。- inverse_tonemapping
如果啟用,此濾鏡也將嘗試拉伸 SDR 訊號以填充 HDR 輸出色彩體積。預設為停用。
- tonemapping_lut_size
色調映射 LUT 的大小,介於
2
和1024
之間。預設值為256
。請注意,此數值與peak_detect
結合使用時會平方。- contrast_recovery
對比度恢復強度。若設定為高於
0.0
的值,來源影像會被分成高頻和低頻成分,並將一部分高頻影像加回色調映射後的輸出。對於某些 HDR 來源,可能會造成過度的振鈴偽影,但可以改善色調映射後影像中殘留的主觀銳利度和細節。預設值為0.30
。- contrast_smoothness
對比度恢復低通濾波器核心大小。預設值為
3.5
。增加或減少此值會大幅影響視覺外觀。當contrast_recovery
停用時,此選項無效。
30.145.1.7 抖動
預設情況下,libplacebo 會在必要時進行遞色處理,包括渲染到任何低於 16 位元精度的整數格式。建議始終保持啟用此選項,因為不這樣做可能會導致輸出中出現可見的色帶,即使已啟用 debanding
濾鏡也是如此。如果需要最高的效能,請使用 ordered_fixed
而不是停用遞色。
- dithering
要使用的遞色方法。接受以下值:
- ‘none’
完全停用遞色。可能會導致可見的色帶。
- ‘blue’
使用假藍色雜訊進行遞色。這是預設值。
- ‘ordered’
可調整的有序遞色模式。
- ‘ordered_fixed’
更快速的有序遞色,固定大小為
6
。無紋理。- ‘white’
使用白色雜訊進行遞色。無紋理。
- dither_lut_size
遞色 LUT 大小,以 2 為底的對數,介於
1
和8
之間。預設值為6
,對應於64x64
的 LUT 大小。- dither_temporal
啟用時間性遞色。預設為停用。
30.145.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.145.1.9 偵錯 / 效能
本節中的所有選項預設為關閉。當嘗試以犧牲品質為代價來擠出最大效能時,它們可能會有所幫助。
- skip_aa
在縮小時停用反鋸齒。
- polar_cutoff
截斷低於此絕對量值的極座標 (EWA) 縮放器核心,介於
0.0
和1.0
之間。- disable_linear
停用線性光縮放。
- disable_builtin
停用內建 GPU 取樣 (強制使用 LUT)。
- disable_fbos
強制停用 FBO,導致幾乎所有功能喪失,但提供最快的速度。
30.145.2 指令
此濾鏡幾乎支援上述所有選項作為指令。
30.145.3 範例
- 將輸入色調映射到標準色域 BT.709 輸出
libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
- 以高品質縮放將輸入重新縮放以符合標準 1080p
libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
- 將低 FPS / VFR 輸入內插為平滑的恆定 60 fps 輸出
libplacebo=fps=60:frame_mixer=mitchell_clamp
- 將輸入轉換為標準 sRGB JPEG
libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
- 使用更高品質的去色帶設定
libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
- 在安裝 Mesa 的系統上 (並停用最耗效能的選項),於 CPU 上執行此濾鏡
ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
- 抑制解碼器中基於 CPU 的 AV1/H.274 底片顆粒應用,以利於使用此濾鏡來處理。請注意,只有當影格已經在 GPU 上,或者您將 libplacebo 用於其他目的時,這才是一種優勢,因為否則 VRAM 來回傳輸的成本將超過任何預期的速度提升。
ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
- 與 VAAPI hwdec 互操作以避免通過 RAM 進行來回傳輸
ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
30.146 libvmaf
計算參考/失真輸入視訊對的 VMAF (Video Multi-Method Assessment Fusion) 分數。
第一個輸入是失真視訊,第二個輸入是參考視訊。
獲得的 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.146.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 -
30.147 libvmaf_cuda
這是 libvmaf 濾鏡的 CUDA 變體。它僅接受 CUDA 影格。
它需要 Netflix 的 vmaf 函式庫 (libvmaf) 作為先決條件。安裝函式庫後,可以使用以下命令啟用:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf
。
30.147.1 範例
- 基本用法,展示使用 scale_cuda 進行 CUVID 硬體解碼和 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.148 limitdiff
使用第二個和可選的第三個視訊串流應用有限差分濾鏡。
此濾鏡接受以下選項
- threshold
設定在允許視訊串流之間存在某些差異時要使用的閾值。任何絕對差值小於或等於此閾值時,將從第一個視訊串流中選取像素組件。
- elasticity
設定處理視訊串流時軟閾值的彈性。此值乘以第一個值設定第二個閾值。任何絕對差值大於或等於第二個閾值時,將從第二個視訊串流中選取像素組件。對於介於這兩個閾值之間的值,將使用第一個和第二個視訊串流之間的線性內插。
- reference
啟用參考 (第三個) 視訊串流處理。預設為停用。如果設定,則此視訊串流將用於計算與第一個視訊串流的絕對差值。
- planes
指定將處理哪些平面。預設為所有可用的平面。
30.148.1 指令
此濾鏡支援上述所有選項作為指令,但 ‘reference’ 選項除外。
30.149 limiter
將像素組件值限制在指定的範圍 [min, max] 內。
此濾鏡接受以下選項
- min
下限。預設為輸入允許的最低值。
- max
上限。預設為輸入允許的最高值。
- planes
指定將處理哪些平面。預設為所有可用的平面。
30.149.1 指令
此濾鏡支援所有上述選項作為 命令。
30.150 迴圈
循環播放視訊影格。
此濾鏡接受以下選項
- loop
設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。
- size
設定最大影格數。預設值為 0。
- start
設定循環播放的起始影格。預設值為 0。
- time
設定循環開始時間,單位為秒。僅當名為 start 的選項設定為
-1
時使用。
30.150.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.151 lut1d
將 1D LUT 應用於輸入視訊。
此濾鏡接受以下選項
- file
設定 1D LUT 檔案名稱。
目前支援的格式
- ‘cube’
Iridas
- ‘csp’
cineSpace
- interp
選擇內插模式。
可用的值為
- ‘fisheye_thoby’
使用最近定義點的值。
- ‘linear’
使用線性內插來內插值。
- ‘cosine’
使用餘弦內插來內插值。
- ‘cubic’
使用立方內插來內插值。
- ‘spline’
使用樣條內插來內插值。
30.151.1 指令
此濾鏡支援所有上述選項作為 命令。
30.152 lut3d
將 3D LUT 應用於輸入視訊。
此濾鏡接受以下選項
- file
設定 3D LUT 檔案名稱。
目前支援的格式
- ‘3dl’
AfterEffects
- ‘cube’
Iridas
- ‘dat’
DaVinci
- ‘m3d’
Pandora
- ‘csp’
cineSpace
- interp
選擇內插模式。
可用的值為
- ‘fisheye_thoby’
使用最近定義點的值。
- ‘trilinear’
使用定義立方體的 8 個點來內插值。
- ‘tetrahedral’
使用四面體來內插值。
- ‘pyramid’
使用金字塔來內插值。
- ‘prism’
使用稜柱來內插值。
30.152.1 指令
當最短的輸入終止時強制終止。預設值為 0
。
30.153 lumakey
將某些亮度值轉換為透明度。
此濾鏡接受以下選項
- threshold
設定將用作透明度基礎的亮度。預設值為
0
。- tolerance
設定要鍵控輸出的亮度值範圍。預設值為
0.01
。- softness
設定柔和度範圍。預設值為
0
。使用此選項可控制從零透明度到完全透明度的漸變過渡。
30.153.1 指令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.154 lut, lutrgb, lutyuv
計算一個查找表,用於將每個像素組件輸入值綁定到一個輸出值,並將其應用於輸入視訊。
lutyuv 將查找表應用於 YUV 輸入視訊,lutrgb 應用於 RGB 輸入視訊。
這些濾鏡接受以下參數
- c0
設定第一個像素組件表達式
- c1
設定第二個像素組件表達式
- c2
設定第三個像素組件表達式
- c3
設定第四個像素組件表達式,對應於 alpha 組件
- r
r0
- g
g0
- b
b0
- a
a0
- y
y0
- u
u0
- v
v0
它們中的每一個都指定用於計算對應像素組件值的查找表的表達式。
c* 選項中與每個選項關聯的確切組件取決於輸入的格式。
lut 濾鏡需要輸入為 YUV 或 RGB 像素格式,lutrgb 需要輸入為 RGB 像素格式,而 lutyuv 需要輸入為 YUV。
表達式可以包含以下常數和函數
- w
- h
輸入寬度和高度。
- 設定將用於顏色差異計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。
val
- clipval
像素組件的輸入值,裁剪到 minval-maxval 範圍。
- maxval
像素組件的最大值。
- minval
像素組件的最小值。
- negval
像素組件值的負值,裁剪到 minval-maxval 範圍;它對應於表達式 "maxval-clipval+minval"。
- clip(val)
在 val 中計算的值,裁剪到 minval-maxval 範圍。
- gammaval(gamma)
像素組件值的計算伽瑪校正值,裁剪到 minval-maxval 範圍。它對應於表達式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"
所有表達式預設為 "clipval"。
30.154.1 指令
此濾鏡支援與選項相同的 commands。
30.154.2 範例
- 反轉輸入視訊
lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
以上與以下相同
lutrgb="r=negval:g=negval:b=negval" lutyuv="y=negval:u=negval:v=negval"
- 反轉亮度
lutyuv=y=negval
- 移除色彩組件,將視訊轉換為灰階影像
lutyuv="u=128:v=128"
- 應用亮度燃燒效果
lutyuv="y=2*val"
- 移除綠色和藍色組件
lutrgb="g=0:b=0"
- 在輸入上設定恆定的 alpha 通道值
format=rgba,lutrgb=a="maxval-minval/2"
- 將亮度伽瑪校正 0.5 倍
lutyuv=y=gammaval(0.5)
- 捨棄亮度最低有效位元
lutyuv=y='bitand(val, 128+64+32)'
- Technicolor 類似效果
lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
30.155 lut2, tlut2
lut2
濾鏡接受兩個輸入串流並輸出一個串流。
tlut2
(time lut2) 濾鏡從單個串流中取得兩個連續的影格。
此濾鏡接受以下參數
- c0
設定第一個像素組件表達式
- c1
設定第二個像素組件表達式
- c2
設定第三個像素組件表達式
- c3
設定第四個像素組件表達式,對應於 alpha 組件
- d
d
lut2
濾鏡也支援 framesync 選項。
它們中的每一個都指定用於計算對應像素組件值的查找表的表達式。
與每個 c* 選項關聯的確切組件取決於輸入的格式。
表達式可以包含以下常數
- w
- h
輸入寬度和高度。
- x
x
- y
y
- bdx
第一個輸入視訊位元深度。
- bdy
第二個輸入視訊位元深度。
所有表達式預設為 "x"。
30.155.1 指令
此濾鏡支援上述所有選項作為指令,但 d
選項除外。
30.155.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.156 maskedclamp
使用第二個輸入串流和第三個輸入串流來鉗制第一個輸入串流。
傳回第一個串流的值,使其介於第二個輸入串流 - undershoot
和第三個輸入串流 + overshoot
之間。
此濾波器接受以下選項
- undershoot
預設值為
0
。- overshoot
預設值為
0
。- planes
透過連接組件,將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。
30.156.1 指令
此濾鏡支援所有上述選項作為 命令。
30.157 maskedmax
使用第二個輸入串流與第一個輸入串流之間的絕對差值以及第三個輸入串流與第一個輸入串流之間的絕對差值,將第二個和第三個輸入串流合併到輸出串流中。如果第二個絕對差值大於第一個絕對差值,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。
此濾波器接受以下選項
- planes
透過連接組件,將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。
30.157.1 指令
此濾鏡支援所有上述選項作為 命令。
30.158 maskedmerge
使用第三個輸入串流中的每個像素權重,將第一個輸入串流與第二個輸入串流合併。
第三個串流像素組件中的值為 0 表示第一個串流中的像素組件保持不變,而最大值 (例如,對於 8 位元視訊為 255) 表示第二個串流中的像素組件保持不變。中間值定義兩個輸入串流的像素組件之間合併的量。
此濾波器接受以下選項
- planes
透過連接組件,將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。
30.158.1 指令
此濾鏡支援所有上述選項作為 命令。
30.159 maskedmin
使用第二個輸入串流與第一個輸入串流之間的絕對差值以及第三個輸入串流與第一個輸入串流之間的絕對差值,將第二個和第三個輸入串流合併到輸出串流中。如果第二個絕對差值小於第一個絕對差值,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。
此濾波器接受以下選項
- planes
透過連接組件,將第一個串流擴展到第二個串流中。這使得構建更穩健的邊緣遮罩成為可能。
30.159.1 指令
此濾鏡支援所有上述選項作為 命令。
30.160 maskedthreshold
通過將兩個視訊串流的絕對差值與固定閾值進行比較來選取像素。
如果第一個和第二個視訊串流的像素組件之絕對差值等於或小於使用者提供的閾值,則選取第一個視訊串流的像素組件;反之,則選取第二個視訊串流的像素組件。
此濾波器接受以下選項
- threshold
設定從兩個輸入視訊串流的絕對差值中選取像素時所使用的閾值。
- planes
設定將哪些平面處理為點陣圖,未處理的平面將從第二個串流複製。預設值為 0xf,代表所有平面都會被處理。
- mode
設定濾鏡的操作模式。可為
abs
或diff
。預設值為abs
。
30.160.1 指令
此濾鏡支援所有上述選項作為 命令。
30.161 maskfun
從輸入視訊建立遮罩。
舉例來說,在 tblend
濾鏡之後建立動態遮罩非常有用。
此濾波器接受以下選項
- low
設定低閾值。任何像素組件低於或等於此值,將會被設為 0。
- high
設定高閾值。任何像素組件高於此值,將會被設為目前像素格式所允許的最大值。
- planes
設定要過濾的平面,預設情況下,所有可用的平面都會被過濾。
- fill
用此值填滿所有影格像素。
- 總和
設定影格的最大平均像素值。如果所有像素組件的總和高於此平均值,則輸出影格將會完全填滿由 <var>fill</var> 選項所設定的值。通常與
tblend
濾鏡搭配使用時,在場景變換時特別有用。
30.161.1 指令
此濾鏡支援所有上述選項作為 命令。
30.162 mcdeint
套用動態補償反交錯。
它需要每個影格一個場景作為輸入,因此必須與 yadif=1/3 或同等設定一起使用。
此濾波器接受以下選項
- mode
設定反交錯模式。
它接受下列其中一個值
- ‘fast’
- ‘medium’
- ‘slow’
使用迭代式動態估計
- ‘extra_slow’
如同 ‘slow’,但使用多個參考影格。
預設值為 ‘fast’。
- parity
設定輸入視訊所假設的圖像場奇偶性。它必須是下列其中一個值
- ‘0, tff’
假設頂場優先
- ‘1, bff’
假設底場優先
預設值為 ‘bff’。
- qp
設定內部編碼器所使用的每個區塊量化參數 (QP)。
較高的值應能產生更平滑的動態向量場,但個別向量的最佳化程度會較低。預設值為 1。
30.163 中值
從半徑所定義的特定矩形區域中選取中位數像素。
此濾波器接受以下選項
- radius
設定水平半徑大小。預設值為
1
。允許範圍為 1 到 127 的整數。- planes
設定要處理的平面。預設值為
15
,代表所有可用的平面。- radiusV
設定垂直半徑大小。預設值為
0
。允許範圍為 0 到 127 的整數。若設為 0,則會從水平radius
選項中選取數值。- percentile
設定中位數百分位數。預設值為
0.5
。預設值0.5
會一律選取中位數,而0
會選取最小值,1
則會選取最大值。
30.163.1 指令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.164 mergeplanes
從多個視訊串流合併色彩通道組件。
此濾鏡最多可接受 4 個輸入串流,並將選取的輸入平面合併至輸出視訊。
此濾波器接受以下選項
- 映射
設定輸入到輸出平面的映射。預設值為
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.164.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.165 mestimate
使用區塊比對演算法估算並匯出動態向量。動態向量會儲存在影格邊緣資料中,以供其他濾鏡使用。
此濾波器接受以下選項
- method
指定動態估計方法。接受下列其中一個值
- ‘esa’
窮舉搜尋演算法。
- ‘tss’
三步搜尋演算法。
- ‘tdls’
二維對數搜尋演算法。
- ‘ntss’
新三步搜尋演算法。
- ‘fss’
四步搜尋演算法。
- ‘ds’
菱形搜尋演算法。
- ‘hexbs’
基於六邊形的搜尋演算法。
- ‘epzs’
增強型預測區域搜尋演算法。
- ‘umh’
不均勻多六邊形搜尋演算法。
預設值為 ‘esa’。
- mb_size
巨集區塊大小。預設值為
16
。- search_param
搜尋參數。預設值為
7
。
30.166 midequalizer
使用兩個視訊串流套用中途影像等化效果。
中途影像等化調整一對影像,使其具有相同的直方圖,同時盡可能維持其動態範圍。它對於例如匹配一對立體相機的曝光值非常有用。
此濾鏡有兩個輸入和一個輸出,它們必須具有相同的像素格式,但尺寸可能不同。濾鏡的輸出是第一個輸入,並根據兩個輸入的中途直方圖進行調整。
此濾鏡接受以下選項
- planes
設定要處理的平面。預設值為
15
,代表所有可用的平面。
30.167 minterpolate
使用動態插補將視訊轉換為指定的影格速率。
此濾波器接受以下選項
- fps
指定輸出影格速率。這可以是分數,例如
60000/1001
。如果 <var>fps</var> 低於來源 fps,則會捨棄影格。預設值為60
。- mi_mode
動態插補模式。接受下列值
- ‘dup’
複製前一個或下一個影格,以插補出新的影格。
- ‘blend’
混合來源影格。插補出的影格是前一個影格和下一個影格的平均值。
- ‘mci’
動態補償插補。當選取此模式時,下列選項會生效
- ‘mc_mode’
動態補償模式。接受下列值
- ‘obmc’
重疊區塊動態補償。
- ‘aobmc’
自適應重疊區塊動態補償。視窗加權係數會根據相鄰動態向量的可靠性進行自適應控制,以減少過度平滑。
預設模式為 ‘obmc’。
- ‘me_mode’
動態估計模式。接受下列值
- ‘bidir’
雙向動態估計。會針對每個來源影格,在向前和向後方向上估算動態向量。
- ‘bilat’
雙邊動態估計。直接為插補出的影格估算動態向量。
預設模式為 ‘bilat’。
- ‘me’
要用於動態估計的演算法。接受下列值
- ‘esa’
窮舉搜尋演算法。
- ‘tss’
三步搜尋演算法。
- ‘tdls’
二維對數搜尋演算法。
- ‘ntss’
新三步搜尋演算法。
- ‘fss’
四步搜尋演算法。
- ‘ds’
菱形搜尋演算法。
- ‘hexbs’
基於六邊形的搜尋演算法。
- ‘epzs’
增強型預測區域搜尋演算法。
- ‘umh’
不均勻多六邊形搜尋演算法。
預設演算法為 ‘epzs’。
- ‘mb_size’
巨集區塊大小。預設值為
16
。- ‘search_param’
動態估計搜尋參數。預設值為
32
。- ‘vsbmc’
啟用可變大小區塊動態補償。在物件邊界處會使用較小的區塊大小來套用動態估計,以使其較不模糊。預設值為
0
(停用)。
- scd
場景變換偵測方法。場景變換會導致動態向量朝隨機方向。場景變換偵測會將插補出的影格替換為重複的影格。對於其他模式可能不需要。接受下列值
- ‘none’
停用場景變換偵測。
- ‘fdiff’
影格差異。會比較對應的像素值,如果符合 <var>scd_threshold</var>,則會偵測到場景變換。
預設方法為 ‘fdiff’。
- scd_threshold
場景變換偵測閾值。預設值為
10.
。
30.168 混合
將多個視訊輸入串流混合成一個視訊串流。
以下是可接受選項的描述。
- inputs
輸入的數量。如果未指定,則預設為 2。
- weights
將每個輸入視訊串流的權重指定為序列。每個權重以空格分隔。如果權重數量少於 <var>frames</var> 的數量,則最後指定的權重會用於所有剩餘未設定的權重。
- scale
指定縮放比例,如果已設定,則會將其與每個權重乘以像素值的總和相乘,以得出最終的目的像素值。預設情況下,<var>scale</var> 會自動縮放至權重總和。
- planes
設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。
- duration
指定如何判斷串流結束。
- ‘longest’
最長輸入的持續時間。(預設)
- ‘shortest’
最短輸入的持續時間。
- ‘first’
第一個輸入的持續時間。
30.168.1 指令
此濾波器支援以下指令
- weights
- scale
- planes
語法與具有相同名稱的選項相同。
30.169 單色
使用自訂色彩濾鏡將視訊轉換為灰階。
以下是可接受選項的描述。
- cb
設定色度藍點。允許範圍為 -1 到 1。預設值為 0。
- cr
設定色度紅點。允許範圍為 -1 到 1。預設值為 0。
- size
設定色彩濾鏡大小。允許範圍為 .1 到 10。預設值為 1。
- high
設定高光強度。允許範圍為 0 到 1。預設值為 0。
30.169.1 指令
此濾鏡支援所有上述選項作為 命令。
30.170 morpho
此濾鏡允許套用主要的形態學灰階轉換,腐蝕和膨脹,並在第二個輸入串流中設定任意結構。
相較於 <a href="#erosion">erosion</a> 和 <a href="#dilation">dilation</a> 濾鏡中較為基礎的實作方式及較慢的效能,當速度至關重要時,應改用 morpho
濾鏡。
接受的選項說明如下:
- mode
設定要套用的形態學轉換,可以是
- ‘erode’
- ‘dilate’
- ‘open’
- ‘close’
- ‘gradient’
- ‘tophat’
- ‘blackhat’
預設值為
erode
。- planes
設定要過濾的平面,預設情況下,除了 Alpha 平面之外的所有平面都會被過濾。
- 結構
設定要從第二個輸入串流處理哪個結構視訊影格,可為 <var>first</var> 或 <var>all</var>。預設值為 <var>all</var>。
morpho
濾鏡也支援 <a href="#framesync">framesync</a> 選項。
30.170.1 指令
此濾鏡支援與選項相同的 commands。
30.171 mpdecimate
捨棄與前一個影格差異不大的影格,以降低影格速率。
此濾鏡的主要用途是用於極低位元率編碼 (例如,透過撥接數據機串流),但理論上可用於修正反向電視電影轉換不正確的影片。
以下是可接受選項的描述。
- max
設定可捨棄的連續影格最大數量 (若為正值),或捨棄影格之間的最小間隔 (若為負值)。若值為 0,則會捨棄影格,而無視先前循序捨棄的影格數量。
預設值為 0。
- 保留
設定在開始捨棄之前,要忽略的最大連續相似影格數。若值為 0,則會捨棄影格,而無視先前循序相似的影格數量。
預設值為 0。
- 高
- 低
- 比例
設定捨棄閾值。
<samp>hi</samp> 和 <samp>lo</samp> 的值適用於 8x8 像素區塊,並代表實際的像素值差異,因此閾值 64 對應於每個像素 1 個單位的差異,或是相同的差異以不同方式分散在區塊上。
若沒有 8x8 區塊的差異超過 <samp>hi</samp> 的閾值,且若沒有超過 <samp>frac</samp> 比例的區塊 (1 代表整個影像) 的差異超過 <samp>lo</samp> 的閾值,則該影格會是捨棄的候選者。
<samp>hi</samp> 的預設值為 64*12,<samp>lo</samp> 的預設值為 64*5,而 <samp>frac</samp> 的預設值為 0.33。
30.172 msad
取得兩個輸入視訊之間的 MSAD (平均絕對差總和)。
此濾鏡採用兩個輸入視訊。
為了使此濾鏡正常運作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的影格數,並且會逐個比較影格。
所取得的每個組件、平均值、最小值和最大值 MSAD 會透過記錄系統印出。
此濾鏡會將每個影格計算出的 MSAD 儲存在影格metadata中。
此濾鏡也支援 framesync 選項。
在以下範例中,正在處理的輸入檔案 main.mpg 將與參考檔案 ref.mpg 進行比較。
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
30.173 乘法
將第一個視訊串流的像素值與第二個視訊串流的像素值相乘。
此濾鏡接受以下選項
- scale
設定套用至第二個視訊串流的縮放比例。預設值為
1
。允許範圍為0
到9
。- offset
設定套用至第二個視訊串流的偏移量。預設值為
0.5
。允許範圍為-1
到1
。- planes
指定要從輸入視訊串流處理的平面。預設情況下,所有平面都會被處理。
30.173.1 指令
此濾鏡支援與選項相同的 commands。
30.174 負片
負片 (反轉) 輸入視訊。
它接受以下選項
- components
設定要負片的組件。
組件的可用值如下:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
- 負片 Alpha
值為 1 時,若存在 Alpha 組件,則會將其負片化。預設值為 0。
30.174.1 指令
此濾鏡支援與選項相同的 commands。
30.175 nlmeans
使用非局部均值演算法對影格進行降噪。
透過尋找具有相似上下文的其他像素,來調整每個像素。此上下文相似性是透過比較它們周圍大小為 <samp>p</samp>x<samp>p</samp> 的區塊來定義。會在像素周圍 <samp>r</samp>x<samp>r</samp> 的區域中搜尋區塊。
請注意,研究區域定義了區塊的中心點,這表示某些區塊會由該研究區域外的像素所組成。
此濾鏡接受以下選項。
- s
設定降噪強度。預設值為 1.0。必須在 [1.0, 30.0] 的範圍內。
- p
設定區塊大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。
- pc
與 <samp>p</samp> 相同,但適用於色度平面。
預設值為 <var>0</var>,表示自動。
- r
設定研究區域大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。
- rc
與 <samp>r</samp> 相同,但適用於色度平面。
預設值為 <var>0</var>,表示自動。
30.176 nnedi
使用神經網路邊緣導向插補對視訊進行反交錯處理。
此濾波器接受以下選項
- weights
必要選項,若沒有二進位檔案,此濾鏡將無法運作。目前檔案可在此處找到:https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
- deint
設定要進行反交錯處理的影格,預設值為
all
。可設為all
或interlaced
。- field
設定操作模式。
可以是以下其中之一
- ‘af’
使用影格標記,包含兩個場景。
- ‘a’
使用影格標記,單一場景。
- ‘t’
僅使用頂場。
- ‘b’
僅使用底場。
- ‘tf’
同時使用頂場和底場,先頂場。
- ‘bf’
同時使用頂場和底場,先底場。
- planes
設定要處理的畫格平面,預設為處理所有畫格。
- nsize
設定每個像素周圍的局部鄰域大小,供預測神經網路使用。
可以是以下其中之一
- ‘s8x6’
- ‘s16x6’
- ‘s32x6’
- ‘s48x6’
- ‘s8x4’
- ‘s16x4’
- ‘s32x4’
- nns
設定預測神經網路中的神經元數量。可以是下列其中之一
- ‘n16’
- ‘n32’
- ‘n64’
- ‘n128’
- ‘n256’
- qual
控制混合在一起以計算最終輸出值的不同神經網路預測數量。可以是
fast
、default 或slow
。- etype
設定預測器中要使用的權重集。可以是下列其中之一
- ‘a, abs’
訓練權重以最小化絕對誤差
- ‘s, mse’
訓練權重以最小化均方誤差
- pscrn
控制是否使用預先篩選器神經網路來決定哪些像素應由預測器神經網路處理,哪些像素可以由簡單的三次內插法處理。預先篩選器經過訓練,可以判斷三次內插法是否足以處理某個像素,或者是否應由預測器 NN 預測該像素。預先篩選器 NN 的計算複雜度遠低於預測器 NN。由於大多數像素都可以由三次內插法處理,因此使用預先篩選器通常會導致更快的處理速度。預先篩選器非常準確,因此使用與不使用預先篩選器之間的差異幾乎總是難以察覺的。
可以是以下其中之一
- ‘none’
- ‘original’
- ‘new’
- ‘new2’
- ‘new3’
預設值為
new
。
30.176.1 指令
此濾鏡支援與選項相同的 指令,但不包括 weights 選項。
30.177 noformat
強制 libavfilter 不要對下一個濾鏡的輸入使用任何指定的像素格式。
它接受以下參數
- pix_fmts
以 ’|’ 分隔的像素格式名稱列表,例如 pix_fmts=yuv420p|monow|rgb24"。
30.177.1 範例
- 強制 libavfilter 對 vflip 濾鏡的輸入使用與 yuv420p 不同的格式
noformat=pix_fmts=yuv420p,vflip
- 將輸入視訊轉換為列表中未包含的任何格式
noformat=yuv420p|yuv444p|yuv410p
30.178 雜訊
在視訊輸入畫格上新增雜訊。
此濾鏡接受以下選項
- 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.178.1 範例
將時間和均勻雜訊新增到輸入視訊
noise=alls=20:allf=t+u
30.179 正規化
正規化 RGB 視訊(又稱直方圖拉伸、對比度拉伸)。請參閱:https://en.wikipedia.org/wiki/Normalization_(image_processing)
對於每個畫格的每個通道,濾鏡會計算輸入範圍,並將其線性對應到使用者指定的輸出範圍。輸出範圍預設為從純黑到純白的全動態範圍。
時間平滑可以用於輸入範圍,以減少當小的黑暗或明亮物體進入或離開場景時引起的閃爍(亮度快速變化)。這類似於視訊攝影機上的自動曝光(自動增益控制),並且像視訊攝影機一樣,它可能會導致視訊的過度曝光或曝光不足一段時間。
R、G、B 通道可以獨立正規化,這可能會導致一些色彩偏移,或者作為單個通道連結在一起,這可以防止色彩偏移。連結正規化會保留色調。獨立正規化則不會,因此可用於消除一些色偏。獨立和連結正規化可以以任何比例組合。
正規化濾鏡接受以下選項
- blackpt
- whitept
定義輸出範圍的顏色。最小輸入值會對應到 blackpt。最大輸入值會對應到 whitept。預設值分別為黑色和白色。為 blackpt 指定白色,為 whitept 指定黑色將產生色彩反轉的正規化視訊。灰色陰影可用於縮小動態範圍(對比度)。在此處指定飽和色彩可以產生一些有趣的效果。
- short
用於時間平滑的先前畫格數。每個通道的輸入範圍都使用目前畫格和 smoothing 先前畫格的滾動平均值進行平滑處理。預設值為 0(無時間平滑)。
- independence
控制獨立(色彩偏移)通道正規化與連結(色彩保留)正規化的比例。0.0 為完全連結,1.0 為完全獨立。預設值為 1.0(完全獨立)。
- strength(強度)
濾鏡的整體強度。1.0 為全強度。0.0 是一個相當耗費資源的無操作。預設值為 1.0(全強度)。
30.179.1 指令
此濾鏡支援與選項相同的 指令,但不包括 smoothing 選項。指令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.179.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.180 null
將視訊來源不變地傳遞到輸出。
30.181 ocr
光學字元辨識
此濾鏡使用 Tesseract 進行光學字元辨識。若要啟用此濾鏡的編譯,您需要使用 --enable-libtesseract
配置 FFmpeg。
它接受以下選項
- datapath
設定 Tesseract 資料的路徑。預設為使用安裝時設定的路徑。
- language
設定語言,預設為 "eng"。
- whitelist
設定字元白名單。
- blacklist
設定字元黑名單。
濾鏡將辨識出的文字匯出為畫格元資料 lavfi.ocr.text
。濾鏡將辨識出的單字的信心度匯出為畫格元資料 lavfi.ocr.confidence
。
30.182 ocv
使用 libopencv 應用視訊轉換。
若要啟用此濾鏡,請安裝 libopencv 程式庫和標頭,並使用 --enable-libopencv
配置 FFmpeg。
它接受以下參數
- filter_name
要應用的 libopencv 濾鏡的名稱。
- filter_params
要傳遞給 libopencv 濾鏡的參數。如果未指定,則採用預設值。
有關更精確的資訊,請參閱官方 libopencv 文件:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
支援多個 libopencv 濾鏡;請參閱以下小節。
30.182.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.182.2 侵蝕
透過使用特定的結構元素來侵蝕影像。它對應於 libopencv 函式 cvErode
。
它接受以下參數:struct_el:nb_iterations,其語法和語意與 dilate 濾鏡相同。
30.182.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.183 示波器
2D 視訊示波器。
適用於測量空間脈衝、步階響應、色度延遲等。
它接受以下參數
- x
設定示波器中心 x 位置。
- y
設定示波器中心 y 位置。
- s
設定示波器大小,相對於畫格對角線。
- t
設定示波器傾斜/旋轉。
- o
設定軌跡不透明度。
- tx
設定軌跡中心 x 位置。
- ty
設定軌跡中心 y 位置。
- tw
設定軌跡寬度,相對於畫格寬度。
- th
設定軌跡高度,相對於畫格高度。
- c
設定要追蹤的分量。預設情況下,它會追蹤前三個分量。
- g
繪製軌跡網格。預設為啟用。
- st
繪製一些統計資訊。預設為啟用。
- sc
繪製示波器。預設為啟用。
30.183.1 指令
此濾鏡支援與選項相同的 commands。命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.183.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.184 疊加
將一個視訊疊加在另一個視訊之上。
它接受兩個輸入並有一個輸出。第一個輸入是「主要」視訊,第二個輸入疊加在其上。
它接受以下參數
以下是可接受選項的描述。
- 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 格式,可以是 straight 或 premultiplied。預設值為 straight。
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 濾鏡傳遞,以使它們以相同的零時間戳記開始,如 movie 濾鏡的範例所示。
您可以將更多疊加鏈接在一起,但您應該測試此類方法的效率。
30.184.1 指令
此濾波器支援以下指令
- x
- y
修改疊加輸入的 x 和 y。指令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.184.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
- 使用
ffmpeg
工具和-filter_complex
選項,在輸入的左下角插入透明 PNG 標誌ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
- 使用
ffmpeg
工具插入 2 個不同的透明 PNG 標誌(第二個標誌在右下角)ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
- 在主視訊頂部新增透明顏色圖層;
WxH
必須指定疊加濾鏡的主要輸入大小color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
- 並排播放原始視訊和已篩選版本(此處使用 deshake 濾鏡),使用
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] "
- 透過將 delogo 濾鏡應用於某個區段來遮罩視訊的 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.185 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.186 owdenoise
應用過完備小波去噪器。
此濾鏡接受以下選項
- depth
設定深度。
較大的深度值會對較低頻率的成分進行更多去噪,但會減慢濾波速度。
必須是 8-16 範圍內的整數,預設值為
8
。- luma_strength, ls
設定亮度強度。
必須是 0-1000 範圍內的雙精度浮點數值,預設值為
1.0
。- chroma_strength, cs
設定色度強度。
必須是 0-1000 範圍內的雙精度浮點數值,預設值為
1.0
。
30.187 邊框填充
為輸入圖像添加邊框,並將原始輸入放置在提供的 x、y 座標處。
它接受以下參數
- width, w
- 高度、h
指定添加邊框後輸出圖像尺寸的表達式。如果 width 或 height 的值為 0,則輸出將使用對應的輸入尺寸。
width 表達式可以參考由 height 表達式設定的值,反之亦然。
width 和 height 的預設值為 0。
- x
- y
指定在已添加邊框的區域內放置輸入圖像的偏移量,相對於輸出圖像的頂部/左側邊框。
x 表達式可以參考由 y 表達式設定的值,反之亦然。
x 和 y 的預設值為 0。
如果 x 或 y 評估為負數,它們將被更改,以便輸入圖像在邊框區域中居中。
- color
指定邊框區域的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。
color 的預設值為 "black"。
- eval
指定何時評估 width、height、x 和 y 表達式。
它接受以下值
- ‘init’
僅在濾鏡初始化期間或處理命令時評估表達式一次。
- ‘frame’
為每個傳入的幀評估表達式。
預設值為 ‘init’。
- aspect
邊框填充至指定的長寬比,而不是分辨率。
width、height、x 和 y 選項的值是包含以下常數的表達式
- in_w
- in_h
輸入影片的寬度和高度。
- iw
- ih
這些與 in_w 和 in_h 相同。
- out_w
- out_h
輸出寬度和高度(邊框區域的尺寸),由 width 和 height 表達式指定。
- ow
- oh
這些與 out_w 和 out_h 相同。
- x
- y
x 和 y 偏移量,由 x 和 y 表達式指定,如果尚未指定,則為 NAN。
- a
與 iw / ih 相同
- sar
輸入樣本縱橫比
- dar
輸入顯示縱橫比,與 (iw / ih) * sar 相同
- hsub
- vsub
水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。
30.187.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.188 palettegen
為整個影片流生成一個調色盤。
它接受以下選項
- max_colors
設定調色盤中要量化的最大顏色數。注意:調色盤仍將包含 256 種顏色;未使用的調色盤條目將為黑色。
- reserve_transparent
建立最多 255 種顏色的調色盤,並保留最後一種顏色用於透明度。保留透明顏色對於 GIF 優化很有用。如果未設定,調色盤中的最大顏色數將為 256。對於獨立圖像,您可能需要停用此選項。預設為啟用。
- transparency_color
設定將用作透明背景的顏色。
- stats_mode
設定統計模式。
它接受以下值
- ‘full’
計算完整幀直方圖。
- ‘diff’
僅針對與前一幀不同的部分計算直方圖。如果背景是靜態的,這可能與更重視輸入的移動部分有關。
- ‘single’
為每個幀計算新的直方圖。
預設值為 full。
此濾鏡還導出幀元數據 lavfi.color_quant_ratio
(nb_color_in / nb_color_out
),您可以使用它來評估調色盤的顏色量化程度。此資訊在 info 日誌級別也可見。
30.188.1 範例
- 使用
ffmpeg
生成代表影片的調色盤ffmpeg -i input.mkv -vf palettegen palette.png
30.189 paletteuse
使用調色盤來降採樣輸入影片流。
此濾鏡接受兩個輸入:一個影片流和一個調色盤。調色盤必須是 256 像素的圖像。
它接受以下選項
- dither
選擇抖動模式。可用的演算法有
- ‘bayer’
有序 8x8 拜耳抖動 (確定性)
- ‘heckbert’
Paul Heckbert 在 1982 年定義的抖動(簡單的誤差擴散)。注意:此抖動有時被認為是“錯誤的”,僅作為參考包含在內。
- ‘floyd_steinberg’
Floyd 和 Steingberg 抖動(誤差擴散)
- ‘sierra2’
Frankie Sierra 抖動 v2(誤差擴散)
- ‘sierra2_4a’
Frankie Sierra 抖動 v2 "Lite"(誤差擴散)
- ‘sierra3’
Frankie Sierra 抖動 v3(誤差擴散)
- ‘burkes’
Burkes 抖動(誤差擴散)
- ‘atkinson’
Bill Atkinson 在 Apple Computer 提出的 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.189.1 範例
- 使用調色盤(例如使用 palettegen 生成)以使用
ffmpeg
編碼 GIFffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
30.190 透視
校正未垂直於螢幕錄製的影片的透視。
以下是接受參數的說明。
- x0
- y0
- x1
- y1
- x2
- y2
- x3
- y3
設定左上角、右上角、左下角和右下角的座標表達式。預設值為
0:0:W:0:0:H:W:H
,透視將保持不變。如果sense
選項設定為source
,則指定的點將發送到目標的角。如果sense
選項設定為destination
,則來源的角將發送到指定的座標。表達式可以使用以下變數
- W
- H
影片幀的寬度和高度。
- in
輸入幀計數。
- off
輸出幀計數。
- interpolation
設定透視校正的插值。
它接受以下值
- ‘linear’
- ‘cubic’
預設值為 ‘linear’。
- sense
設定座標選項的解釋方式。
它接受以下值
- ‘0, source’
-
將來源中由給定座標指定的點發送到目標的角。
- ‘1, destination’
-
將來源的角發送到目標中由給定座標指定的點。
預設值為 ‘source’。
- eval
設定何時評估座標 x0,y0,...x3,y3 的表達式。
它接受以下值
- ‘init’
僅在篩選器初始化期間或處理命令時評估表達式一次
- ‘frame’
為每個傳入的影格評估表達式
預設值為 ‘init’。
30.191 相位
將交錯影片延遲一個場時間,以便場序變更。
預期的用途是修復 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.191.1 指令
此濾鏡支援所有上述選項作為 命令。
30.192 光敏感性
減少影片中的各種閃爍,以幫助癲癇症患者。
它接受以下選項
- frames, f
設定濾波時要使用的幀數。預設值為 30。
- threshold, t
設定檢測閾值因子。預設值為 1。值越小越嚴格。
- skip
設定採樣幀時要跳過的像素數。預設值為 1。允許的範圍是從 1 到 1024。
- bypass
保持幀不變。預設為停用。
30.193 pixdesctest
像素格式描述符測試濾鏡,主要用於內部測試。輸出影片應等於輸入影片。
例如
format=monow, pixdesctest
可用於測試 monowhite 像素格式描述符定義。
30.194 像素化
將像素化應用於影片流。
此濾鏡接受以下選項
- width, w
- 高度、h
設定將用於像素化的塊尺寸。預設值為
16
。- mode, m
設定使用的像素化模式。
可能的值為
- ‘avg’
- ‘min’
- ‘max’
預設值為
avg
。- planes, p
設定要濾波的平面。預設為濾波所有平面。
30.194.1 指令
此濾鏡支援所有與 commands 相同的選項。
30.195 pixscope
顯示顏色通道的樣本值。主要用於檢查顏色和色階。最小支援分辨率為 640x480。
濾鏡接受以下選項
- x
設定示波器 X 位置,X 軸上的相對偏移量。
- y
設定示波器 Y 位置,Y 軸上的相對偏移量。
- w
設定示波器寬度。
- h
設定示波器高度。
- o
設定視窗不透明度。此視窗還包含關於像素區域的統計資訊。
- wx
設定視窗 X 位置,X 軸上的相對偏移量。
- wy
設定視窗 Y 位置,Y 軸上的相對偏移量。
30.195.1 指令
此濾鏡支援與選項相同的 commands。
30.196 pp
使用 libpostproc 啟用指定的後處理子濾鏡鏈。此函式庫應通過 GPL 建置 (--enable-gpl
) 自動選取。子濾鏡必須以 '/' 分隔,並且可以通過在前面加上 '-' 來停用。每個子濾鏡和某些選項都有一個短名稱和一個長名稱,可以互換使用,即 dr/dering 是相同的。
濾鏡接受以下選項
- subfilters
設定後處理子濾鏡字串。
所有子濾鏡共享用於確定其範圍的通用選項
- a/autoq
遵循此子濾鏡的品質命令。
- c/chrom
也執行色度濾波(預設)。
- y/nochrom
僅執行亮度濾波(無色度)。
- n/noluma
僅執行色度濾波(無亮度)。
這些選項可以附加在子濾鏡名稱之後,以 '|' 分隔。
可用的子濾鏡有
- hb/hdeblock[|difference[|flatness]]
水平解塊濾鏡
- difference
差異因子,值越高表示解塊越多(預設值:
32
)。- 平坦度
Flatness 閾值,值越低表示解塊越多(預設值:
39
)。
- vb/vdeblock[|difference[|flatness]]
垂直解塊濾鏡
- difference
差異因子,值越高表示解塊越多(預設值:
32
)。- 平坦度
Flatness 閾值,值越低表示解塊越多(預設值:
39
)。
- ha/hadeblock[|difference[|flatness]]
精確水平解塊濾鏡
- difference
差異因子,值越高表示解塊越多(預設值:
32
)。- 平坦度
Flatness 閾值,值越低表示解塊越多(預設值:
39
)。
- va/vadeblock[|difference[|flatness]]
精確垂直解塊濾鏡
- difference
差異因子,值越高表示解塊越多(預設值:
32
)。- 平坦度
Flatness 閾值,值越低表示解塊越多(預設值:
39
)。
水平和垂直解塊濾鏡共享差異和 Flatness 值,因此您無法設定不同的水平和垂直閾值。
- h1/x1hdeblock
實驗性水平解塊濾鏡
- v1/x1vdeblock
實驗性垂直解塊濾鏡
- dr/dering
去環狀偽影濾鏡
- tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], 時間噪聲降低器
- threshold1
值越大 -> 濾波越強
- threshold2
值越大 -> 濾波越強
- threshold3
值越大 -> 濾波越強
- al/autolevels[:f/fullyrange], 自動亮度/對比度校正
- 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.196.1 範例
- 應用水平和垂直解區塊效應、去振鈴和自動亮度/對比度
pp=hb/vb/dr/al
- 應用預設濾波器,但不包含亮度/對比度校正
pp=de/-al
- 應用預設濾波器和時間降噪器
pp=default/tmpnoise|1|2|3
- 僅對亮度應用解區塊效應,並根據可用的 CPU 時間自動開啟或關閉垂直解區塊效應
pp=hb|y/vb|a
30.197 pp7
應用後處理濾波器 7。它是 spp 濾波器的變體,類似於 spp = 6,使用 7 點 DCT,其中在反離散餘弦變換 (IDCT) 後僅使用中心樣本。
此濾鏡接受以下選項
- qp
強制使用常數量化參數。它接受 0 到 63 範圍內的整數。如果未設定,濾波器將使用來自視訊串流的 QP(如果可用)。
- mode
設定閾值模式。可用模式如下
- ‘hard’
設定硬閾值。
- ‘soft’
設定軟閾值(去振鈴效果較好,但可能較模糊)。
- ‘medium’
設定中等閾值(效果良好,預設值)。
30.198 預乘
將 Alpha 預乘效果應用於輸入視訊串流,使用第二個串流的第一個平面作為 Alpha 通道。
兩個串流必須具有相同的尺寸和相同的像素格式。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
- inplace
處理時不需要第二個輸入,而是使用輸入串流中的 Alpha 平面。
30.199 prewitt
將 Prewitt 運算子應用於輸入視訊串流。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
- scale
設定將與濾波結果相乘的值。
- delta
設定將添加到濾波結果的值。
30.199.1 指令
此濾鏡支援所有上述選項作為 命令。
30.200 偽色
使用假色改變視訊中的幀顏色。
此濾波器接受以下選項
- 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
輸入寬度和高度。
- 設定將用於顏色差異計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。
val
- ymin, umin, vmin, amin
允許的最小分量值。
- ymax, umax, vmax, amax
允許的最大分量值。
所有表達式預設為 "val"。
30.200.1 指令
此濾鏡支援所有上述選項作為 命令。
30.200.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.201 psnr
取得兩個輸入視訊之間的平均值、最大值和最小值 PSNR(峰值訊噪比)。
此濾波器接受兩個輸入視訊,第一個輸入被視為「主要」來源,並保持不變地傳遞到輸出。第二個輸入用作計算 PSNR 的「參考」視訊。
為了使此濾波器正常運作,兩個視訊輸入必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的幀數,並逐一比較。
取得的平均 PSNR 會透過記錄系統列印出來。
濾波器儲存每個幀的累積 MSE(均方誤差),並在處理結束時在所有幀上平均,並應用以下公式以取得 PSNR
PSNR = 10*log10(MAX^2/MSE)
其中 MAX 是影像每個分量最大值的平均值。
以下是接受參數的描述。
- stats_file, f
如果指定,濾波器將使用指定的檔案來儲存每個單獨幀的 PSNR。當檔名等於 "-" 時,資料會傳送到標準輸出。
- stats_version
指定要使用的統計檔案格式版本。每個格式的詳細資訊寫在下面。預設值為 1。
- stats_add_max
決定是否將最大值輸出到統計日誌。預設值為 0。需要 stats_version >= 2。如果設定此值且 stats_version < 2,濾波器將傳回錯誤。
此濾鏡也支援 framesync 選項。
如果選取了 stats_file,則列印的檔案包含每個比較的幀對的 key:value 形式的鍵/值對序列。
如果指定的 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.201.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.202 pullup
下拉反轉(反向電視電影)濾波器,能夠處理混合硬電視電影、24000/1001 fps 逐行掃描和 30000/1001 fps 逐行掃描內容。
pullup 濾波器旨在利用未來的上下文來做出決策。此濾波器是無狀態的,因為它不會鎖定要遵循的模式,而是向前查看後續欄位,以識別匹配項並重建逐行掃描幀。
為了產生具有均勻幀率的內容,請在 pullup 後插入 fps 濾波器,如果輸入幀率為 29.97fps,則使用 fps=24000/1001
,對於 30fps 和(罕見的)電視電影 25fps 輸入,則使用 fps=24
。
此濾鏡接受以下選項
- jl
- jr
- jt
- jb
這些選項分別設定要忽略影像左側、右側、頂部和底部的「雜訊」量。左側和右側的單位為 8 像素,而頂部和底部的單位為 2 行。預設值為每側 8 像素。
- sb
設定嚴格中斷。將此選項設定為 1 將減少濾波器產生偶爾不匹配幀的機率,但也可能導致在高運動序列期間丟棄過多的幀。相反地,將其設定為 -1 將使濾波器更容易匹配欄位。這可能有助於處理欄位之間存在輕微模糊的視訊,但也可能導致輸出中出現交錯幀。預設值為
0
。- mp
設定要使用的度量平面。它接受以下值
- ‘l’
使用亮度平面。
- ‘u’
使用色度藍色平面。
- ‘v’
使用色度紅色平面。
可以設定此選項以使用色度平面而不是預設亮度平面來進行濾波器的計算。這可以提高非常乾淨的來源素材的準確性,但更可能降低準確性,特別是如果存在色度雜訊(彩虹效應)或任何灰階視訊。將 mp 設定為色度平面的主要目的是減少 CPU 負載,並使 pullup 可以在慢速機器上即時使用。
為了獲得最佳結果(輸出檔案中沒有重複幀),有必要變更輸出幀率。例如,反向電視電影 NTSC 輸入
ffmpeg -i input -vf pullup -r 24000/1001 ...
30.203 qp
變更視訊量化參數 (QP)。
此濾波器接受以下選項
- qp
設定量化參數的表達式。
該表達式透過 eval API 評估,並且可以包含以下常數等
- known
如果索引不是 129,則為 1,否則為 0。
- qp
從 -129 到 128 的循序索引。
30.203.1 範例
- 類似於
qp=2+2*sin(PI*qp)
30.204 qrencode
使用 libqrencode 函式庫(請參閱 https://fukuchi.org/works/qrencode/)產生 QR 碼,並將其覆蓋在目前幀的頂部。
若要啟用此濾波器的編譯,您需要使用 --enable-libqrencode
配置 FFmpeg。
QR 碼是從提供的文字或文字模式產生的。對應的 QR 碼會根據指定的選項縮放並覆蓋到視訊輸出中。
如果未指定文字,則不會覆蓋 QR 碼。
此濾波器接受以下選項
- qrcode_width, q
- padded_qrcode_width, Q
指定已呈現 QR 碼寬度的表達式,帶或不帶填充。 qrcode_width 表達式可以參考由 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。
這些表達式會針對每個新幀進行評估。
請參閱 qrencode 表達式 章節以取得詳細資訊。
- x
- y
指定用於定位已填充 QR 碼左上角的表達式。 x 表達式可以參考由 y 表達式設定的值,反之亦然。
預設情況下,x 和 y 設定為 0,表示 QR 碼放置在輸入的左上角。
這些表達式會針對每個新幀進行評估。
請參閱 qrencode 表達式 章節以取得詳細資訊。
- case_sensitive, cs
指示 libqrencode 使用區分大小寫的編碼。預設情況下啟用此功能。可以停用此功能以縮減 QR 編碼大小。
- level, l
指定 QR 編碼錯誤校正級別。校正級別越高,編碼大小會增加,但程式碼對於損壞的抵抗力會更強。較低級別為 L。
它接受以下值
- ‘L’
- ‘M’
- ‘Q’
- ‘H’
- expansion
選取如何擴充輸入文字。可以是
none
或normal
(預設值)。請參閱下方的 qrencode 文字擴充 章節以取得詳細資訊。- text
- textfile
定義要呈現的文字。如果兩個都未指定,則不會編碼 QR 碼(僅為空的彩色幀)。
如果啟用擴充,則文字會被視為文字範本,使用 qrencode 擴充機制。請參閱下方的 qrencode 文字擴充 章節以取得詳細資訊。
- background_color, bc
- foreground_color, fc
設定 QR 碼和背景顏色。foreground_color 的預設值為「黑色」,background_color 的預設值為「白色」。
如需顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節。
30.204.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
編碼 QR 碼的寬度
- rendered_qr_w, q
- rendered_padded_qr_w, Q
已呈現 QR 碼的寬度,帶或不帶填充。
這些參數允許 q 和 Q 表達式互相參考,因此您可以例如指定
q=3/4*Q
。- rand(min, max)
傳回介於 min 和 max 之間的隨機數
- sar
輸入樣本縱橫比
- t
以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN
- x
- y
文字繪製位置的 x 和 y 偏移座標。
這些參數允許 x 和 y 表達式互相引用,因此您可以例如指定
y=x/dar
。
30.204.2 qrencode 文字展開
若 expansion 設定為 none
,則文字會逐字列印。
若 expansion 設定為 normal
(預設值),則會使用以下展開機制。
反斜線字元 ‘\’ 後面跟隨任何字元,一律展開為第二個字元。
%{...}
形式的序列會被展開。大括號之間的文字是函數名稱,後面可能跟著以 ‘:’ 分隔的引數。若引數包含特殊字元或分隔符號 (’:’ 或 ‘}’),則應逸出。
請注意,它們可能也必須在篩選器引數字串中作為 text 選項的值、作為篩選器圖形描述中的篩選器引數,甚至可能為了 shell 進行逸出,最多可達四層逸出;使用帶有 textfile 選項的文字檔可以避免這些問題。
以下函數可用
n, frame_num
傳回幀編號
pts
傳回目前幀的呈現時間戳記。
它最多可以接受兩個引數。
第一個引數是時間戳記的格式;預設值為
flt
,表示秒,以微秒精度的十進制數字表示;hms
表示格式化的 [-]HH:MM:SS.mmm 時間戳記,具有毫秒精度。gmtime
表示格式化為 UTC 時間的幀時間戳記;localtime
表示格式化為當地時區時間的幀時間戳記。如果格式設定為hms24hh
,則時間以 24 小時格式 (00-23) 格式化。第二個引數是添加到時間戳記的偏移量。
若格式設定為
localtime
或gmtime
,則可以提供第三個引數:strftime
C 函數格式字串。預設情況下,將使用 YYYY-MM-DD HH:MM:SS 格式。expr, e
評估表達式的值並以雙精度浮點數輸出。
它必須採用一個引數,指定要評估的表達式,接受 qrencode_expressions 中定義的常數和函式。
expr_formatted, ef
評估表達式的值並以格式化的字串輸出。
第一個引數是要評估的表達式,與 expr 函數相同。第二個引數指定輸出格式。允許的值為 ‘x’、‘X’、‘d’ 和 ‘u’。它們的處理方式與
printf
函數完全相同。第三個參數是選用的,用於設定輸出佔用的位置數。它可用於從左側添加零填充。gmtime
篩選器執行時的時間,以 UTC 表示。它可以接受一個引數:
strftime
C 函數格式字串。格式字串已擴展為支援變數 %[1-6]N,該變數會列印秒的小數部分,並可選擇指定位數。localtime
篩選器執行時的時間,以本地時區表示。它可以接受一個引數:
strftime
C 函數格式字串。格式字串已擴展為支援變數 %[1-6]N,該變數會列印秒的小數部分,並可選擇指定位數。metadata
影格元數據。接受一個或兩個引數。
第一個引數是必要的,並指定元數據鍵。
第二個引數是選用的,並指定預設值,當找不到或為空時使用。
可用的元數據可以透過檢查每個影格區段中以 TAG 開頭的條目來識別,這些區段是透過執行
ffprobe -show_frames
列印的。在 qrencode 濾波器之前的濾波器中產生的字串元資料也可用。
rand(min, max)
傳回介於 min 和 max 之間的隨機數
30.204.3 範例
- 產生一個編碼指定文字的 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.205 quirc
使用 libquirc 函式庫(請參閱 https://github.com/dlbeer/quirc/)識別和解碼 QR 碼,並將識別出的 QR 碼位置和酬載列印為元資料。
若要啟用此濾波器的編譯,您需要使用 --enable-libquirc
配置 FFmpeg。
對於輸入視訊中找到的每個 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.206 隨機
將視訊幀從幀的內部快取刷新到隨機順序。不會丟棄任何幀。靈感來自 frei0r nervous 濾波器。
- frames
設定內部快取的幀大小,範圍從
2
到512
。預設值為30
。- seed
設定隨機數字產生器的種子,必須是包含在
0
和UINT32_MAX
之間的整數。如果未指定,或明確設定為小於0
,濾波器將盡力使用良好的隨機種子。
30.207 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.207.1 指令
此濾鏡支援所有上述選項作為 命令。
30.207.2 範例
- 輸出包含呈現時間以及已識別 EIA-608 字幕資料前兩行的 CSV 檔案。
ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
30.208 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.208.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.209 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) 手冊中的 "Color" 章節。預設顏色為
black
。
30.210 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.211 removelogo
抑制電視台標誌,使用影像檔案判斷哪些像素組成標誌。其運作方式為以鄰近像素填補組成標誌的像素。
此濾鏡接受以下選項
- filename, f
設定濾鏡點陣圖檔案,可以是 libavformat 支援的任何影像格式。影像檔案的寬度和高度必須與正在處理的視訊串流相符。
在提供的點陣圖影像中,值為零的像素不被視為標誌的一部分,非零像素則被視為標誌的一部分。如果您使用白色 (255) 作為標誌,黑色 (0) 作為其餘部分,您將會很安全。為了製作濾鏡點陣圖,建議擷取一個黑色影格的螢幕截圖,其中標誌可見,然後使用閾值濾鏡,接著使用侵蝕濾鏡一到兩次。
如果需要,可以手動修正小污點。請記住,如果標誌像素未被覆蓋,濾鏡品質將會大幅降低。將過多像素標記為標誌的一部分不會造成太大損害,但它會增加覆蓋影像所需的模糊量,並破壞更多不必要的資訊,而且額外的像素會減慢大型標誌的速度。
30.212 repeatfields
此濾鏡使用來自視訊 ES 標頭的 repeat_field 旗標,並根據其值硬性重複影格。
30.213 反向
反轉視訊片段。
警告:此濾波器需要記憶體來緩衝整個片段,因此建議進行修剪。
30.213.1 範例
- 擷取片段的前 5 秒,並將其反轉。
trim=end=5,reverse
30.214 rgbashift
水平和/或垂直位移 R/G/B/A 像素。
此濾鏡接受以下選項
- rh
設定水平位移紅色的量。
- rv
設定垂直位移紅色的量。
- gh
設定水平位移綠色的量。
- gv
設定垂直位移綠色的量。
- bh
設定水平位移藍色的量。
- bv
設定垂直位移藍色的量。
- ah
設定水平位移 Alpha 的量。
- av
設定垂直位移 Alpha 的量。
- edge
設定邊緣模式,可以是 smear(預設)或 warp。
30.214.1 指令
此濾鏡支援所有上述選項作為 命令。
30.215 roberts
將羅伯茲十字運算子應用於輸入視訊串流。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
- scale
設定將與濾波結果相乘的值。
- delta
設定將添加到濾波結果的值。
30.215.1 指令
此濾鏡支援所有上述選項作為 命令。
30.216 旋轉
以弧度表示的任意角度旋轉視訊。
此濾鏡接受以下選項
以下是選用參數的說明。
- angle, a
設定一個表示角度的表達式,以弧度為單位,順時針旋轉輸入視訊。負值將導致逆時針旋轉。預設值設定為 "0"。
此表達式會針對每個影格進行評估。
- out_w, ow
設定輸出寬度表達式,預設值為 "iw"。此表達式在配置期間僅評估一次。
- out_h, oh
設定輸出高度表達式,預設值為 "ih"。此表達式在配置期間僅評估一次。
- bilinear
若設定為 1,則啟用雙線性內插,值為 0 則停用。預設值為 1。
- fillcolor, c
設定用於填滿未被旋轉影像覆蓋的輸出區域的顏色。關於此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。如果選擇特殊值 "none",則不會列印背景(例如,如果永遠不會顯示背景,則很有用)。
預設值為 "black"。
角度和輸出尺寸的表達式可以包含以下常數和函數
- 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
輸出寬度和高度,即由 width 和 height 表達式指定的填充區域的大小
- rotw(a)
- roth(a)
完全包含以 a 弧度旋轉的輸入視訊所需的最小寬度/高度。
這些僅在計算 out_w 和 out_h 表達式時可用。
30.216.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.216.2 指令
篩選器支援以下命令
- a, angle
設定角度表達式。此命令接受與對應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.217 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.218 縮放
使用 libswscale 函式庫縮放(調整大小)輸入視訊。
scale 濾鏡會透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。
如果輸入影像格式與下一個濾鏡要求的格式不同,scale 濾鏡會將輸入轉換為要求的格式。
30.218.1 選項
此濾鏡接受以下選項,libswscale 縮放器支援的任何選項,以及任何 影格同步 選項。
請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊 以取得完整的縮放器選項列表。
- width, w
- 高度、h
設定輸出視訊尺寸表達式。預設值為輸入尺寸。
若 width 或 w 值為 0,則輸出會使用輸入寬度。若 height 或 h 值為 0,則輸出會使用輸入高度。
如果只有一個值為 -n,其中 n >= 1,scale 濾鏡將使用一個值來維持輸入影像的縱橫比,該縱橫比從另一個指定的尺寸計算得出。之後,它會確保計算出的尺寸可被 n 整除,並在必要時調整該值。
如果兩個值都為 -n,其中 n >= 1,則行為將與兩個值都設定為 0 的情況相同,如先前詳細說明。
請參閱下方接受用於尺寸表達式的常數列表。
- eval
指定何時評估 width 和 height 表達式。它接受以下值
- ‘init’
僅在濾鏡初始化期間或處理命令時評估表達式一次。
- ‘frame’
為每個傳入的幀評估表達式。
預設值為 ‘init’。
- interl
設定交錯模式。它接受以下值
- ‘1’
強制啟用交錯感知縮放。
- ‘0’
不應用交錯縮放。
- ‘-1’
根據來源影格是否標記為交錯來選擇交錯感知縮放。
預設值為 ‘0’。
- flags
設定 libswscale 縮放旗標。請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊 以取得完整的值列表。若未明確指定,濾鏡會應用預設旗標。
- param0, param1
為需要它們的縮放演算法設定 libswscale 輸入參數。請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊 以取得完整的說明文件。若未明確指定,濾鏡會應用空參數。
- intent
設定在不同色彩空間之間轉換時要使用的 ICC 渲染意圖。它接受以下值
- ‘perceptual’
使用感知引導的色調和色域映射曲線。所用映射的確切細節可能會隨時變更,不應將其視為穩定。此意圖建議用於在典型的觀看環境中最終觀看影像/視訊內容。
- ‘relative_colorimetric’
使用嘗試找到色度上最不相似的色域內顏色的比色裁剪曲線,靜態裁剪色域外顏色。此意圖執行白點適應和黑點適應。這是預設值。此意圖建議用於極度重視忠實色彩再現的任何情況,即使以裁剪為代價。
- ‘absolute_colorimetric’
硬性裁剪色域外顏色,不嘗試白點或黑點再現。此意圖將在輸出顯示器上以 1:1 的比例再現色域內顏色,如同它們在參考顯示器上顯示一樣,前提是輸出顯示器已適當校準。
- ‘saturation’
執行飽和度映射 - 也就是說,以非線性方式將輸入色彩體積直接拉伸到輸出色彩體積上,盡可能保留原始訊號外觀。此意圖建議用於訊號內容評估,因為它不會導致任何裁剪。它大致類似於不執行任何色彩映射,儘管它仍然考慮了母帶製作顯示器原色以及編碼 TRC 中的任何差異。
- size, s
設定影片尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中 (ffmpeg-utils)「影片尺寸」章節。
- in_color_matrix
- out_color_matrix
設定輸入/輸出 YCbCr 色彩空間類型。
這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。
若未指定,色彩空間類型將取決於像素格式。
可能的值:
- ‘auto’
自動選擇。
- ‘bt709’
格式符合國際電信聯盟 (ITU) 建議 BT.709。
- ‘fcc’
設定色彩空間符合美國聯邦通信委員會 (FCC) 聯邦法規彙編 (CFR) 第 47 篇 (2003) 73.682 (a)。
- ‘bt601’
- ‘bt470’
- ‘smpte170m’
設定色彩空間符合
- 國際電信聯盟無線電通信部門 (ITU-R) 建議 BT.601
- ITU-R Rec. BT.470-6 (1998) 系統 B、B1 和 G
- 美國電影電視工程師協會 (SMPTE) ST 170:2004
- ‘smpte240m’
設定色彩空間符合 SMPTE ST 240:1999。
- ‘bt2020’
設定色彩空間符合 ITU-R BT.2020 非恆定亮度系統。
- in_range
- out_range
設定輸入/輸出 YCbCr 樣本範圍。
這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。若未指定,範圍將取決於像素格式。可能的值
- ‘auto/unknown’
自動選擇。
- ‘jpeg/full/pc’
設定完整範圍 (8 位元亮度時為 0-255)。
- ‘mpeg/limited/tv’
設定 "MPEG" 範圍 (8 位元亮度時為 16-235)。
- in_chroma_loc
- out_chroma_loc
設定輸入/輸出色度樣本位置。若未指定,預設使用中心點色度。可能的值
- ‘auto, unknown’
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
- in_primaries
- out_primaries
設定輸入/輸出 RGB 原色。
這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值
- ‘auto’
自動選擇。這是預設值。
- ‘bt709’
- ‘bt470m’
- ‘bt470bg’
- ‘smpte170m’
- ‘smpte240m’
- ‘film’
- ‘bt2020’
- ‘smpte428’
- ‘smpte431’
- ‘smpte432’
- ‘jedec-p22’
- ‘ebu3213’
- in_transfer
- out_transfer
設定輸入/輸出傳輸響應曲線 (TRC)。
這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值
- ‘auto’
自動選擇。這是預設值。
- ‘bt709’
- ‘bt470m’
- ‘gamma22’
- ‘bt470bg’
- ‘gamma28’
- ‘smpte170m’
- ‘smpte240m’
- ‘linear’
- ‘iec61966-2-1’
- ‘srgb’
- ‘iec61966-2-4’
- ‘xvycc’
- ‘bt1361e’
- ‘bt2020-10’
- ‘bt2020-12’
- ‘smpte2084’
- ‘smpte428’
- ‘arib-std-b67’
- pos_x
若有必要保持原始長寬比,則啟用縮小或增大輸出影片寬度或高度。可能的值
- ‘disable’
依指定縮放影片並停用此功能。
- ‘decrease’
輸出影片尺寸將在必要時自動縮小。
- ‘increase’
輸出影片尺寸將在必要時自動增大。
此選項的一個實用範例是,當您知道特定裝置允許的最大解析度時,您可以使用此選項將輸出影片限制於該解析度,同時保持長寬比。例如,裝置 A 允許 1280x720 播放,而您的影片是 1920x800。使用此選項 (設定為 decrease) 並在命令列中指定 1280x720,會使輸出變成 1280x533。
請注意,這與為 w 或 h 指定 -1 是不同的,您仍然需要指定輸出解析度才能使此選項生效。
- pos_y
確保當與 force_original_aspect_ratio 一起使用時,輸出尺寸 (寬度和高度) 都能被給定的整數整除。這與在 w 和 h 選項中使用
-n
類似。此選項會遵循為 force_original_aspect_ratio 設定的值,相應地增大或縮小解析度。影片的長寬比可能會略微修改。
如果您需要使用 force_original_aspect_ratio 使影片符合或超出定義的解析度,但編碼器又對寬度或高度的可除性有限制,則此選項會很有用。
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。
- n
輸入幀的 (順序) 編號,從 0 開始。僅在
eval=frame
時可用。- t
輸入幀的呈現時間戳記,以秒數表示。僅在
eval=frame
時可用。- pos
幀在輸入串流中的位置 (位元組偏移量),如果此資訊不可用和/或無意義 (例如在合成影片的情況下) 則為 NaN。僅在
eval=frame
時可用。已棄用,請勿使用。- ref_w, rw
- ref_h, rh
- ref_a
- ref_dar, rdar
- ref_n
- ref_t
- ref_pos
與上述相同,但用於第二個參考輸入。如果存在任何這些變數,則此濾鏡接受兩個輸入。
30.218.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 和 setsar 使像素變成正方形
scale='trunc(ih*dar):ih',setsar=1/1
- 通過組合 scale 和 setsar 使像素變成正方形,並確保結果解析度為偶數 (某些編解碼器要求)
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.218.3 指令
此濾波器支援以下指令
- width, w
- 高度、h
設定輸出影片尺寸表達式。此命令接受與相應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
30.219 scale_cuda
使用加速的 CUDA 核心縮放 (調整大小) 和轉換 (像素格式) 輸入影片。設定輸出寬度和高度的方式與 scale 濾鏡相同。
此濾鏡接受以下選項
- w
- h
設定輸出視訊尺寸表達式。預設值為輸入尺寸。
基於 libplacebo 的彈性 GPU 加速處理濾鏡 (https://code.videolan.org/videolan/libplacebo)。
- interp_algo
設定用於縮放的演算法
- nearest
最近鄰
如果輸入參數與所需的輸出匹配,則預設使用。
- bilinear
雙線性
- bicubic
雙立方
這是預設值。
- lanczos
Lanczos
- format
控制輸出像素格式。預設情況下,或如果未指定,則使用輸入像素格式。
此濾鏡不支援在 YUV 和 RGB 像素格式之間轉換。
- passthrough
如果設定為 0,則會處理每個幀,即使不需要轉換。此模式可用於將濾鏡用作下游幀消費者的緩衝區,以避免耗盡有限的解碼器幀池。
如果設定為 1,則如果幀與所需的輸出參數匹配,則會按原樣傳遞幀。這是預設行為。
- 參數
演算法特定參數。
影響雙立方演算法的曲線。
- pos_x
- pos_y
設定輸出放置 x/y 表達式,預設值為
(ow-pw)/2
和(oh-ph)/2
。
30.219.1 範例
- 將輸入縮放到 720p,保持長寬比並確保輸出為 yuv420p。
scale_cuda=-2:720:format=yuv420p
- 使用最近鄰演算法升頻到 4K。
scale_cuda=4096:2160:interp_algo=nearest
- 不進行任何轉換或縮放,而是將所有輸入幀複製到新分配的幀中。這可用於處理濾鏡和編碼鏈,否則會耗盡解碼器的幀池。
scale_cuda=passthrough=0
30.220 scale_npp
使用 NVIDIA Performance Primitives (libnpp) 在 CUDA 影片幀上執行縮放和/或像素格式轉換。設定輸出寬度和高度的方式與 scale 濾鏡相同。
接受以下其他選項
- format
輸出 CUDA 幀的像素格式。如果設定為字串 "same" (預設值),則會保留輸入格式。請注意,硬體幀尚不支援自動格式協商和轉換
- interp_algo
用於調整大小的插值演算法。以下之一
- nn
最近鄰。
- linear
- 三次函數
- cubic2p_bspline
2 參數立方 (B=1, C=0)
- cubic2p_catmullrom
2 參數立方 (B=0, C=1/2)
- cubic2p_b05c03
2 參數立方 (B=1/2, C=3/10)
- super
超取樣
- lanczos
- pos_x
若有必要保持原始長寬比,則啟用縮小或增大輸出影片寬度或高度。可能的值
- ‘disable’
依指定縮放影片並停用此功能。
- ‘decrease’
輸出影片尺寸將在必要時自動縮小。
- ‘increase’
輸出影片尺寸將在必要時自動增大。
此選項的一個實用範例是,當您知道特定裝置允許的最大解析度時,您可以使用此選項將輸出影片限制於該解析度,同時保持長寬比。例如,裝置 A 允許 1280x720 播放,而您的影片是 1920x800。使用此選項 (設定為 decrease) 並在命令列中指定 1280x720,會使輸出變成 1280x533。
請注意,這與為 w 或 h 指定 -1 是不同的,您仍然需要指定輸出解析度才能使此選項生效。
- pos_y
確保當與 force_original_aspect_ratio 一起使用時,輸出尺寸 (寬度和高度) 都能被給定的整數整除。這與在 w 和 h 選項中使用
-n
類似。此選項會遵循為 force_original_aspect_ratio 設定的值,相應地增大或縮小解析度。影片的長寬比可能會略微修改。
如果您需要使用 force_original_aspect_ratio 使影片符合或超出定義的解析度,但編碼器又對寬度或高度的可除性有限制,則此選項會很有用。
- eval
指定何時評估 width 和 height 表達式。它接受以下值
- ‘init’
僅在濾鏡初始化期間或處理命令時評估表達式一次。
- ‘frame’
為每個傳入的幀評估表達式。
w 和 h 選項的值是包含以下常數的表達式
- in_w
- in_h
輸入寬度和高度
- iw
- ih
這些與 in_w 和 in_h 相同。
- out_w
- out_h
輸出 (縮放後) 寬度和高度
- ow
- oh
這些與 out_w 和 out_h 相同
- a
與 iw / ih 相同
- sar
輸入樣本縱橫比
- dar
輸入顯示長寬比。從
(iw / ih) * sar
計算而得。- n
輸入幀的 (順序) 編號,從 0 開始。僅在
eval=frame
時可用。- t
輸入幀的呈現時間戳記,以秒數表示。僅在
eval=frame
時可用。- pos
幀在輸入串流中的位置 (位元組偏移量),如果此資訊不可用和/或無意義 (例如在合成影片的情況下) 則為 NaN。僅在
eval=frame
時可用。已棄用,請勿使用。
30.221 scale2ref_npp
使用 NVIDIA Performance Primitives (libnpp) 根據參考影片縮放 (調整大小) 輸入影片。
有關可用選項,請參閱 scale_npp 濾鏡,scale2ref_npp 支援相同的選項,但使用參考影片而不是主要輸入作為基礎。scale2ref_npp 也支援 w 和 h 選項的以下其他常數
- main_w
- main_h
主要輸入影片的寬度和高度
- main_a
與 main_w / main_h 相同
- main_sar
主要輸入影片的樣本長寬比
- main_dar, mdar
主要輸入影片的顯示長寬比。從
(main_w / main_h) * main_sar
計算而得。- main_n
主要輸入幀的 (順序) 編號,從 0 開始。僅在
eval=frame
時可用。- main_t
主要輸入幀的呈現時間戳記,以秒數表示。僅在
eval=frame
時可用。- main_pos
幀在主要輸入串流中的位置 (位元組偏移量),如果此資訊不可用和/或無意義 (例如在合成影片的情況下) 則為 NaN。僅在
eval=frame
時可用。
30.221.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.222 scale_vt
使用 VTPixelTransferSession 縮放和轉換色彩參數。
此濾鏡接受以下選項
- w
- h
設定輸出視訊尺寸表達式。預設值為輸入尺寸。
- color_matrix
設定輸出色彩空間矩陣。
- color_primaries
設定輸出色彩原色。
- color_transfer
設定輸出傳輸特性。
30.223 scharr
將 scharr 運算子應用於輸入影片串流。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
- scale
設定將與濾波結果相乘的值。
- delta
設定將添加到濾波結果的值。
30.223.1 指令
此濾鏡支援所有上述選項作為 命令。
30.224 滾動
以恆定速度水平和/或垂直滾動輸入影片。
此濾鏡接受以下選項
- horizontal, h
設定水平滾動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變滾動方向。
- vertical, v
設定垂直滾動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變滾動方向。
- hpos
設定初始水平滾動位置。預設值為 0。允許範圍為 0 到 1。
- vpos
設定初始垂直滾動位置。預設值為 0。允許範圍為 0 到 1。
30.224.1 指令
此濾鏡支援以下 命令
- horizontal, h
設定水平滾動速度。
- vertical, v
設定垂直滾動速度。
30.225 scdet
偵測影片場景變換。
此濾鏡設定幀元數據,包括幀之間的 mafd、場景分數,並將幀轉發到下一個濾鏡,以便它們可以使用這些元數據來偵測場景變換或其他內容。
此外,當此濾鏡通過 threshold 偵測到場景變換時,它會記錄訊息並設定幀元數據。
lavfi.scd.mafd
元數據鍵會針對每個幀設定 mafd。
lavfi.scd.score
元數據鍵會針對每個幀設定場景變換分數,以偵測場景變換。
lavfi.scd.time
元數據鍵會設定偵測到 threshold 場景變換的當前過濾幀時間。
此濾鏡接受以下選項
- threshold, t
將場景變換偵測閾值設定為最大變化的百分比。良好值在
[8.0, 14.0]
範圍內。threshold 的範圍為[0., 100.]
。預設值為
10.
。- sc_pass, s
設定標誌以將場景變換幀傳遞到下一個濾鏡。預設值為
0
。如果您只想取得場景變換幀的快照,則可以啟用它。
30.226 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.226.1 範例
- 在每個綠色區域中將青色增加 50%,黃色減少 33%,並在藍色區域中將洋紅色增加 27%
selectivecolor=greens=.5 0 -.33 0:blues=0 .27
- 使用 Photoshop 選取顏色預設集
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
30.227 separatefields
separatefields
濾鏡接受基於影格的視訊輸入,並將每個影格分割成其組成的場,產生一個新的半高片段,其影格率和影格數是原來的兩倍。
此濾鏡使用影格中的場優勢(field-dominance)資訊來決定在輸出中哪個場對應的場要先放置。如果判斷錯誤,請在 separatefields
濾鏡之前使用 setfield 濾鏡。
30.228 setdar, setsar
setdar
濾鏡設定濾鏡輸出視訊的顯示長寬比 (Display Aspect Ratio)。
這是透過根據以下方程式更改指定的取樣(又稱像素)長寬比來完成的
DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR
請記住,setdar
濾鏡不會修改視訊影格的像素尺寸。此外,此濾鏡設定的顯示長寬比可能會被濾鏡鏈中後續的濾鏡更改,例如,在縮放的情況下,或者如果應用了另一個 "setdar" 或 "setsar" 濾鏡。
setsar
濾鏡設定濾鏡輸出視訊的取樣(又稱像素)長寬比 (Sample Aspect Ratio)。
請注意,由於應用此濾鏡的結果,輸出的顯示長寬比將根據上述方程式而改變。
請記住,setsar
濾鏡設定的取樣長寬比可能會被濾鏡鏈中後續的濾鏡更改,例如,如果應用了另一個 "setsar" 或 "setdar" 濾鏡。
它接受以下參數
- r, ratio, dar (僅
setdar
), sar (僅setsar
) 設定濾鏡使用的長寬比。
參數可以是浮點數字串或表達式。如果未指定參數,則假定值為 "0",表示使用相同的輸入值。
- max
設定將表示的長寬比化簡為有理數時,用於表示分子和分母的最大整數值。預設值為
100
。
參數 sar 是一個包含以下常數的表達式
- w, h
輸入寬度和高度。
- a
與 w / h 相同。
- sar
輸入樣本長寬比。
- dar
輸入顯示長寬比。它與 (w / h) * sar 相同。
- hsub, vsub
水平和垂直色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。
30.228.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.229 setfield
強制輸出視訊影格的場。
setfield
濾鏡標記輸出影格的交錯類型場。它不會更改輸入影格,而僅設定相應的屬性,這會影響後續濾鏡(例如 fieldorder
或 yadif
)如何處理該影格。
此濾鏡接受以下選項
- mode
可用的值為
- ‘auto’
保持相同的場屬性。
- ‘bff’
將影格標記為 bottom-field-first(底場優先)。
- ‘tff’
將影格標記為 top-field-first(頂場優先)。
- ‘prog’
將影格標記為漸進式。
30.230 setparams
強制輸出視訊影格的影格參數。
setparams
濾鏡標記輸出影格的交錯和色彩範圍。它不會更改輸入影格,而僅設定相應的屬性,這會影響濾鏡/編碼器如何處理該影格。
- field_mode
可用的值為
- ‘auto’
保持相同的場屬性(預設)。
- ‘bff’
將影格標記為 bottom-field-first(底場優先)。
- ‘tff’
將影格標記為 top-field-first(頂場優先)。
- ‘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’
- 產生 ICC 描述檔並將其附加到影格。
設定顏色傳輸。可用值為
- ‘auto’
保持相同的色彩傳遞特性 (color trc) 屬性(預設)。
- ‘bt709’
- ‘unknown’
- ‘bt470m’
- ‘bt470bg’
- ‘smpte170m’
- ‘smpte240m’
- ‘linear’
- ‘log100’
- ‘log316’
- ‘iec61966-2-4’
- ‘bt1361e’
- ‘iec61966-2-1’
- ‘bt2020-10’
- ‘bt2020-12’
- ‘smpte2084’
- ‘smpte428’
- ‘arib-std-b67’
- normalize_sar
設定色彩空間。可用值為
- ‘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.231 sharpen_npp
使用 NVIDIA Performance Primitives (libnpp) 執行具有邊界控制的影像銳化。
接受以下其他選項
- border_type
用於影格邊界的取樣類型。以下其中之一
- replicate
複製像素值。
30.232 剪切
將剪切變換應用於輸入視訊。
此濾鏡支援以下選項
- shx
X 方向的剪切係數。預設值為 0。允許範圍為 -2 到 2。
- shy
Y 方向的剪切係數。預設值為 0。允許範圍為 -2 到 2。
- fillcolor, c
設定用於填充未被變換視訊覆蓋的輸出區域的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。如果選擇特殊值 "none",則不印製背景(例如,如果永遠不會顯示背景,則很有用)。
預設值為 "black"。
- interp
設定插值類型。可以是
bilinear
或nearest
。預設值為bilinear
。
30.232.1 指令
此濾鏡支援所有上述選項作為 命令。
30.233 showinfo
顯示包含每個輸入視訊影格的各種資訊的行。輸入視訊不會被修改。
此濾鏡支援以下選項
- checksum
計算每個平面的校驗和。預設為啟用。
- udu_sei_as_ascii
盡可能以 ascii 字元印出使用者資料未註冊 SEI,否則以十六進制格式印出。
顯示的行包含 鍵:值 形式的鍵/值對序列。
輸出中顯示以下值
- n
輸入幀的(順序)編號,從 0 開始。
- pts
輸入影格的 Presentation TimeStamp(呈現時間戳記),以時間基底單位數表示。時間基底單位取決於濾鏡輸入 pad。
- pts_time
輸入影格的 Presentation TimeStamp(呈現時間戳記),以秒數表示。
- fmt
像素格式名稱。
- sar
輸入影格的取樣長寬比,以 num/den 的形式表示。
- s
輸入影格的大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Video size" 章節。
- i
交錯模式的類型("P" 表示 "progressive"(漸進式),"T" 表示 top field first(頂場優先),"B" 表示 bottom field first(底場優先))。
- iskey
如果影格是關鍵影格,則為 1,否則為 0。
- type
輸入影格的圖片類型("I" 表示 I-frame,"P" 表示 P-frame,"B" 表示 B-frame,或 "?" 表示未知類型)。另請參閱 libavutil/avutil.h 中定義的
AVPictureType
列舉和av_get_picture_type_char
函數的文件。- checksum
輸入影格所有平面的 Adler-32 校驗和(以十六進制印出)。
- plane_checksum
輸入影格每個平面的 Adler-32 校驗和(以十六進制印出),以 "[c0 c1 c2 c3]" 的形式表示。
- 平均值
輸入影格每個平面中像素的平均值,以 "[mean0 mean1 mean2 mean3]" 的形式表示。
- stdev
輸入影格每個平面中像素值的標準差,以 "[stdev0 stdev1 stdev2 stdev3]" 的形式表示。
30.234 showpalette
顯示每個影格的 256 色調色盤。此濾鏡僅適用於 pal8 像素格式影格。
它接受以下選項
- s
設定用於表示一個調色盤顏色條目的方框大小。預設值為
30
(表示30x30
像素方框)。
30.235 shuffleframes
重新排序和/或複製和/或丟棄視訊影格。
它接受以下參數
- 映射
設定輸入影格的目的索引。這是以空格或 '|' 分隔的索引列表,將輸入影格映射到輸出影格。索引的數量也設定了每個索引可能具有的最大值。索引 '-1' 具有特殊含義,表示丟棄影格。
第一個影格的索引為 0。預設為保持輸入不變。
30.235.1 範例
- 交換每三個輸入影格中的第二個和第三個影格
ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
- 交換每十個輸入影格中的第十個和第一個影格
ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
30.236 shufflepixels
重新排序視訊影格中的像素。
此濾波器接受以下選項
- direction, d
設定混洗方向。可以是 forward(向前)或 inverse(反向)方向。預設方向為 forward。
- mode, m
設定混洗模式。可以是 horizontal(水平)、vertical(垂直)或 block(區塊)模式。
- width, w
- 高度、h
設定混洗 block_size(區塊大小)。在 horizontal 混洗模式下,僅使用大小的寬度部分,而在 vertical 混洗模式下,僅使用大小的高度部分。
- seed, s
設定用於混洗像素的隨機種子。主要用於設定以便能夠反轉濾鏡處理以獲得原始輸入。例如,要反轉 forward 混洗,您需要使用相同的參數和完全相同的種子,並將方向設定為 inverse。
30.237 shuffleplanes
重新排序和/或複製視訊平面。
它接受以下參數
- map0
要用作第一個輸出平面的輸入平面索引。
- map1
要用作第二個輸出平面的輸入平面索引。
- map2
要用作第三個輸出平面的輸入平面索引。
- map3
要用作第四個輸出平面的輸入平面索引。
第一個平面的索引為 0。預設為保持輸入不變。
30.237.1 範例
- 交換輸入的第二個和第三個平面
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
30.238 signalstats
評估各種視覺指標,以協助確定與類比視訊媒體數位化相關的問題。
預設情況下,濾鏡將記錄這些元數據值
- YMIN
顯示輸入影格中包含的最小 Y 值。以 [0-255] 範圍表示。
- YLOW
顯示輸入影格中 10% 百分位數的 Y 值。以 [0-255] 範圍表示。
- YAVG
顯示輸入影格中的平均 Y 值。以 [0-255] 範圍表示。
- YHIGH
顯示輸入影格中 90% 百分位數的 Y 值。以 [0-255] 範圍表示。
- YMAX
顯示輸入影格中包含的最大 Y 值。以 [0-255] 範圍表示。
- UMIN
顯示輸入影格中包含的最小 U 值。以 [0-255] 範圍表示。
- ULOW
顯示輸入影格中 10% 百分位數的 U 值。以 [0-255] 範圍表示。
- UAVG
顯示輸入影格中的平均 U 值。以 [0-255] 範圍表示。
- UHIGH
顯示輸入影格中 90% 百分位數的 U 值。以 [0-255] 範圍表示。
- UMAX
顯示輸入影格中包含的最大 U 值。以 [0-255] 範圍表示。
- VMIN
顯示輸入影格中包含的最小 V 值。以 [0-255] 範圍表示。
- VLOW
顯示輸入影格中 10% 百分位數的 V 值。以 [0-255] 範圍表示。
- VAVG
顯示輸入影格中的平均 V 值。以 [0-255] 範圍表示。
- VHIGH
顯示輸入影格中 90% 百分位數的 V 值。以 [0-255] 範圍表示。
- VMAX
顯示輸入影格中包含的最大 V 值。以 [0-255] 範圍表示。
- SATMIN
顯示輸入影格中包含的最小飽和度值。以 [0-~181.02] 範圍表示。
- SATLOW
顯示輸入影格中 10% 百分位數的飽和度值。以 [0-~181.02] 範圍表示。
- SATAVG
顯示輸入影格中的平均飽和度值。以 [0-~181.02] 範圍表示。
- SATHIGH
顯示輸入影格中 90% 百分位數的飽和度值。以 [0-~181.02] 範圍表示。
- SATMAX
顯示輸入影格中包含的最大飽和度值。以 [0-~181.02] 範圍表示。
- HUEMED
顯示輸入影格中色相的中位數值。以 [0-360] 範圍表示。
- HUEAVG
顯示輸入影格中色相的平均值。以 [0-360] 範圍表示。
- YDIF
顯示當前影格中 Y 平面的所有值與前一個輸入影格的相應值之間取樣值差異的平均值。以 [0-255] 範圍表示。
- UDIF
顯示當前影格中 U 平面的所有值與前一個輸入影格的相應值之間取樣值差異的平均值。以 [0-255] 範圍表示。
- VDIF
顯示當前影格中 V 平面的所有值與前一個輸入影格的相應值之間取樣值差異的平均值。以 [0-255] 範圍表示。
- YBITDEPTH
顯示當前影格中 Y 平面的位元深度。以 [0-16] 範圍表示。
- UBITDEPTH
顯示當前影格中 U 平面的位元深度。以 [0-16] 範圍表示。
- VBITDEPTH
顯示當前影格中 V 平面的位元深度。以 [0-16] 範圍表示。
此濾鏡接受以下選項
- stat
- out
-
stat 指定影像分析的附加形式。out 輸出具有突出顯示的指定像素類型的視訊。
這兩個選項都接受以下值
- ‘tout’
識別時間離群值像素。時間離群值是不像同一場的相鄰像素的像素。時間離群值的範例包括視訊丟失、磁頭堵塞或磁帶追蹤問題的結果。
- ‘vrep’
識別垂直線重複。垂直線重複包括影格內相似的像素行。在原生數位視訊中,垂直線重複很常見,但這種模式在從類比來源數位化的視訊中並不常見。當它發生在從類比來源數位化產生的視訊中時,它可能表示來自丟失補償器的隱藏。
- ‘brng’
識別超出合法廣播範圍的像素。
- 顏色、c
設定 out 選項的突出顯示顏色。預設顏色為黃色。
30.238.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.239 簽名
計算 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.239.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.240 siti
計算影片的空間資訊 (Spatial Information, SI) 和時間資訊 (Temporal Information, TI) 分數,如同 ITU-T Rec. P.910 (11/21) 中所定義:多媒體應用主觀影片品質評估方法。PDF 文件可於此連結取得:https://www.itu.int/rec/T-REC-P.910-202111-S/en。請注意,此為對應於已取代建議的舊版實作。最新版本請參考 ITU-T Rec. P.910 (07/22):https://www.itu.int/rec/T-REC-P.910-202207-I/en
它接受以下選項
- print_summary
若設定為 1,摘要統計資訊將會印出到終端機。預設值為 0。
30.240.1 範例
- 計算 SI/TI 指標並印出摘要
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
30.241 smartblur
模糊輸入影片,但不影響輪廓。
它接受以下選項
- luma_radius, lr
設定亮度半徑 (luma radius)。選項值必須為介於 [0.1, 5.0] 範圍的浮點數,指定用於模糊影像的高斯濾波器變異數(數值越大速度越慢)。預設值為 1.0。
- luma_strength, ls
設定亮度強度 (luma strength)。選項值必須為介於 [-1.0, 1.0] 範圍的浮點數,設定模糊程度。介於 [0.0, 1.0] 範圍的值將會模糊影像,而介於 [-1.0, 0.0] 範圍的值將會銳化影像。預設值為 1.0。
- luma_threshold, lt (亮度閾值)
設定亮度閾值 (luma threshold),用作係數以決定像素是否應該模糊化。選項值必須為介於 [-30, 30] 範圍的整數。值為 0 將會過濾整個影像,介於 [0, 30] 範圍的值將會過濾平坦區域,而介於 [-30, 0] 範圍的值將會過濾邊緣。預設值為 0。
- chroma_radius, cr
設定彩度半徑 (chroma radius)。選項值必須為介於 [0.1, 5.0] 範圍的浮點數,指定用於模糊影像的高斯濾波器變異數(數值越大速度越慢)。預設值為 luma_radius (亮度半徑)。
- chroma_strength, cs
設定彩度強度 (chroma strength)。選項值必須為介於 [-1.0, 1.0] 範圍的浮點數,設定模糊程度。介於 [0.0, 1.0] 範圍的值將會模糊影像,而介於 [-1.0, 0.0] 範圍的值將會銳化影像。預設值為 luma_strength (亮度強度)。
- chroma_threshold, ct (彩度閾值)
設定彩度閾值 (chroma threshold),用作係數以決定像素是否應該模糊化。選項值必須為介於 [-30, 30] 範圍的整數。值為 0 將會過濾整個影像,介於 [0, 30] 範圍的值將會過濾平坦區域,而介於 [-30, 0] 範圍的值將會過濾邊緣。預設值為 luma_threshold (亮度閾值)。
- alpha_radius, ar
設定 Alpha 半徑 (alpha radius)。選項值必須為介於 [0.1, 5.0] 範圍的浮點數,指定用於模糊影像的高斯濾波器變異數(數值越大速度越慢)。預設值為 luma_radius (亮度半徑)。
- alpha_strength, as (Alpha 強度)
設定 Alpha 強度 (alpha strength)。選項值必須為介於 [-1.0, 1.0] 範圍的浮點數,設定模糊程度。介於 [0.0, 1.0] 範圍的值將會模糊影像,而介於 [-1.0, 0.0] 範圍的值將會銳化影像。預設值為 luma_strength (亮度強度)。
- alpha_threshold, at (Alpha 閾值)
設定 Alpha 閾值 (alpha threshold),用作係數以決定像素是否應該模糊化。選項值必須為介於 [-30, 30] 範圍的整數。值為 0 將會過濾整個影像,介於 [0, 30] 範圍的值將會過濾平坦區域,而介於 [-30, 0] 範圍的值將會過濾邊緣。預設值為 luma_threshold (亮度閾值)。
若未明確設定彩度或 Alpha 選項,則會設定對應的亮度值。
30.242 sobel
對輸入影片串流套用 Sobel 運算子。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
- scale
設定將與濾波結果相乘的值。
- delta
設定將添加到濾波結果的值。
30.242.1 指令
此濾鏡支援所有上述選項作為 命令。
30.243 spp
套用簡單的後處理濾鏡,在數個(或在 quality (品質) 等級 6
的情況下為所有)偏移量壓縮和解壓縮影像,並平均結果。
此濾鏡接受以下選項
- 設定音調品質。可能的值為
設定品質 (quality)。此選項定義用於平均的等級數量。它接受範圍在 0-6 的整數。若設定為
0
,濾鏡將不會有任何效果。值為6
代表最高品質。每增加一個值,速度會降低約 2 倍。預設值為3
。- qp
強制使用恆定量化參數 (constant quantization parameter)。若未設定,濾鏡將會使用來自影片串流的 QP(若可用)。
- mode
設定閾值模式。可用模式如下
- ‘hard’
設定硬閾值處理 (hard thresholding)(預設)。
- ‘soft’
設定軟閾值(去振鈴效果較好,但可能較模糊)。
- use_bframe_qp
若設定為
1
,則啟用 B 幀的 QP 值。使用此選項可能會導致閃爍,因為 B 幀通常具有較大的 QP 值。預設值為0
(未啟用)。
30.243.1 指令
此濾波器支援以下指令
- quality, level (品質,等級)
設定品質等級 (quality level)。數值
max
可用於設定最大等級,目前為6
。
30.244 sr
透過套用基於卷積神經網路的超解析度方法來縮放輸入。
- 超解析度卷積神經網路模型 (Super-Resolution Convolutional Neural Network model, SRCNN)。請參閱 https://arxiv.org/abs/1501.00092。
- 高效子像素卷積神經網路模型 (Efficient Sub-Pixel Convolutional Neural Network model, 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://tensorflow.dev.org.tw/install/lang_c)並使用
--enable-libtensorflow
配置 FFmpeg
- model
設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 後端只能載入其格式的檔案。
- scale_factor (縮放比例因子)
設定 SRCNN 模型的縮放比例因子 (scale factor)。允許的值為
2
、3
和4
。預設值為2
。縮放比例因子對於 SRCNN 模型是必要的,因為它接受使用雙立方插值升頻 (bicubic upscaling) 並具有適當縮放比例因子的輸入。
要獲得完整功能(例如異步執行),請使用 dnn_processing 濾鏡。
30.245 ssim
取得兩個輸入影片之間的 SSIM (結構相似性指標, Structural SImilarity Metric)。
此濾鏡接受兩個輸入影片,第一個輸入被視為「主要」來源,並保持不變地傳遞到輸出。第二個輸入用作計算 SSIM 的「參考」影片。
為了使此濾波器正常運作,兩個視訊輸入必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的幀數,並逐一比較。
此濾鏡儲存每個影格計算出的 SSIM 值。
以下是接受參數的描述。
- stats_file, f
若有指定,濾鏡將會使用指定的檔案來儲存每個個別影格的 SSIM 值。當檔名等於 "-" 時,資料會傳送到標準輸出。
如果選取了 stats_file,則列印的檔案包含每個比較的幀對的 key:value 形式的鍵/值對序列。
以下為每個顯示參數的描述
- n
輸入幀的循序編號,從 1 開始
- Y, U, V, R, G, B
針對後綴指定的組件,比較影格的 SSIM 值。
- All (全部)
針對整個影格,比較影格的 SSIM 值。
- dB (分貝)
與上述相同,但以 dB 表示。
此濾鏡也支援 framesync 選項。
30.245.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.246 stereo3d
在不同的立體影像格式之間轉換。
濾鏡接受以下選項
- in
設定輸入的立體影像格式。
輸入影像格式的可用值如下
- ‘sbsl’
並排平行 (side by side parallel)(左眼在左,右眼在右)
- ‘sbsr’
並排交叉眼 (side by side crosseye)(右眼在左,左眼在右)
- ‘sbs2l’
並排平行,半寬解析度 (side by side parallel with half width resolution)(左眼在左,右眼在右)
- ‘sbs2r’
並排交叉眼,半寬解析度 (side by side crosseye with half width resolution)(右眼在左,左眼在右)
- ‘abl’
- ‘tbl’
上下 (above-below)(左眼在上,右眼在下)
- ‘abr’
- ‘tbr’
上下 (above-below)(右眼在上,左眼在下)
- ‘ab2l’
- ‘tb2l’
上下,半高解析度 (above-below with half height resolution)(左眼在上,右眼在下)
- ‘ab2r’
- ‘tb2r’
上下,半高解析度 (above-below with half height resolution)(右眼在上,左眼在下)
- ‘al’
交錯影格 (alternating frames)(左眼優先,右眼其次)
- ‘ar’
交錯影格 (alternating frames)(右眼優先,左眼其次)
- ‘irl’
交錯列 (interleaved rows)(左眼佔據頂列,右眼從下一列開始)
- ‘irr’
交錯列 (interleaved rows)(右眼佔據頂列,左眼從下一列開始)
- ‘icl’
交錯行 (interleaved columns),左眼優先
- ‘icr’
交錯行 (interleaved columns),右眼優先
預設值為 ‘sbsl’。
- out
設定輸出的立體影像格式。
- ‘sbsl’
並排平行 (side by side parallel)(左眼在左,右眼在右)
- ‘sbsr’
並排交叉眼 (side by side crosseye)(右眼在左,左眼在右)
- ‘sbs2l’
並排平行,半寬解析度 (side by side parallel with half width resolution)(左眼在左,右眼在右)
- ‘sbs2r’
並排交叉眼,半寬解析度 (side by side crosseye with half width resolution)(右眼在左,左眼在右)
- ‘abl’
- ‘tbl’
上下 (above-below)(左眼在上,右眼在下)
- ‘abr’
- ‘tbr’
上下 (above-below)(右眼在上,左眼在下)
- ‘ab2l’
- ‘tb2l’
上下,半高解析度 (above-below with half height resolution)(左眼在上,右眼在下)
- ‘ab2r’
- ‘tb2r’
上下,半高解析度 (above-below with half height resolution)(右眼在上,左眼在下)
- ‘al’
交錯影格 (alternating frames)(左眼優先,右眼其次)
- ‘ar’
交錯影格 (alternating frames)(右眼優先,左眼其次)
- ‘irl’
交錯列 (interleaved rows)(左眼佔據頂列,右眼從下一列開始)
- ‘irr’
交錯列 (interleaved rows)(右眼佔據頂列,左眼從下一列開始)
- ‘arbg’
紅/藍灰階浮雕 (anaglyph red/blue gray)(左眼紅色濾鏡,右眼藍色濾鏡)
- ‘argg’
紅/綠灰階浮雕 (anaglyph red/green gray)(左眼紅色濾鏡,右眼綠色濾鏡)
- ‘arcg’
紅/青灰階浮雕 (anaglyph red/cyan gray)(左眼紅色濾鏡,右眼青色濾鏡)
- ‘arch’
紅/青半彩浮雕 (anaglyph red/cyan half colored)(左眼紅色濾鏡,右眼青色濾鏡)
- ‘arcc’
紅/青全彩浮雕 (anaglyph red/cyan color)(左眼紅色濾鏡,右眼青色濾鏡)
- ‘arcd’
紅/青全彩 Dubois 最佳化浮雕 (anaglyph red/cyan color optimized with the least squares projection of dubois)(左眼紅色濾鏡,右眼青色濾鏡)
- ‘agmg’
綠/洋紅灰階浮雕 (anaglyph green/magenta gray)(左眼綠色濾鏡,右眼洋紅濾鏡)
- ‘agmh’
綠/洋紅半彩浮雕 (anaglyph green/magenta half colored)(左眼綠色濾鏡,右眼洋紅濾鏡)
- ‘agmc’
綠/洋紅全彩浮雕 (anaglyph green/magenta colored)(左眼綠色濾鏡,右眼洋紅濾鏡)
- ‘agmd’
綠/洋紅全彩 Dubois 最佳化浮雕 (anaglyph green/magenta color optimized with the least squares projection of dubois)(左眼綠色濾鏡,右眼洋紅濾鏡)
- ‘aybg’
黃/藍灰階浮雕 (anaglyph yellow/blue gray)(左眼黃色濾鏡,右眼藍色濾鏡)
- ‘aybh’
黃/藍半彩浮雕 (anaglyph yellow/blue half colored)(左眼黃色濾鏡,右眼藍色濾鏡)
- ‘aybc’
黃/藍全彩浮雕 (anaglyph yellow/blue colored)(左眼黃色濾鏡,右眼藍色濾鏡)
- ‘aybd’
黃/藍全彩 Dubois 最佳化浮雕 (anaglyph yellow/blue color optimized with the least squares projection of dubois)(左眼黃色濾鏡,右眼藍色濾鏡)
- ‘ml’
單聲道輸出 (mono output)(僅左眼)
- ‘mr’
單聲道輸出 (mono output)(僅右眼)
- ‘chl’
棋盤格 (checkerboard),左眼優先
- ‘chr’
棋盤格 (checkerboard),右眼優先
- ‘icl’
交錯行 (interleaved columns),左眼優先
- ‘icr’
交錯行 (interleaved columns),右眼優先
- ‘hdmi’
HDMI 影格封裝 (HDMI frame pack)
預設值為 ‘arcd’。
30.246.1 範例
- 將輸入影片從並排平行 (side by side parallel) 轉換為黃/藍 Dubois 浮雕 (anaglyph yellow/blue dubois)
stereo3d=sbsl:aybd
- 將輸入影片從上下 (above below)(左眼在上,右眼在下)轉換為並排交叉眼 (side by side crosseye)。
stereo3d=abl:sbsr
30.247 streamselect, astreamselect
選擇影片或音訊串流。
此濾鏡接受以下選項
- inputs
設定輸入數量。預設值為 2。
- 映射 (map)
設定要重新對應到輸出的輸入索引。
30.247.1 指令
streamselect
和 astreamselect
濾鏡支援以下指令
- 映射 (map)
設定要重新對應到輸出的輸入索引。
30.247.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.248 字幕
使用 libass 函式庫在輸入影片上方繪製字幕。
若要啟用此濾鏡的編譯,您需要使用 --enable-libass
配置 FFmpeg。此濾鏡也需要使用 libavcodec 和 libavformat 進行建置,以將傳遞的字幕檔案轉換為 ASS (Advanced Substation Alpha) 字幕格式。
此濾鏡接受以下選項
- filename, f
設定要讀取的字幕檔案名稱。此為必要設定。
- original_size (原始尺寸)
指定原始影片的尺寸,ASS 檔案是針對此影片所編寫。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "影片尺寸" 章節。由於 ASS 長寬比算術中的設計缺陷,若長寬比已變更,則此為正確縮放字型所必需的。
- fontsdir (字型目錄)
設定包含濾鏡可使用的字型的目錄路徑。這些字型將會加入字型提供者使用的字型之外。
- alpha
處理 Alpha 通道,預設情況下 Alpha 通道保持不變。
- charenc (字元編碼)
設定字幕輸入字元編碼。僅限
subtitles
(字幕) 濾鏡。僅在非 UTF-8 編碼時有用。- stream_index, si (串流索引)
設定字幕串流索引。僅限
subtitles
(字幕) 濾鏡。- force_style (強制樣式)
覆寫字幕的預設樣式或腳本資訊參數。它接受包含 ASS 樣式格式的字串
KEY=VALUE
配對,並以 "," 分隔。- wrap_unicode (Unicode 斷行)
根據 Unicode 斷行演算法斷行。可用性需要至少 libass release 0.17.0 (或 LIBASS_VERSION 0x01600010),並且 libass 必須已使用 libunibreak 建置。
預設情況下,此選項為啟用,原生 ASS 除外。
若未指定第一個鍵 (key),則假設第一個值指定 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.249 super2xsai
使用 Super2xSaI (Scale and Interpolate) 像素藝術縮放演算法將輸入縮放 2 倍並平滑化。
適用於放大像素藝術影像而不會降低銳利度。
30.250 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.250.1 指令
此濾鏡支援所有上述選項作為 命令。
30.251 swapuv
交換 U 和 V 平面。
30.252 tblend
混合連續的影片影格。
請參閱 blend (混合)
30.253 電影轉換
對影片套用電視電影 (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.254 thistogram
計算並繪製輸入影片在時間軸上的色彩分佈直方圖。
與 histogram (直方圖) 影片濾鏡僅顯示特定時間單一輸入影格的直方圖不同,此濾鏡也會顯示過去由 width
(寬度) 選項定義的影格數量的直方圖。
計算出的直方圖代表影像中色彩成分的分佈。
此濾鏡接受以下選項
- width, w
設定單一色彩組件輸出的寬度。預設值為
0
。值為0
表示寬度將從輸入影片中選取。這也會設定要保留的過去直方圖數量。允許範圍為 [0, 8192]。- display_mode, d (顯示模式)
設定顯示模式。它接受以下值
- ‘stack’
每個色彩成分圖表都彼此堆疊放置。
- ‘parade’
每個色彩成分圖表都並排放置。
- ‘overlay’
呈現與
parade
相同的資訊,但代表色彩成分的圖表會直接疊加在一起。
預設值為
stack
。- levels_mode, m (色階模式)
設定模式。可以是
linear
或logarithmic
。預設值為linear
。- components, c (組件)
設定要顯示哪些色彩成分。預設值為
7
。- bgopacity, b (背景不透明度)
設定背景不透明度。預設值為
0.9
。- envelope, e (包絡線)
顯示包絡線。預設為停用。
- ecolor, ec (包絡線顏色)
設定包絡線顏色。預設為
gold
(金色)。- 滑動
設定滑動模式。
滑動的可用值為
- ‘frame’
到達右邊界時繪製新影格。
- ‘replace’
用新的列取代舊的列。
- ‘scroll’
從右向左滾動。
- ‘rscroll’
從左向右滾動。
- ‘picture’
繪製單張圖片。
預設為
replace
(取代)。
30.255 閾值
對影片串流套用閾值效果。
此濾鏡需要四個影片串流才能執行閾值處理。第一個串流是我們正在過濾的串流。第二個串流保存閾值,第三個串流保存最小值,最後,第四個串流保存最大值。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
例如,若第一個串流像素的組件值小於來自第二個閾值串流的像素組件閾值,則會選取第三個串流值,否則會選取第四個串流像素組件值。
使用色彩來源濾鏡,可以執行各種閾值處理類型
30.255.1 指令
此濾鏡支援與 commands (指令) 相同的所有選項。
30.255.2 範例
- 二元閾值 (Binary threshold),使用灰色作為閾值
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
- 反向二元閾值 (Inverted binary threshold),使用灰色作為閾值
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
- 截斷二元閾值 (Truncate binary threshold),使用灰色作為閾值
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
- 閾值歸零 (Threshold to zero),使用灰色作為閾值
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
- 反向閾值歸零 (Inverted threshold to zero),使用灰色作為閾值
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
30.256 縮圖
在給定的一系列連續影格中,選取最具代表性的影格。
此濾鏡接受以下選項
- n
設定要分析的影格批次大小;在一組 n 個影格中,濾鏡將會選取其中一個,然後處理下一批 n 個影格,直到結束。預設值為
100
。- log
設定要顯示所選影格統計資訊的日誌等級。預設值為
info
(資訊)。
由於濾鏡會追蹤整個影格序列,因此較大的 n 值將會導致更高的記憶體使用量,因此不建議使用過高的值。
30.256.1 範例
- 每 50 個影格擷取一張圖片
thumbnail=50
- 使用
ffmpeg
建立縮圖的完整範例ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
30.257 平鋪
將數個連續的影格平鋪在一起。
untile (反平鋪) 濾鏡可以執行相反的操作。
此濾鏡接受以下選項
- layout
以
COLUMNSxROWS
格式設定網格大小。範圍最多為 UINT_MAX 個儲存格。預設值為6x5
。- nb_frames (影格數量)
設定要在給定區域中渲染的最大影格數量。它必須小於或等於 wxh。預設值為
0
,表示將會使用所有區域。- margin (邊距)
以像素為單位設定外邊框邊距。範圍為 0 到 1024。預設值為
0
。- padding (內距)
設定內部邊框粗細(即影格間的像素數量)。如需更進階的邊距選項(例如邊緣使用不同的值),請參閱 pad 視訊濾鏡。範圍為 0 至 1024。預設值為
0
。- color
指定未使用區域的顏色。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中 "Color" 章節。預設的 color 值為 "black"(黑色)。
- overlap
設定將數個連續影格平鋪在一起時的重疊影格數量。值必須介於
0
和 nb_frames - 1 之間。預設值為0
。- init_padding(初始邊距)
設定在顯示第一個輸出影格之前,初始為空白的影格數量。這控制了取得第一個輸出影格的速度。值必須介於
0
和 nb_frames - 1 之間。預設值為0
。
30.257.1 範例
- 在電影中產生所有關鍵影格 (-skip_frame nokey) 的 8x8 PNG 圖塊
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
-vsync 0 是必要的,以防止
ffmpeg
複製每個輸出影格來適應原始偵測到的影格率。 - 在
3x2
影格區域中顯示5
張圖片,圖片之間間隔7
像素,初始邊距為2
像素,使用混合的平面和具名選項tile=3x2:nb_frames=5:padding=7:margin=2
30.258 tiltandshift
套用傾斜偏移效果。
當您反轉時間和空間時會發生什麼事?
通常,影片由數個影格組成,這些影格代表不同的時間瞬間,並顯示在影格捕捉的空間中演變的場景。此濾鏡是該概念的對立面,其靈感來自傾斜偏移攝影。
經過濾鏡處理的影格包含構成序列的事件的完整時間軸,這是透過將每個影格的像素切片放置到單一影格中而獲得的。然而,由於沒有無限寬度的影格,因此這是根據輸入影格的寬度完成的,並且透過為每個後續影格移開一列來重新組成影片。為了將空間映射到時間,濾鏡也會傾斜每個輸入影格,以保留運動。這是透過從每個輸入影格逐步選擇不同的列來完成的。
最終結果是一種反向視差,因此遠處的物體移動速度比前方的物體快得多。此視訊效果的理想條件是當運動非常少且背景靜態,或者當運動量很大且景深非常寬(例如,在火車上移動時的廣闊全景)。
濾波器接受以下參數
- tilt(傾斜)
在平移時傾斜視訊(預設)。取消設定時,視訊將滑動靜態圖像,該圖像由每個影格的第一列組成。
- start
在濾鏡處理開始時要執行的操作(請參閱下文)。
- end
在濾鏡處理結束時要執行的操作(請參閱下文)。
- hold(保持)
在濾鏡處理開始之前應通過多少列。
- pad(邊距)
在濾鏡處理結束之前應插入多少列。
通常,濾鏡從第一個影格開始平移和傾斜,並在收到最後一個影格時停止。但是,在濾鏡處理開始之前,可能會保留正常的視訊,以便效果慢慢地平移到位。同樣地,最後一個視訊影格可能會在結束時重建。或者,也可以僅以黑色開始和結束。
- ‘none’
濾鏡處理立即開始,並在收到最後一個影格時結束。
- ‘frame’
在處理期間,第一個影格或最後一個影格會保持不變。
- ‘black’
黑色會在濾鏡處理的開始或結束時加入邊距。
30.259 tinterlace
執行各種時間欄位交錯類型。
影格從 1 開始計數,因此第一個輸入影格被視為奇數。
此濾鏡接受以下選項
- mode
指定交錯模式。此選項也可以單獨指定為值。有關此選項的值列表,請參閱下文。
可用的值為
- ‘merge, 0’(合併,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’(捨棄偶數,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’(捨棄奇數,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’(邊距,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’(交錯頂部,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’(交錯底部,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’(交錯x2,6)
以不變的高度將影格率加倍。插入的影格各自包含來自前一個輸入影格的第二個時間欄位和來自下一個輸入影格的第一個時間欄位。此模式依賴 top_field_first 標誌。適用於沒有欄位同步的交錯視訊顯示器。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444
- ‘mergex2, 7’(合併x2,7)
將奇數影格移動到上半欄位,偶數影格移動到下半欄位,以相同的影格率產生雙倍高度的影格。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 4 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 Output: 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444
數值已被棄用,但為了向後相容性而接受。
預設模式為
merge
(合併)。- flags
指定影響濾鏡過程的標誌。
flags 的可用值為
- low_pass_filter, vlpf(低通濾波器,vlpf)
在濾鏡中啟用線性垂直低通濾波。當從包含高頻垂直細節的漸進式來源建立交錯式目標時,需要垂直低通濾波。濾波將減少交錯“閃爍”和摩爾紋。
- complex_filter, cvlpf(複合濾波器,cvlpf)
啟用複合垂直低通濾波。這將稍微減少交錯“閃爍”和摩爾紋,但更好地保留細節和主觀清晰度印象。
- bypass_il(繞過交錯)
繞過已經交錯的影格,僅調整影格率。
垂直低通濾波和繞過已經交錯的影格只能針對 mode interleave_top 和 interleave_bottom 啟用。
30.260 tmedian
從數個連續的輸入視訊影格中挑選中間值像素。
此濾鏡接受以下選項
- radius
設定中值濾波器的半徑。預設值為 1。允許範圍為 1 到 127。
- planes
設定要濾波的平面。預設值為
15
,表示處理所有平面。- percentile
設定中位數百分位數。預設值為
0.5
。預設值0.5
會一律選取中位數,而0
會選取最小值,1
則會選取最大值。
30.260.1 指令
此濾鏡支援上述所有選項作為指令,但不包括選項 radius
。
30.261 tmidequalizer
套用時間中途視訊均衡效果。
中途視訊均衡調整一系列視訊影格,使其具有相同的直方圖,同時盡可能保持其動態範圍。它對於例如匹配視訊影格序列中的曝光非常有用。
此濾鏡接受以下選項
- radius
設定濾波半徑。預設值為
5
。允許範圍為 1 到 127。- sigma
設定濾波西格瑪值。預設值為
0.5
。這控制濾波強度。將此選項設定為 0 實際上不會執行任何操作。- planes
設定要處理的平面。預設值為
15
,代表所有可用的平面。
30.262 tmix
混合連續的視訊影格。
以下是可接受選項的描述。
- frames
要混合的連續影格數量。如果未指定,則預設為 3。
- weights
指定每個輸入視訊影格的權重。每個權重以空格分隔。如果權重數量小於 frames 的數量,則最後指定的權重將用於所有剩餘未設定的權重。
- scale
指定縮放比例,如果已設定,則會將其與每個權重乘以像素值的總和相乘,以得出最終的目的像素值。預設情況下,<var>scale</var> 會自動縮放至權重總和。
- planes
設定要篩選的平面。預設值為全部。允許範圍為 0 到 15。
30.262.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.262.2 指令
此濾波器支援以下指令
- weights
- scale
- planes
語法與具有相同名稱的選項相同。
30.263 色調映射
色調映射來自不同動態範圍的色彩。
此濾鏡預期單精度浮點數據,因為它需要在(並且可以輸出)超出範圍的值上運作。需要另一個濾鏡,例如 zscale,才能將結果影格轉換為可用的格式。
已實作的色調映射演算法僅適用於線性光,因此應事先將輸入數據線性化(並可能正確標記)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
30.263.1 選項
此濾鏡接受以下選項。
- tonemap(色調映射)
設定要使用的色調映射演算法。
可能的值為
- none
不套用任何色調映射,僅對過亮的像素進行去飽和。
- 削波
硬裁剪任何超出範圍的值。將其用於範圍內值的完美色彩準確度,同時扭曲超出範圍的值。
- linear
將整個參考色域拉伸到顯示器的線性倍數。
- gamma
在色調曲線之間擬合對數轉換。
- reinhard(萊因哈德)
使用簡單的曲線保持整體圖像亮度,使用非線性對比度,這會導致細節扁平化並降低色彩準確度。
- hable(哈布爾)
比 reinhard 更好地保留暗部和亮部細節,但代價是稍微變暗所有內容。當細節保留比色彩和亮度準確度更重要時使用它。
- mobius(莫比烏斯)
平滑地映射超出範圍的值,同時盡可能保留範圍內材質的對比度和色彩。當色彩準確度比細節保留更重要時使用它。
預設值為 none(無)。
- 參數
調整色調映射演算法。
這會影響以下演算法
- none
已忽略。
- linear
指定拉伸時要使用的縮放比例因子。預設值為 1.0。
- gamma
指定函數的指數。預設值為 1.8。
- 削波
指定要在裁剪前乘入訊號的額外線性係數。預設值為 1.0。
- reinhard(萊因哈德)
指定顯示器峰值的局部對比度係數。預設值為 0.5,這表示範圍內的值大約是裁剪時亮度的一半。
- hable(哈布爾)
已忽略。
- mobius(莫比烏斯)
指定從線性轉換到莫比烏斯轉換的過渡點。低於此點的每個值都保證以 1:1 映射。值越高,結果越準確,但代價是會損失亮部細節。預設值為 0.3,由於初始斜率陡峭,因此仍然相當準確地保留了範圍內的色彩。
- desat(去飽和)
對超出此亮度等級的高光套用去飽和。參數越高,將保留更多色彩資訊。此設定有助於防止超高光出現不自然的過曝色彩,而是(平滑地)變成白色。這使圖像感覺更自然,但代價是減少了有關超出範圍色彩的資訊。
預設值 2.0 有點保守,並且主要僅適用於天空或陽光直射的表面。設定為 0.0 會停用此選項。
此選項僅在輸入影格具有支援的色彩標籤時才有效。
- rms
使用此值覆寫訊號/標稱/參考峰值。當顯示器元數據中嵌入的峰值資訊不可靠或從較低範圍色調映射到較高範圍時,此選項很有用。
30.264 tpad
暫時填充視訊影格。
此濾鏡接受以下選項
- start
指定輸入視訊串流之前的延遲影格數。預設值為 0。
- stop(停止)
指定輸入視訊串流之後的填充影格數。設定為 -1 以無限期填充。預設值為 0。
- start_silence
設定新增到串流開頭的影格種類。可以是 add 或 clone。使用 add 會新增純色影格。使用 clone 影格是第一個影格的複製。預設值為 add。
- stop_silence
設定新增到串流結尾的影格種類。可以是 add 或 clone。使用 add 會新增純色影格。使用 clone 影格是最後一個影格的複製。預設值為 add。
- start_duration, stop_duration(開始持續時間,停止持續時間)
指定開始/停止延遲的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節。這些選項會覆寫 start 和 stop。預設值為 0。
- color
指定邊框區域的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。
color 的預設值為 "black"。
30.265 轉置
轉置輸入視訊中的行和列,並可選擇翻轉它。
它接受以下參數
- 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 >= width 時)。
- ‘landscape’(橫向)
保留橫向幾何形狀(當 width >= height 時)。
預設值為
none
。
例如,要順時針旋轉 90 度並保留直向佈局
transpose=dir=1:passthrough=portrait
上面的指令也可以指定為
transpose=1:portrait
30.266 transpose_npp
轉置輸入視訊中的行和列,並可選擇翻轉它。如需更深入的範例,請參閱 transpose 視訊濾鏡,它主要共用相同的選項。
它接受以下參數
- dir(方向)
指定轉置方向。
可以採用以下值
- ‘cclock_flip’(逆時針翻轉)
逆時針旋轉 90 度並垂直翻轉。(預設)
- ‘clock’(順時針)
順時針旋轉 90 度。
- ‘cclock’(逆時針)
逆時針旋轉 90 度。
- ‘clock_flip’(順時針翻轉)
順時針旋轉 90 度並垂直翻轉。
- passthrough
如果輸入幾何形狀符合指定值指定的幾何形狀,則不套用轉置。它接受以下值
- ‘none’
始終套用轉置。(預設)
- ‘portrait’(直向)
保留直向幾何形狀(當 height >= width 時)。
- ‘landscape’(橫向)
保留橫向幾何形狀(當 width >= height 時)。
30.267 修剪
修剪輸入,使輸出包含輸入的一個連續子部分。
它接受以下參數
- start
指定要保留區段的開始時間,即時間戳記為 start 的影格將是輸出中的第一個影格。
- end
指定將被捨棄的第一個影格的時間,即時間戳記為 end 的影格緊接在前的影格將是輸出中的最後一個影格。
- start_pts(開始時間戳記點)
這與 start 相同,不同之處在於此選項以時基單位而不是秒為單位設定開始時間戳記。
- end_pts(結束時間戳記點)
這與 end 相同,不同之處在於此選項以時基單位而不是秒為單位設定結束時間戳記。
- duration
輸出的最大持續時間,以秒為單位。
- start_frame
應傳遞到輸出的第一個影格的編號。
- end_frame(結束影格)
應捨棄的第一個影格的編號。
start、end 和 duration 以時間持續時間規範表示;有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節。
請注意,前兩組開始/結束選項和 duration 選項會查看影格時間戳記,而 _frame 變體僅計算通過濾鏡的影格。另請注意,此濾鏡不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 trim 濾鏡之後插入 setpts 濾鏡。
如果設定了多個開始或結束選項,則此濾鏡會嘗試貪婪地保留符合至少一個指定約束的所有影格。若要僅保留一次符合所有約束的部分,請鏈接多個 trim 濾鏡。
預設值會保留所有輸入。因此,可以僅設定例如結束值,以保留指定時間之前的所有內容。
範例
- 丟棄除輸入的第二分鐘之外的所有內容
ffmpeg -i INPUT -vf trim=60:120
- 僅保留前一秒
ffmpeg -i INPUT -vf trim=duration=1
30.268 解除預乘
使用第二個串流的第一個平面作為 Alpha 值,將 Alpha 值預乘效果套用至輸入視訊串流。
兩個串流必須具有相同的尺寸和相同的像素格式。
此濾波器接受以下選項
- planes
設定將要處理的平面,未處理的平面將會被複製。預設值 0xf,所有平面都將被處理。
如果格式有 1 或 2 個組件,則亮度為位元 0。如果格式有 3 或 4 個組件:對於 RGB 格式,位元 0 為綠色,位元 1 為藍色,位元 2 為紅色;對於 YUV 格式,位元 0 為亮度,位元 1 為色度-U,位元 2 為色度-V。如果存在 Alpha 通道,則始終是最後一個位元。
- inplace
處理時不需要第二個輸入,而是使用輸入串流中的 Alpha 平面。
30.269 銳化
銳化或模糊輸入視訊。
它接受以下參數
- luma_msize_x, lx(亮度矩陣大小_x,lx)
設定亮度矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- luma_msize_y, ly(亮度矩陣大小_y,ly)
設定亮度矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- 亮度量, la
設定亮度效果強度。它必須是一個浮點數,合理值介於 -1.5 和 1.5 之間。
負值會模糊輸入影片,而正值會銳化影片,零值將停用效果。
預設值為 1.0。
- 彩度矩陣水平尺寸, cx
設定彩度矩陣水平尺寸。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- 彩度矩陣垂直尺寸, cy
設定彩度矩陣垂直尺寸。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- 彩度量, ca
設定彩度效果強度。它必須是一個浮點數,合理值介於 -1.5 和 1.5 之間。
負值會模糊輸入影片,而正值會銳化影片,零值將停用效果。
預設值為 0.0。
- Alpha 矩陣水平尺寸, ax
設定 Alpha 矩陣水平尺寸。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- Alpha 矩陣垂直尺寸, ay
設定 Alpha 矩陣垂直尺寸。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。
- Alpha 量, aa
設定 Alpha 效果強度。它必須是一個浮點數,合理值介於 -1.5 和 1.5 之間。
負值會模糊輸入影片,而正值會銳化影片,零值將停用效果。
預設值為 0.0。
所有參數都是可選的,預設值等同於字串 '5:5:1.0:5:5:0.0'。
30.269.1 範例
- 套用強烈的亮度銳化效果
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
- 對亮度和彩度參數套用強烈的模糊效果
unsharp=7:7:-2:7:7:-2
30.270 untile
將由平鋪影像組成的影片分解為單獨的影像。
輸出影片的幀率是輸入影片的幀率乘以平鋪數量。
此濾鏡執行與 tile 相反的操作。
此濾鏡接受以下選項
- layout
設定網格尺寸(即行數和列數)。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片尺寸」章節。
30.270.1 範例
- 從靜態影像檔案產生一個 1 秒的影片,該檔案由 25 幀垂直堆疊而成,類似於類比膠捲
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
30.271 uspp
套用超慢/簡單的後處理濾鏡,該濾鏡在幾個(或在 quality 等級 8
的情況下為所有)偏移量壓縮和解壓縮影像,並對結果進行平均。
這與 spp 行為的不同之處在於,uspp 實際上使用 libavcodec Snow 編碼和解碼每個案例,而 spp 使用類似於 MJPEG 的簡化僅限於幀內 8x8 DCT。
此濾鏡在 5.0 到 6.0 之間的 ffmpeg 版本中不可用。
此濾鏡接受以下選項
- 設定音調品質。可能的值為
設定品質。此選項定義平均的等級數量。它接受 0-8 範圍內的整數。如果設定為
0
,則濾鏡將不起作用。值為8
表示最高品質。對於該值的每次遞增,速度大約下降 2 倍。預設值為3
。- qp
強制使用恆定量化參數 (constant quantization parameter)。若未設定,濾鏡將會使用來自影片串流的 QP(若可用)。
- codec
使用指定的編解碼器而不是 snow。
30.272 v360
在各種格式之間轉換 360 度影片。
此濾鏡接受以下選項
- 輸入
- 輸出
設定輸入/輸出影片的格式。
可用格式
- ‘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’
up
- ‘d’
down
- ‘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’
漢默-艾托夫地圖投影格式。
- ‘sinusoidal’
正弦曲線地圖投影格式。
- target_geometry
魚眼投影。
特定格式選項
- 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’
- ‘fisheye_thoby’
最近鄰。
- ‘line’
- ‘linear’
雙線性插值。
- ‘lagrange9’
Lagrange9 插值。
- ‘cube’
- ‘cubic’
雙立方插值。
- ‘lanc’
- ‘lanczos’
Lanczos 插值。
- ‘sp16’
- ‘spline16’
Spline16 插值。
- ‘gauss’
- ‘gaussian’
高斯插值。
- ‘mitchell’
Mitchell 插值。
預設值為 ‘line’。
- w
- h
設定輸出影片解析度。
預設解析度取決於格式。
- in_stereo
- out_stereo
設定輸入/輸出立體格式。
- ‘2d’
2D 單聲道
- ‘sbs’
並排
- ‘tb’
上下
輸入和輸出格式的預設值為 ‘2d’。
- yaw
- pitch
- roll
設定輸出影片的旋轉。值為度。
- rorder
設定輸出影片的旋轉順序。為每個位置選擇一個項目。
- ‘y, Y’
yaw
- ‘p, P’
pitch
- ‘r, R’
roll
預設值為 ‘ypr’。
- h_flip
- v_flip
- d_flip
水平(交換左右)/垂直(交換上下)/深度(交換前後)翻轉輸出影片。布林值。
- ih_flip
- iv_flip
設定輸入影片是否水平/垂直翻轉。布林值。
- in_trans
設定輸入影片是否轉置。布林值,預設為停用。
- out_trans
設定是否需要轉置輸出影片。布林值,預設為停用。
- h_offset
- v_offset
設定輸出水平/垂直軸外偏移。預設設定為 0。允許範圍為 -1 到 1。
- alpha_mask
透過將所有未對應的像素標記為完全透明,在 alpha 平面中建立遮罩。布林值,預設為停用。
- reset_rot
重設輸出影片的旋轉。布林值,預設為停用。
30.272.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.272.2 指令
此濾鏡支援上述選項的子集作為 commands。
30.273 vaguedenoiser
套用基於小波的降噪器。
它使用 Cohen-Daubechies-Feauveau 9/7 將來自影片輸入的每個幀轉換為小波域。然後,它對獲得的係數應用一些濾波。之後,它進行逆小波變換。由於小波特性,它應該給出良好的平滑結果,並減少噪聲,而不會模糊圖片特徵。
此濾波器接受以下選項
- threshold
濾波強度。強度越高,影片濾波越多。硬閾值處理可以使用比軟閾值處理更高的閾值,然後影片看起來會過濾。
- method
濾鏡將使用的濾波方法。
它接受以下值
- ‘hard’
閾值以下的所有值都將歸零。
- ‘soft’
閾值以下的所有值都將歸零。所有高於閾值的值都將按閾值減少。
- ‘garrote’
縮放或無效化係數 - 介於(更)軟閾值處理和(更少)硬閾值處理之間的中間值。
預設值為 garrote。
- nsteps
小波將分解圖片的次數。圖片無法分解超過特定點(通常,對於 640x480 幀為 8 - 因為 2^9 = 512 > 480)。有效值為 1 到 32 之間的整數。預設值為 6。
- percent
部分或完全降噪(有限的係數縮減),範圍從 0 到 100。預設值為 85。
- planes
要處理的平面列表。預設情況下,處理所有平面。
- type
濾鏡將使用的閾值類型。
它接受以下值
- ‘universal’
用於所有分解的閾值相同。
- ‘bayes’
使用的閾值也取決於每個分解係數。
預設值為 universal。
30.274 varblur
透過使用第二個影片流設定模糊半徑來套用可變模糊濾鏡。第二個串流必須具有相同的尺寸。
此濾波器接受以下選項
- min_r
設定允許的最小半徑。允許範圍為 0 到 254。預設值為 0。
- max_r
設定允許的最大半徑。允許範圍為 1 到 255。預設值為 8。
- planes
設定要處理的平面。預設情況下,使用所有平面。
varblur
濾鏡也支援 framesync 選項。
30.274.1 指令
此濾鏡支援以上所有選項作為 commands。
30.275 向量示波器
在二維圖形(稱為向量示波器)中顯示 2 個顏色分量值。
此濾波器接受以下選項
- mode, m
設定向量示波器模式。
它接受以下值
- ‘gray’
- ‘tint’
灰度值顯示在圖形上,亮度越高表示在圖形上的位置具有相同分量顏色值的像素越多。這是預設模式。
- ‘color’
灰度值顯示在圖形上。影片幀中不存在的周圍像素值以由選項
x
和y
設定的 2 個顏色分量的漸層繪製。第三個顏色分量是靜態的。- ‘color2’
影片幀中存在的實際顏色分量值顯示在圖形上。
- ‘color3’
與 color2 類似,但圖形上相同值
x
和y
的頻率越高,另一個顏色分量的值就越高,對於x
和y
的預設值而言,該分量是亮度。- ‘color4’
影片幀中存在的實際顏色顯示在圖形上。如果兩種不同的顏色映射到圖形上的相同位置,則選擇具有圖形中不存在的較高分量值的顏色。
- ‘color5’
灰度值顯示在圖形上。與
color
類似,但第三個顏色分量從徑向漸層中選取。
- x
設定哪個顏色分量將在 X 軸上表示。預設值為
1
。- y
設定哪個顏色分量將在 Y 軸上表示。預設值為
2
。- intensity, i
設定強度,由模式使用:灰度、顏色、color3 和 color5,用於增加表示圖形中 (X, Y) 位置頻率的顏色分量的亮度。
- envelope, e (包絡線)
- ‘none’
無包絡線,這是預設值。
- ‘instant’
即時包絡線,即使是最暗的單個像素也將被清晰地突出顯示。
- ‘peak’
保持圖形中隨時間顯示的最大值和最小值。這樣,您仍然可以發現超出範圍的值,而無需不斷查看向量示波器。
- ‘peak+instant’
峰值和即時包絡線組合在一起。
- graticule, g
設定要繪製哪種刻度線。
- ‘none’
- ‘green’
- ‘color’
- ‘invert’
- opacity, o
設定刻度線不透明度。
- flags, f
設定刻度線標誌。
- ‘white’
為白點繪製刻度線。
- ‘black’
為黑點繪製刻度線。
- ‘name’
繪製顏色點短名稱。
- bgopacity, b (背景不透明度)
設定背景不透明度。
- lthreshold, l
為未在 X 或 Y 軸上表示的顏色分量設定低閾值。低於此值的值將被忽略。預設值為 0。注意,此值乘以一個像素分量可能具有的實際最大可能值。因此,對於 8 位元輸入和 0.1 的低閾值,實際閾值為 0.1 * 255 = 25。
- hthreshold, h
為未在 X 或 Y 軸上表示的顏色分量設定高閾值。高於此值的值將被忽略。預設值為 1。注意,此值乘以一個像素分量可能具有的實際最大可能值。因此,對於 8 位元輸入和 0.9 的高閾值,實際閾值為 0.9 * 255 = 230。
- colorspace, c
設定繪製刻度線時要使用哪種色彩空間。
- ‘auto’
- ‘601’
- ‘709’
預設值為自動。
- tint0, t0
- tint1, t1
為灰度/色調向量示波器模式設定色調。預設情況下,這兩個選項都為零。這表示沒有色調,並且輸出將保持灰度。
30.276 vidstabdetect
分析影片穩定/防手震。執行 2 次傳遞中的第 1 次傳遞,有關第 2 次傳遞,請參閱 vidstabtransform。
此濾鏡產生一個檔案,其中包含有關後續幀的相對平移和旋轉變換資訊,然後由 vidstabtransform 濾鏡使用。
要啟用此濾鏡的編譯,您需要使用 --enable-libvidstab
配置 FFmpeg。
此濾波器接受以下選項
- result
設定用於寫入變換資訊的檔案路徑。預設值為 transforms.trf。
- shakiness
設定影片的抖動程度和相機的速度。它接受 1-10 範圍內的整數,值為 1 表示輕微抖動,值為 10 表示強烈抖動。預設值為 5。
- accuracy
設定偵測過程的準確性。它必須是 1-15 範圍內的值。值為 1 表示低準確性,值為 15 表示高準確性。預設值為 15。
- stepsize
設定搜尋過程的步長。以 1 像素解析度掃描最小值周圍的區域。預設值為 6。
- mincontrast
設定最小對比度。低於此值,將捨棄局部量測欄位。必須是 0-1 範圍內的浮點數值。預設值為 0.3。
- 腳架
設定腳架模式的參考影格編號。
若啟用,影格的移動會與已篩選串流中的參考影格(由指定的編號識別)進行比較。其目的是補償或多或少靜態場景中的所有移動,並保持攝影機視角絕對靜止。
若設定為 0,則停用。影格從 1 開始計數。
- show
在結果影格中顯示欄位和變換。接受 0-2 範圍內的整數。預設值為 0,停用任何視覺化。
- 檔案格式
要寫入的變換資料檔案的格式。可接受的值為
- ‘ascii’
人類可讀的純文字
- ‘binary’
二進制格式,比
ascii
大約小 40%。(預設)
30.276.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.277 vidstabtransform
影片穩定/去晃動:第 2 次處理,共 2 次,請參閱 vidstabdetect 以進行第 1 次處理。
讀取包含每個影格變換資訊的檔案並套用/補償它們。與 vidstabdetect 濾鏡一起使用,可用於去晃動影片。另請參閱 http://public.hronopik.de/vid.stab。務必同時使用 unsharp 濾鏡,請參閱下方。
要啟用此濾鏡的編譯,您需要使用 --enable-libvidstab
配置 FFmpeg。
30.277.1 選項
- 輸入
設定用於讀取變換的檔案路徑。預設值為 transforms.trf。
- short
設定用於低通濾波攝影機移動的影格數(值 * 2 + 1)。預設值為 10。
例如,數字 10 表示使用 21 個影格(過去 10 個和未來 10 個)來平滑影片中的移動。值越大,影片越平滑,但會限制攝影機的加速度(平移/傾斜移動)。0 是一種特殊情況,模擬靜態攝影機。
- 最佳化演算法
設定攝影機路徑最佳化演算法。
可接受的值為
- ‘gauss’
攝影機移動上的高斯核心低通濾波器(預設)
- ‘avg’
變換的平均
- 最大位移
設定平移影格的最大像素數。預設值為 -1,表示無限制。
- 最大角度
設定旋轉影格的最大角度,以弧度為單位(角度 * PI/180)。預設值為 -1,表示無限制。
- 裁切
指定如何處理可能因移動補償而可見的邊框。
可用的值為
- ‘keep’
保留前一個影格的影像資訊(預設)
- ‘black’
將邊框填滿黑色
- 反轉
若設定為 1,則反轉變換。預設值為 0。
- 相對
若設定為 1,則將變換視為相對於前一個影格,若設定為 0,則視為絕對。預設值為 0。
- 縮放
設定要縮放的百分比。正值將產生放大效果,負值將產生縮小效果。預設值為 0(不縮放)。
- 最佳化縮放
設定最佳縮放以避免邊框。
可接受的值為
- ‘0’
停用
- ‘1’
判斷最佳靜態縮放值(只有非常強烈的移動才會導致可見的邊框)(預設)
- ‘2’
判斷最佳自適應縮放值(不會有邊框可見),請參閱 zoomspeed
請注意,在 zoom 給定的值會加到此處計算出的值。
- 縮放速度
設定每個影格的最大縮放百分比(當 optzoom 設定為 2 時啟用)。範圍為 0 到 5,預設值為 0.25。
- 內插
指定內插類型。
可用的值為
- ‘no’
不內插
- ‘linear’
僅水平線性
- ‘bilinear’
雙向線性(預設)
- ‘bicubic’
雙向立方(慢速)
- 腳架
若設定為 1,則啟用虛擬腳架模式,這等同於
relative=0:smoothing=0
。預設值為 0。也請使用 vidstabdetect 的
tripod
選項。- 偵錯
若設定為 1,則增加記錄詳細程度。偵測到的全域移動也會寫入暫存檔 global_motions.trf。預設值為 0。
30.277.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.278 垂直翻轉
垂直翻轉輸入影片。
例如,使用 ffmpeg
垂直翻轉影片
ffmpeg -i in.avi -vf "vflip" out.avi
30.279 vfrdet
偵測可變影格率影片。
此濾鏡嘗試偵測輸入是否為可變或恆定影格率。
在結尾,它將輸出偵測為具有可變 delta pts 的影格數,以及具有恆定 delta pts 的影格數。如果存在具有可變 delta 的影格,則它也會顯示遇到的最小、最大和平均 delta。
30.280 鮮豔度
增強或改變飽和度。
此濾鏡接受以下選項
- 水平翻轉輸入影片。
若為正值,則設定增強強度;若為負值,則設定改變強度。預設值為 0。允許範圍為 -2 到 2。
- 紅平衡
設定紅色平衡。預設值為 1。允許範圍為 -10 到 10。
- 綠平衡
設定綠色平衡。預設值為 1。允許範圍為 -10 到 10。
- 藍平衡
設定藍色平衡。預設值為 1。允許範圍為 -10 到 10。
- 紅亮度
設定紅色亮度係數。
- 綠亮度
設定綠色亮度係數。
- 藍亮度
設定藍色亮度係數。
- 替換
如果
intensity
為負值且此項設定為 1,則顏色將會改變,否則顏色飽和度會降低,更接近灰色。
30.280.1 指令
此濾鏡支援所有上述選項作為 命令。
30.281 vif
取得兩個輸入影片之間的平均 VIF(視覺資訊保真度)。
此濾鏡採用兩個輸入視訊。
為了使此濾鏡正常運作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同的影格數,並且會逐個比較影格。
取得的平均 VIF 分數會透過記錄系統印出。
此濾鏡會儲存每個影格計算出的 VIF 分數。
此濾鏡也支援 framesync 選項。
在以下範例中,正在處理的輸入檔案 main.mpg 將與參考檔案 ref.mpg 進行比較。
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
30.282 暗角
製作或反轉自然暈影效果。
此濾鏡接受以下選項
- 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.282.1 表達式
alpha、x0 和 y0 運算式可以包含以下參數。
- w
- h
輸入寬度和高度
- n
輸入影格編號,從 0 開始
- pts
已篩選影片影格的 PTS(演示時間戳記)時間,以 TB 單位表示,若未定義則為 NAN
- r
輸入視訊的影格速率,若輸入影格速率未知則為 NAN
- t
已篩選影片影格的 PTS(演示時間戳記)時間,以秒為單位表示,若未定義則為 NAN
- tb
輸入影格的呈現時間戳記,以時間基底單位表示
30.282.2 範例
- 套用簡單的強烈暈影效果
vignette=PI/4
- 製作閃爍的暈影
vignette='PI/4+random(1)*PI/50':eval=frame
30.283 vmafmotion
取得影片的平均 VMAF 動態分數。它是 VMAF 的組成指標之一。
取得的平均動態分數會透過記錄系統印出。
此濾鏡接受以下選項
- 統計檔案
若已指定,濾鏡將使用指定的檔案來儲存相對於前一個影格的每個影格的動態分數。當檔名等於 "-" 時,資料會傳送到標準輸出。
範例
ffmpeg -i ref.mpg -vf vmafmotion -f null -
30.284 vstack
垂直堆疊輸入影片。
所有串流都必須具有相同的像素格式和相同的寬度。
請注意,此濾鏡比使用 overlay 和 pad 濾鏡創建相同輸出更快。
此濾鏡接受以下選項
- inputs
設定輸入串流數量。預設值為 2。
- shortest
如果設定為 1,則強制在最短輸入終止時終止輸出。預設值為 0。
30.285 w3fdif
對輸入影片進行去交錯處理("w3fdif" 代表 "Weston 3 Field Deinterlacing Filter")。
基於 Martin Weston 為 BBC R&D 描述的流程,並根據 Jim Easterbrook 為 BBC R&D 編寫的去交錯演算法實作,Weston 3 field 去交錯濾鏡使用 BBC R&D 計算的濾鏡係數。
此濾鏡使用影格中的場域主導資訊來決定在輸出中,每對場域中的哪一個先放置。如果它判斷錯誤,請在 w3fdif
濾鏡之前使用 setfield 濾鏡。
有兩組濾鏡係數,稱為 "simple" 和 "complex"。可以透過傳遞可選參數來設定使用哪一組濾鏡係數
- filter
設定交錯濾鏡係數。接受下列其中一個值
- ‘simple’
簡單濾鏡係數集。
- ‘complex’
更複雜的濾鏡係數集。
預設值為 ‘complex’。
- mode
要採用的交錯模式。它接受以下其中一個值
- frame
針對每個影格輸出一個影格。
- field
針對每個場景輸出一個影格。
預設值為
field
。- parity
為輸入交錯視訊假設的圖像場景同位。它接受以下其中一個值
- tff
假設頂場景優先。
- bff
假設底場景優先。
- auto
啟用自動偵測場景同位。
預設值為
auto
。如果交錯未知或解碼器未匯出此資訊,則將假設頂場景優先。- deint
指定要對哪些影格進行去交錯處理。接受以下其中一個值
- ‘all’
對所有影格進行去交錯處理,
- ‘interlaced’
僅對標記為交錯的影格進行去交錯處理。
預設值為 ‘all’。
30.285.1 指令
此濾鏡支援與選項相同的 commands。
30.286 波形
影片波形監視器。
波形監視器繪製色彩成分強度。預設情況下僅限亮度。波形的每一列對應於來源影片中的一列像素。
它接受以下選項
- mode, m
可以是
row
或column
。預設值為column
。在 row 模式下,左側的圖形代表色彩成分值 0,右側代表值 = 255。在 column 模式下,頂部代表色彩成分值 = 0,底部代表值 = 255。- intensity, i
設定強度。較小的值有助於找出相同亮度的值分佈在輸入列/欄中的數量。預設值為
0.04
。允許範圍為 [0, 1]。- 鏡像,r
設定鏡像模式。
0
表示不鏡像,1
表示鏡像。在鏡像模式下,較高的值將在row
模式下表示在左側,在column
模式下表示在頂部。預設值為1
(鏡像)。- 顯示,d
設定顯示模式。它接受以下值
- ‘overlay’
呈現與
parade
相同的資訊,但代表色彩成分的圖表會直接疊加在一起。此顯示模式使其更容易發現應相同之色彩成分重疊區域中的相對差異或相似性,例如中性白色、灰色或黑色。
- ‘stack’
在
row
模式下,並排顯示色彩成分的個別圖形;在column
模式下,則上下顯示。- ‘parade’
在
column
模式下,並排顯示色彩成分的個別圖形;在row
模式下,則上下顯示。使用此顯示模式可以輕鬆發現影像高光和陰影中的色偏,方法是比較每個波形的頂部和底部圖形的輪廓。由於白色、灰色和黑色的特徵是完全相等的紅色、綠色和藍色量,因此圖片的中性區域應顯示三個寬度/高度大致相等的波形。如果沒有,則可以透過調整三個波形的層級輕鬆進行校正。
預設值為
stack
。- components, c (組件)
設定要顯示的色彩成分。預設值為 1,表示如果輸入為 RGB 色彩空間,則僅亮度或紅色色彩成分。例如,如果設定為 7,則將顯示所有 3 個(如果)可用的色彩成分。
- envelope, e (包絡線)
- ‘none’
無包絡線,這是預設值。
- ‘instant’
即時包絡線,即使使用小的
step
值,圖形中呈現的最小值和最大值也將很容易看到。- ‘peak’
跨時間保持圖形中呈現的最小值和最大值。這樣,您仍然可以發現超出範圍的值,而無需 постоянно 查看波形。
- ‘peak+instant’
峰值和即時包絡線組合在一起。
- 濾鏡,f
- ‘lowpass’
不濾鏡,這是預設值。
- ‘flat’
亮度和彩度組合在一起。
- ‘aflat’
與上述類似,但顯示藍色和紅色彩度之間的差異。
- ‘xflat’
與上述類似,但使用不同的顏色。
- ‘yflat’
與上述類似,但再次使用不同的顏色。
- ‘chroma’
僅顯示彩度。
- ‘color’
在波形上顯示實際顏色值。
- ‘acolor’
與上述類似,但亮度顯示彩度值的頻率。
- graticule, g
設定要顯示的標線。
- ‘none’
不顯示標線。
- ‘green’
顯示綠色標線,顯示合法的廣播範圍。
- ‘orange’
顯示橘色標線,顯示合法的廣播範圍。
- ‘invert’
顯示反轉標線,顯示合法的廣播範圍。
- opacity, o
設定刻度線不透明度。
- 旗標,fl
設定刻度線標誌。
- ‘numbers’
在線條上方繪製數字。預設為啟用。
- ‘dots’
繪製點而不是線條。
- 縮放,s
設定用於顯示標線的縮放。
- ‘digital’
- ‘millivolts’
- ‘ire’
預設為 digital。
- bgopacity, b (背景不透明度)
設定背景不透明度。
- tint0, t0
- tint1, t1
設定輸出的色調。僅適用於低通濾鏡,且當顯示不是覆蓋且輸入像素格式不是 RGB 時。
- fitmode,fm
設定影片輸出影格的樣本長寬比。可用於設定波形,使其在一個方向上不會過度拉伸。
- ‘none’
將樣本長寬比設定為 1/1。
- ‘size’
將樣本長寬比設定為符合影片的輸入大小
預設值為 ‘none’。
- 輸入
設定濾鏡要選取的輸入格式。可以是 ‘all’,從所有可用格式中選取,或 ‘first’,選取第一個可用的格式。預設值為 ‘first’。
30.287 weave, doubleweave
weave
採用基於場域的影片輸入,並將每兩個連續的場域加入到單個影格中,產生一個新的雙倍高度剪輯,其影格率和影格計數為一半。
doubleweave
的工作方式與 weave
相同,但不減半影格率和影格計數。
它接受以下選項
- first_field
設定第一個場域。可用的值為
- ‘top, t’
將影格設定為頂場優先。
- ‘bottom, b’
將影格設定為底場優先。
30.287.1 範例
- 使用 select 和 separatefields 濾鏡交錯影片
separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
30.288 xbr
套用 xBR 高品質放大濾鏡,專為像素藝術設計。它遵循一組邊緣偵測規則,請參閱 https://forums.libretro.com/t/xbr-algorithm-tutorial/123。
它接受以下選項
- n
設定縮放維度:
2
代表2xBR
,3
代表3xBR
,4
代表4xBR
。預設值為3
。
30.289 xcorrelate
在第一個和第二個輸入影片串流之間套用正規化互相關。
第二個輸入影片串流的維度必須小於第一個輸入影片串流。
此濾鏡接受以下選項
- planes
設定要處理的平面。
- 次要
設定將從第二個輸入影片串流處理哪些次要影片影格,可以是 first 或 all。預設值為 all。
xcorrelate
濾鏡也支援 framesync 選項。
30.290 xfade
從一個輸入影片串流到另一個輸入影片串流套用交叉淡化。交叉淡化會套用指定的持續時間。
兩個輸入都必須是恆定影格率,並且具有相同的解析度、像素格式、影格率和時間基底。
此濾鏡接受以下選項
- 轉場
設定可用的轉場效果之一
- ‘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.290.1 範例
- 從一個輸入視訊交叉淡化到另一個輸入視訊,使用淡入淡出轉場,轉場持續時間為 2 秒,從偏移 5 秒開始
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
30.291 xmedian
從多個輸入視訊中選取中位數像素。
此濾鏡接受以下選項
- inputs
設定輸入數量。預設值為 3。允許範圍為 3 到 255。如果輸入數量為偶數,則結果將為兩個中位數之間的平均值。
- planes
設定要濾波的平面。預設值為
15
,表示處理所有平面。- percentile
設定中位數百分位數。預設值為
0.5
。預設值0.5
會一律選取中位數,而0
會選取最小值,1
則會選取最大值。
30.291.1 指令
此濾鏡支援上述所有選項作為指令,排除 inputs
選項。
30.292 xpsnr
取得兩個輸入視訊之間的平均值(跨所有輸入影格)和最小值(跨所有色彩平面平均值)的延伸感知加權峰值訊噪比 (XPSNR)。
XPSNR 是一種低複雜度的心理視覺動機失真測量演算法,用於評估兩個視訊串流或影像之間的差異。這對於客觀量化視訊和影像編解碼器引起的失真特別有用,作為正式主觀測試的替代方案。對數 XPSNR 輸出值與傳統 psnr 評估的值範圍相似,但更能反映人類對視覺編碼品質的印象。有關 XPSNR 測量的更多詳細資訊(基本上代表 PSNR 測量的區塊加權變體),可以在以下免費提供的論文中找到
- C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. www.ecodis.de/xpsnr.htm
- C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en
當發布使用(例如)此 FFmpeg 濾鏡獲得的 XPSNR 評估結果時,強烈建議參考上述論文作為文檔手段。此濾鏡需要兩個輸入視訊。第一個輸入被視為(通常未失真的)參考源,並保持不變地傳遞到輸出,而第二個輸入是(失真的)測試訊號。除了位元深度之外,這兩個視訊輸入必須具有相同的像素格式。此外,為了獲得最佳效能,比較的兩個輸入視訊都應採用 YCbCr 色彩格式。
上述獲得的整體 XPSNR 值會透過日誌系統印出。對於具有多個色彩平面的輸入,我們建議報告最小 XPSNR 平均值。
接受以下參數,其行為與 psnr 濾鏡的參數類似
- stats_file, f
如果指定,濾鏡將使用指定的檔案來儲存每個個別影格和色彩平面的 XPSNR 值。當檔案名稱等於 "-" 時,該資料會傳送到標準輸出。
此濾鏡也支援 framesync 選項。
30.292.1 範例
- 兩個 1080p HD 視訊 (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 UHD 視訊的 XPSNR 分析,ref_source.yuv 位元深度為 8,test_video.yuv 位元深度為 10,兩者皆為每秒 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.293 xstack
將視訊輸入堆疊成自訂版面配置。
所有串流必須具有相同的像素格式。
此濾鏡接受以下選項
- inputs
設定輸入串流數量。預設值為 2。
- layout
指定輸入的版面配置。此選項需要使用者明確設定所需的版面配置組態。這會設定每個視訊輸入在輸出中的位置。每個輸入以 ’|’ 分隔。第一個數字代表欄,第二個數字代表列。數字從 0 開始,並以 ’_’ 分隔。或者,可以使用 wX 和 hX,其中 X 是視訊輸入,從中取得寬度或高度。多個值可以使用 ’+’ 分隔時使用。在這種情況下,值會加總在一起。
請注意,如果輸入大小不同,可能會出現間隙,因為並非所有輸出視訊影格都會被填滿。同樣地,如果視訊的位置沒有為相鄰視訊的完整影格留下足夠的空間,則視訊可能會彼此重疊。
對於 2 個輸入,預設版面配置為
0_0|w0_0
(相當於grid=2x1
)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定grid
或layout
。同時指定兩者將導致錯誤。- grid
指定固定大小的輸入網格。此選項用於建立輸入串流的固定大小網格。以
COLUMNSxROWS
的形式設定網格大小。必須有ROWS * COLUMNS
個輸入串流,它們將排列為具有ROWS
列和COLUMNS
欄的網格。使用此選項時,同一列中的每個輸入串流都必須具有相同的高度,並且所有列都必須具有相同的寬度。如果設定了
grid
,則inputs
選項會被忽略,並隱含地設定為ROWS * COLUMNS
。對於 2 個輸入,預設網格為
2x1
(相當於layout=0_0|w0_0
)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定grid
或layout
。同時指定兩者將導致錯誤。- shortest
如果設定為 1,則強制在最短輸入終止時終止輸出。預設值為 0。
- fill
如果設定為有效顏色,所有未使用的像素將會填滿該顏色。預設情況下,填滿設定為無,因此已停用。
30.293.1 範例
- 將 4 個輸入顯示為 2x2 網格。
Layout
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 網格。
Layout
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 網格。
Layout
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 網格。
Layout
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.294 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.295 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.296 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.296.1 指令
此濾鏡支援與選項相同的 commands。
30.297 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
輸入幀計數。
- off
輸出幀計數。
- in_time, it
以秒表示的輸入時間戳記。如果輸入時間戳記未知,則為 NAN。
- out_time, time, ot
以秒表示的輸出時間戳記。
- x
- y
從目前輸入影格的 ’x’ 和 ’y’ 表達式中最後計算出的 ’x’ 和 ’y’ 位置。
- px
- py
前一個輸入影格的最後輸出影格的 ’x’ 和 ’y’,如果尚無此影格(第一個輸入影格),則為 0。
- 縮放
從目前輸入影格的 ’z’ 表達式中最後計算出的縮放。
- pzoom
前一個輸入影格的最後輸出影格的最後計算出的縮放。
- duration
目前輸入影格的輸出影格數。從每個輸入影格的 ’d’ 表達式計算得出。
- pduration
為前一個輸入影格建立的輸出影格數
- a
有理數:輸入寬度 / 輸入高度
- sar
樣本縱橫比
- dar
顯示縱橫比
30.297.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.298 zscale
使用 z.lib 函式庫縮放(調整大小)輸入視訊:https://github.com/sekrit-twc/zimg。若要啟用此濾鏡的編譯,您需要使用 --enable-libzimg
配置 FFmpeg。
zscale 濾鏡會透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。
如果輸入影像格式與下一個濾鏡要求的格式不同,zscale 濾鏡會將輸入轉換為要求的格式。
30.298.1 選項
此濾鏡接受以下選項。
- width, w
- 高度、h
設定輸出視訊尺寸表達式。預設值為輸入尺寸。
若 width 或 w 值為 0,則輸出會使用輸入寬度。若 height 或 h 值為 0,則輸出會使用輸入高度。
如果只有一個值為 -n,其中 n >= 1,則 zscale 濾鏡將使用一個值來維持輸入影像的縱橫比,該縱橫比是從另一個指定的維度計算得出的。之後,它將確保計算出的維度可被 n 整除,並在必要時調整該值。
如果兩個值都為 -n,其中 n >= 1,則行為將與兩個值都設定為 0 的情況相同,如先前詳細說明。
請參閱下方接受用於尺寸表達式的常數列表。
- size, s
設定影片尺寸。關於此選項的語法,請查看 ffmpeg-utils 手冊中 (ffmpeg-utils)「影片尺寸」章節。
- dither, d
設定抖動類型。
可能的值為
- none
- ordered
- random
- error_diffusion
預設值為 none(無)。
- 濾鏡,f
設定調整大小濾鏡類型。
可能的值為
- point
- bilinear
- bicubic
- spline16
- spline36
- lanczos
預設值為雙線性。
- range, r
設定色彩範圍。
可能的值為
- 輸入
- limited
- full
預設值與輸入相同。
- primaries, p
設定色彩原色。
可能的值為
- 輸入
- 709
- unspecified
- 170m
- 240m
- 2020
預設值與輸入相同。
- transfer, t
設定轉換特性。
可能的值為
- 輸入
- 709
- unspecified
- 601
- linear
- 2020_10
- 2020_12
- smpte2084
- iec61966-2-1
- arib-std-b67
預設值與輸入相同。
- matrix, m
設定色彩空間矩陣。
可能的值為
- 輸入
- 709
- unspecified
- 470bg
- 170m
- 2020_ncl
- 2020_cl
預設值與輸入相同。
- rangein, rin
設定輸入色彩範圍。
可能的值為
- 輸入
- limited
- full
預設值與輸入相同。
- primariesin, pin
設定輸入色彩原色。
可能的值為
- 輸入
- 709
- unspecified
- 170m
- 240m
- 2020
預設值與輸入相同。
- transferin, tin
設定輸入轉換特性。
可能的值為
- 輸入
- 709
- unspecified
- 601
- linear
- 2020_10
- 2020_12
預設值與輸入相同。
- matrixin, min
設定輸入色彩空間矩陣。
可能的值為
- 輸入
- 709
- unspecified
- 470bg
- 170m
- 2020_ncl
- 2020_cl
- chromal, c
設定輸出色度位置。
可能的值為
- 輸入
- 左邊
- center
- topleft
- 頂部
- bottomleft
- 底部
- chromalin, cin
設定輸入色度位置。
可能的值為
- 輸入
- 左邊
- center
- topleft
- 頂部
- bottomleft
- 底部
- 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.298.2 指令
此濾波器支援以下指令
- width, w
- 高度、h
設定輸出影片尺寸表達式。此命令接受與相應選項相同的語法。
如果指定的表達式無效,則會保持其目前的值。
31 OpenCL 視訊濾鏡
以下是目前可用的 OpenCL 視訊濾鏡的說明。
若要啟用這些濾鏡的編譯,您需要使用 --enable-opencl
配置 FFmpeg。
執行 OpenCL 濾鏡需要您初始化硬體裝置,並將該裝置傳遞到任何濾鏡圖中的所有濾鏡。
- -init_hw_device opencl[=name][:device[,key=value...]]
初始化一個名為 name 的 opencl 類型的新硬體裝置,使用給定的裝置參數。
- -filter_hw_device name
將名為 name 的硬體裝置傳遞到任何濾鏡圖中的所有濾鏡。
如需更詳細的資訊,請參閱 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
將盒狀模糊演算法套用至輸入視訊。
它接受以下參數
- luma_radius, lr
- luma_power, lp
- chroma_radius, cr
- chroma_power, cp
- alpha_radius, ar
- alpha_power, ap
以下是可接受選項的描述。
- luma_radius, lr
- chroma_radius, cr
- alpha_radius, ar
設定用於模糊對應輸入平面的盒狀半徑(以像素為單位)的表達式。
半徑值必須是非負數,且對於亮度和平面的值不得大於表達式
min(w,h)/2
,對於色度平面則不得大於min(cw,ch)/2
。luma_radius 的預設值為 "2"。如果未指定,chroma_radius 和 alpha_radius 預設為針對 luma_radius 設定的對應值。
表達式可以包含以下常數
- w
- h
輸入寬度和高度(以像素為單位)。
- cw
- ch
輸入色度影像的寬度和高度(以像素為單位)。
- hsub
- vsub
水平和垂直色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。
- luma_power, lp
- chroma_power, cp
- alpha_power, ap
指定將盒狀模糊濾鏡套用至對應平面的次數。
luma_power 的預設值為 2。如果未指定,chroma_power 和 alpha_power 預設為針對 luma_power 設定的對應值。
值為 0 將停用效果。
31.2.1 範例
套用方塊模糊濾鏡,將輸出的每個像素設定為每個平面分別具有方塊半徑 luma_radius、chroma_radius、alpha_radius 的平均值。濾鏡將對應的平面套用 luma_power、chroma_power、alpha_power 次。對於影像邊緣上的像素,半徑不會超出影像邊界,因此計算中不會使用超出範圍的座標。
- 套用方塊模糊濾鏡,亮度、色度及 Alpha 半徑設定為 2,亮度、色度及 Alpha 強度設定為 3。濾鏡將對影像的每個平面執行 3 次方塊半徑設定為 2 的操作。
-i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
- 套用方塊模糊濾鏡,亮度半徑設定為 2,亮度強度為 1,色度半徑為 4,色度強度為 5,Alpha 半徑為 3,Alpha 強度為 7。
對於亮度平面,將執行一次 2x2 方塊半徑。
對於色度平面,將執行 5 次 4x4 方塊半徑。
對於 Alpha 平面,將執行 7 次 3x3 方塊半徑。
-i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
31.3 colorkey_opencl
RGB 色彩空間去背。
此濾鏡接受以下選項
- color
將被透明度取代的顏色。
- similarity
與關鍵顏色的相似度百分比。
0.01 僅匹配精確的關鍵顏色,而 1.0 匹配所有顏色。
- blend
混合百分比。
0.0 使像素完全透明,或完全不透明。
較高的值會產生半透明像素,像素顏色越接近關鍵顏色,透明度越高。
31.3.1 範例
- 使輸入中每個半綠色像素透明,並帶有一些輕微的混合
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
31.4 convolution_opencl
套用 3x3、5x5、7x7 矩陣的卷積。
此濾鏡接受以下選項
- 0m
- 1m
- 2m
- 3m
為每個平面設定矩陣。矩陣是由 9、25 或 49 個帶正負號的數字組成的序列。每個平面的預設值為
0 0 0 0 1 0 0 0 0
。- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
為每個平面的計算值設定乘數。如果未設定或為 0,則將為所有矩陣元素的總和。選項值必須是等於或大於
0.0
的浮點數。預設值為1.0
。- 0bias
- 1bias
- 2bias
- 3bias
為每個平面設定偏移值。此值會加到乘法結果中。適用於使整體影像更亮或更暗。選項值必須是等於或大於
0.0
的浮點數。預設值為0.0
。
31.4.1 範例
- 套用銳化
-i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
- 套用模糊
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
- 套用邊緣增強
-i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
- 套用邊緣偵測
-i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
- 套用包含對角線的拉普拉斯邊緣偵測器
-i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
- 套用浮雕
-i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
31.5 erosion_opencl
對視訊應用侵蝕效果。
此篩選器將像素替換為局部 (3x3) 最小值。
它接受以下選項
- threshold0
- threshold1
- threshold2
- threshold3
限制每個平面的最大變更量。範圍為
[0, 65535]
,預設值為65535
。若為0
,平面將保持不變。- coordinates
標記指定要參考的像素。範圍為
[0, 255]
,預設值為255
,即使用所有八個像素。標記以
x
為中心的局部 3x3 座標區域1 2 3
4 x 5
6 7 8
31.5.1 範例
- 套用腐蝕濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素 1、2、3、6、7、8 之間的局部最小值。如果輸入像素和局部最小值之間的差異大於對應平面的 threshold,則輸出像素將設定為輸入像素 - 對應平面的 threshold。
-i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
31.6 deshake_opencl
基於特徵點的視訊穩定濾鏡。
此濾鏡接受以下選項
- 腳架
模擬三腳架,防止相機發生任何與原始影格不同的移動。預設值為
0
。- 偵錯
是否應顯示額外的偵錯資訊,包括在處理後的輸出和主控台中。
請注意,為了查看主控台偵錯輸出,您還需要將
-v verbose
傳遞給 ffmpeg。輸出視訊中僅支援 RGB 輸入的檢視點匹配。
預設值為
0
。- adaptive_crop
是否在邊界進行少量裁剪,以減少鏡像像素的數量。
預設值為
1
。- refine_features
是否應在子像素級別細化特徵點。
可以關閉此功能以稍微提高效能,但會犧牲精確度。
預設值為
1
。- smooth_strength
套用於從
0.0
到1.0
的相機路徑的平滑強度。1.0
是最大平滑強度,而小於該值的值會導致平滑度降低。0.0
會使濾鏡根據每個影格自適應地選擇平滑強度。預設值為
0.0
。- smooth_window_multiplier
控制平滑視窗的大小(用於確定運動資訊的緩衝影格數)。
平滑視窗的大小由視訊的影格速率乘以該數字來確定。
可接受的值範圍為
0.1
到10.0
。較大的值會增加可用於確定如何平滑相機路徑的運動資料量,從而可能提高平滑度,但也可能增加延遲和記憶體使用量。
預設值為
2.0
。
31.6.1 範例
- 以固定的中等平滑強度穩定視訊
-i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
- 使用偵錯功能穩定視訊(在主控台和渲染的視訊中)
-i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
31.7 dilation_opencl
對視訊套用擴張效果。
此濾鏡將像素替換為局部 (3x3) 最大值。
它接受以下選項
- threshold0
- threshold1
- threshold2
- threshold3
限制每個平面的最大變更量。範圍為
[0, 65535]
,預設值為65535
。若為0
,平面將保持不變。- coordinates
標記指定要參考的像素。範圍為
[0, 255]
,預設值為255
,即使用所有八個像素。標記以
x
為中心的局部 3x3 座標區域1 2 3
4 x 5
6 7 8
31.7.1 範例
- 套用膨脹濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素 1、2、3、6、7、8 之間的局部最大值。如果輸入像素和局部最大值之間的差異大於對應平面的 threshold,則輸出像素將設定為輸入像素 + 對應平面的 threshold。
-i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
31.8 nlmeans_opencl
透過 OpenCL 的非局部均值降噪濾鏡,此濾鏡接受與 nlmeans 相同的選項。
31.9 overlay_opencl
將一個視訊疊加在另一個視訊之上。
它接受兩個輸入並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在其上。此濾鏡需要所有輸入具有相同的記憶體佈局。因此,可能需要格式轉換。
此濾鏡接受以下選項
- 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
- 高度、h
指定添加邊框後輸出圖像尺寸的表達式。如果 width 或 height 的值為 0,則輸出將使用對應的輸入尺寸。
width 表達式可以參考由 height 表達式設定的值,反之亦然。
width 和 height 的預設值為 0。
- x
- y
指定在已添加邊框的區域內放置輸入圖像的偏移量,相對於輸出圖像的頂部/左側邊框。
x 表達式可以參考由 y 表達式設定的值,反之亦然。
x 和 y 的預設值為 0。
如果 x 或 y 評估為負數,它們將被更改,以便輸入圖像在邊框區域中居中。
- color
指定邊框區域的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。
- aspect
填充到外觀比例而不是解析度。
width、height、x 和 y 選項的值是包含以下常數的表達式
- in_w
- in_h
輸入影片的寬度和高度。
- iw
- ih
這些與 in_w 和 in_h 相同。
- out_w
- out_h
輸出寬度和高度(邊框區域的尺寸),由 width 和 height 表達式指定。
- ow
- oh
這些與 out_w 和 out_h 相同。
- x
- y
x 和 y 偏移量,由 x 和 y 表達式指定,如果尚未指定,則為 NAN。
- a
與 iw / ih 相同
- sar
輸入樣本縱橫比
- dar
輸入顯示縱橫比,與 (iw / ih) * sar 相同
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 範例
- 套用 scale 設定為 2 且 delta 設定為 10 的 Prewitt 運算子。
-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。
這是一個從零開始計數的計數器,每個影格遞增一。
- 來源影像,__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) 手冊中的 "Color" 章節。預設顏色為
black
。
31.14 roberts_opencl
將 Roberts cross 運算子 (https://en.wikipedia.org/wiki/Roberts_cross) 套用於輸入視訊串流。
此濾波器接受以下選項
- planes
設定要篩選的平面。預設值為
0xf
,表示處理所有平面。- scale
設定將與濾鏡結果相乘的值。範圍為
[0.0, 65535]
,預設值為1.0
。- delta
設定將新增至濾鏡結果的值。範圍為
[-65535, 65535]
,預設值為0.0
。
31.14.1 範例
- 套用 scale 設定為 2 且 delta 設定為 10 的 Roberts cross 運算子
-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 範例
- 套用 scale 設定為 2 且 delta 設定為 10 的 sobel 運算子
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
31.16 tonemap_opencl
執行 HDR(PQ/HLG) 到 SDR 的轉換,並進行色調映射。
它接受以下參數
- tonemap(色調映射)
指定要使用的色調映射運算子。與 tonemap 中的 tonemap 選項相同。
- 參數
調整色調映射演算法。與 tonemap 中的 param 選項相同。
- 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(亮度矩陣大小_x,lx)
設定亮度矩陣水平大小。範圍為
[1, 23]
,預設值為5
。- luma_msize_y, ly(亮度矩陣大小_y,ly)
設定亮度矩陣垂直大小。範圍為
[1, 23]
,預設值為5
。- 亮度量, la
設定亮度效果強度。範圍為
[-10, 10]
,預設值為1.0
。負值會模糊輸入影片,而正值會銳化影片,零值將停用效果。
- 彩度矩陣水平尺寸, cx
設定色度矩陣水平大小。範圍為
[1, 23]
,預設值為5
。- 彩度矩陣垂直尺寸, cy
設定色度矩陣垂直大小。範圍為
[1, 23]
,預設值為5
。- 彩度量, 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 的自訂轉場效果,將兩個視訊交叉淡化。
它接受以下選項
- 轉場
設定其中一種可能的轉場效果。
- custom
選取自訂轉場效果,實際轉場描述將從 source 和 kernel 選項中選取。
- 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 之間(包含 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 視訊濾鏡的描述。
若要啟用這些濾鏡的編譯,您需要使用 --enable-vaapi
配置 FFmpeg。
若要使用 vaapi 濾鏡,您需要正確設定 vaapi 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/VAAPI
32.1 overlay_vaapi
在另一個視訊的頂部覆蓋一個視訊。
它接受兩個輸入並有一個輸出。第一個輸入是「主要」視訊,第二個輸入疊加在其上。
此濾鏡接受以下選項
- x
- y
設定主視訊上疊加視訊的 x 和 y 座標的表達式。
兩個表達式的預設值均為 "0"。
- w
- h
為主要視訊上覆蓋的視訊的寬度和高度設定表達式。
預設值對於 'w' 為 'overlay_iw',對於 'h' 為 'overlay_ih*w/overlay_iw'。
表達式可以包含以下參數
- main_w, W
- main_h, H
主要輸入寬度和高度。
- overlay_iw
- overlay_ih
疊加輸入寬度和高度。
- overlay_w, w
- overlay_h, h
覆蓋輸出的寬度和高度。
- overlay_x, x
- overlay_y, y
主要視訊內覆蓋圖層的位置
- alpha
設定覆蓋視訊的透明度。允許的範圍為 0.0 到 1.0。值越高表示透明度越低。預設值為
1.0
。- eof_action
請參閱 framesync。
- shortest
請參閱 framesync。
- repeatlast
請參閱 framesync。
此濾鏡也支援 framesync 選項。
32.1.1 範例
- 在輸入視訊的左上角覆蓋影像 LOGO。此濾鏡的兩個輸入皆為 yuv420p 格式。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
- 從輸入視訊的左上角偏移 (200, 100) 的位置覆蓋影像 LOGO。輸入具有相同記憶體佈局的色彩通道,覆蓋具有額外的 alpha 平面,例如輸入為 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 變體,每個輸入串流可能具有不同的寬度,此濾鏡將縮小/放大每個輸入串流,同時保持原始外觀比例。
它接受以下選項
- inputs
請參閱 vstack。
- shortest
請參閱 vstack。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
設定輸出的寬度。如果設定為 0,則此濾鏡會將輸出的寬度設定為第一個輸入串流的寬度。預設值為 0。
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
- 高度、h
指定添加邊框後輸出圖像尺寸的表達式。如果 width 或 height 的值為 0,則輸出將使用對應的輸入尺寸。
width 表達式可以參考由 height 表達式設定的值,反之亦然。
width 和 height 的預設值為 0。
- x
- y
指定在已添加邊框的區域內放置輸入圖像的偏移量,相對於輸出圖像的頂部/左側邊框。
x 表達式可以參考由 y 表達式設定的值,反之亦然。
x 和 y 的預設值為 0。
如果 x 或 y 評估為負數,它們將被更改,以便輸入圖像在邊框區域中居中。
- color
指定邊框區域的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。
- aspect
填充到外觀比例而不是解析度。
width、height、x 和 y 選項的值是包含以下常數的表達式
- in_w
- in_h
輸入影片的寬度和高度。
- iw
- ih
這些與 in_w 和 in_h 相同。
- out_w
- out_h
輸出寬度和高度(邊框區域的尺寸),由 width 和 height 表達式指定。
- ow
- oh
這些與 out_w 和 out_h 相同。
- x
- y
x 和 y 偏移量,由 x 和 y 表達式指定,如果尚未指定,則為 NAN。
- a
與 iw / ih 相同
- sar
輸入樣本縱橫比
- dar
輸入顯示縱橫比,與 (iw / ih) * sar 相同
32.7 drawbox_vaapi
在輸入影像上繪製彩色方框。
它接受以下參數
- x
- y
指定方框左上角座標的表達式。預設值為 0。
- width, w
- 高度、h
指定方框寬度和高度的表達式;如果為 0,則解釋為輸入寬度和高度。預設值為 0。
- 顏色、c
指定要寫入的方塊的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「顏色」章節。
- 粗細、t
設定方框邊緣粗細的表達式。值為
fill
將建立一個填滿的方框。預設值為3
。請參閱下方接受的常數列表。
- 取代
值為
1
時,繪製方塊的像素將覆寫視訊的顏色和 alpha 像素。預設值為0
,這會將方塊合成到輸入視訊上。
參數 x、y、w 和 h 以及 t 是包含以下常數的表達式
- 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 視訊濾鏡的描述。
若要啟用這些濾鏡的編譯,您需要使用 --enable-vulkan
以及 --enable-libglslang
或 --enable-libshaderc
配置 FFmpeg。
執行 Vulkan 濾鏡需要您初始化硬體裝置,並將該裝置傳遞給任何濾鏡圖中的所有濾鏡。
- -init_hw_device vulkan[=name][:device[,key=value...]]
使用給定的裝置參數和 key=value 中的選項,初始化名為 name 的 vulkan 類型的新硬體裝置。支援以下選項
- 偵錯
如果設定為 1,則開啟驗證層。
- linear_images
分配線性影像。不適用於解碼。
- disable_multiplane
停用多平面影像。不適用於解碼。
- -filter_hw_device name
將名為 name 的硬體裝置傳遞到任何濾鏡圖中的所有濾鏡。
如需更詳細的資訊,請參閱 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
濾波器接收兩個輸入串流並輸出一個串流,第一個輸入是「頂部」圖層,第二個輸入是「底部」圖層。預設情況下,輸出會在最長輸入終止時終止。
以下是可接受選項的描述。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
設定特定像素組件或所有像素組件的混合模式(如果是 all_mode)。預設值為
normal
。組件模式的可用值為
- ‘normal’
- ‘multiply’
33.3 bwdif_vulkan
使用 bwdif 的反交錯器,此為「Bob Weaver 反交錯濾鏡」演算法,使用 Vulkan 在 GPU 上實作。
它接受以下參數
- mode
要採用的交錯模式。它接受以下其中一個值
- 0, send_frame
針對每個影格輸出一個影格。
- 1, send_field
針對每個場景輸出一個影格。
預設值為
send_field
。- parity
為輸入交錯視訊假設的圖像場景同位。它接受以下其中一個值
- 0, tff
假設頂場景優先。
- 1, bff
假設底場景優先。
- -1, auto
啟用自動偵測場景同位。
預設值為
auto
。如果交錯未知或解碼器未匯出此資訊,則將假設頂場景優先。- deint
指定要對哪些影格進行去交錯處理。接受以下其中一個值
- 0, all
對所有影格進行去交錯處理。
- 1, interlaced
僅對標記為交錯的影格進行去交錯處理。
預設值為
all
。
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
,這會設定為使用與 size 相同的值。
33.10 nlmeans_vulkan
使用非局部均值演算法對影格進行去噪,此演算法使用 Vulkan 在 GPU 上實作。支援比 nlmeans 或 nlmeans_opencl 更多的像素格式,包括 Alpha 通道支援。
此濾鏡接受以下選項。
- s
設定所有組件的去噪強度。預設值為 1.0。必須在 [1.0, 100.0] 範圍內。
- p
設定所有平面的修補程式大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。
- r
設定研究區域大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。
- t
設定並行性。預設值為 36。必須是 [1, 168] 範圍內的數字。較大的值可能會加速處理,但會犧牲更多 VRAM。較小的值會使其變慢,從而減少 VRAM 使用量。僅在具有原子浮點運算的 GPU 上支援 (RDNA3+、Ampere+)。
- s0
- s1
- s2
- s3
設定特定組件的去噪強度。預設值為 1,等於 s。必須是 [1, 100] 範圍內的奇數。
- p0
- p1
- p2
- p3
設定特定組件的修補程式大小。預設值為 7,等於 p。必須是 [0, 99] 範圍內的奇數。
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’
Hald CLUT 將套用於前 10 秒 (
clut.nut
的持續時間),然後該 CLUT 串流的最新圖片將套用於mandelbrot
串流的剩餘幀。- ‘vflip’
垂直翻轉輸入影片。
- passthrough
如果輸入幾何形狀符合指定值指定的幾何形狀,則不套用轉置。它接受以下值
- ‘none’
始終套用轉置。(預設)
- ‘portrait’(直向)
保留直向幾何形狀(當 height >= width 時)。
- ‘landscape’(橫向)
保留橫向幾何形狀(當 width >= height 時)。
33.13 transpose_vulkan
轉置輸入視訊中的行和列,並可選擇翻轉它。如需更深入的範例,請參閱 transpose 視訊濾鏡,它主要共用相同的選項。
它接受以下參數
- dir(方向)
指定轉置方向。
可以採用以下值
- ‘cclock_flip’(逆時針翻轉)
逆時針旋轉 90 度並垂直翻轉。(預設)
- ‘clock’(順時針)
順時針旋轉 90 度。
- ‘cclock’(逆時針)
逆時針旋轉 90 度。
- ‘clock_flip’(順時針翻轉)
順時針旋轉 90 度並垂直翻轉。
- passthrough
如果輸入幾何形狀符合指定值指定的幾何形狀,則不套用轉置。它接受以下值
- ‘none’
始終套用轉置。(預設)
- ‘portrait’(直向)
保留直向幾何形狀(當 height >= width 時)。
- ‘landscape’(橫向)
保留橫向幾何形狀(當 width >= height 時)。
34 QSV 視訊濾鏡
以下是目前可用的 QSV 視訊濾鏡的描述。
若要啟用這些濾鏡的編譯,您需要使用 --enable-libmfx
或 --enable-libvpl
配置 FFmpeg。
若要使用 QSV 濾鏡,您需要正確設定 QSV 裝置。如需更多資訊,請參閱 https://trac.ffmpeg.org/wiki/Hardware/QuickSync
34.1 hstack_qsv
水平堆疊輸入視訊。
這是 hstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的高度,此濾鏡將縮小/放大每個輸入串流,同時保持原始長寬比。
它接受以下選項
34.2 vstack_qsv
垂直堆疊輸入影片。
這是 vstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的寬度,此濾鏡將縮小/放大每個輸入串流,同時保持原始長寬比。
它接受以下選項
- inputs
請參閱 vstack。
- shortest
請參閱 vstack。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
設定輸出的寬度。如果設定為 0,則此濾鏡會將輸出的寬度設定為第一個輸入串流的寬度。預設值為 0。
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 緩衝區
緩衝視訊影格,並使其可供濾鏡鏈使用。
此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。
它接受以下參數
- video_size
指定緩衝視訊影格的大小(寬度和高度)。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。
- 這些字段以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示(H.265 第 7.4.3.2.1 節)。
輸入視訊寬度。
- width
輸入視訊高度。
- pix_fmt
代表緩衝視訊影格的像素格式的字串。它可以是與像素格式對應的數字,或是像素格式名稱。
- time_base
指定緩衝影格的時間戳記所假設的時間基底。
- frame_rate
指定視訊串流的預期影格率。
- normalize_sar
代表緩衝視訊影格的色彩空間的字串。它可以是與色彩空間對應的數字,或是色彩空間名稱。
- 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 中的 enum AVPixelFormat 定義),因此此範例對應於
buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
或者,選項可以指定為平面字串,但此語法已棄用
width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den
35.2 cellauto
建立由基本細胞自動機產生的圖案。
細胞自動機的初始狀態可以透過 filename 和 pattern 選項定義。如果未指定此類選項,則會隨機建立初始狀態。
在每個新影格中,視訊中的新列都會填滿細胞自動機下一代的結果。當整個影格填滿時的行為由 scroll 選項定義。
此來源接受以下選項
- filename, f
從指定檔案讀取初始細胞自動機狀態,即起始列。在檔案中,每個非空白字元都被視為一個存活的細胞,換行符號將終止該列,並且檔案中的後續字元將被忽略。
- pattern, p
從指定的字串讀取初始細胞自動機狀態,即起始列。
字串中的每個非空白字元都被視為一個存活的細胞,換行符號將終止該列,並且字串中的後續字元將被忽略。
- 幀率、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,則大小預設設定為指定初始狀態列的寬度,高度設定為 width * 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
在 OSX 上使用 Apple 的 CoreImage API 在 GPU 上產生的視訊來源。
此視訊來源是 coreimage 視訊濾鏡的特殊版本。在套用的濾鏡鏈的開頭使用核心影像產生器來產生內容。
coreimagesrc 視訊來源接受以下選項
- list_generators
列出所有可用的產生器以及它們各自的所有選項,以及可能的最小值和最大值以及預設值。
list_generators=true
- size, s
指定來源視訊的大小。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。預設值為
320x240
。- 幀率、r
指定來源視訊的影格率,以每秒產生的影格數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。預設值為 "25"。
- sar
設定來源視訊的樣本長寬比。
- duration, d
設定來源視訊的持續時間。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間持續時間」章節。
如果未指定,或表示的持續時間為負數,則視訊應永久產生。
此外,還接受 coreimage 視訊濾鏡的所有選項。完整的濾鏡鏈可用於進一步處理產生的輸入,而無需 CPU-HOST 傳輸。有關詳細資訊,請參閱 coreimage 文件和範例。
35.3.1 範例
- 使用 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 Apple 標準 bash shell 的完整且逸出的命令列形式給出
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
此範例等效於 coreimage 的 QRCode 範例,而無需 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 漸層
產生多個漸層。
- size, s
設定影格大小。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。預設值為 "640x480"。
- 幀率、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’
預設類型為 linear。
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。
- 幀率、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。此來源特別適用於測試編碼功能。
此來源接受以下選項
- 幀率、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 標頭並使用 --enable-frei0r
配置 FFmpeg。
此來源接受以下參數
- size
要產生的影片大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。
- framerate
產生的影片的影格率。它可以是 num/den 形式的字串或影格率縮寫。
- filter_name
要載入的 frei0r 來源的名稱。關於 frei0r 以及如何設定參數的更多資訊,請閱讀影片濾鏡文件中的 frei0r 章節。
- filter_params
要傳遞給 frei0r 來源的以 '|' 分隔的參數列表。
例如,要產生大小為 200x200 且影格率為 10 的 frei0r partik0l 來源,並將其覆蓋在 overlay 濾鏡的主要輸入上
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
35.9 生命遊戲
產生生命圖案。
此來源基於約翰·康威生命遊戲的推廣。
來源輸入代表生命網格,每個像素代表一個細胞,它可以處於兩種可能的狀態之一:存活或死亡。每個細胞與其八個鄰居互動,這些鄰居是在水平、垂直或對角線上相鄰的細胞。
在每次互動時,網格根據採用的規則演變,該規則指定了鄰居存活細胞的數量,這些數量將使細胞保持存活或誕生。rule 選項允許指定要採用的規則。
此來源接受以下選項
- filename, f
設定從中讀取初始網格狀態的檔案。在檔案中,每個非空白字元都被視為一個存活細胞,而換行符號用於分隔每行的結尾。
如果未指定此選項,則會隨機產生初始網格。
- 幀率、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 位元用於編碼細胞為存活狀態時,對於每個數量的鄰居存活細胞的下一個細胞狀態,低位元指定「誕生」新細胞的規則。較高位元編碼較多的鄰居細胞數量。例如,數字 6153 =
(12<<9)+9
指定存活規則為 12,誕生規則為 9,這對應於 "S23/B03"。預設值為 "S23/B3",這是原始康威生命遊戲規則,如果細胞有 2 或 3 個鄰居存活細胞,則將保持細胞存活,如果有三個存活細胞圍繞死亡細胞,則將誕生一個新細胞。
- size, s
設定輸出視訊的大小。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。
如果指定了 filename,則大小預設設定為與輸入檔案相同的大小。如果設定了 size,它必須包含輸入檔案中指定的大小,並且該檔案中定義的初始網格將在較大的結果區域中居中。
如果未指定檔案名稱,則大小值預設為 "320x240"(用於隨機產生的初始網格)。
- stitch
如果設定為 1,則將左右網格邊緣縫合在一起,頂部和底部邊緣也縫合在一起。預設值為 1。
- mold
設定細胞腐壞速度。如果設定,死亡細胞將以 mold 的步進從 death_color 變為 mold_color。mold 的值可以從 0 到 255。
- life_color
設定存活(或新誕生)細胞的顏色。
- death_color
設定死亡細胞的顏色。如果設定了 mold,這是用於表示死亡細胞的第一種顏色。
- mold_color
設定腐壞顏色,用於完全死亡和腐壞的細胞。
關於這 3 個顏色選項的語法,請查看 (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
產生柏林雜訊。
柏林雜訊是一種在空間中具有局部連續性的雜訊。這可以用於產生在空間和時間上都具有連續性的圖案,例如模擬煙霧、流體或地形。
如果透過 octaves 選項指定了多個八度音階,則柏林雜訊將產生為各個組件的總和,每個組件的頻率都加倍。在這種情況下,persistence 選項指定相對於前一個組件的振幅比率。更多的八度音階組件可以指定在產生的雜訊中包含更多高頻細節(例如,由於產生地形中的巨石造成的小尺寸變化)。
35.10.1 選項
- size, s
指定緩衝影片影格的大小(寬度和高度)。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為
320x240
。- 幀率、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=octaves=7:persistence=0.5
- 將柏林雜訊與 lutyuv 鏈接以產生黑白效果
perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
- 沿 y 軸拉伸雜訊,並將灰階轉換為僅紅色的訊號
perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
35.11 qrencodesrc
使用 libqrencode 函式庫產生 QR 碼(請參閱 https://fukuchi.org/works/qrencode/)。
若要啟用此來源的編譯,您需要使用 --enable-libqrencode
配置 FFmpeg。
QR 碼是從提供的文字或文字圖案產生的。對應的 QR 碼會根據指定的輸出大小選項進行縮放並放置在影片輸出中。
如果未指定文字,則不會產生 QR 碼,而是傳回空的彩色輸出。
此來源接受以下選項
- qrcode_width, q
- padded_qrcode_width, Q
指定已呈現 QR 碼寬度的表達式,帶或不帶填充。 qrcode_width 表達式可以參考由 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。
這些表達式僅在初始化來源時評估一次。有關詳細資訊,請參閱 qrencode 表達式 章節。
請注意,某些常數對於來源來說是遺失的(例如 x 或 t 或 ¸n),因為它們僅在評估每個影格而不是在初始化時的表達式時才有意義。
- 幀率、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
定義要呈現的文字。如果兩個都未指定,則不會編碼 QR 碼(僅為空的彩色幀)。
如果啟用展開,則文字將被視為文字範本,使用 qrencode 展開機制。有關詳細資訊,請參閱 qrencode 文字展開 章節。
- background_color, bc
- foreground_color, fc
設定 QR 碼和背景顏色。foreground_color 的預設值為「黑色」,background_color 的預設值為「白色」。
如需顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節。
35.11.1 範例
- 產生編碼指定文字且大小為預設值的 QR 碼
qrencodesrc=text=www.ffmpeg.org
- 與下方相同,但選取藍色和粉紅色
qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
- 產生寬度為 200 像素且帶有填充的 QR 碼,使填充後的寬度為 QR 碼寬度的 4/3
qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
- 產生填充後寬度為 200 像素且帶有填充的 QR 碼,使 QR 碼寬度為填充後寬度的 3/4
qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
- 產生一個編碼幀編號的 QR 碼
qrencodesrc=text=%{n}
- 產生一個編碼 GMT 時間戳記的 QR 碼
qrencodesrc=text=%{gmtime}
- 產生一個編碼為浮點數的時間戳記的 QR 碼
qrencodesrc=text=%{pts}
35.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
allrgb
來源傳回大小為 4096x4096 且包含所有 rgb 顏色的影格。
allyuv
來源傳回大小為 4096x4096 且包含所有 yuv 顏色的影格。
color
來源提供均勻著色的輸入。
colorchart
來源提供顏色檢查圖表。
colorspectrum
來源提供色譜輸入。
haldclutsrc
來源提供身分 Hald CLUT。另請參閱 haldclut 濾鏡。
nullsrc
來源傳回未處理的影片影格。它主要用於分析/偵錯工具,或作為忽略輸入資料的濾鏡的來源。
pal75bars
來源產生基於 EBU PAL 建議且具有 75% 顏色級別的彩條圖案。
pal100bars
來源產生基於 EBU PAL 建議且具有 100% 顏色級別的彩條圖案。
rgbtestsrc
來源產生 RGB 測試圖案,可用於偵測 RGB 與 BGR 問題。您應該從上到下看到紅色、綠色和藍色條紋。
smptebars
來源產生基於 SMPTE 工程指南 EG 1-1990 的彩條圖案。
smptehdbars
來源產生基於 SMPTE RP 219-2002 的彩條圖案。
testsrc
來源產生測試影片圖案,顯示顏色圖案、滾動漸層和時間戳記。這主要用於測試目的。
testsrc2
來源與 testsrc 類似,但支援更多像素格式,而不僅僅是 rgb24
。這允許將其用作其他測試的輸入,而無需格式轉換。
yuvtestsrc
來源產生 YUV 測試圖案。您應該從上到下看到 y、cb 和 cr 條紋。
這些來源接受以下參數
- level
指定 Hald CLUT 的級別,僅在
haldclutsrc
來源中可用。級別為N
會產生N*N*N
xN*N*N
像素的圖片,用作 3D 查找表的單位矩陣。每個組件都以1/(N*N)
比例編碼。- 顏色、c
指定來源的顏色,僅在
color
來源中可用。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節。- size, s
指定來源視訊的大小。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。預設值為
320x240
。此選項在
allrgb
、allyuv
和haldclutsrc
濾鏡中不可用。- 幀率、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
設定 colorchecker 顏色預設,僅在
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
用於產生的影格的像素格式。這必須設定。
- 幀率、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); }
- 產生謝爾賓斯基地毯圖案,每幀單像素平移。
__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
產生謝爾賓斯基地毯/三角形碎形,並隨機平移。
此來源接受以下選項
- size, s
設定影格大小。有關此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊大小」章節。預設值為 "640x480"。
- 幀率、r
設定影格率,以每秒影格數表示。預設值為 "25"。
- seed
設定用於隨機平移的種子。
- 跳躍
設定單次平移目標的最大跳躍值。允許範圍為 1 到 10000。
- type
設定碎形類型,可以是預設的
carpet
或triangle
。
35.15 zoneplate
產生波帶片測試影片圖案。
此來源接受以下選項
- size, s
設定幀大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為 "320x240"。
- 幀率、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
- 產生圓形波帶片
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
Null 影片接收器:對輸入影片絕對不做任何事。它主要用作範本,以及用於分析/除錯工具。
37 多媒體濾鏡
以下是目前可用的多媒體濾鏡的描述。
37.1 a3dscope
將輸入音訊轉換為 3D 示波器影片輸出。
此濾鏡接受以下選項
- 幀率、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
將輸入音訊轉換為影片輸出,顯示音訊位元示波器。
此濾鏡接受以下選項
- 幀率、r
設定影格率,以每秒影格數表示。預設值為 "25"。
- size, s
指定輸出的影片大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為
1024x256
。- colors
指定顏色列表,以空格或 '|' 分隔,將用於繪製聲道。無法辨識或遺失的顏色將替換為白色。
- mode, m
設定輸出模式。可以是
bars
或trace
。預設值為bars
。
37.3 adrawgraph
使用輸入音訊元資料繪製圖表。
參見 drawgraph
37.4 agraphmonitor
參見 graphmonitor。
37.5 ahistogram
將輸入音訊轉換為影片輸出,顯示音量直方圖。
此濾鏡接受以下選項
- dmode
指定如何計算直方圖。
它接受以下值
- ‘single’
為所有聲道使用單一直方圖。
- ‘separate’
為每個聲道使用個別的直方圖。
預設值為
single
。- 幀率、r
設定影格率,以每秒影格數表示。預設值為 "25"。
- size, s
指定輸出的影片大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為
hd720
。- scale
設定顯示比例。
它接受以下值
- ‘log’
對數
- ‘sqrt’
平方根
- ‘cbrt’
立方根
- ‘lin’
linear
- ‘rlog’
反向對數
預設值為
log
。- ascale
設定振幅比例。
它接受以下值
- ‘log’
對數
- ‘lin’
linear
預設值為
log
。- acount
設定直方圖中要累積多少幀。預設值為 1。設定為 -1 會累積所有幀。
- rheight
設定直方圖佔視窗高度的比例。
- 滑動
設定聲譜滑動。
它接受以下值
- ‘replace’
用新的列替換舊的列。
- ‘scroll’
從上到下滾動。
預設為
replace
(取代)。- hmode
設定直方圖模式。
它接受以下值
- ‘abs’
使用樣本的絕對值。
- ‘sign’
使用樣本的原始值。
預設值為
abs
。
37.6 aphasemeter
測量輸入音訊的相位,並將其匯出為元資料 lavfi.aphasemeter.phase
,代表目前音訊幀的平均相位。也可以產生影片輸出,預設為啟用。音訊作為第一個輸出傳遞。
如果音訊具有不同的聲道佈局,將重新混合為立體聲。相位值範圍為 [-1, 1]
,其中 -1
表示左右聲道完全異相,1
表示聲道同相。
濾鏡接受以下選項,所有選項都與其影片輸出有關
- 幀率、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
偵測 1 秒單聲道且相位容差為 0.001 的完整範例ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
37.7 avectorscope
將輸入音訊轉換為影片輸出,表示音訊向量示波器。
此濾鏡用於測量立體聲音訊串流聲道之間的差異。由相同的左右訊號組成的單聲道訊號會產生一條垂直線。任何立體聲分離都可見為偏離此線,產生李薩如圖形。如果出現筆直(或偏離)但水平的線,則表示左右聲道異相。
此濾鏡接受以下選項
- mode, m
設定向量示波器模式。
可用的值為
- ‘lissajous’
李薩如圖形旋轉 45 度。
- ‘lissajous_xy’
與上方相同,但不旋轉。
- ‘polar’
形狀類似半圓形。
預設值為 ‘lissajous’。
- size, s
指定輸出的影片大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節。預設值為
400x400
。- 幀率、r
設定輸出幀率。預設值為
25
。- rc
- gc
- bc
- ac
指定紅色、綠色、藍色和 Alpha 對比度。預設值分別為
40
、160
、80
和255
。允許範圍為[0, 255]
。- rf
- gf
- bf
- af
指定紅色、綠色、藍色和 Alpha 衰減。預設值分別為
15
、10
、5
和5
。允許範圍為[0, 255]
。- 縮放
設定縮放因子。預設值為
1
。允許範圍為[0, 10]
。小於 1 的值將自動調整縮放因子至最大可能值。- draw
設定向量示波器繪圖模式。
可用的值為
- ‘dot’
為每個樣本繪製點。
- ‘line’
在前一個樣本和目前樣本之間繪製線條。
- ‘aaline’
在前一個樣本和目前樣本之間繪製反鋸齒線條。
預設值為 ‘dot’。
- scale
指定音訊樣本的振幅比例。
可用的值為
- ‘lin’
線性。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
- ‘log’
對數。
- swap
將左聲道軸與右聲道軸交換。
- mirror
鏡像軸。
- ‘none’
無鏡像。
- ‘x’
僅鏡像 x 軸。
- ‘y’
僅鏡像 y 軸。
- ‘xy’
鏡像兩個軸。
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
選項以外的所有上述選項作為指令。
37.8 bench, abench
基準測試濾鏡圖的一部分。
此濾鏡接受以下選項
- action
啟動或停止計時器。
可用的值為
- ‘start’
取得目前時間,將其設定為幀元資料(使用鍵
lavfi.bench.start_time
),並將幀轉發到下一個濾鏡。- ‘stop’
取得目前時間並從輸入幀元資料中提取
lavfi.bench.start_time
元資料以取得時間差。然後印出時間差、平均值、最大值和最小值(分別為t
、avg
、max
和min
)。時間戳記以秒為單位表示。
37.8.1 範例
- 基準測試 selectivecolor 濾鏡
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
37.9 串聯
串連音訊和影片串流,將它們一個接一個地連接在一起。
濾鏡適用於同步影片和音訊串流的片段。所有片段必須具有相同數量的每種類型串流,這也將是輸出的串流數量。
此濾鏡接受以下選項
- n
設定片段的數量。預設值為 2。
- v
設定輸出影片串流的數量,這也是每個片段中影片串流的數量。預設值為 1。
- a
設定輸出音訊串流的數量,這也是每個片段中音訊串流的數量。預設值為 0。
- unsafe
啟動不安全模式:如果片段具有不同的格式,則不會失敗。
濾鏡具有 v+a 個輸出:首先是 v 個影片輸出,然後是 a 個音訊輸出。
有 nx(v+a) 個輸入:首先是第一個片段的輸入,順序與輸出相同,然後是第二個片段的輸入,依此類推。
由於各種原因,包括編碼器幀大小或草率的製作,相關的串流並不總是具有完全相同的持續時間。因此,相關的同步串流(例如,影片及其音軌)應一次串連。concat 濾鏡將使用每個片段(最後一個片段除外)中最長串流的持續時間,並在必要時用靜音填充較短的音訊串流。
為了使此濾鏡正常工作,所有片段都必須從時間戳記 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 濾鏡以獲得原始參數。
濾鏡還具有影片輸出(參見 video 選項),帶有即時圖表以觀察響度演變。圖形包含上述記錄的訊息,因此當設定此選項時,除非設定詳細記錄,否則不再列印。主要圖形區域包含短期響度(3 秒分析),右側的儀表用於瞬時響度(400 毫秒),但可以選擇配置為改為顯示短期響度(參見 gauge)。
綠色區域標記目標響度(預設為 -23LUFS,除非透過 target 修改)周圍的 +/- 1LU 目標範圍。
有關響度建議 EBU R128 的更多資訊,請參閱 http://tech.ebu.ch/loudness。
此濾鏡接受以下選項
- video
啟動影片輸出。無論是否設定此選項,音訊串流都不會改變地傳遞。如果啟動,影片串流將是第一個輸出串流。預設值為
0
。- size
設定影片尺寸。此選項僅適用於影片。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片尺寸」章節。預設和最小解析度為
640x480
。- 表頭
設定 EBU 量表表頭。預設值為
9
。常用值為9
和18
,分別對應 EBU 量表表頭 +9 和 EBU 量表表頭 +18。允許此範圍內的任何其他整數值。- metadata
設定元數據注入。若設定為
1
,音訊輸入將被分割成 100 毫秒的輸出影格,每個影格都包含各種響度資訊在元數據中。所有元數據鍵都以lavfi.r128.
為前綴。預設值為
0
。- 影格日誌
強制設定影格日誌記錄層級。
可用的值為
- ‘quiet’
停用日誌記錄
- ‘info’
資訊日誌記錄層級
- ‘verbose’
詳細日誌記錄層級
預設情況下,日誌記錄層級設定為 info。如果設定了 video 或 metadata 選項,則會切換為 verbose。
- rms
設定峰值模式。
可累積使用可用模式(此選項為
flag
類型)。可能的值為- ‘none’
停用任何峰值模式(預設)。
- ‘sample’
啟用樣本峰值模式。
簡單峰值模式,尋找較高的樣本值。它會記錄樣本峰值訊息(以
SPK
識別)。- ‘true’
啟用真峰值模式。
如果啟用,峰值查找將在輸入串流的過度取樣版本上完成,以獲得更好的峰值準確度。它會記錄真峰值訊息(以
TPK
識別)和每影格真峰值(以FTPK
識別)。此模式需要使用libswresample
建置。
- 雙單聲道
將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在立體聲系統上播放,其 EBU R128 量測在感知上會不正確。如果設定為
true
,此選項將補償此效果。多聲道輸入檔案不受此選項影響。- 聲像定律
設定用於量測雙單聲道檔案的特定聲像定律。此參數為選用,預設值為 -3.01dB。
- 目標
設定特定目標位準(以 LUFS 為單位),用作視覺化中的相對零點。此參數為選用,預設值為 -23LUFS,如 EBU R128 所指定。但是,線上發布的素材可能偏好 -16LUFS 的位準(例如,用於 Podcast 或影片平台)。
- 儀表
設定儀表顯示的值。有效值為
momentary
和shortterm
。預設情況下將使用瞬時值,但在某些情況下,觀察短期值可能更有用(例如,現場混音)。- scale
設定響度的顯示刻度。有效參數為
absolute
(以 LUFS 為單位)或相對於目標的relative
(LU)。這僅影響影片輸出,不影響摘要或連續日誌輸出。- 整合
測量的整合響度的唯讀輸出值,以 LUFS 為單位。
- range
測量的響度範圍的唯讀輸出值,以 LU 為單位。
- lra_low
測量的 LRA 低值的唯讀輸出值,以 LUFS 為單位。
- lra_high
測量的 LRA 高值的唯讀輸出值,以 LUFS 為單位。
- sample_peak
測量的樣本峰值的唯讀輸出值,以 dBFS 為單位。
- true_peak
測量的真峰值的唯讀輸出值,以 dBFS 為單位。
37.10.1 範例
- 使用
ffplay
的即時圖表,帶有 EBU 量表表頭 +18ffplay -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 interleave, ainterleave
暫時交錯來自多個輸入的影格。
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 latency, alatency
測量濾鏡延遲。
報告先前濾鏡的濾鏡延遲,音訊濾鏡的延遲以音訊樣本數表示,影片濾鏡的延遲以影片影格數表示。
在輸入串流結束時,濾鏡將報告先前運作的濾鏡在濾鏡圖中的最小和最大測量延遲。
37.13 metadata, ametadata
操作影格元數據。
此濾波器接受以下選項
- mode
設定濾鏡的操作模式。
可以是以下其中之一
- ‘select’
如果同時設定了
value
和key
,則選擇具有此類元數據的影格。如果僅設定了key
,則選擇每個具有此鍵的元數據影格。- ‘add’
新增新的元數據
key
和value
。如果鍵已存在,則不執行任何操作。- ‘modify’
修改已存在的鍵的值。
- ‘delete’
如果設定了
value
,則僅刪除具有此值的鍵。否則,刪除鍵。如果未設定key
,則刪除影格中的所有元數據值。- ‘print’
如果找到元數據,則印出鍵及其值。如果未設定
key
,則印出影格中可用的所有元數據值。
- key
設定用於所有模式的鍵。除了
print
和delete
之外的所有模式都必須設定。- value
設定將使用的元數據值。此選項對於
modify
和add
模式是強制性的。- function
比較元數據值和
value
時要使用的函數。可以是以下之一
- ‘same_str’
值被解釋為字串,如果元數據值與
value
相同,則傳回 true。- ‘starts_with’
值被解釋為字串,如果元數據值以
value
選項字串開頭,則傳回 true。- ‘less’
值被解釋為浮點數,如果元數據值小於
value
,則傳回 true。- ‘equal’
值被解釋為浮點數,如果
value
等於元數據值,則傳回 true。- ‘greater’
值被解釋為浮點數,如果元數據值大於
value
,則傳回 true。- ‘expr’
值被解釋為浮點數,如果選項
expr
中的運算式評估為 true,則傳回 true。- ‘ends_with’
值被解釋為字串,如果元數據值以
value
選項字串結尾,則傳回 true。
- expr
設定當
function
設定為expr
時使用的運算式。運算式透過 eval API 評估,並且可以包含以下常數- VALUE1, FRAMEVAL
來自元數據鍵的
value
的浮點數表示。- VALUE2, USERVAL
使用者在
value
選項中提供的value
的浮點數表示。
- file
如果在
print
模式中指定,則輸出會寫入指定的檔案。可以使用任何可寫入的 URL 而不是純粹的檔案名稱。檔案名稱「-」是標準輸出的簡寫。如果未設定file
選項,則輸出會使用 AV_LOG_INFO 日誌層級寫入日誌。- 在某些情況下,這可能會提高效能,因為不需要載入影格的原始內容。
當輸出寫入使用 file 設定的 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
設定 random 模式的種子,必須是介於
0
和UINT32_MAX
之間的整數。如果未指定,或明確設定為-1
,則濾鏡將盡力使用良好的隨機種子。
注意:如果在權限濾鏡和後續濾鏡之間自動插入濾鏡,則後續濾鏡可能無法如預期接收到權限。在 perms/aperms 濾鏡之前插入 format 或 aformat 濾鏡可以避免此問題。
37.15 realtime, arealtime
減慢濾鏡速度以大致符合即時。
這些濾鏡將暫停濾鏡處理一段可變的時間,以使輸出速率與輸入時間戳記相符。它們類似於 ffmpeg
的 re 選項。
它們接受以下選項
- limit
暫停的時間限制。任何超過該時間的暫停都將被視為時間戳記不連續,並重置計時器。預設值為 2 秒。
- speed
處理速度係數。該值必須是個大於零的浮點數。大於 1.0 的值將導致快於即時的處理速度,較小的值將減慢處理速度。limit 會自動相應調整。預設值為 1.0。
無法實現比沒有這些濾鏡時更快的處理速度。
37.15.1 指令
兩個濾鏡都支援上述所有選項作為 指令。
37.16 segment, asegment
將單一輸入串流分割成多個串流。
此濾鏡的功能與 concat 濾鏡相反。
segment
適用於影片影格,asegment
適用於音訊樣本。
此濾波器接受以下選項
- 時間戳記
以「|」分隔的輸出片段的時間戳記。第一個片段將從輸入串流的開頭開始執行。最後一個片段將執行到輸入串流的結尾
- 影格, 樣本
分割片段的精確影格/樣本計數。
在所有情況下,在每個片段前加上「+」將使其相對於前一個片段。
37.16.1 範例
- 將輸入音訊串流分割為三個輸出音訊串流,從輸入音訊串流的開頭開始,並將其儲存在第一個輸出音訊串流中,然後在第 60 秒繼續,並將其儲存在第二個輸出音訊串流中,最後在輸入音訊串流的第 150 秒之後儲存在第三個輸出音訊串流中
asegment=timestamps="60|150"
37.17 select, aselect
選擇要傳遞到輸出的影格。
此濾波器接受以下選項
- 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(展示時間戳記),以 TB 單位表示。如果未定義,則為 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
concat demuxer 只能透過設定 inpoint 和 outpoint 來選取 concat 輸入檔案的一部分,但輸出封包可能並非完全包含在選取的間隔中。透過使用此變數,可以跳過 concat demuxer 產生的影格,這些影格並非完全包含在選取的間隔中。
這透過將影格 pts 與 lavf.concat.start_time 和 lavf.concat.duration 封包元數據值進行比較來運作,這些值也存在於解碼後的影格中。
如果影格 pts 至少為 start_time,且持續時間元數據遺失或影格 pts 小於 start_time + duration,則 concatdec_select 變數為 -1,否則為 0,如果 start_time 元數據遺失,則為 NaN。
這基本上表示,如果輸入影格的 pts 在 concat demuxer 設定的間隔內,則會選取該影格。
- iw (僅限影片)
表示輸入影片影格的寬度。
- ih (僅限影片)
表示輸入影片影格的高度。
- view (僅限影片)
多視圖影片的視圖 ID。
select 運算式的預設值為 "1"。
37.17.1 範例
- 選取輸入中的所有影格
select
上面的範例與
select=1
- 跳過所有影格
select=0
- 僅選取 I 影格
select='eq(pict_type\,I)'
- 每 100 個影格選取一個影格
select='not(mod(n\,100))'
- 僅選取包含在 10-20 時間間隔內的影格
select=between(t\,10\,20)
- 僅選取包含在 10-20 時間間隔內的 I 影格
select=between(t\,10\,20)*eq(pict_type\,I)
- 選取最小距離為 10 秒的影格
select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
- 使用 aselect 僅選擇樣本數 > 100 的音訊影格
aselect='gt(samples_n\,100)'
- 建立首場景的馬賽克
ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
將 scene 與介於 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 檔案中選擇有用的影格,該檔案使用 inpoints 和 outpoints,但來源檔案並非僅限於影格內編碼。
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
將命令發送到濾鏡圖中的濾鏡。
這些濾鏡讀取要發送到濾鏡圖中其他濾鏡的命令。
sendcmd
必須插入兩個視訊濾鏡之間,asendcmd
必須插入兩個音訊濾鏡之間,但除此之外,它們的作用方式相同。
命令的規範可以在濾鏡參數中透過 commands 選項提供,也可以在 filename 選項指定的文件中提供。
這些濾鏡接受以下選項
- commands, c
設定要讀取並發送到其他濾鏡的命令。
- filename, f
設定要讀取並發送到其他濾鏡的命令檔名。
37.18.1 指令語法
命令描述由一系列間隔規範組成,其中包括在與該間隔相關的特定事件發生時要執行的命令列表。發生的事件通常是目前影格時間進入或離開給定的時間間隔。
間隔由以下語法指定
START[-END] COMMANDS;
時間間隔由 START 和 END 時間指定。END 是可選的,預設為最大時間。
如果目前影格時間包含在間隔 [START, END) 內,即當時間大於或等於 START 且小於 END 時,則視為在指定的間隔內。
COMMANDS 由一個或多個命令規範序列組成,以逗號分隔,與該間隔相關。命令規範的語法由下式給出
[FLAGS] TARGET COMMAND ARG
FLAGS 是可選的,指定與時間間隔相關的事件類型,這些事件啟用發送指定的命令,並且必須是以 "+" 或 "|" 分隔並用 "[" 和 "]" 括起來的非空識別符號標誌序列。
以下標誌被識別
- enter
當目前影格時間戳記進入指定的間隔時,會發送命令。換句話說,當前一個影格時間戳記不在給定間隔內,而目前影格時間戳記在給定間隔內時,會發送命令。
- leave
當目前影格時間戳記離開指定的間隔時,會發送命令。換句話說,當前一個影格時間戳記在給定間隔內,而目前影格時間戳記不在給定間隔內時,會發送命令。
- expr
命令 ARG 被解釋為表達式,表達式的結果作為 ARG 傳遞。
表達式透過 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
- 在檔案中指定 drawtext 和 hue 命令的列表。
# show text in the interval 5-10 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world', [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text='; # desaturate the image in the interval 15-20 15.0-20.0 [enter] hue s 0, [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor', [leave] hue s 1, [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color'; # apply an exponential saturation fade-out effect, starting from time 25 25 [enter] hue s exp(25-t)
允許讀取和處理儲存在檔案 test.cmd 中的上述命令列表的濾鏡圖,可以使用以下方式指定
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
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
濾鏡標記輸出影格的色彩範圍屬性。它不會變更輸入影格,而只會設定相應的屬性,這會影響後續濾鏡如何處理影格。
此濾鏡接受以下選項
- range
可用的值為
- ‘auto’
保持相同的色彩範圍屬性。
- ‘unspecified, unknown’
將色彩範圍設定為未指定。
- ‘limited, tv, mpeg’
將色彩範圍設定為有限。
- ‘full, pc, jpeg’
將色彩範圍設定為完整。
37.21 settb, asettb
設定用於輸出影格時間戳記的時基。它主要用於測試時基配置。
它接受以下參數
- expr, tb
評估為輸出時基的表達式。
tb 的值是表示有理數的算術表達式。表達式可以包含常數 "AVTB"(預設時基)、"intb"(輸入時基)和 "sr"(取樣率,僅限音訊)。預設值為 "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) 手冊中的「視訊尺寸」章節。預設值為
1920x1080
。- fps, rate, r
設定輸出幀率。預設值為
25
。- bar_h
設定長條圖高度。它必須是偶數。預設值為
-1
,這會自動計算長條圖高度。- axis_h
設定軸高度。它必須是偶數。預設值為
-1
,這會自動計算軸高度。- sono_h
設定聲譜圖高度。它必須是偶數。預設值為
-1
,這會自動計算聲譜圖高度。- fullhd
設定 fullhd 解析度。此選項已棄用,請改用 size, 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 一起使用的字型檔案,以繪製軸。如果未指定,則使用嵌入式字型。請注意,使用字型檔案或嵌入式字型繪圖並未針對自訂 basefreq 和 endfreq 實作,請改用 axisfile 選項。
- font
指定 fontconfig 模式。此選項的優先順序低於 fontfile。模式中的
:
可以替換為|
,以避免不必要的跳脫字元。- 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
指定要繪製軸的影像檔案。此選項會覆寫 fontfile 和 fontcolor 選項。
- axis, text
啟用/停用將文字繪製到軸。如果設定為
0
,則停用將文字繪製到軸,並忽略 fontfile 和 axisfile 選項。預設值為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) 手冊中的「視訊尺寸」章節。預設值為
640x512
。- 幀率、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
phase
- magphase
顯示強度和相位的組合。強度對應到亮度,相位對應到顏色。
- channel
color
- stereo
顯示每個立體聲差異的獨特顏色。
預設值為
magnitude
。- 滑動
設定輸出滑動方法。允許的值為
- 取代
- scroll
- frame
- direction
設定輸出滑動方法的方向方法。允許的值為
- lr
方向從左到右。
- rl
rl
- ud
方向從上到下。
- du
方向從下到上。
- bar
設定長條圖顯示與顯示尺寸的比率。預設值為 0。
- rotation
rotation
37.24 showfreqs
將輸入音訊轉換為視訊輸出,表示音訊功率頻譜。音訊振幅在 Y 軸上,而頻率在 X 軸上。
此濾鏡接受以下選項
- size, s
指定視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為
1024x512
。- 幀率、r
rate
- mode
mode
它接受以下值
- ‘line’
- ‘bar’
- ‘dot’
預設值為
bar
。- ascale
設定振幅比例。
它接受以下值
- ‘lin’
linear
- ‘sqrt’
sqrt
- ‘cbrt’
立方根縮放。
- ‘log’
對數縮放。
預設值為
log
。- fscale
設定頻率縮放。
它接受以下值
- ‘lin’
linear
- ‘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
,表示將選取所選視窗函數的最佳重疊率。- 平均化
設定時間平均化。設定為 0 將顯示當前最大峰值。預設值為
1
,表示停用時間平均化。- colors
指定以空格或 ‘|’ 分隔的顏色列表,這些顏色將用於繪製頻道頻率。無法辨識或遺失的顏色將替換為白色。
- cmode
設定頻道顯示模式。
它接受以下值
- ‘combined’
- ‘separate’
預設值為
combined
。- minamp
設定
log
振幅縮放器中使用的最小振幅。- data
設定數據顯示模式。
它接受以下值
- ‘magnitude’
- ‘phase’
- ‘delay’
預設值為
magnitude
。- channels
設定處理音訊時要使用的頻道。預設情況下,會處理所有頻道。
37.25 showspatial
將立體聲輸入音訊轉換為影片輸出,表示兩個頻道之間的空間關係。
此濾鏡接受以下選項
- size, s
指定輸出的影片大小。如需此選項的語法,請查看 (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
。- 幀率、r
設定輸出影格率。
37.26 showspectrum
將輸入音訊轉換為影片輸出,表示音訊頻譜。
此濾鏡接受以下選項
- size, s
指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為
640x512
。- 滑動
指定頻譜應如何沿著視窗滑動。
它接受以下值
- ‘replace’
樣本到達右側時,會從左側重新開始
- ‘scroll’
樣本從右向左滾動
- ‘fullframe’
僅當樣本到達右側時才產生影格
- ‘rscroll’
樣本從左向右滾動
- ‘lreplace’
樣本到達左側時,會從右側重新開始
預設值為
replace
。- mode
指定顯示模式。
它接受以下值
- ‘combined’
所有頻道都顯示在同一列中
- ‘separate’
所有頻道都顯示在不同的列中
預設值為 ‘combined’。
- color
指定顯示色彩模式。
它接受以下值
- ‘channel’
每個頻道都以不同的顏色顯示
- ‘intensity’
每個頻道都使用相同的配色方案顯示
- ‘rainbow’
每個頻道都使用彩虹配色方案顯示
- ‘moreland’
每個頻道都使用 moreland 配色方案顯示
- ‘nebulae’
每個頻道都使用 nebulae 配色方案顯示
- ‘fire’
每個頻道都使用 fire 配色方案顯示
- ‘fiery’
每個頻道都使用 fiery 配色方案顯示
- ‘fruit’
每個頻道都使用 fruit 配色方案顯示
- ‘cool’
每個頻道都使用 cool 配色方案顯示
- ‘magma’
每個頻道都使用 magma 配色方案顯示
- ‘green’
每個頻道都使用 green 配色方案顯示
- ‘viridis’
每個頻道都使用 viridis 配色方案顯示
- ‘plasma’
每個頻道都使用 plasma 配色方案顯示
- ‘cividis’
每個頻道都使用 cividis 配色方案顯示
- ‘terrain’
每個頻道都使用 terrain 配色方案顯示
預設值為 ‘channel’。
- scale
指定用於計算強度色彩值的縮放。
它接受以下值
- ‘lin’
linear
- ‘sqrt’
平方根,預設值
- ‘cbrt’
立方根
- ‘log’
對數
- ‘4thrt’
四次方根
- ‘5thrt’
五次方根
預設值為 ‘sqrt’。
- fscale
指定頻率縮放。
它接受以下值
- ‘lin’
linear
- ‘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
rotation
- 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 showspectrumpic
將輸入音訊轉換為單一影片影格,表示音訊頻譜。
此濾鏡接受以下選項
- size, s
指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "影片大小" 章節。預設值為
4096x2048
。- mode
指定顯示模式。
它接受以下值
- ‘combined’
所有頻道都顯示在同一列中
- ‘separate’
所有頻道都顯示在不同的列中
預設值為 ‘combined’。
- color
指定顯示色彩模式。
它接受以下值
- ‘channel’
每個頻道都以不同的顏色顯示
- ‘intensity’
每個頻道都使用相同的配色方案顯示
- ‘rainbow’
每個頻道都使用彩虹配色方案顯示
- ‘moreland’
每個頻道都使用 moreland 配色方案顯示
- ‘nebulae’
每個頻道都使用 nebulae 配色方案顯示
- ‘fire’
每個頻道都使用 fire 配色方案顯示
- ‘fiery’
每個頻道都使用 fiery 配色方案顯示
- ‘fruit’
每個頻道都使用 fruit 配色方案顯示
- ‘cool’
每個頻道都使用 cool 配色方案顯示
- ‘magma’
每個頻道都使用 magma 配色方案顯示
- ‘green’
每個頻道都使用 green 配色方案顯示
- ‘viridis’
每個頻道都使用 viridis 配色方案顯示
- ‘plasma’
每個頻道都使用 plasma 配色方案顯示
- ‘cividis’
每個頻道都使用 cividis 配色方案顯示
- ‘terrain’
每個頻道都使用 terrain 配色方案顯示
預設值為 ‘intensity’。
- scale
指定用於計算強度色彩值的縮放。
它接受以下值
- ‘lin’
linear
- ‘sqrt’
平方根,預設值
- ‘cbrt’
立方根
- ‘log’
對數
- ‘4thrt’
四次方根
- ‘5thrt’
五次方根
預設值為 ‘log’。
- fscale
指定頻率縮放。
它接受以下值
- ‘lin’
linear
- ‘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
rotation
- start
設定開始頻率,從該頻率開始顯示頻譜圖。預設值為
0
。- stop(停止)
設定停止頻率,到該頻率停止顯示頻譜圖。預設值為
0
。- drange
設定用於計算強度色彩值的動態範圍。預設值為 120 dBFS。允許範圍為 10 到 200。
- limit
設定輸入音訊樣本音量上限,以 dBFS 為單位。預設值為 0 dBFS。允許範圍為 -100 到 100。
- opacity
在使用具有 alpha 分量像素格式輸出時,設定不透明度強度。
37.27.1 範例
- 使用
ffmpeg
在 1024x1024 圖片中擷取完整音軌的音訊頻譜圖ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
37.28 showvolume
將輸入音訊音量轉換為影片輸出。
此濾鏡接受以下選項
- 幀率、r
設定影片速率。
- b
設定邊框寬度,允許範圍為 [0, 5]。預設值為 1。
- w
設定頻道寬度,允許範圍為 [80, 8192]。預設值為 400。
- h
設定頻道高度,允許範圍為 [1, 900]。預設值為 20。
- f
設定淡化,允許範圍為 [0, 1]。預設值為 0.95。
- c
設定音量色彩表達式。
表達式可以使用以下變數
- VOLUME
頻道當前最大音量,以 dB 為單位。
- PEAK
當前峰值。
- CHANNEL
當前頻道號碼,從 0 開始。
- t
如果設定,則顯示頻道名稱。預設為啟用。
- v
如果設定,則顯示音量值。預設為啟用。
- o
設定方向,可以是水平:
h
或垂直:v
,預設值為h
。- s
設定步進大小,允許範圍為 [0, 5]。預設值為 0,表示停用步進。
- p
設定背景不透明度,允許範圍為 [0, 1]。預設值為 0。
- m
設定計量模式,可以是峰值:
p
或均方根值:r
,預設值為p
。- ds
設定顯示縮放,可以是線性:
lin
或對數:log
,預設值為lin
。- dm
以秒為單位。如果設定為 > 0,則顯示前幾秒最大音量的線條。預設為停用:
0.
- dmc
最大值線條的顏色。當
dm
選項設定為 > 0 時使用。預設值為:orange
37.29 showwaves
將輸入音訊轉換為影片輸出,表示樣本波形。
此濾鏡接受以下選項
- size, s
指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "影片大小" 章節。預設值為
600x240
。- mode
設定顯示模式。
可用的值為
- ‘point’
為每個樣本繪製一個點。
- ‘line’
為每個樣本繪製一條垂直線。
- ‘p2p’
為每個樣本繪製一個點,並在它們之間繪製一條線。
- ‘cline’
為每個樣本繪製一條居中的垂直線。
預設值為
point
。- n
設定在同一列上列印的樣本數。較大的值會降低影格率。必須為正整數。只有在未明確指定 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) 手冊中的 "影片大小" 章節。預設值為
600x240
。- split_channels
設定頻道應分開繪製還是重疊。預設值為 0。
- colors
設定以 ‘|’ 分隔的顏色,這些顏色將用於繪製每個頻道。
- scale
設定振幅比例。
可用的值為
- ‘lin’
線性。
- ‘log’
對數。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
預設為線性。
- draw
設定繪製模式。
可用的值為
- ‘scale’
縮放每個繪製樣本的像素值。
- ‘full’
直接繪製每個樣本。
預設值為
scale
。- filter
設定濾鏡模式。
可用的值為
- ‘average’
對每個繪製樣本使用平均樣本值。
- ‘peak’
對每個繪製樣本使用峰值樣本值。
預設值為
average
。
37.30.1 範例
- 使用
ffmpeg
在 1024x800 圖片中擷取完整音軌波形的頻道分割表示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
模式設定。如需影格邊數據類型列表,請參閱 libavutil/frame.h 中的AVFrameSideDataType
列舉。例如,若要選擇AV_FRAME_DATA_PANSCAN
邊數據,您必須指定PANSCAN
。
37.32 spectrumsynth
從 2 個輸入影片頻譜合成音訊,第一個輸入串流表示跨時間的振幅,第二個輸入串流表示跨時間的相位。濾鏡將從影片中顯示的頻域轉換回音訊輸出中呈現的時域。
此濾鏡主要用於反轉處理過的 showspectrum 濾鏡輸出,但也可以從其他頻譜圖合成聲音。但在這種情況下,如果相位數據不可用,結果將會很差,因為在這種情況下需要重新建立相位數據,通常只是從隨機雜訊重新建立。為了獲得最佳結果,請對振幅影片使用僅灰階輸出(showspectrum 濾鏡中的 channel
色彩模式)和 log
縮放,對相位影片使用 lin
縮放。若要產生相位,對於第二個影片,請使用 data
選項。輸入影片通常應使用 fullframe
滑動模式,因為這樣可以節省解碼影片所需的資源。
此濾鏡接受以下選項
- sample_rate
指定輸出音訊的取樣率,從中產生頻譜的音訊取樣率可能會有所不同。
- channels
設定輸入影片頻譜中表示的頻道數。
- scale
設定產生振幅輸入頻譜時使用的縮放。可以是
lin
或log
。預設值為log
。- 滑動
設定產生輸入頻譜時使用的滑動。可以是
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];
- 使用
ffmpeg
建立輸入音訊的 5 個副本ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
37.34 zmq, azmq
接收透過 libzmq 用戶端傳送的命令,並將其轉發到濾鏡圖中的濾鏡。
zmq
和 azmq
作為直通濾鏡運作。zmq
必須插入兩個影片濾鏡之間,azmq
必須插入兩個音訊濾鏡之間。兩者都能够將訊息傳送至任何濾鏡類型。
若要啟用這些濾鏡,您需要安裝 libzmq 程式庫和標頭,並使用 --enable-libzmq
配置 FFmpeg。
如需有關 libzmq 的更多資訊,請參閱:http://www.zeromq.org/
zmq
和 azmq
濾鏡作為 libzmq 伺服器運作,該伺服器接收透過 bind_address(或縮寫 "b")選項定義的網路介面傳送的訊息。此選項的預設值為 tcp://127.0.0.1:5555。您可能需要根據您的需求變更此值,但請不要忘記逸出任何 ‘:’ 符號(請參閱 濾鏡圖逸出)。
接收到的訊息必須採用以下格式
TARGET COMMAND [ARG]
TARGET 指定命令的目標,通常是濾鏡類別的名稱或特定濾鏡實例名稱。預設濾鏡實例名稱使用模式 ‘Parsed_<filter_name>_<index>’,但您可以使用 ‘filter_name@id’ 語法覆寫此名稱(請參閱 濾鏡圖語法)。
COMMAND 指定目標濾鏡的命令名稱。
ARG 是選用的,並指定給定 COMMAND 的選用引數列表。
收到訊息後,訊息會被處理,並且對應的命令會注入到濾鏡圖中。根據結果,濾鏡將向用戶端傳送回覆,採用以下格式
ERROR_CODE ERROR_REASON MESSAGE
MESSAGE 是選用的。
37.34.1 範例
查看 tools/zmqsend 以取得 zmq 用戶端的範例,該用戶端可用於傳送由這些濾鏡處理的命令。
考慮由 ffplay
產生的以下濾鏡圖。在此範例中,最後一個 overlay 濾鏡具有實例名稱。所有其他濾鏡都將具有預設實例名稱。
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
beep
- period, p
設定輸出音訊嗶聲週期,以秒為單位。預設值為
3
。- delay, dl
設定輸出影片閃爍延遲,以影格數為單位。預設值為
0
。- cycle, c
啟用影片延遲循環,預設為停用。
- duration, d
設定串流輸出持續時間。預設情況下,持續時間不受限制。
- fg, bg, ag
設定前景/背景/額外顏色。
38.2.1 指令
此來源支援與 指令 相同的上述部分選項。
38.3 電影
從影片容器讀取音訊和/或影片串流。
它接受以下參數
- filename
要讀取的資源名稱(不一定是檔案;也可以是裝置或透過某些協定存取的串流)。
- format_name, f
指定要讀取的影片所假設的格式,可以是容器或輸入裝置的名稱。如果未指定,則格式會從 movie_name 或透過探測來猜測。
- seek_point, sp
指定搜尋點,單位為秒。影格將從這個搜尋點開始輸出。此參數會使用
av_strtod
進行評估,因此數值可以加上 IS 後綴。預設值為 "0" 。- 串流,s
指定要讀取的串流。可以指定多個串流,並以 "+" 分隔。來源將會依照相同的順序,擁有相同數量的輸出。語法說明請參閱 ffmpeg 手冊中的 "(ffmpeg)「串流指定器」 章節。兩個特殊名稱 "dv" 和 "da" 分別指定預設(最適合的)視訊和音訊串流。預設值為 "dv",如果濾鏡被呼叫為 "amovie",則預設值為 "da"。
- stream_index, si (串流索引)
指定要讀取的視訊串流索引。如果值為 -1,將會自動選擇最適合的視訊串流。預設值為 "-1"。已棄用。如果濾鏡被呼叫為 "amovie",則會選擇音訊而非視訊。
- loop
指定依序讀取串流的次數。如果值為 0,串流將會無限循環播放。預設值為 "1"。
請注意,當影片循環播放時,來源時間戳記不會變更,因此會產生非單調遞增的時間戳記。
- 不連續性
指定影格之間的時間差,若超過此值,則該點會被視為時間戳記不連續點,並透過調整後續時間戳記來移除。
- dec_threads (解碼執行緒)
指定用於解碼的執行緒數量
- format_opts (格式選項)
指定開啟檔案的格式選項。格式選項可以指定為 <var>key</var>=<var>value</var> 配對的列表,並以 ':' 分隔。以下範例展示如何新增 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 的音訊串流;視訊連接到名為 "video" 的 pad,音訊連接到名為 "audio" 的 pad
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
38.3.2 指令
movie 和 amovie 都支援以下命令
- seek (搜尋)
使用 "av_seek_frame" 執行搜尋。語法為:seek <var>stream_index</var>|<var>timestamp</var>|<var>flags</var>
- <var>stream_index</var>:如果 stream_index 為 -1,則會選擇預設串流,並且 <var>timestamp</var> 會自動從 AV_TIME_BASE 單位轉換為串流特定的 time_base。
- <var>timestamp</var>:以 AVStream.time_base 單位表示的時間戳記;如果未指定串流,則以 AV_TIME_BASE 單位表示。
- <var>flags</var>:用於選擇方向和搜尋模式的旗標。
- get_duration (取得持續時間)
以 AV_TIME_BASE 單位取得影片持續時間。
39 外部函式庫
FFmpeg 可以連結許多外部函式庫,以新增對更多格式的支援。預設情況下不會使用它們,必須透過傳遞適當的旗標給 ./configure
來明確請求使用。
39.1 開放媒體聯盟 (AOM)
FFmpeg 可以使用 AOM 函式庫進行 AV1 解碼和編碼。
請前往 <a href="http://aomedia.org/">http://aomedia.org/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libaom
給 configure 以啟用它。
39.2 AMD AMF/VCE
FFmpeg 可以在具有視訊編碼引擎 (VCE) 的硬體上,使用 AMD Advanced Media Framework 函式庫來加速 H.264 和 HEVC(僅限 Windows)編碼。
若要啟用支援,您必須從 <a href="https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git">https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git</a> 取得 AMF 框架標頭檔(版本 1.4.9+)。
在系統包含路徑中建立一個 AMF/
目錄。將 AMF/amf/public/include/
的內容複製到該目錄中。然後使用 --enable-amf
配置 FFmpeg。
amf 編碼器的初始化會依以下順序進行:1) 嘗試透過 dx11(僅限 Windows)初始化 2) 嘗試透過 dx9(僅限 Windows)初始化 3) 嘗試透過 vulkan 初始化
若要在 Linux 上使用 h.264 (AMD VCE) 編碼器,需要 amdgru-pro 版本 19.20+ 和 amf-amdgpu-pro 套件(amdgru-pro 包含,但不會自動安裝)。
此驅動程式可以使用官方 AMD 驅動程式封存中的 amdgpu-pro-install 腳本安裝。
39.3 AviSynth
FFmpeg 可以讀取 AviSynth 腳本作為輸入。若要啟用支援,請在安裝 <a href="https://github.com/AviSynth/AviSynthPlus">AviSynth+</a> 提供的標頭檔後,傳遞 --enable-avisynth
給 configure。AviSynth+ 可以配置為僅安裝標頭檔,方法是將 -DHEADERS_ONLY:bool=on
傳遞給正常的 CMake 建置系統,或使用提供的 GNUmakefile
。
對於 Windows,支援的 AviSynth 版本為 32 位元建置的 <a href="http://avisynth.nl">AviSynth 2.6 RC1 或更高版本</a>,以及 32 位元和 64 位元建置的 <a href="http://avisynth.nl/index.php/AviSynth+">AviSynth+ r1718 或更高版本</a>。
對於 Linux、macOS 和 BSD,唯一支援的 AviSynth 版本是 <a href="https://github.com/AviSynth/AviSynthPlus">AviSynth+</a>,從 3.5 版本開始。
在 2016 年,AviSynth+ 新增了使用 GCC 建置的支援。然而,由於 Windows 呼叫慣例的特殊性,32 位元 GCC 建置的 AviSynth+ 與典型的 32 位元建置的 FFmpeg 不相容。
預設情況下,FFmpeg 假設與 32 位元 MSVC 建置的 AviSynth+ 相容,因為這是最廣泛使用且根深蒂固的建置配置。使用者可以覆寫此設定,並在配置 FFmpeg 時,將 -DAVSC_WIN32_GCC32
傳遞給 --extra-cflags
,以啟用對 32 位元 GCC 建置的 AviSynth+ 的支援。
64 位元建置的 FFmpeg 不受影響,可以使用 MSVC 或 GCC 建置的 AviSynth+,而無需任何特殊旗標。
AviSynth(+) 是動態載入的。發行商可以使用 --enable-avisynth
建置 FFmpeg,並且無論最終使用者是否安裝 AviSynth,二進位檔案都能正常運作。如果/當最終使用者想要使用 AviSynth 腳本時,他們可以安裝 AviSynth(+),而 FFmpeg 將能夠找到並使用它來開啟腳本。
39.4 Chromaprint
FFmpeg 可以使用 Chromaprint 函式庫來產生音訊指紋。傳遞 --enable-chromaprint
給 configure 以啟用它。請參閱 <a href="https://acoustid.org/chromaprint">https://acoustid.org/chromaprint</a>。
39.5 codec2
FFmpeg 可以使用 codec2 函式庫進行 codec2 解碼和編碼。目前沒有原生解碼器,因此必須使用 libcodec2 進行解碼。
請前往 <a href="http://freedv.org/">http://freedv.org/</a>,下載 "Codec 2 source archive"。使用 CMake 建置和安裝。Debian 使用者可以改為安裝 libcodec2-dev 套件。安裝 libcodec2 後,您可以傳遞 --enable-libcodec2
給 configure 以啟用它。
使用 codec2 最簡單的方式是使用 .c2 檔案,因為它們包含解碼所需的模式資訊。若要編碼此類檔案,請使用 .c2 檔案副檔名,並為 libcodec2 編碼器提供 -mode 選項:ffmpeg -i input.wav -mode 700C output.c2
。播放非常簡單,只需 ffplay output.c2
。如需支援模式的列表,請執行 ffmpeg -h encoder=libcodec2
。也支援原始 codec2 檔案。為了理解它們,需要將使用的模式指定為格式選項:ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav
。
39.6 dav1d
FFmpeg 可以使用 dav1d 函式庫進行 AV1 視訊解碼。
請前往 <a href="https://code.videolan.org/videolan/dav1d">https://code.videolan.org/videolan/dav1d</a> 並按照指示安裝函式庫。然後傳遞 --enable-libdav1d
給 configure 以啟用它。
39.7 davs2
FFmpeg 可以使用 davs2 函式庫進行 AVS2-P2/IEEE1857.4 視訊解碼。
請前往 <a href="https://github.com/pkuvcl/davs2">https://github.com/pkuvcl/davs2</a> 並按照指示安裝函式庫。然後傳遞 --enable-libdavs2
給 configure 以啟用它。
libdavs2 採用 GNU 通用公共授權條款第 2 版或更高版本(詳細資訊請參閱 <a href="https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html">https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html</a>),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。
39.8 uavs3d
FFmpeg 可以使用 uavs3d 函式庫進行 AVS3-P2/IEEE1857.10 視訊解碼。
請前往 <a href="https://github.com/uavs3/uavs3d">https://github.com/uavs3/uavs3d</a> 並按照指示安裝函式庫。然後傳遞 --enable-libuavs3d
給 configure 以啟用它。
39.9 Game Music Emu
FFmpeg 可以使用 Game Music Emu 函式庫從支援的電玩遊戲音樂檔案格式中讀取音訊。傳遞 --enable-libgme
給 configure 以啟用它。請參閱 <a href="https://bitbucket.org/mpyne/game-music-emu/overview">https://bitbucket.org/mpyne/game-music-emu/overview</a>。
39.10 Intel QuickSync Video
FFmpeg 可以使用 Intel QuickSync Video (QSV) 來加速多種編碼器的解碼和編碼。若要使用 QSV,FFmpeg 必須連結到 libmfx
分配器,該分配器會載入實際的解碼函式庫。
此分配器是開放原始碼,可以從 <a href="https://github.com/lu-zero/mfx_dispatch.git">https://github.com/lu-zero/mfx_dispatch.git</a> 下載。FFmpeg 需要使用 --enable-libmfx
選項進行配置,並且 pkg-config
需要能夠找到分配器的 .pc
檔案。
39.11 Kvazaar
FFmpeg 可以使用 Kvazaar 函式庫進行 HEVC 編碼。
請前往 <a href="https://github.com/ultravideo/kvazaar">https://github.com/ultravideo/kvazaar</a> 並按照指示安裝函式庫。然後傳遞 --enable-libkvazaar
給 configure 以啟用它。
39.12 LAME
FFmpeg 可以使用 LAME 函式庫進行 MP3 編碼。
請前往 <a href="http://lame.sourceforge.net/">http://lame.sourceforge.net/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libmp3lame
給 configure 以啟用它。
39.13 LCEVCdec
FFmpeg 可以使用 liblcevc_dec 函式庫在支援的位元串流上進行 LCEVC 增強層解碼。
請前往 <a href="https://github.com/v-novaltd/LCEVCdec">https://github.com/v-novaltd/LCEVCdec</a> 並按照指示安裝函式庫。然後傳遞 --enable-liblcevc-dec
給 configure 以啟用它。
LCEVCdec 採用 BSD-3-Clause-Clear 授權條款。
39.14 libilbc
iLBC 是一種窄頻語音編碼器,由 Google 作為 WebRTC 專案的一部分免費提供。libilbc 是 iLBC 編碼器的包裝友善副本。FFmpeg 可以使用 libilbc 函式庫進行 iLBC 解碼和編碼。
請前往 <a href="https://github.com/TimothyGu/libilbc">https://github.com/TimothyGu/libilbc</a> 並按照指示安裝函式庫。然後傳遞 --enable-libilbc
給 configure 以啟用它。
39.15 libjxl
JPEG XL 是一種影像格式,旨在長期完全取代傳統 JPEG。如需更多資訊,請參閱 <a href="https://jpegxl.info/">https://jpegxl.info/</a>,如需函式庫原始碼,請參閱 <a href="https://github.com/libjxl/libjxl">https://github.com/libjxl/libjxl</a>。您可以傳遞 --enable-libjxl
給 configure 以啟用 libjxl 封裝器。
39.16 libvpx
FFmpeg 可以使用 libvpx 函式庫進行 VP8/VP9 解碼和編碼。
請前往 <a href="http://www.webmproject.org/">http://www.webmproject.org/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libvpx
給 configure 以啟用它。
39.17 ModPlug
FFmpeg 可以使用這個源自 Modplug-XMMS 的函式庫,從類似 MOD 的音樂檔案中讀取音訊。請參閱 <a href="https://github.com/Konstanty/libmodplug">https://github.com/Konstanty/libmodplug</a>。傳遞 --enable-libmodplug
給 configure 以啟用它。
39.18 OpenCORE、VisualOn 和 Fraunhofer 函式庫
OpenCore、VisualOn 和 Fraunhofer 函式庫源自 Google Android 原始碼,為多種音訊編碼器提供編碼功能。
OpenCORE 和 VisualOn 函式庫採用 Apache License 2.0 授權條款(詳細資訊請參閱 <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>),與 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 解碼。
請前往 <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libopencore-amrnb
和/或 --enable-libopencore-amrwb
給 configure 以啟用它們。
39.18.2 VisualOn AMR-WB 編碼器函式庫
FFmpeg 可以使用 VisualOn AMR-WBenc 函式庫進行 AMR-WB 編碼。
請前往 <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libvo-amrwbenc
給 configure 以啟用它。
39.18.3 Fraunhofer AAC 函式庫
FFmpeg 可以使用 Fraunhofer AAC 函式庫進行 AAC 解碼和編碼。
請前往 <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libfdk-aac
給 configure 以啟用它。
39.18.4 LC3 函式庫
FFmpeg 可以使用 Google LC3 函式庫進行 LC3 解碼和編碼。
請前往 <a href="https://github.com/google/liblc3/">https://github.com/google/liblc3/</a> 並按照指示安裝函式庫。然後傳遞 --enable-liblc3
給 configure 以啟用它。
39.19 OpenH264
FFmpeg 可以使用 OpenH264 函式庫進行 H.264 解碼和編碼。
請前往 <a href="http://www.openh264.org/">http://www.openh264.org/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libopenh264
給 configure 以啟用它。
就解碼而言,此函式庫比 libavcodec 中的內建解碼器功能更有限;目前,此函式庫缺乏對 B 影格和一些其他 main/high profile 功能的支援。(目前僅支援 constrained baseline profile 和 CABAC。)使用它主要適用於測試,以及利用 Cisco 的專利組合授權 (<a href="http://www.openh264.org/BINARY_LICENSE.txt">http://www.openh264.org/BINARY_LICENSE.txt</a>)。
39.20 OpenJPEG
FFmpeg 可以使用 OpenJPEG 函式庫進行 J2K 視訊的解碼/編碼。請前往 <a href="http://www.openjpeg.org/">http://www.openjpeg.org/</a> 取得函式庫並按照安裝指示進行操作。若要在 FFmpeg 中啟用 OpenJPEG,請傳遞 --enable-libopenjpeg
給 <samp>./configure</samp>。
39.21 rav1e
FFmpeg 可以透過 rav1e (Rust AV1 Encoder) 的 C 綁定來編碼視訊。請前往 <a href="https://github.com/xiph/rav1e/">https://github.com/xiph/rav1e/</a> 並按照指示建置 C 函式庫。若要在 FFmpeg 中啟用 rav1e,請傳遞 --enable-librav1e
給 <samp>./configure</samp>。
39.22 SVT-AV1
FFmpeg 可以使用 Scalable Video Technology for AV1 函式庫進行 AV1 編碼。
請前往 <a href="https://gitlab.com/AOMediaCodec/SVT-AV1/">https://gitlab.com/AOMediaCodec/SVT-AV1/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libsvtav1
給 configure 以啟用它。
39.23 TwoLAME
FFmpeg 可以使用 TwoLAME 函式庫進行 MP2 編碼。
請前往 <a href="http://www.twolame.org/">http://www.twolame.org/</a> 並按照指示安裝函式庫。然後傳遞 --enable-libtwolame
給 configure 以啟用它。
39.24 VapourSynth
FFmpeg 可以讀取 VapourSynth 腳本作為輸入。若要啟用支援,請傳遞 --enable-vapoursynth
給 configure。Vapoursynth 會透過 pkg-config
偵測。支援 42 或更新版本。請參閱 http://www.vapoursynth.com/。
由於安全考量,Vapoursynth 腳本將不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,在輸入 -i yourscript.vpy
之前新增 -f vapoursynth
。
39.25 x264
FFmpeg 可以使用 x264 函式庫進行 H.264 編碼。
前往 http://www.videolan.org/developers/x264.html 並按照指示安裝該函式庫。然後傳遞 --enable-libx264
給 configure 以啟用它。
x264 採用 GNU 通用公共許可證第 2 版或更高版本(詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的許可證升級到 GPL 才能使用它。
39.26 x265
FFmpeg 可以使用 x265 函式庫進行 HEVC 編碼。
前往 http://x265.org/developers.html 並按照指示安裝該函式庫。然後傳遞 --enable-libx265
給 configure 以啟用它。
x265 採用 GNU 通用公共許可證第 2 版或更高版本(詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的許可證升級到 GPL 才能使用它。
39.27 xavs
FFmpeg 可以使用 xavs 函式庫進行 AVS 編碼。
前往 http://xavs.sf.net/ 並按照指示安裝該函式庫。然後傳遞 --enable-libxavs
給 configure 以啟用它。
39.28 xavs2
FFmpeg 可以使用 xavs2 函式庫進行 AVS2-P2/IEEE1857.4 視訊編碼。
前往 https://github.com/pkuvcl/xavs2 並按照指示安裝該函式庫。然後傳遞 --enable-libxavs2
給 configure 以啟用它。
libxavs2 採用 GNU 通用公共許可證第 2 版或更高版本(詳情請參閱 https://gnu.dev.org.tw/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
給 configure 以啟用它。
39.30 eXtra-fast Essential Video Decoder (XEVD)
FFmpeg 可以使用 XEVD 函式庫進行 EVC 視訊解碼。
前往 https://github.com/mpeg5/xevd 並按照指示安裝 XEVD 函式庫。然後傳遞 --enable-libxevd
給 configure 以啟用它。
39.31 ZVBI
ZVBI 是一個 VBI 解碼函式庫,FFmpeg 可以使用它來解碼 DVB 圖文電視頁面和 DVB 圖文電視字幕。
前往 http://sourceforge.net/projects/zapping/ 並按照指示安裝該函式庫。然後傳遞 --enable-libzvbi
給 configure 以啟用它。
40 支援的檔案格式、編碼解碼器或功能
您可以使用 -formats
和 -codecs
選項來取得詳盡的列表。
40.1 檔案格式
FFmpeg 透過 libavformat
函式庫支援以下檔案格式
名稱 | 編碼 | 解碼 | 備註 |
3dostr | X | ||
4xm | X | 4X Technologies 格式,用於某些遊戲。 | |
8088flex TMV | X | ||
AAX | X | Audible Enhanced Audio 格式,用於有聲書。 | |
AA | X | Audible Format 2、3 和 4,用於有聲書。 | |
ACT Voice | X | 包含 G.729 音訊 | |
Adobe Filmstrip | X | X | |
Audio IFF (AIFF) | X | X | |
American Laser Games MM | X | 多媒體格式,用於《Mad Dog McCree》等遊戲。 | |
3GPP AMR | X | X | |
Amazing Studio Packed Animation File | X | 多媒體格式,用於遊戲《Heart Of Darkness》。 | |
Apple HTTP Live Streaming | X | ||
Artworx Data Format | X | ||
Interplay ACM | X | 僅音訊格式,用於某些 Interplay 遊戲。 | |
ADP | X | 音訊格式,用於 Nintendo Gamecube。 | |
AFC | X | 音訊格式,用於 Nintendo Gamecube。 | |
ADS/SS2 | X | 音訊格式,用於 PS2。 | |
APNG | X | X | |
ASF | X | X | 進階 / 主動串流格式。 |
AST | X | X | 音訊格式,用於 Nintendo Wii。 |
AVI | X | X | |
AviSynth | X | ||
AVR | X | 音訊格式,用於 Mac。 | |
AVS | X | 多媒體格式,用於 Creature Shock 遊戲。 | |
Beam Software SIFF | X | 音訊和視訊格式,用於 Beam Software 的某些遊戲。 | |
Bethesda Softworks VID | X | 用於 Bethesda Softworks 的某些遊戲。 | |
Binary text | X | ||
Bink | X | 多媒體格式,用於許多遊戲。 | |
Bink Audio | X | 僅音訊多媒體格式,用於某些遊戲。 | |
Bitmap Brothers JV | X | 用於 Z 和 Z95 遊戲。 | |
BRP | X | Argonaut Games 格式。 | |
Brute Force & Ignorance | X | 用於遊戲《Flash Traffic: City of Angels》。 | |
BFSTM | X | 音訊格式,用於 Nintendo WiiU(基於 BRSTM)。 | |
BRSTM | X | 音訊格式,用於 Nintendo Wii。 | |
BW64 | X | Broadcast Wave 64 位元。 | |
BWF | X | X | |
codec2 (raw) | X | X | 必須給定 -mode 格式選項才能正確解碼。 |
codec2 (.c2 files) | X | X | 包含版本和模式資訊的標頭,簡化播放。 |
CRI ADX | X | X | 僅音訊格式,用於家用遊樂器視訊遊戲。 |
CRI AIX | X | ||
CRI HCA | X | 僅音訊格式,用於家用遊樂器視訊遊戲。 | |
Discworld II BMV | X | ||
Interplay C93 | X | 用於 Interplay 的遊戲《Cyberia》。 | |
Delphine Software International CIN | X | 多媒體格式,用於 Delphine Software 遊戲。 | |
Digital Speech Standard (DSS) | X | ||
CD+G | X | 視訊格式,用於 CD+G 卡拉 OK 光碟 | |
Phantom Cine | X | ||
Commodore CDXL | X | Amiga CD 視訊格式 | |
Core Audio Format | X | X | Apple Core Audio Format |
CRC 測試格式 | X | ||
Creative Voice | X | X | 為 Sound Blaster Pro 建立。 |
CRYO APC | X | 音訊格式,用於 CRYO Interactive Entertainment 的某些遊戲。 | |
D-Cinema audio | X | X | |
Deluxe Paint Animation | X | ||
DCSTR | X | ||
DFA | X | 此格式用於 Chronomaster 遊戲 | |
DirectDraw Surface | X | ||
DSD Stream File (DSF) | X | ||
DV video | X | X | |
DXA | X | 此格式用於非 Windows 版本的 Feeble Files 遊戲,以及重新封裝以用於 ScummVM 的不同遊戲過場動畫。 | |
Electronic Arts cdata | X | ||
Electronic Arts Multimedia | X | 用於各種 EA 遊戲;檔案副檔名如 WVE 和 UV2。 | |
Ensoniq Paris Audio File | X | ||
FFM (FFserver 即時饋送) | X | X | |
Flash (SWF) | X | X | |
Flash 9 (AVM2) | X | X | 僅解碼嵌入式音訊。 |
FLI/FLC/FLX 動畫 | X | .fli/.flc 檔案 | |
Flash Video (FLV) | X | X | Macromedia Flash 視訊檔案 |
framecrc 測試格式 | X | ||
FunCom ISS | X | 音訊格式,用於 FunCom 的各種遊戲,如《The Longest Journey》。 | |
G.723.1 | X | X | |
G.726 | X | 左對齊和右對齊。 | |
G.729 BIT | X | X | |
G.729 raw | X | ||
GENH | X | 各種遊戲的音訊格式。 | |
GIF Animation | X | X | |
GXF | X | X | 通用交換格式 SMPTE 360M,由 Thomson Grass Valley 播出伺服器使用。 |
HNM | X | 僅支援版本 4,用於 Cryo Interactive 的某些遊戲 | |
iCEDraw File | X | ||
ICO | X | X | Microsoft Windows ICO |
id Quake II CIN video | X | ||
id RoQ | X | X | 用於《Quake III》、《Jedi Knight 2》和其他電腦遊戲。 |
IEC61937 封裝 | X | X | |
IFF | X | 交換檔案格式 | |
IFV | X | 某些舊型閉路電視數位錄影機使用的格式。 | |
iLBC | X | X | |
Interplay MVE | X | 用於各種 Interplay 電腦遊戲的格式。 | |
Iterated Systems ClearVideo | X | 僅 I 幀 | |
IV8 | X | 由 IndigoVision 8000 視訊伺服器產生的格式。 | |
IVF (On2) | X | X | libvpx 使用的格式 |
Internet Video Recording | X | ||
IRCAM | X | X | |
LAF | X | Limitless Audio Format | |
LATM | X | X | |
LMLM4 | X | 由 Linux Media Labs MPEG-4 PCI 板使用 | |
LOAS | X | 包含 LATM 多工 AAC 音訊 | |
LRC | X | X | |
LVF | X | ||
LXF | X | VR 原生串流格式,由 Leitch/Harris 的視訊伺服器使用。 | |
Magic Lantern Video (MLV) | X | ||
Matroska | X | X | |
Matroska audio | X | ||
FFmpeg metadata | X | X | 文字格式的中繼資料。 |
MAXIS XA | X | 用於《模擬城市 3000》;檔案副檔名為 .xa。 | |
MCA | X | 用於 Capcom 的某些遊戲;檔案副檔名為 .mca。 | |
MD Studio | X | ||
Metal Gear Solid: The Twin Snakes | X | ||
Megalux Frame | X | 由 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 變體 |
MP2 | X | X | |
MP3 | X | X | |
MPEG-1 System | X | X | 多工音訊和視訊,支援 VCD 格式 |
MPEG-PS (program stream) | X | X | 也稱為 VOB 檔案,支援 SVCD 和 DVD 格式 |
MPEG-TS (transport stream) | X | X | 也稱為 DVB 傳輸串流 |
MPEG-4 | X | X | MPEG-4 是 QuickTime 的變體。 |
MSF | X | 音訊格式,用於 PS3。 | |
Mirillis FIC video | X | 不呈現游標。 | |
MIDI Sample Dump Standard | X | ||
MIME multipart JPEG | X | ||
MSN TCP webcam | X | 由 MSN Messenger 網路攝影機串流使用。 | |
MTV | X | ||
Musepack | X | ||
Musepack SV8 | X | ||
Material eXchange Format (MXF) | X | X | SMPTE 377M,由 D-Cinema、廣播產業使用。 |
Material eXchange Format (MXF), D-10 Mapping | X | X | SMPTE 386M,D-10/IMX Mapping。 |
NC camera feed | X | NC (AVIP NC4600) 攝影機串流 | |
NIST SPeech HEader REsources | X | ||
Computerized Speech Lab NSP | X | ||
NTT TwinVQ (VQF) | X | 日本電信電話公司 TwinVQ。 | |
Nullsoft Streaming Video | X | ||
NuppelVideo | X | ||
NUT | X | X | NUT 開放容器格式 |
Ogg | X | X | |
Playstation Portable PMP | X | ||
Portable Voice Format | X | ||
RK Audio (RKA) | X | ||
TechnoTrend PVA | X | 由 TechnoTrend DVB PCI 板使用。 | |
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 | RED Digital 相機使用的檔案格式,包含 JPEG 2000 幀和 PCM 音訊。 | |
RealMedia | X | X | |
Redirector | X | ||
RedSpark | X | ||
Renderware TeXture Dictionary | X | ||
Resolume DXV | X | X | 僅支援 DXT1(一般品質、無 Alpha)紋理格式的編碼。 |
RF64 | X | ||
RL2 | X | 音訊和視訊格式,用於 Entertainment Software Partners 的某些遊戲。 | |
RPL/ARMovie | X | ||
Lego Mindstorms RSO | X | X | |
RSD | X | ||
RTMP | X | X | 輸出是透過將串流發佈到 RTMP 伺服器來執行 |
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 | 用於 Sierra Online 遊戲的 .sol 檔案。 | |
Sierra VMD | X | 用於 Sierra CD-ROM 遊戲。 | |
Smacker | X | 多媒體格式,用於許多遊戲。 | |
SMJPEG | X | X | 用於某些 Loki 遊戲移植。 |
SMPTE 337M 封裝 | X | ||
Smush | X | 多媒體格式,用於 LucasArts 的某些遊戲。 | |
Sony OpenMG (OMA) | X | X | 音訊格式,用於 Sony Sonic Stage 和 Sony Vegas。 |
Sony PlayStation STR | X | ||
Sony Wave64 (W64) | X | X | |
SoX native format | X | X | |
SUN AU format | X | X | |
SUP raw PGS subtitles | X | X | |
SVAG | X | 音訊格式,用於 Konami PS2 遊戲。 | |
TDSC | X | ||
文字檔案 | X | ||
THP | X | 用於 Nintendo GameCube。 | |
Tiertex Limited SEQ | X | Tiertex .seq 檔案,用於遊戲《Flashback》的 DOS CD-ROM 版本。 | |
True Audio | X | X | |
VAG | X | 音訊格式,用於許多 Sony PS2 遊戲。 | |
VC-1 測試位元串流 | X | X | |
Vidvox Hap | X | X | |
Vivo | X | ||
VPK | X | 音訊格式,用於 Sony PS 遊戲。 | |
Marble WADY | X | ||
WAV | X | X | |
Waveform Archiver | X | ||
WavPack | X | X | |
WebM | X | X | |
Windows 電視 (WTV) | X | X | |
Wing Commander III 電影 | 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 Raster 影像 | |
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 | 尚可的影像格式 |
SGI | X | X | SGI RGB 影像格式 |
Sun Rasterfile | 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 BitMap 影像格式 |
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 電影 | X | ||
AMV 影片 | X | X | 用於中國 MP3 播放器中。 |
ANSI/ASCII art | X | ||
Apple Intermediate Codec | X | ||
Apple MJPEG-B | X | ||
Apple Pixlet | X | ||
Apple ProRes | X | X | fourcc: apch,apcn,apcs,apco,ap4h,ap4x |
Apple QuickDraw | X | fourcc: qdrw | |
Argonaut 影片 | X | 用於某些 Argonaut 遊戲中。 | |
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 影片 | X | ||
Autodesk RLE | X | fourcc: AASC | |
AV1 | E | E | 透過外部函式庫 libaom、libdav1d、librav1e 和 libsvtav1 支援 |
Avid 1:1 10-bit RGB Packer | X | X | fourcc: AVrp |
AVS (音訊視訊標準) 影片 | X | Creature Shock 遊戲使用的影片編碼。 | |
AVS2-P2/IEEE1857.4 | E | E | 透過外部函式庫 libxavs2 和 libdavs2 支援 |
AVS3-P2/IEEE1857.10 | E | 透過外部函式庫 libuavs3d 支援 | |
AYUV | X | X | Microsoft 未壓縮封裝 4:4:4:4 |
Beam Software VB | X | ||
Bethesda VID 影片 | X | 用於 Bethesda Softworks 的某些遊戲。 | |
Bink Video | X | ||
BitJazz SheerVideo | X | ||
Bitmap Brothers JV 影片 | X | ||
y41p Brooktree 未壓縮 4:1:1 12-bit | X | X | |
Brooktree ProSumer 影片 | X | fourcc: BT20 | |
Brute Force & Ignorance | X | 用於遊戲《Flash Traffic: City of Angels》。 | |
C93 影片 | X | Cyberia 遊戲中使用的編解碼器。 | |
CamStudio | X | fourcc: CSCD | |
CD+G | X | 用於 CD+G 卡拉 OK 光碟的影片編解碼器 | |
CDXL | X | Amiga CD 影片編解碼器 | |
中國 AVS 影片 | E | X | AVS1-P2, JiZhun 設定檔,編碼透過外部函式庫 libxavs |
Delphine Software International CIN 影片 | X | Delphine Software International 遊戲中使用的編解碼器。 | |
Discworld II BMV 影片 | X | ||
CineForm HD | X | X | |
Canopus HQ | X | ||
Canopus HQA | X | ||
Canopus HQX | X | ||
Canopus 無損編解碼器 | X | ||
CDToons | X | 各種 Broderbund 遊戲中使用的編解碼器。 | |
Cinepak | X | ||
Cirrus Logic AccuPak | X | X | fourcc: CLJR |
CPiA 影片格式 | X | ||
Creative YUV (CYUV) | X | ||
DFA | X | Chronomaster 遊戲中使用的編解碼器。 | |
Dirac | E | X | 透過原生 vc2 (Dirac Pro) 編碼器支援 |
Deluxe Paint Animation | X | ||
DNxHD | X | X | 又稱 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 (數位影片) | X | X | |
Dxtory 擷取格式 | X | ||
Feeble Files/ScummVM DXA | X | 最初用於 Feeble Files 遊戲中的編解碼器。 | |
Electronic Arts CMV 影片 | X | 用於 NHL 95 遊戲中。 | |
Electronic Arts Madcow 影片 | X | ||
Electronic Arts TGV 影片 | X | ||
Electronic Arts TGQ 影片 | X | ||
Electronic Arts TQI 影片 | X | ||
Escape 124 | X | ||
Escape 130 | X | ||
EVC / MPEG-5 Part 1 | E | E | 編碼和解碼透過外部函式庫 libxeve 和 libxevd 支援 |
FFmpeg 影片編解碼器 #1 | X | X | 無損編解碼器 (fourcc: FFV1) |
Flash Screen Video v1 | X | X | fourcc: FSV1 |
Flash Screen Video v2 | X | X | |
Flash Video (FLV) | X | X | Flash 中使用的 Sorenson H.263 |
FM 螢幕擷取編解碼器 | 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 版本 2 | X | X | |
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 | E | X | 編碼透過外部函式庫 libx264 和 OpenH264 支援 |
HEVC | X | X | 編碼透過外部函式庫 libx265 和 libkvazaar 支援 |
HNM 版本 4 | X | ||
HuffYUV | X | X | |
HuffYUV FFmpeg 變體 | X | X | |
IBM Ultimotion | X | fourcc: ULTI | |
id Cinematic 影片 | X | 用於 Quake II 中。 | |
id RoQ 影片 | X | X | 用於 Quake III、Jedi Knight 2 和其他電腦遊戲中。 |
IFF ILBM | X | IFF 交錯點陣圖 | |
IFF ByteRun1 | X | IFF 執行長度編碼點陣圖 | |
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 | 用於 Interplay 的遊戲《Cyberia》。 | |
Interplay MVE 影片 | X | 用於 Interplay .MVE 檔案中。 | |
J2K | X | X | |
Karl Morton’s 影片編解碼器 | X | 用於 Worms 遊戲中。 | |
Kega Game Video (KGV1) | X | Kega 模擬器螢幕擷取編解碼器。 | |
Lagarith | X | ||
LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2 | E | 解碼透過外部函式庫 liblcevc-dec 支援 | |
LCL (無損編解碼器函式庫) MSZH | X | ||
LCL (無損編解碼器函式庫) ZLIB | E | E | |
LEAD MCMP | X | ||
LOCO | X | ||
LucasArts SANM/Smush | X | 用於 LucasArts 遊戲 / SMUSH 動畫中。 | |
無損 MJPEG | X | X | |
MagicYUV Video | X | X | |
Mandsoft 螢幕擷取編解碼器 | X | ||
Microsoft ATC Screen | X | 又稱 Microsoft Screen 3。 | |
Microsoft Expression Encoder Screen | X | 又稱 Microsoft Titanium Screen 2。 | |
Microsoft RLE | X | X | |
Microsoft Screen 1 | X | 又稱 Windows Media Video V7 Screen。 | |
Microsoft Screen 2 | X | 又稱 Windows Media Video V9 Screen。 | |
Microsoft Video 1 | X | ||
Mimic | X | 用於 MSN Messenger 網路攝影機串流中。 | |
Miro VideoXL | X | fourcc: VIXL | |
MJPEG (Motion JPEG) | X | X | |
Mobotix MxPEG 影片 | X | ||
Motion Pixels 影片 | X | ||
MPEG-1 影片 | X | X | |
MPEG-2 影片 | X | X | |
MPEG-4 part 2 | X | X | libxvidcore 可以替代用於編碼。 |
MPEG-4 part 2 Microsoft 變體版本 1 | X | ||
MPEG-4 part 2 Microsoft 變體版本 2 | X | X | |
MPEG-4 part 2 Microsoft 變體版本 3 | X | X | |
Newtek SpeedHQ | X | X | |
Nintendo Gamecube THP 影片 | X | ||
NotchLC | X | ||
NuppelVideo/RTjpeg | X | NuppelVideo 檔案中使用的影片編碼。 | |
On2 VP3 | X | 仍為實驗性 | |
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, 編碼透過外部函式庫 libvpx 支援 |
VP9 | E | X | 編碼透過外部函式庫 libvpx 支援 |
Pinnacle TARGA CineWave YUV16 | X | fourcc: Y216 | |
Q-team QPEG | X | fourccs: QPEG, Q1.0, Q1.1 | |
QuickTime 8BPS 影片 | X | ||
QuickTime Animation (RLE) 影片 | 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 | 仍遠非理想 | |
RealVideo 4.0 | X | ||
RealVideo 6.0 | X | ||
Renderware TXD (材質字典) | X | Renderware 引擎使用的材質字典。 | |
RivaTuner Video | X | fourcc: ’RTV1’ | |
RL2 影片 | X | 用於 Entertainment Software Partners 的一些遊戲中 | |
ScreenPressor | X | ||
Screenpresso | X | ||
Screen Recorder Gold Codec | X | ||
Sierra VMD 影片 | X | 用於 Sierra VMD 檔案中。 | |
Silicon Graphics Motion Video Compressor 1 (MVC1) | X | ||
Silicon Graphics Motion Video Compressor 2 (MVC2) | X | ||
Silicon Graphics RLE 8-bit 影片 | X | ||
Smacker 影片 | X | Smacker 中使用的影片編碼。 | |
SMPTE VC-1 | X | ||
Snow | X | X | 實驗性小波編解碼器 (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 | 編碼透過外部函式庫 libtheora 支援 |
Tiertex Limited SEQ 影片 | X | DOS CD-ROM FlashBack 遊戲中使用的編解碼器。 | |
Ut Video | X | X | |
v210 QuickTime 未壓縮 4:2:2 10-bit | X | X | |
v308 QuickTime 未壓縮 4:4:4 | X | X | |
v408 QuickTime 未壓縮 4:4:4:4 | X | X | |
v410 QuickTime 未壓縮 4:4:4 10-bit | X | X | |
VBLE Lossless Codec | X | ||
vMix Video | X | fourcc: ’VMX1’ | |
VMware Screen Codec / VMware Video | X | VMware 擷取的影片中使用的編解碼器。 | |
Westwood Studios VQA (向量量化動畫) 影片 | X | ||
Windows Media Image | X | ||
Windows Media Video 7 | X | X | |
Windows Media Video 8 | X | X | |
Windows Media Video 9 | X | 尚未完全運作 | |
Wing Commander III / Xan | X | 用於 Wing Commander III .MVE 檔案中。 | |
Wing Commander IV / Xan | X | 用於 Wing Commander IV 中。 | |
Winnov WNV1 | X | ||
WMV7 | X | X | |
YAMAHA SMAF | X | X | |
Psygnosis YOP Video | X | ||
yuv4 | X | X | libquicktime 未壓縮封裝 4:2:0 |
ZeroCodec Lossless Video | X | ||
ZLIB | X | X | LCL 的一部分,編碼器為實驗性 |
Zip Motion Blocks Video | X | X | 編碼器僅在 PAL8 中運作。 |
X
表示該欄位中的功能(編碼 / 解碼)受到支援。
E
表示透過外部函式庫提供支援。
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 Movie | 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 | 用於 Sim City 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 IMA Xbox | 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 Audio | X | ||
Apple lossless audio | X | X | QuickTime fourcc ’alac’ |
aptX | X | X | 用於 Bluetooth A2DP |
aptX HD | X | X | 用於 Bluetooth A2DP |
ATRAC1 | X | ||
ATRAC3 | X | ||
ATRAC3+ | X | ||
ATRAC9 | X | ||
Bink Audio | X | 用於許多遊戲的 Bink 和 Smacker 檔案中。 | |
Bonk audio | X | ||
CELT | E | 解碼透過外部函式庫 libcelt 支援 | |
codec2 | E | E | 編/解碼透過外部函式庫 libcodec2 支援 |
CRI HCA | X | ||
Delphine Software International CIN audio | X | Delphine Software International 遊戲中使用的編解碼器。 | |
DFPWM | X | X | |
數位語音標準 - 標準播放模式 (DSS SP) | X | ||
Discworld II BMV Audio | X | ||
COOK | X | 除了 5.1 版本以外,所有版本皆受支援。 | |
DCA (DTS Coherent Acoustics) | X | X | 支援的副檔名:XCh, XXCH, X96, XBR, XLL, LBR (部分支援) |
Dolby E | X | ||
DPCM Cuberoot-Delta-Exact | X | 少數遊戲中使用。 | |
DPCM Gremlin | X | ||
DPCM id RoQ | X | X | 用於《Quake III》、《Jedi Knight 2》和其他電腦遊戲。 |
DPCM Marble WADY | X | ||
DPCM Interplay | X | 用於多款 Interplay 電腦遊戲。 | |
DPCM Squareroot-Delta-Exact | X | 用於多款遊戲。 | |
DPCM Sierra Online | X | 用於 Sierra Online 遊戲音訊檔案。 | |
DPCM Sol | X | ||
DPCM Xan | X | 用於 Origin’s Wing Commander IV AVI 檔案。 | |
DPCM Xilam DERF | X | ||
DSD (Direct Stream Digital),最低有效位元優先 | X | ||
DSD (Direct Stream Digital),最高有效位元優先 | X | ||
DSD (Direct Stream Digital),最低有效位元優先,平面式 | X | ||
DSD (Direct Stream Digital),最高有效位元優先,平面式 | X | ||
DSP Group TrueSpeech | X | ||
DST (Direct Stream Transfer) | X | ||
DV 音訊 | X | ||
Enhanced AC-3 | X | X | |
EVRC (Enhanced Variable Rate Codec) | X | ||
FLAC (Free Lossless Audio Codec) | X | IX | |
FTR Voice | X | ||
G.723.1 | X | X | |
G.729 | X | ||
GSM | E | X | 透過外部函式庫 libgsm 支援編碼 |
GSM Microsoft 變體 | E | X | 透過外部函式庫 libgsm 支援編碼 |
IAC (Indeo Audio Coder) | X | ||
iLBC (Internet Low Bitrate Codec) | E | EX | 透過外部函式庫 libilbc 支援編碼與解碼 |
IMC (Intel Music Coder) | X | ||
Interplay ACM | X | ||
LC3 | E | E | 透過外部函式庫 liblc3 支援 |
MACE (Macintosh Audio Compression/Expansion) 6:1 | X | ||
Marian’s A-pac 音訊 | X | ||
MI-SC4 (Micronas SC-4 Audio) | X | ||
MLP (Meridian Lossless Packing) | X | X | 用於 DVD-Audio 光碟。 |
Monkey’s Audio | X | ||
MP1 (MPEG audio layer 1) | IX | ||
MP2 (MPEG audio layer 2) | IX | IX | 也透過外部函式庫 TwoLAME 支援編碼 |
MP3 (MPEG audio layer 3) | E | IX | 透過外部函式庫 LAME 支援編碼,也支援 ADU MP3 和 MP3onMP4 |
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 | 透過外部函式庫 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 | 仍然有些許失真。 | |
RealAudio 1.0 (14.4K) | X | X | Real 14400 位元/秒 編碼器 |
RealAudio 2.0 (28.8K) | X | Real 28800 位元/秒 編碼器 | |
RealAudio 3.0 (dnet) | IX | X | Real 低位元率 AC-3 編碼器 |
RealAudio Lossless | X | ||
RealAudio SIPR / ACELP.NET | X | ||
RK Audio (RKA) | X | ||
SBC (low-complexity subband codec) | X | X | 用於 Bluetooth A2DP |
Shorten | X | ||
Sierra VMD 音訊 | X | 用於 Sierra VMD 檔案中。 | |
Smacker 音訊 | X | ||
SMPTE 302M AES3 音訊 | X | X | |
Sonic | X | X | 實驗性編碼器 |
Sonic lossless | X | X | 實驗性編碼器 |
Speex | E | EX | 透過外部函式庫 libspeex 支援 |
TAK (Tom’s lossless Audio Kompressor) | X | ||
True Audio (TTA) | X | X | |
TrueHD | X | X | 用於 HD-DVD 和 Blu-Ray 光碟。 |
TwinVQ (VQF flavor) | X | ||
VIMA | X | 用於 LucasArts SMUSH 動畫。 | |
ViewQuest VQC | X | ||
Vorbis | E | X | 存在原生但非常原始的編碼器。 |
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
表示該欄位中的功能(編碼 / 解碼)受到支援。
E
表示透過外部函式庫提供支援。
I
表示也提供僅整數版本 (確保在沒有硬體浮點支援的系統上具有高效能)。
40.5 字幕格式
名稱 | 多工處理 | 解多工處理 | 編碼 | 解碼 |
3GPP Timed Text | X | X | ||
AQTitle | X | X | ||
DVB | X | X | X | X |
DVB 圖文電視 | 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 格式 (STL) | X | X | ||
SSA/ASS | X | X | X | X |
SubRip (SRT) | X | X | X | X |
SubViewer v1 | X | X | ||
SubViewer | X | X | ||
TED Talks 字幕 | X | X | ||
TTML | X | X | ||
VobSub (IDX+SUB) | X | X | ||
VPlayer | X | X | ||
WebVTT | X | X | X | X |
XSUB | X | X |
X
表示支援此功能。
E
表示透過外部函式庫提供支援。
40.6 網路協定
名稱 | 支援 |
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
表示支援此協定。
E
表示透過外部函式庫提供支援。
40.7 輸入/輸出裝置
名稱 | 輸入 | 輸出 |
ALSA | X | X |
BKTR | X | |
caca | X | |
DV1394 | X | |
Lavfi 虛擬裝置 | 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 擷取 | X | |
X11 抓取 | X | |
Win32 抓取 | X |
X
表示支援輸入/輸出。
40.8 時間碼
編碼/格式 | 讀取 | 寫入 |
AVI | X | X |
DV | X | X |
GXF | X | X |
MOV | X | X |
MPEG1/2 | X | X |
MXF | X | X |
41 參見
ffplay、ffmpeg、ffprobe、ffmpeg-utils、ffmpeg-scaler、ffmpeg-resampler、ffmpeg-codecs、ffmpeg-bitstream-filters、ffmpeg-formats、ffmpeg-devices、ffmpeg-protocols、ffmpeg-filters
42 作者
FFmpeg 開發人員。
關於作者的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如在 FFmpeg 原始碼目錄中輸入命令 git log
,或瀏覽線上儲存庫 https://git.ffmpeg.org/ffmpeg。
特定組件的維護者列於原始碼樹狀結構中的 MAINTAINERS 檔案中。
本文件於 2025 年 1 月 21 日 使用 makeinfo 產生。
由 telepoint.bg 提供託管服務