MeGUI 인코딩 화질 선명하게

Posted by Programmer™
2017. 4. 13. 21:23 Utility

Lanczos 필터만 쓰면 영상 품질이 또렷하지가 않습니다.

 

같은 영화인데도 본인이 인코딩한것은 화질이 그저그런데, 다른 분들이 인코딩한것은 화질이 또렷한 경우를 경험하셨을겁니다.

 

이런 경우는 Sharpen 필터를 따로 한번 더 적용해줘서 그렇습니다.

 

아래는 많이 쓰이는 LimitedSharpenFaster 필터에 대한 간단한 예제입니다.   

 

# Set DAR in encoder to 8640 : 4739. The following line is for automatic signalling
global MeGUI_darx = 8640
global MeGUI_dary = 4739

 

Import("D:\ZMEGUI\tools\avisynth_plugin\LimitedSharpenFaster.avsi")
Import("D:\ZMEGUI\tools\avisynth_plugin\QTGMC-3.32.avsi")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\masktools2.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\RgTools.dll") 
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\warpsharp.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\mvtools2.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\nnedi3.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\immaavs.dll") 

LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, threads=0)

LoadPlugin("D:\ZMEGUI\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("G:\VTS_01_1.d2v", cpu=4, info=3)

#deinterlace
QTGMC(Preset="Very Fast")
SelectEven() # 원래 프레임율을 유지하려면 이 문장을 추가합니다. 빼면 2배의 프레임율이 됩니다.
LimitedSharpenfaster( ss_x=1.5, ss_y=1.5, dest_x=last.width, dest_y=last.height,
 \ Smode=3, strength=192, radius=2,
 \ Lmode=1, wide=false, overshoot=1,
 \ soft=0, edgemode=0, special=false,
 \ exborder=0)

#crop
Lanczos4Resize(1280,720)
#denoise
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\UnDot.dll")
Undot() # Minimal Noise

 

LimitedSharpenFaster :

limitedsharpenfaster.zip
다운로드

 

Masktools2 : https://github.com/pinterf/masktools/releases/

 

RgTools : http://github.com/pinterf/RgTools/releases

 

WarpSharp :

warpsharp_20080325.zip
다운로드

 

 

 

사용 문법에 관한 자세한 내용은 아래 URL 참고하시기 바랍니다.

 

http://forum.doom9.org/showthread.php?t=156028

http://avisynth.nl/index.php/LimitedSharpen

 

 

LimitedSharpenFaster (clip clp, float "ss_x", float "ss_y", int "dest_x", int "dest_y", int "Smode" , int "strength", int "radius", int "Lmode", bool "wide", int "overshoot", int "undershoot", int "soft", int "edgemode", bool "special", int "exborder" )


clip   =
Input clip.

 

float  ss_x = 1.5
float  ss_y = 1.5
Supersampling when > 1, which reduces aliasing on edges.

 

float  dest_x = width
float  dest_y = height
Resize directly to final size, saves a resize step.

 

int  Smode = 3
Sharpen mode:

Each mode has progressively less haloing in its sharpening.

 

int  strength = 160
Sharpening strength:

  • For Smode=1, it can be 0~127 (simple sharpening), 128~255 (simple overdrive), 255~4096 (big overdrive).
  • For Smode=2, values 0~100 are handled over to Sharpen() as 0.0~1.0. Values >100 are mapped to 100.
  • For Smode=3, 0~100 is common, but 100~inf. can be used if necessary.

Default is strength=160 for Smode=1, and strength=100 otherwise.

 

int  radius = 1
Radius of UnsharpMask, only used in Smode=1. Range: 1 to 10

 

int  Lmode = 1
Lmode:

  • 0 : No effect
  • 1 : Clamp to over/undershoot.
  • 3 : Zero over/undershoot on edges, normal over/undershoot on not-edges.


bool  wide = false
With wide=true, the local [min,max] limits are gathered from the 5x5 neighborhood, instead just 3x3. Enables more gain in detail contrast. Increasingly useful with increasing supersampling factors.

 

int  overshoot = 1
Sharpening limit: a sharpened pixel may not exceed [min,max] of the local neighborhood by more than 'overshoot'. (High values remove the "Limited" of LimitedSharpen, and cause excessive haloing.)

 

int  undershoot = [overshoot]
Separate limit for pixels that get darker during sharpening. Good for cartoons with strong lines. (If not specified, then undershoot==overshoot.)

 

int  soft = 0
Softens the effect of sharpening. -1 will (try to) autocalculate a good value. Range: 0 to 100

 

int  edgemode = 0

  • -1 : shows edges.
  • 0 : does nothing.
  • 1 : restricts sharpening to edges
  • 2 : restricts sharpening to mostly non-edges (I think?)


bool  special = false
special=true tries to raise detail contrast in dark areas of a frame. (Usage not really recommended - the method is simple and might cause artefacts.)

 

int  exborder = 0
Border exclusion; range: 0 to 16

MeGUI 로 동영상에 LOGO 넣기

Posted by Programmer™
2016. 7. 4. 13:54 Utility

우선 아래의 immaavs 라는 플러그인이 필요합니다.

http://www.blainehelmick.com/hosted/immaavs/immaavs.rar 

immaavs.zip

 

다운로드 받고 나서 MeGUI 가 설치된 폴더의 tools\avisynth_plugin 에 immaavs.dll 을 복사합니다.

사용법은 아래와 같습니다.

single picture:
immareadpic("x:\path\pic.bmp")
animation:
immareadanim("x:\path\anim.gif")
image sequence:
immareadseq("x:\path\seq%3.3d.png", start=5, stop=89, fps=25, textmode=2, posx=50, posy=50)

그럼 이제  avisynth 스크립트를 편집해 볼까요. 기존의 스크립트에 아래의 녹색 부분을 추가하여 줍니다.

 

 

# immaavs 플러그인을 불러들입니다. (# 이후는 주석으로 처리됩니다.)

LoadPlugin("D:\Utility\MeGUI_2624_x86\tools\avisynth_plugin\immaavs.dll") 

# 불러들일 로고파일을 적절하게 크기조절합니다. png 파일의 경우 로고 뒤의 배경이 투명하게 출력가능합니다.

b = immareadpic("D:\LOGO.png").lanczosresize(120,50)

# 로고 파일의 투명도와 출력될 좌표를 지정합니다.

r1 = overlay( b, opacity=0.27, mask=showalpha(b), x=717, y=16)

return r1

Preview AVS Script 를 클릭하여 로고가 원하는 위치에 제대로 출력되는지 확인합니다.

그리고 스크립트 파일을 save 하고 나서 인코딩을 해주면 됩니다.

# Set DAR in encoder to 175 : 96. The following line is for automatic signalling
global MeGUI_darx = 175
global MeGUI_dary = 96
LoadPlugin("D:\Utility\MeGUI_2624_x86\tools\ffms\ffms2.dll")
LoadPlugin("D:\Utility\MeGUI_2624_x86\tools\avisynth_plugin\immaavs.dll") 
LoadPlugin("D:\Utility\MeGUI_2624_x86\tools\avisynth_plugin\UnDot.dll")

FFVideoSource("G:\원본파일.mp4", fpsnum=30000, fpsden=1001, threads=1)
#deinterlace
#crop
#resize
#Lanczos4Resize(856,480)

b = immareadpic("D:\LOGO.png").lanczosresize(120,50)
r1 = overlay( b, opacity=0.27, mask=showalpha(b), x=717, y=16)

Undot() # Minimal Noise
return r1

 

 

MeGUI 미구이로 DVD 를 mkv 로 변환

Posted by Programmer™
2015. 12. 4. 16:21 Utility

MeGUI.exe 를 관리자 권한으로 실행시킵니다.

Tools 메뉴에서 AVS Script Creator 를 선택합니다.

 

 

 

... 를 클릭하여 DVD에서 파일을 불러옵니다.

 

 

VIDEO_TS 폴더에 파일들이 여러개 있는데 VIDEO_TS.VOB 파일을 불러옵니다.

만약 이 파일이 없으면 번호가 가장 빠른 .VOB 파일을 불러와 작업을 해줍니다.

 

 

 

One Click Encoder 를 선택합니다.

 

 

챕터 갯수가 가장 많은 것을 선택하고 OK를 클릭합니다. DVD 에 따라서 아래 창이 안 나오는 경우도 있습니다.

 

 

Show Advanced Settings 를 선택해줍니다.

 DVD 에는 기록할 수 없으므로, 하드디스크로  파일이 출력되는 폴더를 적당히 지정해줍니다.

지정이 끝났으면 Advanced Config를 클릭합니다. 

 

 

 

Video Settings 에 있는 Config 를 눌러줍니다.

 


 

 아래 화면처럼 x264 설정값들을 적절히 바꿔주고 Update 클릭후 OK를 클릭합니다.

(다른 내용들은 여기서 다루지 않습니다. 850 × 480 의 경우 비트레이트가 2000 정도면 무난합니다.

1280 x 720 의 경우 비트레이트가 2700 정도가 괜찮습니다.

Encoding Mode 를 Const. Quality 로 준 경우 Quality 를 20 으로 주면 1.31 GB 정도의 파일이 만들어졌습니다.

19로 줬더니 1.50 GB,  21로 줬더니 1.15 GB 의 파일이 만들어졌습니다.)

 

 

해상도를 바꾸고자 하는 값으로 바꿔줍니다. 여기서는 856 으로 바꿔주었습니다.

Avisynth Profile 의 Config를 눌러줍니다.

Lanczos4Resize(856,480) 을 추가합니다.

 

<denoise> 아래 줄에는 다음 두 줄을 추가해줍니다.


LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\UnDot.dll")
Undot()                                                                    

 

주석을 추가하고 싶으면 줄 앞에 # 기호를 붙여주면 됩니다. ( 예: #Spline36Resize(1280,720) )

보통 DVD 는 720×480 의 해상도를 갖는데 여기서 우리는 856×480 의 해상도를 갖는 mp4 파일을 만들것을 명령하는 겁니다.

 

 

Lanczos4Resize(720,480).addborders(280,120,280,120) 는

원래 DVD 원본 해상도인 720x480 에 검은 테두리 영역을 추가하여 1280x720의 해상도를 만들어주는 명령어입니다.

간혹 메뉴화면의 경우 크기를 늘리면 화질이 심하게 깨지는 경우가 있는데 이럴때 요긴합니다.

 

Extra Setup 을 아래처럼 고쳐주고 Update 를 누르고 OK를 클릭합니다.

 

 

다시 General 로 돌아와서 Output 에 있는 Config를 클릭합니다.

 

 

해상도를 아까 해줬던 값으로 여기서도 바꿔줍니다. 

AutoCrop 을 해주면 화면 가장자리의 검은 테두리 영역을 없애줍니다.

 


 

.mp4 파일을 만들고 싶은 경우에는 여기에서 mp4 를 선택합니다.

 

 

 

Output 은 최종 파일이 만들어지는 곳이며,

Working 은 작업 과정중에 중간에 생성되는 다양한 파일들이 저장되는 곳입니다.

Update를 클릭하고 OK를 눌러줍니다.

 

 

이제 마지막으로 Go 버튼을 클릭해줍니다.

 


아래 그림처럼 변환작업이 시작됩니다.

이제 변환작업이 다 끝날때까지 기다립니다.

(작업이 자동으로 시작되지 않는 경우에는 Queue 탭으로 가서 Start를 눌러주면 변환작업을 시작하게 됩니다. )

 




 

AviSynth Script 에 대해 더 자세히 알고 싶으신 분은 아래 웹페이지 참고하세요.

http://avisynth.nl/index.php/Main_Page

 

MeGui 미구이로 720p -> 480p 변환하기 (2)

Posted by Programmer™
2014. 5. 21. 14:20 Utility

Audio 부분의 Encoder Settings 를 Nero AAC *scratchpad* 로 바꿔줍니다.
만약 표시되지 않는다면 neroAacEnc.exe 가 제대로 복사되었는가 확인해보세요. 아래처럼 바꿔주고, 메뉴의 Tools - AVS Script Creator 를 클릭합니다.

Video Input 오른쪽의 ... 를 클릭해서 변환하고자 하는 원본 파일을 불러옵니다.

원본 파일을 지정해주면 아래창이 뜹니다. 여기에서 File Indexer 를 선택해줍니다. 만약에 프레임수를 바꿔주고 싶다면 DirectShowSource 를 선택해야 합니다. 예를 들어 원본 동영상이 59.940 fps 인데 이것을 30 fps 로 바꾸고자 할때이다. 프레임 수가 많으면 매끄럽게 재생할수 있다는 장점(특히 축구 경기 같은 경우)이 있지만, 시스템 사양이 떨어지는 기기에서 30 프레임 이상은 낭비입니다. 사양이 떨어지는 기기에서 60 fps 를 재생하면 마치 슬로우비디오 모드처럼 재생되는 현상을 가져오게 됩니다.

아래와 같이 선택해주고 Queue 를 클릭합니다.

.ffindex 와 _track_1_.avs 파일을 만들어주는 작업이 시작됩니다.

FFMS index 를 만드는 작업이 끝나면 아래 화면이 나옵니다.

원본 파일의 해상도가 1280 x 720 임을 알 수 있군요.

Resize 옆의 해상도 부분을 856 480 으로 바꿔주고  Filters 탭으로 가서 Analyse 버튼을 클릭해주고 작업이 끝날때까지 기다립니다.

분석이 끝나면 비어있던 Source type 에 내용이 표시됩니다. 거의 대부분 Progressive 타입입니다.

LOGO 를 넣고자 한다면 여기 Script 탭에서 내용을 추가해줍니다. (MeGUI 로 동영상에 LOGO 넣기 참고. 넣을 필요가 없다면 통과)

Resize Filter가  원하는 필터인지 확인하고 이제 Save 를 클릭합니다. 

그럼 아래와 같이 각 내용이 채워진 화면이 나옵니다. Encoder setting 오른족에 있는 Config 를 클릭합니다.

x264 코덱 부분을 설정해주는 화면이 나옵니다.  Show Advanced Settings 를 체크해주면 AVC Profile 과 Level 을 선택할수 있습니다.

  • Baseline Profile : 주로 비디오 채팅이나 모바일 쪽 기기를 위한 프로파일이다. 
  • Main Profile: SD (Standard-Definition) 디지탈 TV 용 프로파일이다.
                       2004년에 High Profile 이 나옴으로서 중요도가 많이 사라졌다.
  • High Profile: HD (High-Definition)  디지탈 TV 용 프로파일이다.
                       블루레이 디스크에서 채택한 프로파일이다. 

아래는 자주 쓰이는 SD, HD, FHD 해상도의 몇가지만 추려낸 각 Level 에 따른 값들입니다.
우리가 만들려는 해상도는 848 x 480 이므로 Level 3.1 이 적당하겠군요.

※ 보다 자세한 사항은 http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels 를 참고 하시기 바랍니다.

Level 

Max video bit rate for video coding layer (VCL) kbit/s 

 Examples for high resolution
@ highest frame rate

 Baseline, Extended
and Main Profiles

High Profile

 High 10 Profile

 3.0

 10,000

 12,500

 30,000

 352×480@61.4 (12)
 352×576@51.1 (10)
 720×480@30.0 (6)
 720×576@25.0 (5)

 3.1

 14,000

 17,500

42,000

 720×480@80.0 (13)
 720×576@66.7 (11)

 1280×720@30.0 (5)

3.2

20,000

25,000

60,000

 1,280×720@60.0 (5)

 1,280×1,024@42.2 (4)

4.1

50,000

62,500

150,000

 1,280×720@68.3 (9)
 1,920×1,080@30.1 (4)
  2,048×1,024@30.0 (4)

4.2

50,000

62,500

150,000

 1,280×720@145.1 (9)
 1,920×1,080@64.0 (4)
 2,048×1,080@60.0 (4)

 

 Frame-Type 탭에서 Adaptive B-Frames은  2-optimal 로 해줍니다. 그리고 Update와 OK를 차례로 클릭합니다.

이번에는 AutoEncode 를 클릭합니다. 

Automatic Encoding 창에서 No Target Size 를 선택한 경우 우리가 앞에서 update 해줬던 프로파일 설정에 맞추어 인코딩하게 됩니다.

Average Bitrate 값을 조절하여 만들어질 파일 크기를 대충 알 수도 있습니다. 하지만 이 경우 우리가 update 해줬던 설정내용은 무시됩니다.

이제 설정이 끝났으면 Queue 를 클릭합니다. (자동으로 시작되지 않는 경우엔 Queue 탭에 가서 Start 를 클릭합니다.)

job2 부터 job5 가 끝날때까지 기다립니다.

 

Queue 탭을 보면 각 작업과 진행 상태, 만들어지는 출력 파일등을 한 눈에 볼 수 있습니다. 

드디어 [Caribbeancom]4593.mp4-muxed.mp4 파일이 만들어졌습니다. 이제 스마트폰에 넣고 즐감하시면 됩니다.