조회 수 19294 추천 수 0 댓글 14
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

제목 그대로 minterpolate 필터를 이용해 부드러운 움직임을 가진 60fps 영상을 인코딩하기 위한 프리셋입니다. H264 버전과 HEVC 버전을 따로 만들었습니다. 소프트웨어 필터인 minterpolate를 집중적으로 사용하므로 하드웨어 가속을 위한 HEVC_NVENC 같은 인코더는 인코딩 속도 향상 효과가 거의 없습니다.

 

H264 minterpolate 59.94 fps (Video Only).xml

HEVC minterpolate 59.94 fps (Video Only).xml

 

---------------------------------------------------------------------------------------------------------

 

<간단한 배경 설명>

 

24fps, 30fps 등 낮은 프레임레이트를 가진 동영상을 SVP의 AviSynth 플러그인인 SVPflow plugin을 이용해 60fps 인코딩을 하거나 SVP 필터를 이용해 재생해서 보면 딱딱 끊어지던 움직임이 부드럽게 보입니다. 이는 기존에 없던 프레임들을 기존의 프레임들을 이용해 움직임을 보정해(motion compensated interpolation) 생성한 후 사이사이에 끼워넣기 때문입니다.

 

( 참고 포스팅: http://spirton.com/convert-videos-to-60fps/ )

 

FFmpeg가 갖고 있는 필터들 중 frame rate 변경을 위해 많이 쓰는 framerate 필터는 이 motion compensated interpolation 알고리즘이 없이 단지 기존의 프레임들을 적당히 average out한 프레임들을 삽입하기 때문에 잔상이 필연적으로 보이게 되어 만족스러운 화질을 만들어내지 못합니다.

 

따라서 부드러운 움직임을 위해 프레임 더블링을 하고자 한다면 FFmpeg의 필터 중 움직임과 관련한 여러 알고리듬을 적용할 수 있는 minterpolate 필터를 이용해야 합니다.

 

---------------------------------------------------------------------------------------------------------

 

<프리셋 세부사항 설명>

 

필터 매개변수에 대한 설명은 아래와 같습니다.

 

=============================================================================

 

minterpolate=fps=60000/1001:mi_mode=mci:mc_mode=aobmc:me_mode=bidir:me=epzs:vsbmc=1

    // fps(frames per second)를 59.94로 설정

    // mi_mode(motion interpolation mode)를 mci(motion compensated interpolation)로 설정

    // mc_mode(motion compensation mode)를 aobmc로

    // me_mode(motion estimation mode)를 bidir(bidirectional)로

    // me(motion estimation algorithm)를 epzs로 설정 (중요한 부분임.)

      // 화질 순서: esa >> umh >= epzs >> 나머지 알고리듬들

      // 인코딩 속도: 나머지 알고리듬들 >= epzs >> umh >>>>>>>> esa

      // 화질 대비 epzs가 가장 효율적인 알고리듬임.

    // vsbmc(variable-size block motion compensation)을 on으로...

    // 자세한 설명은 http://ffmpeg.org/ffmpeg-filters.html#minterpolate 참고

 

=============================================================================

 

인코딩 설정값 중 중요한 부분은 아래와 같습니다.

 

=============================================================================

 

 -r 60000/1001

    // 반드시 필터의 fps 값과 동일한 값을 설정

 

=============================================================================

 

나머지 부분은 다른 프리셋을 참고하시면 충분히 이해하실 수 있을 겁니다.

 

---------------------------------------------------------------------------------------------------------

 

<프리셋의 한계>

 

1. 속도가 상당히 느립니다. (2~3fps 정도) 그리고 아직 최적화가 안 돼 있는지 CPU 점유율이 50% 정도밖에 되지 않습니다.

 

2. 결과물을 보면 움직임은 부드러우나 가끔 급격한 움직임을 보이는 물체의 경계 부분이 과도하게 blur돼 있는 것을 확인할 수 있습니다. 이런 현상은 AviScript의 SVPflow 플러그인을 적용한 MeGUI 인코딩에서도 마찬가지로 나타나며, SVP 필터를 이용한 실시간 프레임 더블링 재생시에도 나타납니다. 따라서 이는 하드웨어의 한계이거나, motion compensated interpolation을 적용하는 필터들이 현재 갖고 있는 한계로 판단됩니다.

 

---------------------------------------------------------------------------------------------------------

 

<주의 사항>

 

1. 원본이 interlace돼 있는 영상이라면 반드시 yadif 같은 deinterlacing filter를 먼저 적용해서 progressive 영상으로 변환시켜야 합니다. 마찬가지 맥락에서, 원본이 telecine돼 있는 영상이라면 반드시 IVTC(inverse telecine) 처리를 먼저 한 다음 적용해야 합니다.

 

2. 이 프리셋은 minterpolate 필터를 이용해 23.976fps(=24000/1001)의 원본 영상을 59.94fps(=60000/1001)의 영상으로 인코딩하기 위해 설정한 것입니다. 따라서 원본에 drop-frame이 없을 경우 (즉, 나누기 1001을 하지 않고 정수로 깔끔하게 떨어지는 프레임레이트일 경우) 나누기 1001을 제외해서 적절하게 변경하시는 것이 좋습니다.

 

3. 오디오는 없이 비디오만 인코딩하는 프리셋이니 오디오 인코딩은 적절하게 세팅해 주시기 바랍니다.

 

4. 이 프리셋은 minterpolate 필터가 지원되는 샤나인코더 4.9.0.1 버전 이상에서만 작동합니다.

 
Facebook Twitter Pinterest Kakao
  • ?
    JKyle 2018.07.16 21:00

    위 프리셋을 이용한 인코딩 output과 MeGUI에서 인코딩된 영상, framerate 필터를 이용해 frame doubling한 영상과의 비교는 아래 포스팅을 참고하시기 바랍니다.

     

    https://shana.pe.kr/index.php?mid=shanaencoder_tip&document_srl=51150

     

  • ?
    Prophet 2018.07.25 18:46
    Did you mean that this filter can convert 24fps into 60fps?
  • ?
    JKyle 2018.07.27 11:15
    Yes.
  • ?
    핥아버지 2018.07.27 11:57

    24프레임이랑 25프레임 30프레임들은 1001 숫자가 어떻게 되나요?

  • ?
    JKyle 2018.07.27 16:26
    원본 동영상 프레임레이트를 Mediainfo로 확인하시고 소수점 아래 숫자가 있으면 (23.976이나 29.97 같이) 60000/1001, 즉 59.94로 하시고 정수로 딱 떨어지면 (예를 들어 24나 25, 또는 30 같이) 그냥 60으로 하시면 됩니다.
  • ?
    아렌티 2018.08.07 01:58
    매개변수에는 그대로 60000/1001로 하나요? 아니면 매개변수에서도 변경하나요?
    인코딩 설정에서는 60으로 변경했는데..
  • ?
    JKyle 2018.08.07 12:00
    인코딩 설정값과 매개변수 설정값은 같아야 합니다. 즉 둘 다 60.
  • ?
    아렌티 2018.08.09 21:45
    답변 감사합니다 ㅎ
  • ?
    초코보잉 2018.08.17 15:01

    자료감사합니다. 말씀대로 속도는 정말 절망적이네요. 대략 30초짜리 영상 인코딩 하는데도 거의 40분가까이 걸리는 마법이...

  • ?
    JKyle 2018.08.18 05:39

    아무래도 CPU만을 이용해 많은 계산을 하다 보니 속도는 어쩔 수 없는 것 같습니다. 소프트웨어 필터의 한계죠.

     

    프레임 더블링 기능이 꼭 필요하시다면 굳이 재인코딩하실 필요 없이 SVP를 이용해 재생시에 실시간으로 컨버팅해서 보시는 방법을 추천합니다.

    https://www.svp-team.com/wiki/Main_Page

    하드웨어 사양이 받쳐줘야 하고 경계 부분의 뭉개짐이 어느 정도 보여 약간 거슬리긴 하지만 그런대로 쓸 만합니다. 일단 무료라서... ^^

     

    $25을 지불하신다면 SVPcode를 이용해 하드웨어 인코더를 통한 재인코딩이 가능하다고 합니다.

    https://www.svp-team.com/wiki/Manual:SVPcode

    (자체 내장한 FFmpeg를 이용해서 재인코딩하는 듯.)

    꽤 속도가 빠르게 나오는 것 같습니다. 단, 결과물의 퀄리티가 어떤지는 저도 안 써봐서 모릅니다.

  • ?
    우헤헤 2019.05.12 20:09
    초보인데용.. 프리셋 세부사항 설명부분 어디서 설정해야하는지...막힌거같네요 =ㅅ=;;;;

    알려주실 멋진 분 없으실까요...
  • ?
    엘랴샨 2023.04.02 18:15
    F8 눌러보세요
  • ?
    stax 2020.12.15 19:54

    Hi, thanks for all awesome presets. I just tested this. Look like cannot use this minterpolate on very large file/bitrate.
    Error in log: "Failed to configure input pad on Parsed_minterpolate_0"
    Didn't test on small file though. I encode very large file with HEVC NVENC, usually about 500K-2M bitrate, so... This kind of error, same like when I use CUDA NVDEC for decoding. Despite that CUDA seems like giving better output than using CPU for decoding in term of picture quality (I use my eyes ^^), I have no choice but to choose software decoding. Also, on my system, software decoding is much much faster than hardware, and final quality difference is minimal with QP 0. It saves time though.

  • ?
    츽힌 2022.04.23 12:41
    factually,
    Because of the intensive use of minterpolate, a software filter, encoders such as "HEVC NVENC" for hardware acceleration have little to no encoding speedup.

List of Articles
번호 제목 글쓴이 날짜 조회 수 추천 수
공지 샤나인코더 기본 프리셋(v6.0 버전) file Rina 2023.08.17 8048 1
37 레터박스 대신 흐린 원본 영상을 배경으로 까는 프리셋 4 file JKyle 2018.11.05 5561 3
36 영상에 텍스트 로고를 입히는 프리셋 file JKyle 2018.10.11 4630 2
35 HEVC(x265) 2패스 인코딩 프리셋 2 file JKyle 2018.09.15 12677 1
34 인코딩된 파일의 PSNR, SSIM 값 계산을 위한 프리셋 1 file JKyle 2018.09.05 4378 0
33 HEVC(x265) 디테일 개선을 위한 프리셋 14 file JKyle 2018.08.30 19289 3
32 오로지 확장자만 변경하기 위해서 만든 프리셋 1 file 문화보호물 2018.07.28 8602 0
» 부드러운 움직임의 60fps 인코딩 (minterpolate 필터를 이용) 14 file JKyle 2018.07.16 19294 0
30 HEVC(NVENC)를 이용한 일반 HDR 동영상 인코딩 4 file JKyle 2018.07.16 7673 1
29 HDR -> HDR(HDR10) 인코딩 (HEVC(x265), 1080p) 9 file JKyle 2018.06.25 12413 3
28 HDR -> SDR 변환 (H264(x264), 1080p) ⇦ 사용하지 말 것 7 file JKyle 2018.06.25 9367 0
27 HEVC(NVENC) 화질 향상 프리셋 19 file JKyle 2018.06.19 18021 2
26 HEVC 영상의 코덱 ID만 hev1에서 hvc1으로 변경하는 프리셋 4 file JKyle 2018.05.21 6998 2
25 VP9, Opus 코덱으로 인코딩하는 WebM 프리셋 (1080p, 720p, VOD 용) 5 file JKyle 2018.05.20 5903 0
24 A slow but high quality and low size x264 setting 4 file Prophet 2018.05.20 3832 2
23 그랜져 IG 블루링크2.0 고화질용 8인치 네비 file 흠냐룽 2018.02.16 5067 0
22 2160p to 1080p 변환 (수정) 2 file 황금별똥 2018.01.29 8598 0
21 [수정 - 속도 개선판][느림주의!!]HEVC 고급설정 프리셋 - 블루레이 백업용 11 file JohnMunga 2017.04.20 19415 0
20 H264 고급 설정 (백업용) 2 file 리미터 2017.03.05 24005 1
19 TV시청용 초고속 자체자막 프리셋 // NVENC 지원 그래픽카드전용 1 file 겨울에냉수마찰 2017.02.09 10301 1
18 x265 고급설정 프리셋 6 file 마루 2017.02.03 14090 4
Board Pagination Prev 1 2 3 Next
/ 3