조회 수 15493 추천 수 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 Views11935 Votes4
    read more
  2. 샤나인코더 통합 검색 기능 개선(샤나인코더 우측 상단에 있는 검색창을 사용해 보세요.)

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

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

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

    Date2018.10.12 Category일반 ByJKyle Reply24 Views40905 Votes18
    read more
  6. 인코딩시 음성싱크 밀림문제..

    Date2018.10.26 Byhellcat Reply2 Views4730 Votes0
    Read More
  7. 프리뷰 영상이 뒤집어짐

    Date2018.10.25 ByDJuno Reply3 Views1178 Votes0
    Read More
  8. 인코딩을 하려는데 자막인식을 못합니다.

    Date2018.10.24 By신림인 Reply1 Views1239 Votes0
    Read More
  9. 매개변수 설정좀 도와주세요.

    Date2018.10.23 By돈대박 Reply1 Views1139 Votes0
    Read More
  10. 인코딩후

    Date2018.10.21 By팡팡 Reply1 Views581 Votes0
    Read More
  11. LG미니빔 설정 부탁드립니다.. ㅠㅠ

    Date2018.10.20 Byastarotx Reply0 Views1248 Votes0
    Read More
  12. 영상 리사이즈 해상도에 따른 로고크기 변화에 대해 질문드립니다

    Date2018.10.17 By테르미 Reply1 Views978 Votes0
    Read More
  13. 인코딩시 화면크기 변경할려는데요...

    Date2018.10.17 By엉뚱한곰 Reply1 Views1057 Votes0
    Read More
  14. ass자막 인코딩 후 글자겹침 문제

    Date2018.10.16 By팔라누스 Reply5 Views1116 Votes0
    Read More
  15. 네트워크 드라이브 질문입니다.

    Date2018.10.16 By제이드민 Reply1 Views676 Votes0
    Read More
  16. CPU확실히 바꾸니 효과있네요

    Date2018.10.16 By미낭미낭 Reply6 Views2449 Votes0
    Read More
  17. 리사이즈 필터 gauss Vs bilinear

    Date2018.10.14 By핥아버지 Reply0 Views1371 Votes0
    Read More
  18. AAC 비트레이트 질문.

    Date2018.10.14 By미니미니 Reply2 Views1320 Votes0
    Read More
  19. 영상합치기할때 그냥 변경안해도 다합쳐지는 기술은 현재업는지요?

    Date2018.10.12 Bygoku 오공 Reply1 Views1657 Votes0
    Read More
  20. 영상 합칠때 프레임변화가 어케 되는지 궁금함다 ㅠ.ㅠ

    Date2018.10.12 Bygoku 오공 Reply1 Views832 Votes0
    Read More
  21. mov->mp4파일 변환시 화질 깨짐ㅜㅜ

    Date2018.10.12 Byeczzim Reply2 Views4724 Votes0
    Read More
  22. 고수님들께 여쭙습니다.

    Date2018.10.12 By미니미니 Reply3 Views1103 Votes0
    Read More
  23. 영상에 로고를 텍스트로 넣는 기능이 있나요?

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

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

    Date2018.10.10 ByRAPID Reply4 Views1760 Votes0
    Read More
Board Pagination Prev 1 ... 86 87 88 89 90 91 92 93 94 95 ... 165 Next
/ 165