源濾鏡 FFmpegSource2 vs DirectShowSource 一問
本帖最后由 okmijnuhb2C1 于 2023-3-18 10:05 编辑小弟不時會hardsub 字幕至 BD, 用的是 VSFilter OR VSFilterMod
一直以來都是用 avs + DirectShowSource餵給 x264 tmod / x265, 如下
LoadPlugin("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\x264\VSFilterMod.DLL")
DirectShowSource("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\NCOP2-2.mkv")
TextSubMod("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\NCOP2-2.ass")
最近發現 x265 的一行info經常是 "i420p8", 不論是 YUV420 8bits OR YUV420 10bits 的源
avs+ : 1920x1080 fps 10000000/417083 i420p8 frames 0 - 35224 of 35225
應該也即是說input depth 變了 YUV420 8bits
但改用 FFmpegSource2 則在 indexing 後能正確分辨 YUV420 8bits 及 YUV420 10bits 的源
LoadPlugin("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\x264\VSFilterMod.DLL")
LoadPlugin("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\x264\ffms2.dll")
FFVideoSource("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\NCOP2-2.mkv")
TextSubMod("C:\Users\Jason\Desktop\app\VSFilterMod\VSFilterMod-avs\NCOP2-2.ass")
avs+ : 1920x1080 fps 24000/1001 i420p10 frames 0 - 35223 of 35224
而且同樣參數下 x265 輸出經 FFmpegSource2 解碼的檔案體積更小, 請問是有什麼原因在背後呢?
而 y4m 餵法又會否是更好選擇?
本帖最后由 vxzms 于 2023-3-18 17:24 编辑
- 重複 1. DSS(DirectShowSource)比較古老,我不清楚它現在能否正確處理高於 8-bit 的影片,但由於它解碼出現錯誤的可能性較大,所以很久前就已不再推薦使用,可以使用 LWLibavVideoSource 或 FFMS2(FFmpegSource2)來作為源濾鏡
2. 不清楚你 x265 輸出的是什麼 bitdepth,假如 AVS+ 輸出 10-bit,x265 輸出 8-bit,那麼 x265 會在其內部做一個色深的轉換,與 8-bit -> 8-bit 產生不同的體積也是有可能的
3. 從 AVS (+)、VS 這類預處理的 Frameserver 推薦是用 y4m pipe 給影片編碼器進行壓縮的,如 x265 需要在參數指定 --y4m,我也不清楚你現在用的什麼方式
4. VSFilter / VSFilterMod 在 YUV420 8-bit 下載入字幕可能也會在色彩轉換上出現問題 对于 x265 同参数下,10bit 会比 8bit 有更高的压缩率,因为对 10bit 做了优化,x265-8bit 一般不推荐使用,不如 x264-8bit。 本帖最后由 okmijnuhb2C1 于 2023-3-18 14:20 编辑
vxzms 发表于 2023-3-18 11:23
1. DSS(DirectShowSource)比較古老,我不清楚它現在能否正確處理高於 8-bit 的影片,但由於它解碼出現錯 ...
感謝回覆, 我 x264/x265 全都是 輸出 10bit的, 那看來我應該全面轉用ffms2 好了, 看wiki 好像DSS沒有 P010 輸出 = ="
另外還有事想請教
1. 上圖中的 ffms 與 dss 輸出檔案大小有差異是因為
"10bit 片源, DSS AVS+ 輸出 8-bit,x265 輸出 10-bit,x265 會在其內部做一個色深的轉換,與 FFMS2 AVS+ 10-bit -> 10-bit 產生不同的體積" 嗎?
2. 我用過的參數如下, 我想 y4m 應該要 "--input-depth" 來指定色深,
但不知道avs no pipe 是不是會以 avs+ 提供的資料作色深, 所以不知道紅色的是不是有必要,
如果avs no pipe 沒必要的話, 8bit / 10bit 片源就可以用同一個參數的bat了?
for %%i in (*.avs) do ffmpeg.exe -loglevel level+error -i "%%i" -strict -1 -pix_fmt yuv420p10le -f yuv4mpegpipe - | x265.exe --input-depth 10 --pool 16 --crf 18 --preset medium --bframes 6 --no-sao --no-strong-intra-smoothing --qg-size 8 --pbratio 1.2 --cbqpoffs -2 --crqpoffs -2 --me 3 --subme 5 --merange 38 --b-intra --ref 4 --weightb --rc-lookahead 70 --rd 3 --scenecut 40 --keyint 240 --min-keyint 1 --ctu 32 --no-amp --psy-rd 2.0 --psy-rdoq 1.0 --rdoq-level 2--no-open-gop --qcomp 0.65 --aq-mode 2 --aq-strength 0.9 --deblock -1:-1 --output-depth 10 -o "output\%%~ni.hevc" --y4m -
for %%i in (*.avs) do x265.exe --input-depth 10 --pool 16 --crf 15 --preset medium --bframes 6 --no-sao --no-strong-intra-smoothing --qg-size 8 --pbratio 1.2 --cbqpoffs -2 --crqpoffs -2 --me 3 --subme 5 --merange 38 --b-intra --ref 4 --weightb --rc-lookahead 70 --rd 3 --scenecut 40 --keyint 240 --min-keyint 1 --ctu 32 --no-amp --psy-rd 2.0 --psy-rdoq 1.0 --rdoq-level 2--no-open-gop --qcomp 0.65 --aq-mode 1 --aq-strength 0.8 --deblock -1:-1 --output-depth 10 "%%i" -o "output\%%~ni.hevc"
3.
VSFilter / VSFilterMod 在 YUV420 8-bit 下載入字幕可能也會在色彩轉換上出現問題
此話何解, 與YCbCr Matrix 有關嗎?
如果我一直不論是 YUV420 8bits OR YUV420 10bits 的源都用VSFilter輸出 10bit 有問題嗎? >_<
4.
我想8bit > 10bit 轉換是沒什麼影響, 而 10bit > 8bit 是有損轉換, 是這樣沒錯嗎?
如果是的話, DSS AVS+ output 只支持 8bit 對 x265 的 10 bit 輸出有什麼影響?
joker2000 发表于 2023-3-18 11:33
对于 x265 同参数下,10bit 会比 8bit 有更高的压缩率,因为对 10bit 做了优化,x265-8bit 一般不推荐使用 ...
感謝回覆, 我 x264/x265 全都是 輸出 10bit的, 只是input 上源濾鏡色深有點問題
okmijnuhb2C1 发表于 2023-3-18 13:07
感謝回覆, 我 x264/x265 全都是 輸出 10bit的, 那看來我應該全面轉用ffms2 好了, 看wiki 好像DSS沒有 P010 ...
1. 我覺得應該是這樣,但我不太清楚為什麼 x265 在內部轉換時會造成這種差異
2. 這兩種第一個用 ffmpeg pipe 的方法應該沒有問題,如果你想輸出 10-bit 的話最好讓 AVS+ 輸出的也為 10-bit,8-bit 片源可以在輸出到 x265 前轉換到 10-bit
3. 有關但關係不大,這個問題可以通過轉換到 RGB 來解決,但就有點麻煩了,我記不清最新的 vsfmod 有沒有解決這個問題
4. 8-bit > 10-bit 一般是簡單填 0,應該沒有太大影響,10-bit > 8-bit 受使用算法影響比較大。如果片源只有 8-bit,DSS output 8-bit 是沒有影響的,但如果片源是 10-bit,就進行了一個劣質的 down bitdepth。x265 輸入 8-bit 輸出 10-bit 影響的可能就只有你主樓不明的體積影響了(?
本帖最后由 okmijnuhb2C1 于 2023-3-18 19:51 编辑
vxzms 发表于 2023-3-18 19:17
1. 我覺得應該是這樣,但我不太清楚為什麼 x265 在內部轉換時會造成這種差異
2. 這兩種第一個用 ffmpeg p ...
這兩種第一個用 ffmpeg pipe 的方法應該沒有問題,如果你想輸出 10-bit 的話最好讓 AVS+ 輸出的也為 10-bit,8-bit 片源可以在輸出到 x265 前轉換到 10-bit
8bit 源也輸出 為 AVS+ 10bit 至 x265, avs你會怎麼寫?
pipe 那邊是不是已經在 -pix_fmt yuv420p10le 強制輸出 10bit yuv?
本帖最后由 208haf 于 2023-3-19 00:15 编辑
okmijnuhb2C1 发表于 2023-3-18 13:07
3.
VSFilter / VSFilterMod 在 YUV420 8-bit 下載入字幕可能也會在色彩轉換上出現問題
此話何解, 與YCbCr Matrix 有關嗎?
如果我一直不論是 YUV420 8bits OR YUV420 10bits 的源都用VSFilter輸出 10bit 有問題嗎? >_<
还是建议在较高的位深下加字幕。我一般都是在 16bit 下加字幕再降到 10bit 或 8bit 的。
http://avisynth.nl/index.php/VSFilterMod
https://github.com/computerfan/VSFilterMod
https://github.com/Masaiki/VSFilterMod
不过按这里来看,色彩的转换似乎已经修复了。
本帖最后由 okmijnuhb2C1 于 2023-3-19 01:48 编辑
208haf 发表于 2023-3-19 00:09
还是建议在较高的位深下加字幕。我一般都是在 16bit 下加字幕再降到 10bit 或 8bit 的。
http://avisynth ...
好的, 謝謝
居體做法是怎麼寫 AVS? 參考一下 :))
页:
[1]
2