조회 수 15516 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

라이센스에 발목잡힌 HEVC을 대신할 차세대 (무료) 영상 코덱으로 기대를 한몸에 받고 있는 AV1이 현재 어디까지 개발되고 있는지 실제 인코딩을 해봄으로써 테스트했습니다. AV1 코덱에 대해서는 위키피디어의 해당 문서를 참고하십시오.

 

일단 AV1이 금년 3월 비트스트림 스펙 표준안이 확정되고 표준 코덱 개발이 발표된 매우 초기의 코덱이라는 것을 유념하실 필요가 있습니다. 따라서 아직은 많은 부분에서 불완전하고 불안정해서 오류도 잦고 속도도 무척 느립니다.

 

마소리스님의 포스팅에서도 AV1 인코딩에 대해 잠깐 언급하고 있지만, 이 포스팅은 순전히 AV1에 대해서만 초점을 맞추고 실제 윈도우에서 AV1 인코딩을 어떻게 진행하는지에 대한 설명까지 곁들였습니다.

 

우선 현재 개발되고 있는 AV1 코덱을 간략하게 정리하면 다음과 같습니다.

 

인코더 디코더 FFmpeg에 포함 여부 개발 기관
libaomaomenc libaom의 aomdec 둘 다 libaom-av1으로 래핑됨 AOM(Alliance for Open Media)
rav1e dav1d No rav1e: Xiph.Org
dav1d: VideoLAN

 

이 중 dav1d는 VLC의 개발기관이자 x264, x265 등을 지원하고 있는 VideoLAN에서 금년 10월 1일 개발이 발표된 걸음마 단계의 디코더입니다.

libaom은 AV1 코덱을 위해 설립한 AOM에서 주로 구글에 의해 주도되며 개발되고 있고, 그렇기 때문에 vpx 계열과 많은 부분이 유사합니다. 이 libaom 코덱이 AV1의 표준 코덱(reference codec)입니다.

rav1e는 ogg, theora, vorbis, opus 코덱 개발을 주도한 Xiph.org이 daala 코덱의 후속작 성격으로 개발하고 있는 AV1의 인코더입니다. libaom의 느린 속도를 극복하기 위해 개발하고 있는 인코더입니다.

 

현재 FFmpeg 기반 디코더들을 커스텀 빌드해서 내장하고 있는 다음 팟플레이어와 LAV filters는 AV1 디코딩을 지원하므로 팟플레이어와 MPC-HC에서 AV1 영상을 재생해서 보실 수 있습니다.

 

우리가 관심 있는 부분은 인코딩이므로 실제로 사용하게 될 방법은

  • 1) 독자적인(stand-alone) 바이너리로 빌드된 rav1e 실행 파일로 인코딩하거나 (rav1e 인코딩)
  • 2) 역시 독자적인 바이너리로 빌드된 aomenc 실행 파일로 인코딩하는 방법 (aomenc 인코딩), 그리고
  • 3) FFmpeg에서 libaom-av1을 호출해서 aomenc를 사용하는 방법 (aomenc 인코딩),

이 세 가지입니다. 이 중 제가 실제로 진행한 방법은 1)과 3) 두 가지입니다.

 

1. 인코딩 환경 구성

1) rav1e

  • 미리 빌드된 바이너리를 다운로드: 여기
  • media-autobuild_suite으로 FFmpeg를 커스텀 빌드하면서 독자적인 바이너리로 빌드 => 제가 사용한 방법

2) aomenc

  • 미리 빌드된 바이너리를 구함: 현재 윈도우 용으로 따로 배포하는 곳은 없는 것으로 알고 있습니다. (확인 필요)
  • media-autobuild_suite으로 FFmpeg를 커스텀 빌드하면서 독자적인 바이너리로 빌드
  • media-autobuild_suite으로 FFmpeg를 커스텀 빌드하면서 libaom을 래핑(--enable-libaom) => 제가 사용한 방법 1
  • libaom이 래핑된 FFmpeg 바이너리를 구해서 실행: 여기에서 Zeranoe의 FFmpeg 바이너리를 다운로드 => 제가 사용한 방법 2

 

aomenc에서 두 가지 방법을 병행한 이유는, libaom 최신 버전이 libvpx와 충돌해서 빌드 오류가 발생하거나, 빌드가 되더라도 인코딩/디코딩 단계에서 실패하거나 해서입니다. 서로 다른 버전 두 개를 구해서 되는 것으로 진행했습니다.

 

2. 인코딩 원본

마소리스님의 포스팅에서 사용한 심슨 극장판 예고편을 오디오를 없애고 25초부터 30초 길이를 잘라 원본으로 삼았습니다.

 

사용한 명령어:


ffmpeg -hide_banner -ss 00:00:25 -i "The Simpsons Movie - 1080p Trailer.mp4" -t 30 -an -c copy -y "The Simpsons Movie - 1080p Trailer clip.mp4"


 

생성된 원본 영상 특징:

비트레이트 6,008 kbps (21.9 MB), 길이: 30.57 초, 코덱: H264,  프레임수: 733 frames

 

유튜브 링크: https://youtu.be/7mUNKm8vdyk

원본 다운로드 링크: https://drive.google.com/open?id=1LSqiwal5kuL-WJSwrvtKzH6SgsZudP2A

 

3. rav1e 인코딩

참조 사이트: https://github.com/xiph/rav1e

 

rav1e는 input으로는 raw video format인 Y4M을, output으로는 간략한 vpx 계열 컨테이너 형식인 IVF만을 만들어 내므로 rav1e 인코딩 앞뒤로 FFmpeg를 통해 파일을 변환해야 합니다. 그냥 IVF 생성만으로 AV1 인코딩은 끝난 셈이지만 그것을 우리에게 익숙한 형식인 mkv나 webm으로 변환하기 위해서는 AV1 디코더(aomdec)가 libaom-av1으로 래핑된 FFmpeg의 도움이 꼭 필요합니다.

 

인코딩에 사용된 rav1e의 버전은 0.1.0입니다.

 

1) Y4M 파일 생성

사용한 명령어:


ffmpeg -hide_banner -i "The Simpsons Movie - 1080p Trailer clip.mp4" -y output1.y4m


 

실행 속도:

346 fps

 

생성된 영상 특징:

1.54 GB, 30.03 초, 720 프레임

 

2) IVF 파일 생성

사용한 명령어:


rav1e output1.y4m -o "The Simpsons Movie - 1080p Trailer clip.rav1e.q170.s3.ivf" --quantizer 170 --speed 3


quantizer 값이 작을수록 고화질

speed 값이 작을수록 고화질

눈에 띄게 뭉개지는 부분이 없도록 두 값을 조정함.

 

실행 속도:

약 0.14 fps (5,159 초 소요)

 

실제 진행 상황 및 CPU 점유 상황 스크린샷:

 

rav1e q200 s3 encoding progress speed.gif

<rav1e 인코딩 실제 진행 상황. 고정된 이미지가 아니라 움짤입니다.>

 

rav1e q170 s3 CPU usage status.png

<rav1e 인코딩 시 CPU 점유 상황>

 

생성된 영상 특징:

비트레이트 1,112 kbps (4.06 MB), 30.03 초

 

다운로드 링크: https://drive.google.com/open?id=1grAr_WdemxEpIC0lST7qyZGAcWtr-2ey (팟플레이어나 MPC-HC로 재생 가능)

 

3) MKV 파일로 변환

사용한 명령어:


ffmpeg -hide_banner -i "The Simpsons Movie - 1080p Trailer clip.rav1e.q170.s3.ivf" -c:v copy "The Simpsons Movie - 1080p Trailer clip.rav1e.q170.s3.mkv"


 

실행 속도:

959x, 즉 30.03/959 = 약 0.031 초

 

생성된 영상 특징:

비트레이트 1,135 kbps (4.06 MB), 30.03 초

 

유튜브 링크: https://youtu.be/pPJqZvvSUz0

 

4. aomenc 인코딩 (FFmpeg의 libaom-av1)

참조 사이트: https://trac.ffmpeg.org/wiki/Encode/AV1

 

FFmpeg의 AV1 인코딩은 비교적 간략합니다. FFmpeg 내에서 libaom-av1을 코덱으로 호출하여 mkv 포맷으로 인코딩하면 됩니다.

이때 퀄리티 모드, 2-패스 인코딩, 1-패스 인코딩 등 세 가지 방법이 가능한데 지나치게 긴 인코딩 시간 때문에 1-패스 인코딩만 실행했습니다.

 

인코딩에 사용된 libaom의 버전은 1.0.0-691-gbb8157b89입니다.

 

사용한 명령어:


ffmpeg -hide_banner -i "The Simpsons Movie - 1080p Trailer clip.mp4" -strict experimental -c:v libaom-av1 -b:v 1M -cpu-used 2 -y "The Simpsons Movie - 1080p Trailer clip.aom.1M.cpu2.1pass.mkv"


-strict experimental 옵션은 반드시 들어가야 함.

rav1e 인코딩 버전과 비교하기 위해 비슷한 비트레이트인 1 Mbps = 1,000 kbps를 선택함.

-cpu-used 값이 높을수록 인코딩 속도는 개선되나 화질은 저하됨. 기본값 1에서 약간 높은 값을 선택함.

 

실행 속도:

0.1 fps, 0.00302x => 30.03/0.00302 = 약 9,944초 소요

 

CPU 점유 상황 스크린샷:

 

FFmpeg libaom-av1 1M cpu2 1pass CPU usage status.png

<FFmpeg(aomenc) 인코딩 시 CPU 점유 상황>

 

생성된 영상 특징:

비트레이트 1,079 kbps (3.86 MB), 30.03 초

 

유튜브 링크: https://youtu.be/W7_QSw1qSQE

 

5. 결론

  • 아직은 인코딩 속도가 한심할 정도로 느립니다. 그나마 rav1e가 낫지만 두 배 가까운 속도 향상에도 불구하고 (또는, 그렇기 때문에) 화질은 aomenc보다 떨어집니다. 심지어 비트레이트가 더 높은데도 그렇습니다.
  • rav1e와 aomenc 둘 다 CPU를 충분히 활용하지 못합니다. 코어는 모두 사용하는 것으로 보이지만 CPU 점유율은 인코딩 내내 40% 대를 유지합니다.
  • 당연한 얘기지만, 아직 개발 초기이기에 호환성은 무척 낮습니다. 팟플레이어나 MPC-HC, mpv 같은 데스크탑 재생기에서는 재생이 가능하지만 재생 중 탐색이 무척이나 느리거나 아예 불가능합니다. 웹브라우저 내에 video 태그를 붙여서 재생하는 옵션은, 크롬 같은 경우 버전 70 이후부터 AV1 디코더가 지원되므로 아직은 불가능합니다. (관련 문서Firefox나 Opera 같은 경우에는 최근에 AV1 디코더를 지원하기 시작했고, Safari는 아직 지원이 되지 않고 있습니다. Edge에 대해서는 잘 모르겠군요.
  • 현재로서는 버그가 없으며 안정적이면서도 실용적인 속도를 낼 수 있는 수준까지는 갈 길이 멉니다.

 

이상입니다. 관심 있는 분은 코멘트 해주시기 바랍니다.

 

Facebook Twitter Pinterest Kakao
  • ?
    유토짱 2018.10.25 21:31
    새로운 기술들을 알게해줘서 감사합니다.
    HEVC.... 좋은기술인데.
  • ?
    JKyle 2018.10.27 18:26

    기술의 수명을 결정하는 것은 기술 자체의 유용성보다는 기술 외적인 요인, 특히 시장에서의 선택인 것 같습니다. VHS vs 베타도 그랬고, Dvorak vs Qwerty도 그랬고, 두벌식 vs 세벌식도 그랬듯이요.

     

    하지만 이 경우는 좀 다른 것이, HEVC이 현재 대중적으로 많이 이용되고 있어서 아직은 HEVC vs AV1 구도가 형성되고 있지는 않다는 거죠. 단지 업체들이 자신들의 필요(=라이센스 비용 절감)에 따라 그런 구도를 형성하려고 하고 있을 뿐입니다.

     

    그나마 엔드 유저 입장에서 볼 때 AV1이 HEVC보다 나은 점이라면, 설계 단계에서부터 그래픽 카드 제조업체들이 참여해서 코덱의 하드웨어 구현을 용이하게 만들도록 했다는 점이랄까요? HEVC보다 높은 복잡도를 갖고 있지만 어쩌면 HEVC보다 하드웨어 재생과 인코딩이 더 개선될지도 모른다는 희망(?)을 갖게 하는데, 물론 결과는 나와봐야 알 것 같습니다. 현재 예상으로는 내년 말이나 내후년 초쯤 돼야 AV1의 하드웨어 가속 디코딩/인코딩이 지원되는 그래픽 카드가 나올 거라고 하니 아직은 시간이 필요한 것 같습니다.

     

    재미있는 것은 HEVC을 만들었던 팀(MPEG & VCEG)이 다시 뭉쳐서 또 새로운 코덱을 만들고 있다는 겁니다. VVC(Versatile Video Coding)라는 이름으로 진행되고 있는데, 흥미로운 특징 중 하나가 동적으로 변화하는 영상의 특성들을 수용할 수 있게 한다(scalable video coding for temporal (frame rate), spatial (resolution), SNR, color gamut and dynamic range differences)는 겁니다. 그리고 이것 역시 AV1처럼 복잡도가 높아서 HEVC보다 10배 이상이라고 하는군요. 최종 표준안은 2020년 말까지 확정 예정이라니, 이건 AV1보다 갈 길이 더 먼 것 같습니다. 자세한 내용은 위키피디어의 해당 문서 부분을 참고하시길...

  • ?
    小樱 2018.12.10 21:28
    对的,现在单线程,但是google youtube采用了,肯定会成为国际标准,这点放心

  1. 소리를 4가지로 분리하는 샤나보컬리무버 프로그램을 소개합니다.

    Date2024.03.22 ByRina Reply0 Views14945 Votes5
    read more
  2. 샤나인코더 통합 검색 기능 개선(샤나인코더 우측 상단에 있는 검색창을 사용해 보세요.)

    Date2021.09.30 ByRina Reply0 Views29625 Votes2
    read more
  3. 자유게시판에서는 자유롭게 글을 작성할 수 있지만 다음과 같은 내용은 삭제돼요

    Date2020.03.18 ByRina Reply0 Views26958 Votes5
    read more
  4. [필독] 질문 전에 반드시 읽으세요!!!

    Date2019.09.16 Category일반 ByJKyle Reply3 Views47092 Votes7
    read more
  5. [알림] 질문 먹튀하지 마시기 바랍니다 => 본문 변경 금지

    Date2018.10.12 Category일반 ByJKyle Reply24 Views44535 Votes18
    read more
  6. 영상에 로고를 텍스트로 넣는 기능이 있나요?

    Date2018.10.11 ByII Reply2 Views1115 Votes0
    Read More
  7. AV1 코덱의 현재 상황 (인코딩 테스트 - FFmpeg 와 rav1e)

    Date2018.10.11 Category정보 ByJKyle Reply3 Views15516 Votes0
    Read More
  8. NVENC 10비트 인코딩 질문입니다.

    Date2018.10.10 ByRAPID Reply4 Views1797 Votes0
    Read More
  9. 영상사이즈 축소, 화질유지와 적정 비트레이트 관련하여 여쭤봅니다.

    Date2018.10.10 By빛이 Reply2 Views1591 Votes0
    Read More
  10. 원본파일 그대로 상하 검은바만 제거하려고 하는데 어떻게 하면 되나요?

    Date2018.10.10 By엔셜린 Reply2 Views3204 Votes0
    Read More
  11. ass 자막 폰트가 적용이 안돼요

    Date2018.10.09 By지지나 Reply1 Views2084 Votes0
    Read More
  12. libx264 코덱이 없는데 어떻게 해야되나요?

    Date2018.10.07 ByThe_MJ Reply4 Views2867 Votes0
    Read More
  13. 인코딩 옵션 질문입니다

    Date2018.10.06 By해피해피 Reply3 Views1914 Votes0
    Read More
  14. 샤나 인코더 관련 질문 입니다 화면 역전 관련요

    Date2018.10.05 By강대봉 Reply3 Views1103 Votes0
    Read More
  15. 잘라내기 할때 프레임으로

    Date2018.10.02 By핥아버지 Reply2 Views874 Votes0
    Read More
  16. 인코딩된 영상의 인코딩 세팅 알 수 있는 방법이 있을가요?

    Date2018.10.01 By상큼이 Reply7 Views1867 Votes0
    Read More
  17. 미드를 저용량으로 압축하고싶습니다.

    Date2018.09.30 ByASAP Reply2 Views2236 Votes0
    Read More
  18. 음성 딜레이 관련 질문드립니다

    Date2018.09.29 ByRTFM Reply3 Views3051 Votes0
    Read More
  19. 비트레이트 질문 드립니다

    Date2018.09.29 Byvasquez Reply2 Views1723 Votes0
    Read More
  20. 인코딩 질문은 아니지만 샤나인코더 질문 답변 게시판에서 게시글에 사진 첨부가 안되네요

    Date2018.09.28 ByMelon Reply2 Views734 Votes0
    Read More
  21. [잡담]라데온 하드웨어 가속인코딩을 ffmpeg에서 지원하네요

    Date2018.09.28 By마소리스 Reply1 Views1984 Votes0
    Read More
  22. 인코딩시 오류

    Date2018.09.28 By파라지로 Reply1 Views1413 Votes0
    Read More
  23. 프레임 레이트가 90000 인 애들은 뭘까요?

    Date2018.09.27 By아렌티 Reply0 Views1135 Votes0
    Read More
  24. 3D 영상을 인코딩하려면 어떻게 하나요?

    Date2018.09.27 By쿤타 Reply1 Views1040 Votes0
    Read More
  25. webp로 인코딩하면 반복적으로 나오질않습니다.

    Date2018.09.26 By이승현 Reply0 Views672 Votes0
    Read More
Board Pagination Prev 1 ... 87 88 89 90 91 92 93 94 95 96 ... 165 Next
/ 165