[Fansubbing] VFR encoding

delacroix01

Eroge Addict
Messages
852
Reaction score
131
Points
43
Credits
0
120fps AVI --> VFR MKV hardsubbed

Down AVI2TC package trên avisynth.org về. Tiếp theo mở tc-GUI lên, chọn tab cfr2tc, chọn file AVI cần encode, mode = 5 (v1 timecode file, AVS output). Chọn output AVS và timecodes file rồi bấm run. Chờ vài giây sau ta sẽ có file timecodes. Tiếp theo mở file AVS bằng Aegisub, load file sub và timecodes file vừa generate. Tiếp đến chọn Export, đánh dấu vào Transform framerate>Variable rồi save lại thành file mới. Nhớ là phải điền đúng FPS assumed trong timecodes file. Tiếp tục mở file AVS bằng Notepad và edit lại, thêm filter cần thiết, thêm sub. Tiếp tục mở bằng VirtualDubMod, encode lại. Cuối cùng dùng mkvmerge để mux file vừa encode cùng với file timecodes. Bấm Start muxing, ta sẽ có 1 file MKV VFR với hardsub chạy ko bị lệch Cool and cute

Assume FPS khi encode VFR :

ClipX = Trim(begin, end).SelectEvery(x, 0).AssumeFPS(30000, 1001)

Trong đó : Begin, end, x là số nguyên dương

x = Round(119.88/fps)

Update : http://forums.animesuki.com/showthread.php?t=34738

WMV files -> VFR MKV

Trong các dạng vfr thì đây là dạng evil nhất, cần xử lý khá phiền phức. Cách thức như sau :

- Lên http://haali.cs.msu.ru/mkv/ down Matroska Splitter package về. Chú ý đây ko phải bộ Splitter của Haali dùng khi play, mà là bộ dùng cho encode. Cài bộ package này vào.
- Chạy gdsmux trong thư mục đã cài. Right Click vào vùng trắng trong chương trình, chọn Add source, chọn file wmv cần mux. Nhớ chọn All files trong phần file types. Phần audio có 2 tùy chọn, hoặc dùng DirectShowSource decode nó từ file wmv ra để decode ra wav từ trước, hoặc decode ra wav vào lúc này bằng cách chọn Encode>PCM. Video thì khỏi re-encode, cứ mux trực tiếp rồi lát tính.
- Chọn output với đuôi mkv, bấm start và ngồi chờ khoảng 1 phút cho nó làm xong (với 1 ep anime). Nếu extract video stream từ file mkv này ra đảm bảo sẽ nhận được 1 cái timecode CFR mặc dù file là vfr, vì căn bản WMV ko tương thích tốt với MKV. Để lấy timecode, vào Command Prompt, chuyển sang thư mục có chứa bộ splitter vừa cài và gõ :

Code:
mkv2vfr test.mkv test.avi timecode.txt
- Ngồi chờ 1 lúc ta sẽ có file timecode v1. Lúc này có thể sử dụng DirectShowSource để encode ra 1 file fake CFR từ file WMV lúc đầu hay file MKV tạo hồi nãy, hoặc dùng AVISource encode từ file AVI vừa tạo. Cuối cùng mux lại với file timecode là xong.

Edit : Cách làm trên đây chỉ chính xác ở mức tương đối. Nhiều lúc mux lại vẫn sai như thường do timecode của WMV rất quái gở. Lúc đó chỉ còn 1 cách là convert CFR mà làm.

YATTA (Yet Another Telecide Tool for Anime) :

http://forum.doom9.org/showthread.php?s=&threadid=64440
 

delacroix01

Eroge Addict
Messages
852
Reaction score
131
Points
43
Credits
0
Related convo

Tình hình là hardsub kara với vfr ổn rồi . Chỉ là ko hiểu tại sao encode hoàn tất, xem lại mới thấy thiếu mất gần 25s cuối video >.<
Kaitou said:
Ah tớ cũng làm như thế thôi chứ có khác gì đâu .
Encode xong mọi thứ vẫn ổn, vfr kara fx synch đều tốt, nhưng không biết vì sao mà video bị ngắn đi mất 25s .
Có 1 thằng trên animesuki nó cũng bị hơi giống như tớ (video stream ngắn đi 4s)

I freaking hate VFR. So, I noticed that, with my lossless encode (at 25 fps), the karaoke was syncing perfectly (well, the OP at least...).

So I went and made the frames that the OP is in 25 fps in the timecodes file. Hurray. OP syncs perfectly... BUT WHAT? The duration of the video is now 4 sec shorter. Goodbye audio sync in the rest of the episode.
here : http://forums.animesuki.com/showpost.php?p=1294443&postcount=144

Còn cái link trên kia cậu đưa tớ có lần đọc qua rồi ^^" . Lúc đấy nhìn avatar và location là biết dêlạclối nhà ta : ))

Còn script thì tớ dùng như sau :
DirectShowSource("raw.mkv", audio=false, fps=23.976).AssumeFPS(23.976023976)
ConvertToYV12()
BicubicResize(1280,720)

#some filters here

Textsub("OP_ED_VFR.ass")
del said:
DirectShowSource("raw.mkv", audio=false, fps=23.976).AssumeFPS(23.976023976)
Thế này là sai to rồi còn gì. :| Nhìn lại cái script kia đi. Đã khai báo FPS là 23.976 mà lại assume cùng fps thì cũng bằng không. Cứ khai báo 29.97 rồi hẵng assume là 23.976. Khi đó nó sẽ dư ra 1 khúc loop frames. Trim 1 đoạn bằng đúng số frame nhìn thấy trong timecode là xong.
 
Top