libaom 코덱 설치, 최신 v3.9.1 버젼 소스 컴파일

Estimated read time 3 min read

본 포스트에서는 libaom 코덱을 설치하는 방법 에 대해 다룹니다. 프로젝트 저장소에서 소스코드를 다운로드 하고, 컴파일 과정을 통해 공유 라이브러리를 생성하고, 생성된 공유 라이브러리 파일 및 헤더 파일을 시스템에서 사용할 수 있도록 설치합니다.


libaom 코덱 설치에 앞서

libaomAOMedia1에서 개발한 AV1 비디오 코덱2의 오픈 소스 소프트웨어 구현체3입니다. 이 라이브러리는 AV1 비디오 포맷을 인코딩하고 디코딩하는 기능을 제공하여 고효율 비디오 압축을 가능하게 합니다. libaom은 AV1의 주요 참조 소프트웨어로 사용되며, 다양한 플랫폼과 애플리케이션에서 고품질 비디오 스트리밍 및 저장을 지원합니다.

libaom 코덱 릴리즈 알림
libaom 코덱 릴리즈 알림 이미지

AOMedia그룹AV1 비디오 코덱, AVIF 이미지 파일 포맷에 대한 정보는 libavif 설치 방법 포스트에서 확인할 수 있습니다.

소프트웨어 AV1 인코더, 디코더 목록은 AOMedia4에서 확인할 수 있습니다.


설치 준비

소스코드 다운로드

wget 명령으로 libaom의 저장소5에서 소스코드를 다운로드 합니다. 포스트 작성일 기준, 최신 릴리즈 버젼은 v3.9.1 입니다. libaom 저장소6 Tags에서 최신 버젼을 확인하고 다운로드 할 수 있습니다. 릴리즈 파일을 다운로드 하는 대신, 저장소 파일을 git checkout 이나 git clone 으로 내려받는 방식은 설치 과정에서 오류 발생 소지가 있어 본 포스트에서는 추천하지 않습니다.

$ wget https://aomedia.googlesource.com/aom/+archive/8ad484f8a18ed1853c094e7d3a4e023b2a92df28.tar.gz -O libaom-v3.9.1.tar.gz
--2024-07-17 17:25:15--  https://aomedia.googlesource.com/aom/+archive/8ad484f8a18ed1853c094e7d3a4e023b2a92df28.tar.gz
aomedia.googlesource.com (aomedia.googlesource.com) 해석 중... 142.251.170.82, 2404:6800:4008:c06::52
다음으로 연결 중: aomedia.googlesource.com (aomedia.googlesource.com)|142.251.170.82|:443... 연결했습니다.
HTTP 요청을 보냈습니다. 응답 기다리는 중... 200 OK
길이: 지정하지 않음 [application/x-gzip]
저장 위치: `libaom-v3.9.1.tar.gz'

2024-07-17 17:25:19 (1.47 MB/s) - `libaom-v3.9.1.tar.gz' 저장함 [5589798]

wget 명령으로 파일이 정상적으로 다운로드 되었으면, tar 명령으로 내려받은 파일을 압축 해제합니다.

$ file libaom-v3.9.1.tar.gz
libaom-v3.9.1.tar.gz: gzip compressed data, original size modulo 2^32 33308160
$ mkdir libaom
$ tar xzvf libaom-v3.9.1.tar.gz --directory=libaom

빌드 환경 설정

tar 명령이 정상적으로 종료되었으면, cmake를 사용해 빌드에 필요한 파일을 생성합니다. libaom의 README.md안내7된 대로 동적 공유 라이브러리 빌드를 활성화 하기 위해서 추가 옵션(-DBUILD_SHARED_LIBS=1)을 지정합니다. 기본 설정되어 있는 Doxygen을 사용한 자동 문서화는 (-DENABLE_DOCS=OFF)옵션으로 비활성화 하겠습니다.

$ cd libaom 
$ cmake -DBUILD_SHARED_LIBS=1 -DENABLE_EXAMPLES=OFF -DENABLE_DOCS=OFF -B ./build -S .

-- Performing Test CXX_FLAG_SUPPORTED
-- Performing Test CXX_FLAG_SUPPORTED - Success
-- Found Git: /usr/bin/git (found version "2.40.1")
-- Found Perl: /usr/bin/perl (found version "5.32.1")
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.4") found components: doxygen dot
-- Configuring done
-- Generating done
-- Build files have been written to: ./build

컴파일을 위한 설정이 build 디렉토리에 생성되었습니다. 빌드 환경 설정이 정상적으로 끝났으면 컴파일 단계로 진행합니다.


소스코드 컴파일

컴파일

앞서 cmake 명령이 정상적으로 실행되었다면, 컴파일을 위한 준비가 끝났습니다. 이제 cmake --build 명령으로 컴파일을 진행합니다.

$ cmake --build build
[  1%] Building CXX object CMakeFiles/aom_gtest.dir/third_party/googletest/src/googletest/src/gtest-all.cc.o
[  1%] Linking CXX static library libaom_gtest.a
[  1%] Built target aom_gtest
:
[ 72%] Linking C shared library libaom.so
[ 72%] Built target aom
[ 73%] Linking C static library libaom.a
[ 73%] Built target aom_static
:
[ 99%] Writing aom.pc
[ 99%] Building C object CMakeFiles/aom_pc.dir/gen_src/aom_pc_no_op.c.o
[100%] Linking C shared library libaom_pc.so
[100%] Built target aom_pc

빌드 메시지와 build 디렉토리를 확인해서 최종적으로 동적 공유 라이브러리 파일(libaom.so)이 정상적으로 생성되었는지 확인합니다.

$ ls -1 ./build | grep "^lib"
libaom.a
libaom.so
libaom.so.3
libaom.so.3.9.1
libaom.ver
libaom_gmock.a
libaom_gtest.a
libaom_pc.so
libaom_srcs.gni
libaom_srcs.txt
libaom_test_srcs.gni
libaom_test_srcs.txt
libaom_version.so

라이브러리 설치

동적 공유 라이브러리 설치

동적 공유 라이브러리 파일(libaom.so)이 정상 생성된 것을 확인했다면, sudo 및 cmake --install 명령으로 시스템 전역에서 사용할 수 있도록 컴파일 완료된 라이브러리 파일과 헤더 파일을 시스템에 설치합니다.

$ sudo cmake --install build
-- Install configuration: "Release"
-- Installing: /usr/local/include/aom/aom.h
-- Installing: /usr/local/include/aom/aom_codec.h
-- Installing: /usr/local/include/aom/aom_frame_buffer.h
-- Installing: /usr/local/include/aom/aom_image.h
-- Installing: /usr/local/include/aom/aom_integer.h
-- Installing: /usr/local/include/aom/aom_decoder.h
-- Installing: /usr/local/include/aom/aomdx.h
-- Installing: /usr/local/include/aom/aomcx.h
-- Installing: /usr/local/include/aom/aom_encoder.h
-- Installing: /usr/local/include/aom/aom_external_partition.h
-- Installing: /usr/local/lib64/pkgconfig/aom.pc
-- Installing: /usr/local/lib64/libaom.so.3.9.1
-- Installing: /usr/local/lib64/libaom.so.3
-- Installing: /usr/local/lib64/libaom.so
-- Installing: /usr/local/lib64/libaom.a

라이브러리 및 헤더 파일 경로 확인

최종적으로 설치된 동적 라이브러리 파일의 위치는 /usr/local/lib64/aom/libaom.so 이며, 헤더 파일은 /usr/local/include/aom/ 디렉토리에 위치해 있습니다. 추후 다른 라이브러리나 소프트웨어를 컴파일 할 경우, 필요에 따라 이 경로를 명시적으로 지정해야 할 수 있으므로 설치된 경로를 알아두는 것이 좋습니다.

요약

이번 포스트에서는 AV1 Video 코덱의 오픈 소스 구현체인 libaom 라이브러리를 다운로드하고 컴파일하는 방법, 동적 공유 라이브러리를 생성하는 방법, libaom 라이브러리를 시스템에 설치하는 방법에 대해 알아보았습니다.


관련 글 보기

각주

  1. https://aomedia.org/ ↩︎
  2. https://aomedia.org/av1/ ↩︎
  3. https://github.com/AOMediaCodec/libaom ↩︎
  4. https://aomedia.org/providers/ ↩︎
  5. https://aomedia.googlesource.com/aom/ ↩︎
  6. https://aomedia.googlesource.com/aom/ ↩︎
  7. https://aomedia.googlesource.com/aom/#dylib-builds ↩︎