「FFmpegSource2」修訂間的差異
(未顯示由 2 位使用者於中間所作的 8 次修訂) | |||
第1行: | 第1行: | ||
使用ffmpeg打开源文件,运气好的能做到诸帧精确。源代码依照MIT许可证发布,点击 https://github.com/FFMS/ffms2 获得源代码。已编译好的二进制文件按照GPLv3许可证发布。如果你是开源信仰者,你可以把这个当成是基督的归来。 | |||
{{Template:滤镜信息|[https://github.com/FFMS/ffms2 FFmpegSource2项目]|310|[https://github.com/FFMS/ffms2 FFmpegSource2项目]| 源 滤镜|AviSynth 2.5|MIT协议}} | |||
== 局限 == | == 局限 == | ||
*打开ogm或mpeg文件需要用到[http://haali.cs.msu.ru/mkv/ Haali媒体分离器(HMS)]。 | *打开ogm或mpeg文件需要用到[http://haali.cs.msu.ru/mkv/ Haali媒体分离器(HMS)]。 | ||
*Haali分离器要求ts文件的分割点在一个数据包的边界上。打 | *Haali分离器要求ts文件的分割点在一个数据包的边界上。打 开ts 文件前可以用TsRemux修复一下。 | ||
*因为用到了LAVF的分离功能,绝大多数的原始数据流没有办发正常打开,比如h264原始数据流和其他一些mpeg视频流。 | *因为用到了LAVF的分离功能,绝大多数的原始数据流没有办发正常打开,比如h264原始数据流和其他一些mpeg视频流。 | ||
*FFAudioSource()需要重新索引由FFVideoSource()索引过的文件,因此像 | *FFAudioSource()需要重新索引由FFVideoSource()索引过的文件,因此像 | ||
第26行: | 第21行: | ||
== 已知问题 == | == 已知问题 == | ||
*解码ts封装的h264文件 | *解码ts封装的h264文件 时 画面可能会破损。 | ||
*FFIndex()在索引时会静默的忽略解码错误。也就是说即使FFIndex()索引完毕了,对于某条视频轨或音频轨的索引有可能已经失败了。 | *FFIndex()在索引时会静默的忽略解码错误。也就是说即使FFIndex()索引完毕了,对于某条视频轨或音频轨的索引有可能已经失败了。 | ||
第33行: | 第28行: | ||
*WMV:准确跳转(?),但是avformat似乎把关键帧定在了比较远的地方 | *WMV:准确跳转(?),但是avformat似乎把关键帧定在了比较远的地方 | ||
*OGM:准确跳转(?) | *OGM:准确跳转(?) | ||
VOB、MPG:似乎有时会跳到指定帧前后的一到两帧 | *VOB、MPG:似乎有时会跳到指定帧前后的一到两帧 | ||
M2TS、TS:似乎有时会跳到指定帧前后的几帧 | *M2TS、TS:似乎有时会跳到指定帧前后的几帧 | ||
* 图片:绝大多数文件,可以设置seekmode=-1打开,但不支持动画 | |||
== FFMS2.dll里的函数 == | == FFMS2.dll里的函数 == | ||
第42行: | 第38行: | ||
用来索引的专门独立函数,有一些额外的选项,还能把音频轨以wave64格式存到硬盘里。能避免索引一个文件两次,而且当音频轨坏掉/不支持导致不能正常索引时也会有用。 | 用来索引的专门独立函数,有一些额外的选项,还能把音频轨以wave64格式存到硬盘里。能避免索引一个文件两次,而且当音频轨坏掉/不支持导致不能正常索引时也会有用。 | ||
{{Template:FuncDef|FFVideoSource(字符串 ''source'', 整数 ''track'', 布尔 ''cache'' <nowiki>=</nowiki> true, 字符串 ''cachefile'' <nowiki>=</nowiki> source + ".ffindex", 整数 ''fpsnum'' <nowiki>=</nowiki> -1, 整数 ''fpsden'' <nowiki>=</nowiki> 1, 字符串 ''pp'', 整数 ''threads'' <nowiki>=</nowiki> -1, 字符串 ''timecodes'', 整数 ''seekmode'' <nowiki>=</nowiki> 1, 整数 ''rffmode'' <nowiki>=</nowiki> 0, 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "")}} | {{Template:FuncDef|FFVideoSource(字符串 ''source'', 整数 ''track'', 布尔 ''cache'' <nowiki>=</nowiki> true, 字符串 ''cachefile'' <nowiki>=</nowiki> source + ".ffindex", 整数 ''fpsnum'' <nowiki>=</nowiki> -1, 整数 ''fpsden'' <nowiki>=</nowiki> 1, 字符串 ''pp'', 整数 ''threads'' <nowiki>=</nowiki> -1, 字符串 ''timecodes'', 整数 ''seekmode'' <nowiki>=</nowiki> 1, 整数 ''rffmode'' <nowiki>=</nowiki> 0, 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "")}} | ||
打开视频,如果没有现成的索引,则索引所有的视频轨。 | 打开视频,如果没有现成的索引,则索引所有的视频轨。 | ||
{{Template:FuncDef|FFAudioSource(字符串 ''source'', 整数 ''track'', 布尔 ''cache'' <nowiki>=</nowiki> true, 字符串 ''cachefile'' <nowiki>=</nowiki> source + ".ffindex", 整数 ''adjustdelay'' <nowiki>=</nowiki> -1)}} | {{Template:FuncDef|FFAudioSource(字符串 ''source'', 整数 ''track'', 布尔 ''cache'' <nowiki>=</nowiki> true, 字符串 ''cachefile'' <nowiki>=</nowiki> source + ".ffindex", 整数 ''adjustdelay'' <nowiki>=</nowiki> -1)}} | ||
打开音频,如果没有现成的索引或需要的音频轨原先没有被索引过时,则会去索引所有的音频轨。 | 打开音频,如果没有现成的索引或需要的音频轨原先没有被索引过时,则会去索引所有的音频轨。 | ||
{{Template:FuncDef|FFPP(clip, 字符串 pp)}} | {{Template:FuncDef|FFPP(clip, 字符串 pp)}} | ||
独立的后处理函数,其中包含了一些简易的反交错滤镜。因为FFVideoSource可以直接读出视频的量化值,所以尽量在FFVideoSource中使用pp参数,这个后处理能更好地适应打开的视频。 | 独立的后处理函数,其中包含了一些简易的反交错滤镜。因为FFVideoSource可以直接读出视频的量化值,所以尽量在FFVideoSource中使用pp参数,这个后处理能更好地适应打开的视频。 | ||
{{Template:FuncDef|SWScale(clip, 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "")}} | {{Template:FuncDef|SWScale(clip, 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "")}} | ||
第59行: | 第59行: | ||
一个缩放/色彩空间转换滤镜,没有什么特别之处。这个滤镜和AviSynth的做法不完全一样,有时会有点用。 | 一个缩放/色彩空间转换滤镜,没有什么特别之处。这个滤镜和AviSynth的做法不完全一样,有时会有点用。 | ||
{{Template:FuncDef|FFSetLogLevel(整数 Level = -8)}} | |||
{{Template:FuncDef|FFSetLogLevel(整数 Level <nowiki>=</nowiki> -8)}} | |||
设置FFmpeg的日志输出等级,默认设置成静默(-8),FFmpeg的默认等级是16。avutil/log.h文件里可以找到所有可设置的等级。 | 设置FFmpeg的日志输出等级,默认设置成静默(-8),FFmpeg的默认等级是16。avutil/log.h文件里可以找到所有可设置的等级。 | ||
{{Template:FuncDef|FFgetloglevel()}} | {{Template:FuncDef|FFgetloglevel()}} | ||
第67行: | 第69行: | ||
返回当前日志记录等级(整数)。 | 返回当前日志记录等级(整数)。 | ||
== FFMS2.avsi == | == FFMS2.avsi 里的函数 == | ||
{{Template:FuncDef|FFmpegSource2(字符串 ''source'', 整数 ''vtrack'' <nowiki>=</nowiki> -1, 整数 ''atrack'' <nowiki>=</nowiki> -2, 布尔 ''cache'' <nowiki>=</nowiki> true, 字符串 ''cachefile'' <nowiki>=</nowiki> source + ".ffindex", 整数 ''fpsnum'' <nowiki>=</nowiki> -1, 整数 ''fpsden'' <nowiki>=</nowiki> 1, 字符串 ''pp'', 整数 ''threads'' <nowiki>=</nowiki> -1, 字符串 ''timecodes'', 整数 ''seekmode'' <nowiki>=</nowiki> 1, 布尔 ''overwrite'' <nowiki>=</nowiki> false, 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "", 整数 ''rffmode'' <nowiki>=</nowiki> 0, 整数 ''adjustdelay'' <nowiki>=</nowiki> -1)}} | |||
近似于1.x系列比较高版本的语法。atrack=-1可以方便同时载入视频和音频。注意如果没有载入第一条视频轨,而是其他的,可能需要自己调adjustdelay参数,指定合适的音频轨的延迟。 | |||
{{Template:FuncDef|FFImageSource(字符串 ''source'', 整数 ''width'' <nowiki>=</nowiki> -1, 整数 ''height'' <nowiki>=</nowiki> -1, 字符串 ''resizer'' <nowiki>=</nowiki> "BICUBIC", 字符串 ''colorspace'' <nowiki>=</nowiki> "")}} | |||
FFvideoSource的一种等价形式,选项都为读取图片优化过的。为了兼容性,关掉了缓存和seeking。 | |||
{{Template:FuncDef|FFFormatTime(整数 ms)}} | |||
一个辅助函数,把以毫秒记的时间转换成h:mm:ss.ttt(字符串) | |||
{{Template:FuncDef|FFInfo(''clip'' c, 布尔 ''framenum'' <nowiki>=</nowiki> true, 布尔 ''frametype'' <nowiki>=</nowiki> true, 布尔 ''cfrtime'' <nowiki>=</nowiki> true, 布尔 ''vfrtime'' <nowiki>=</nowiki> true)}} | |||
一个辅助函数,显示当前帧的一般信息。注意并不是所有的值都输出成了原模式,所以不会每次都显示所有的值。 | |||
第110行: | 第129行: | ||
'''seekmode''':控制如何处理跳转。对MKV文件和Haali分离器打开的文件无效,这些文件相当于自动设置seekmode = 1。 | '''seekmode''':控制如何处理跳转。对MKV文件和Haali分离器打开的文件无效,这些文件相当于自动设置seekmode = 1。 | ||
:'''-1''':线性转到而且不倒 | :'''-1''':线性转到而且不 往回 倒。如果每个 这个请求的帧数比最后一个小,就会输出一个警告。只用来打开图片,但可能可以用在某些难得一见的视频格式 | ||
:'''0''':线性到达,会比较慢,但 | :'''0''':线性到达,会比较慢,但 可以“打开” 更多格式 | ||
:'''1''':安全模式,基于已知的关键帧位置判断跳转 | :'''1''':安全模式,基于已知的关键帧位置判断跳转 | ||
:'''2''':非安全模式,和模式1一样,但是如果精确的目标位置要靠猜的,不会跳出错误 | :'''2''':非安全模式,和模式1一样,但是如果精确的目标位置要靠猜的, 是 不会跳出错误 的 | ||
:'''3''':激进模式,如果没有比较接近的关键帧,则向前跳转。仅在测试和打开avformat无法正确返回关键帧位置的容器才有用 | :'''3''':激进模式,如果没有比较接近的关键帧,则向前跳转。仅在测试和打开avformat无法正确返回关键帧位置的容器才有用 | ||
'''rffmode''':控制如何处理视频流中的RFF旗标。 | '''rffmode''':控制如何处理视频流中的RFF旗标。 | ||
第153行: | 第172行: | ||
:'''-1''':相对于第一条视频轨调整延迟,如果没有视频轨,则相对于0时刻调整 | :'''-1''':相对于第一条视频轨调整延迟,如果没有视频轨,则相对于0时刻调整 | ||
== 输出的AviSynth变量 == | |||
== 输出 给 的AviSynth变量 == | |||
'''FFSAR_NUM'''、'''FFSAR_DEN'''、'''FFSAR''':由容器指定的播放高宽比。FFSAR_NUM和FFSAR_DEN是组成比例的分子和分母,FFSAR则只是方便无法计算的情况而已。 | '''FFSAR_NUM'''、'''FFSAR_DEN'''、'''FFSAR''':由容器指定的播放高宽比。FFSAR_NUM和FFSAR_DEN是组成比例的分子和分母,FFSAR则只是方便无法计算的情况而已。 | ||
第194行: | 第214行: | ||
== PP字符串格式 == | == PP字符串格式 == | ||
后处理滤镜: | |||
{|class = 'wikitable' | |||
|- | |||
!colspan=2|滤镜 | |||
!colspan=2|选项 | |||
! | |||
|- | |||
!简称 | |||
!长名称 | |||
!简称 | |||
!长选项 | |||
!描述 | |||
|- | |||
|rowspan=4|* | |||
|rowspan=4|* | |||
|a | |||
|autoq | |||
|根据CPU能力选择 | |||
|- | |||
|c | |||
|chrom | |||
|处理色度 | |||
|- | |||
|y | |||
|nochrom | |||
|不处理色 | |||
|- | |||
|n | |||
|noluma | |||
|不处理亮度 | |||
|- | |||
|hb | |||
|hdeblock | |||
|colspan=2|(2个阈值) | |||
|水平方向deblocking滤镜<br>1.差异因子:默认32,调高相当于更强的deblocking<br>2.平滑度因子:默认39,调低相当于更强的deblocking<br>水平和垂直的deblocking滤镜共用这两个值,不能单独设置 | |||
|- | |||
|vb | |||
|vdeblock | |||
|colspan=2|(2个阈值) | |||
|垂直方向deblocking滤镜 | |||
|- | |||
|ha | |||
|hadeblock | |||
|colspan=2|(2个阈值) | |||
|水平方向deblocking滤镜 | |||
|- | |||
|va | |||
|vadeblock | |||
|colspan=2|(2个阈值) | |||
|垂直方向deblocking滤镜 | |||
|- | |||
|h1 | |||
|x1hdeblock | |||
|colspan=2| | |||
|实验性水平deblocking滤镜 | |||
|- | |||
|v1 | |||
|x1vdeblock | |||
|colspan=2| | |||
|实验性垂直deblocking滤镜 | |||
|- | |||
|dr | |||
|dering | |||
|colspan=2| | |||
|deringing滤镜 | |||
|- | |||
|al | |||
|autolevels | |||
|colspan=2| | |||
|自动调节亮度对比度 | |||
|- | |||
|f | |||
|fullyrange | |||
|colspan=2| | |||
|把亮度拉伸到(0..255) | |||
|- | |||
|lb | |||
|linblendeint | |||
|colspan=2| | |||
|线性Blend反交错 | |||
|- | |||
|li | |||
|linipoldeint | |||
|colspan=2| | |||
|线性插值反交错 | |||
|- | |||
|ci | |||
|cubicipoldeint | |||
|colspan=2| | |||
|三次方插值反交错 | |||
|- | |||
|md | |||
|mediandeint | |||
|colspan=2| | |||
|中值反交错 | |||
|- | |||
|fd | |||
|ffmpegdeint | |||
|colspan=2| | |||
|ffmpeg反交错 | |||
|- | |||
|l5 | |||
|lowpass5 | |||
|colspan=2| | |||
|FIR低通反交错 | |||
|- | |||
|de | |||
|default | |||
|colspan=2| | |||
|hb:a,vb:a,dr:a | |||
|- | |||
|fa | |||
|fast | |||
|colspan=2| | |||
|h1:a,v1:a,dr:a | |||
|- | |||
|ac | |||
| | |||
|colspan=2| | |||
|ha:a:128:7,va:a,dr:a | |||
|- | |||
|tn | |||
|tmpnoise | |||
|colspan=2|(3个阈值) | |||
|时间降噪<br>1. <= 2. <= 3. 数值大 -> 降噪效果强 | |||
|- | |||
|fq | |||
|forceQuant | |||
|colspan=2|<量化值> | |||
|强制量化 | |||
|- | |||
|} | |||
用法: | |||
<nowiki><filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...</nowiki> | |||
长参数名示例: | |||
vdeblock:autoq/hdeblock:autoq/linblenddeint | |||
default,-vdeblock | |||
短参数名格式: | |||
vb:a/hb:a/lb | |||
de,-vb | |||
其他例子: | |||
tn:64:128:256 | |||
[[分类:扩展滤镜]] | |||
[[分类:源滤镜]] |
於 2015年3月28日 (六) 16:24 的最新修訂
使用ffmpeg打開源文件,運氣好的能做到諸幀精確。原始碼依照MIT許可證發佈,點擊 https://github.com/FFMS/ffms2 獲得原始碼。已編譯好的二進制文件按照GPLv3許可證發佈。如果你是開源信仰者,你可以把這個當成是基督的歸來。
概 述 | |
作者 | FFmpegSource2項目 |
版本 | 310 |
下載地址 | FFmpegSource2項目 |
分類 | 源濾鏡 |
需求 | AviSynth 2.5 |
授權 | MIT協議 |
局限
- 打開ogm或mpeg文件需要用到Haali媒體分離器(HMS)。
- Haali分離器要求ts文件的分割點在一個數據包的邊界上。打開ts文件前可以用TsRemux修復一下。
- 因為用到了LAVF的分離功能,絕大多數的原始數據流沒有辦發正常打開,比如h264原始數據流和其他一些mpeg視頻流。
- FFAudioSource()需要重新索引由FFVideoSource()索引過的文件,因此像
AudioDub(FFVideoSource(X), FFAudioSource(X))
的腳本,需要索引兩次。這樣做倒沒什麼問題,只是多花了一些時間。用下面的方法可以避免索引兩次,一是先索引音頻
A = FFAudioSource(X) V = FFVideoSource(X) AudioDub(V, A)
或直接用FFIndex()
FFIndex(X) AudioDub(FFVideoSource(X), FFAudioSource(X))
已知問題
- 解碼ts封裝的h264文件時畫面可能會破損。
- FFIndex()在索引時會靜默的忽略解碼錯誤。也就是說即使FFIndex()索引完畢了,對於某條視頻軌或音頻軌的索引有可能已經失敗了。
兼容性
- AVI、MKV、MP4、FLV:準確跳轉
- WMV:準確跳轉(?),但是avformat似乎把關鍵幀定在了比較遠的地方
- OGM:準確跳轉(?)
- VOB、MPG:似乎有時會跳到指定幀前後的一到兩幀
- M2TS、TS:似乎有時會跳到指定幀前後的幾幀
- 圖片:絕大多數文件,可以設置seekmode=-1打開,但不支持動畫
FFMS2.dll里的函數
FFIndex (字符串 source, 字符串 cachefile = source + ".ffindex", 整數 indexmask = -1, 整數 dumpmask = 0, 字符串 audiofile = "%sourcefile%.%trackzn%.w64", 整數 errorhandling = 3, 布爾 overwrite = false)
用來索引的專門獨立函數,有一些額外的選項,還能把音頻軌以wave64格式存到硬盤裏。能避免索引一個文件兩次,而且當音頻軌壞掉/不支持導致不能正常索引時也會有用。
FFVideoSource(字符串 source, 整數 track, 布爾 cache = true, 字符串 cachefile = source + ".ffindex", 整數 fpsnum = -1, 整數 fpsden = 1, 字符串 pp, 整數 threads = -1, 字符串 timecodes, 整數 seekmode = 1, 整數 rffmode = 0, 整數 width = -1, 整數 height = -1, 字符串 resizer = "BICUBIC", 字符串 colorspace = "")
打開視頻,如果沒有現成的索引,則索引所有的視頻軌。
FFAudioSource(字符串 source, 整數 track, 布爾 cache = true, 字符串 cachefile = source + ".ffindex", 整數 adjustdelay = -1)
打開音頻,如果沒有現成的索引或需要的音頻軌原先沒有被索引過時,則會去索引所有的音頻軌。
FFPP(clip, 字符串 pp)
獨立的後處理函數,其中包含了一些簡易的反交錯濾鏡。因為FFVideoSource可以直接讀出視頻的量化值,所以儘量在FFVideoSource中使用pp參數,這個後處理能更好地適應打開的視頻。
SWScale(clip, 整數 width = -1, 整數 height = -1, 字符串 resizer = "BICUBIC", 字符串 colorspace = "")
一個縮放/色彩空間轉換濾鏡,沒有什麼特別之處。這個濾鏡和AviSynth的做法不完全一樣,有時會有點用。
FFSetLogLevel(整數 Level = -8)
設置FFmpeg的日誌輸出等級,默認設置成靜默(-8),FFmpeg的默認等級是16。avutil/log.h文件里可以找到所有可設置的等級。
FFgetloglevel()
返回當前日誌記錄等級(整數)。
FFMS2.avsi里的函數
FFmpegSource2(字符串 source, 整數 vtrack = -1, 整數 atrack = -2, 布爾 cache = true, 字符串 cachefile = source + ".ffindex", 整數 fpsnum = -1, 整數 fpsden = 1, 字符串 pp, 整數 threads = -1, 字符串 timecodes, 整數 seekmode = 1, 布爾 overwrite = false, 整數 width = -1, 整數 height = -1, 字符串 resizer = "BICUBIC", 字符串 colorspace = "", 整數 rffmode = 0, 整數 adjustdelay = -1)
近似於1.x系列比較高版本的語法。atrack=-1可以方便同時載入視頻和音頻。注意如果沒有載入第一條視頻軌,而是其他的,可能需要自己調adjustdelay參數,指定合適的音頻軌的延遲。
FFImageSource(字符串 source, 整數 width = -1, 整數 height = -1, 字符串 resizer = "BICUBIC", 字符串 colorspace = "")
FFvideoSource的一種等價形式,選項都為讀取圖片優化過的。為了兼容性,關掉了緩存和seeking。
FFFormatTime(整數 ms)
一個輔助函數,把以毫秒記的時間轉換成h:mm:ss.ttt(字符串)
FFInfo(clip c, 布爾 framenum = true, 布爾 frametype = true, 布爾 cfrtime = true, 布爾 vfrtime = true)
一個輔助函數,顯示當前幀的一般信息。注意並不是所有的值都輸出成了原模式,所以不會每次都顯示所有的值。
函數參數
source:源文件
indexmask和dumpmask:索引哪條音頻軌/把哪條音頻軌寫入硬盤。解碼轉存一條音頻軌同時也做了索引,因為要乾的活一樣多。這個參數以二進制掩碼記,比如設為7對應操作1~3號軌道(1+2+4 = 7),並且會忽略非音頻軌。設為-1則把所有的音頻軌寫入硬盤。
audiofile:轉存音軌的文件名。請確保有變量軌道號,以防止多文件同時寫入產生的訪問錯誤。變量對大小寫敏感。變量如下:
- %sourcefile% - 和參數source相同,音頻軌從這個文件里解碼。
- %trackn% - 軌道號
- %trackzn% - 軌道號前面加個0,變成兩位數
- %samplerate% - 採樣率
- %channels% - 聲道數
- %bps% - 採樣深度
- %delay% - 延遲,準確地講是音軌所在的第一個時間戳
overwrite:即使索引已經存在,也重新索引一遍並覆蓋原索引。在改變過trackmask或測試時可能有用。
track:分離器中對應的軌道號,從0開始。-1則是第一個匹配的軌道,但有可能不是識別出的第一條未索引過得視頻/音頻軌道,而是之後的一條軌道。
fpsunm和fpsden:做VFR -> CFR用的,幀率的分子和分母。設fpsnum <= 0則是和源文件編碼的幀數相同。
timecodes:輸出的timecodes文件(tcv2)的文件名,如果存在就覆蓋掉。
cache:寫一個以後可能用得上的索引信息文件。設置這個參數會同時控制載入已存在的索引文件和寫入新的索引文件。
cachefile:寫入的cache信息的地址。
pp:完整信息請查看下面表格中的描述。留空則是不做後處理。建議儘量不要用根據q值自動處理的選項,因為現在處理的效果不明。
threads:設置解碼線程數,默認值是Windows提供的邏輯核心數。如果用到的解碼器沒有此功能,lavc也會無視掉這個參數。
seekmode:控制如何處理跳轉。對MKV文件和Haali分離器打開的文件無效,這些文件相當於自動設置seekmode = 1。
- -1:線性轉到而且不往回倒。如果每個這個請求的幀數比最後一個小,就會輸出一個警告。只用來打開圖片,但可能可以用在某些難得一見的視頻格式
- 0:線性到達,會比較慢,但可以「打開」更多格式
- 1:安全模式,基於已知的關鍵幀位置判斷跳轉
- 2:非安全模式,和模式1一樣,但是如果精確的目標位置要靠猜的,是不會跳出錯誤的
- 3:激進模式,如果沒有比較接近的關鍵幀,則向前跳轉。僅在測試和打開avformat無法正確返回關鍵幀位置的容器才有用
rffmode:控制如何處理視頻流中的RFF旗標。
- 0:忽略
- 1:按照旗標處理
- 2:等價於Force Film
注意當視頻流里根本沒有RFF旗標時還設rffmode的話,會跳出錯誤。當設置這個參數後,也會輸出CFR的視頻,並禁用垂直方向上的縮放和色彩空間的轉換。FFPICT_TYPE也無效,因為輸出的一些幀是組合起來的。除此之外還有一些其他細微的設置調整。
width和height:縮放到的寬度和高度。設成小於或等於0相當於指定輸入視頻的尺寸。
resizer:選擇對色度平面和普通縮放使用的縮放算法。可選擇的方法有:FAST_BILINEAR、BILINEAR、BICUBIC、X、POINT、AREA、BICUBLIN、GAUSS、SINC、LANCZOS和SPLINE。
colorspace:轉換到的色彩空間。名稱有YV12、YUY2、RGB24、RGB32。留空相當和輸入視頻的色彩空間一致。
errorhandling:控制當遇到音頻解碼錯誤是如何處理。
- 0:退出索引
- 1:清理掉遇到問題的音頻軌,然後繼續
- 2:停止索引此音頻軌,但索引過的內容保留
- 3:什麼都不管直接繼續解碼
adjustdelay:設置合適的音頻軌延遲。默認-1,絕大多數情況都會得到正確結果。
- -3:不調延遲
- -2:相對0時刻調整延遲
- -1:相對於第一條視頻軌調整延遲,如果沒有視頻軌,則相對於0時刻調整
輸出給的AviSynth變量
FFSAR_NUM、FFSAR_DEN、FFSAR:由容器指定的播放高寬比。FFSAR_NUM和FFSAR_DEN是組成比例的分子和分母,FFSAR則只是方便無法計算的情況而已。
FFCROP_LEFT、FFCROP_RIGHT、FFCROP_TOP和FFCROP_BOTTOM:容器指定的播放時切邊參數
FFCOLOR_SPACE:輸出的色彩範圍
- 0:未知/未指定
- 1:有限範圍
- 2:全範圍
FFPICT_COLOR:被請求的最接近幀的幀類型,輸出一個ascii數字,下面列出了所有對應情況。在AviSynth里用[Chr()|字符串函數]轉換成字符。AviSynth的條件運行腳本需要設after_frame = true才能得到正確結果。rffmode=0時才能用。 FFmpeg各字符原始定義:
- I:I幀
- P:P幀
- B:B幀
- i:SI幀
- p:SP幀
- b:FF_BI_TYPE (現在沒有合適的解釋)
- ?:未知
用法舉例:
ScriptClip("""subtitle(chr(FFPICT_TYPE))""",after_frame=true)
FFVFR_TIME:當前幀實際時間,以毫秒計。沒有做任何CFR轉換時才有用(即rffmode和fpsnum都保持默認)
PP字符串格式
後處理濾鏡:
濾鏡 | 選項 | |||
---|---|---|---|---|
簡稱 | 長名稱 | 簡稱 | 長選項 | 描述 |
* | * | a | autoq | 根據CPU能力選擇 |
c | chrom | 處理色度 | ||
y | nochrom | 不處理色 | ||
n | noluma | 不處理亮度 | ||
hb | hdeblock | (2個閾值) | 水平方向deblocking濾鏡 1.差異因子:默認32,調高相當於更強的deblocking 2.平滑度因子:默認39,調低相當於更強的deblocking 水平和垂直的deblocking濾鏡共用這兩個值,不能單獨設置 | |
vb | vdeblock | (2個閾值) | 垂直方向deblocking濾鏡 | |
ha | hadeblock | (2個閾值) | 水平方向deblocking濾鏡 | |
va | vadeblock | (2個閾值) | 垂直方向deblocking濾鏡 | |
h1 | x1hdeblock | 實驗性水平deblocking濾鏡 | ||
v1 | x1vdeblock | 實驗性垂直deblocking濾鏡 | ||
dr | dering | deringing濾鏡 | ||
al | autolevels | 自動調節亮度對比度 | ||
f | fullyrange | 把亮度拉伸到(0..255) | ||
lb | linblendeint | 線性Blend反交錯 | ||
li | linipoldeint | 線性插值反交錯 | ||
ci | cubicipoldeint | 三次方插值反交錯 | ||
md | mediandeint | 中值反交錯 | ||
fd | ffmpegdeint | ffmpeg反交錯 | ||
l5 | lowpass5 | FIR低通反交錯 | ||
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 | |||
tn | tmpnoise | (3個閾值) | 時間降噪 1. <= 2. <= 3. 數值大 -> 降噪效果強 | |
fq | forceQuant | <量化值> | 強制量化 |
用法:
<filterName>[:<option>[:<option>...]][[,|/][-]<filterName>[:<option>...]]...
長參數名示例:
vdeblock:autoq/hdeblock:autoq/linblenddeint default,-vdeblock
短參數名格式:
vb:a/hb:a/lb de,-vb
其他例子:
tn:64:128:256