조회 수 15543 추천 수 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采用了,肯定会成为国际标准,这点放心

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 소리를 4가지로 분리하는 샤나보컬리무버 프로그램을 소개합니다. Rina 2024.03.22 16505 5
공지 샤나인코더 통합 검색 기능 개선(샤나인코더 우측 상단에 있는 검색창을 사용해 보세요.) Rina 2021.09.30 31144 2
공지 자유게시판에서는 자유롭게 글을 작성할 수 있지만 다음과 같은 내용은 삭제돼요 Rina 2020.03.18 28154 5
공지 일반 [필독] 질문 전에 반드시 읽으세요!!! 3 file JKyle 2019.09.16 49236 8
공지 일반 [알림] 질문 먹튀하지 마시기 바랍니다 => 본문 변경 금지 24 JKyle 2018.10.12 46571 18
3268 질문 mp4로 자막합치기를하여 프리미어프로2024에서 불러왔는데 자막이 안뜨는이유가 어떤이유 때문일까요? 3 file 토네이도 2024.09.26 730 1
3267 질문 합치기 모드를 자주 쓰는데요... blinx 2024.09.25 833 0
3266 질문 동영상 작업시에 Lut을 입힐 수 있는 방법이 있을까요? 1 아우터 2024.09.25 560 0
3265 질문 오디오지연설정후, 저장하는 기능이 있나요? netin55 2024.09.24 409 0
3264 질문 PSP 프리셋 수정관련 문의드립니다. file kmvoice 2024.09.20 508 0
3263 일반 유튜브에 올릴 영상 오디오 코덱을 원본대로 PCM로 해봤는데 영상만 나오고 소리는 출력되지 않습니다 3 file 라이대위 2024.09.18 625 0
3262 질문 화질 관련해서 신기해서 질문... 1 위키페디아 2024.09.12 1138 0
3261 질문 드래그 앤 드롭으로 목록에 파일 추가가 안 됩니다. 도움 구합니다 ㅠㅠ 1 마나 2024.09.09 648 0
3260 질문 샤나인코더 인코딩 속도를 올릴려면 어떡해야 하죠???고수님들 답변 바랴요 ㅠㅠ 3 영상인코딩초보 2024.09.02 2254 0
3259 질문 인텔내장+GTX 750TI 시스템에서 NVENC인코딩시 GTX750TI를 GTX1060 또는 1660으로 변경시 화질 용량 인코딩시간 변화 문의 3 연민아빠 2024.09.01 1873 0
3258 질문 HEVC 인코딩에서 medium 과 slow 프리셋 psnr 값... 3 file 하늘아재 2024.08.29 2243 0
3257 질문 인코딩 시에 자막 위치 질문입니다. 노바디 2024.08.28 596 0
3256 질문 샤나인코더 사용팁 게시판의 기초 용어 정리 글에서 질문 1 길이만자르고화질음질원본 2024.08.27 648 0
3255 질문 파일을 불러오다가 갑자기 사라지는데 왜 이러는건가요? 4 file 몸근영 2024.08.26 892 0
3254 질문 구간 설정시 게이지바가 안보여요 file ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ 2024.08.20 663 0
3253 질문 오디오 스트림복사 질문 1 길이만자르고화질음질원본 2024.08.20 593 0
3252 질문 미리보기 영상에 소리가 안나와요. 그런데 인코딩 후엔 소리가 잘 나오는데... SONGANI 2024.08.19 631 0
3251 질문 삼성 UN55MU6500 USB(SSD)연결시 동영상 끊김 질문있습니다. 3 file C.L 2024.08.14 964 0
3250 질문 hevc가 애플기기로 재생이 안됩니다. 5 조은악마 2024.08.11 1383 0
3249 질문 레터박스관련 질문드립니다. file 개포동최씨 2024.08.10 569 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 165 Next
/ 165