Published on

Encoding: Descaling

Durasi baca 2 menit

Penulis

insert generic intro here

Yang dibutuhin:

  • Mata
  • PC & Monitor
  • Vapoursynth dan segalanyas
  • x264

Silakan ikuti langkah instalasi Vapoursynth berikut terlebih dahulu:

Intro

Resizing Anime sama Descaling Anime menghasilkan hal yang berbeda, Descaling menggunakan algoritma lain agar Anime dapat dikembalikan ke resolusi asli (Native Resolution).

Ada beberapa macam kernel yang dipakai sama Web streaming, atau studio animasinya.

Kernel yang sering dipakai biasanya Bicubic (1/3 1/3) untuk upscale Anime dari resolusi asli.

Untuk permulaan, buatlah file baru dan tambah kode seperti ini (Ekstensi file: .vpy)

manaria01_descale.vpy
import vapoursynth as vs
from vapoursynth import core

import fvsfunc as fvf
import descale
import MaskDetail as maskD
Import script ke file manaria01_descale.vpy
Import script ke file manaria01_descale.vpy

Selanjutnya import video yang ada dan buat outputnya dan coba klik F5

manaria01_descale.vpy
import vapoursynth as vs
from vapoursynth import core

import fvsfunc as fvf
import descale
import MaskDetail as maskD

src = core.ffms2.Source('Manaria Friends - 01v2 (AbemaTV 1080p).mkv')
src = fvf.Depth(src, 16)

src.set_output()
Import video (src) + dithering ke 16bit
Import video (src) + dithering ke 16bit
Output dari frameserver (F5)
Output dari frameserver (F5)

Itu basic dari importing video dan sebagainya, sekarang kita mulai mencoba descaling.

Descaling: For real

Video yang tak gunakan merupakan Manaria Friends, resolusi aslinya jika nggak salah itu 810p, jadi sekarang kita coba descale ke 810p.

manaria01_descale.vpy
import vapoursynth as vs
from vapoursynth import core

import fvsfunc as fvf
import descale
import MaskDetail as maskD

src = core.ffms2.Source('Manaria Friends - 01v2 (AbemaTV 1080p).mkv')
src = fvf.Depth(src, 16)

v = descale.Debicubic(src, width=1440, height=810, b=1/3, c=1/3, yuv444=True)

v.set_output()
Source 1080p
Source 1080p
Descaled 810p
Descaled 810p

Silakan gambarnya di buka di Tab baru agar lebih enak.

Selesai sudah, cukup segitu aja kalo emang cuma mau descaling video, gak ribet gak lama karena dah ada orang yang buat script descaling gini biar mempermudah orang lain.

Tapi kadang descaling gak bekerja dengan baik karena studio animasi suka nempel 1080p overlay (teks credit, dsb.) ke resolusi aslinya, jadi semua overlay 1080p pasti ancur.

Zoom in ke teks jepang, bisa diliat ada artifact halo/ringing
Zoom in ke teks jepang, bisa diliat ada artifact halo/ringing

Ada satu cara menghilangkannya, yaitu pake MaskDetail.

MaskDetail akan ngebuat mask pada teks credit dan sebagainya agar teks credit itu bisa menggunakan resizer biasa dibanding descaler agar tidak ada artifact

manaria01_descale.vpy
import vapoursynth as vs
from vapoursynth import core

import fvsfunc as fvf
import descale
import MaskDetail as maskD

src = core.ffms2.Source('Manaria Friends - 01v2 (AbemaTV 1080p).mkv')
src = fvf.Depth(src, 16)

v = descale.Debicubic(src, width=1440, height=810, b=1/3, c=1/3, yuv444=True) # Descaler
mask = maskD.maskDetail(src, 1440, 810, kernel='bicubic')
resizer = core.resize.Bicubic(src, width=1440, height=810, format=vs.YUV444P16) # Resizer, silakan ganti YUV444P16 menjadi YUV420P16 jika `yuv444=False`

mask.set_output()
Hasil mask
Hasil mask

Penutup

Selamat! sekarang anda tinggal encode dan nikmati hasilnya :D

Anime yang digunakan: Manaria Friends - 01
Source: AbemaTV

Bagaimana menurutmu postingannya?