[c++] Taglib으로 FLAC 파일 처리하기

FLAC(또는 Free Lossless Audio Codec)은 오디오 데이터를 압축하여 저장하는 무손실 압축 형식으로 널리 사용됩니다. Taglib은 C++로 작성된 라이브러리로, 오디오 파일의 메타데이터를 읽고 쓸 수 있습니다. 이 포스트에서는 Taglib을 사용하여 FLAC 파일의 메타데이터를 처리하는 방법을 살펴보겠습니다.

Taglib 설치하기

먼저, Taglib을 시스템에 설치해야 합니다. Ubuntu 기반 시스템의 경우 다음 명령을 사용하여 설치할 수 있습니다.

sudo apt-get install libtag1-dev

다른 운영 체제의 경우 Taglib 공식 웹사이트에서 소스 코드를 다운로드하여 빌드하거나 패키지 관리자를 통해 설치할 수 있습니다.

FLAC 파일의 메타데이터 읽기

다음은 Taglib을 사용하여 FLAC 파일의 메타데이터를 읽는 예제 코드입니다. 이 예제에서는 파일에서 아티스트와 제목을 출력합니다.

#include <taglib/flacfile.h>
#include <taglib/tag.h>
#include <iostream>

int main() {
    TagLib::FLAC::File file("example.flac");
    if(!file.isValid()) {
        std::cerr << "Invalid file." << std::endl;
        return 1;
    }

    TagLib::Tag *tag = file.tag();
    std::cout << "Artist: " << tag->artist().toCString(true) << std::endl;
    std::cout << "Title: " << tag->title().toCString(true) << std::endl;
    
    return 0;
}

위의 코드에서는 flacfile.h 헤더를 포함하여 FLAC 파일을 열고, artisttitle을 출력합니다.

FLAC 파일의 메타데이터 쓰기

Taglib을 사용하여 FLAC 파일의 메타데이터를 쓰는 방법도 간단합니다. 아래의 예제 코드는 새로운 아티스트와 제목을 설정하고 FLAC 파일에 쓰는 방법을 보여줍니다.

#include <taglib/flacfile.h>
#include <taglib/tag.h>

int main() {
    TagLib::FLAC::File file("example.flac");
    if(!file.isValid()) {
        std::cerr << "Invalid file." << std::endl;
        return 1;
    }

    TagLib::Tag *tag = file.tag();
    tag->setArtist("New Artist");
    tag->setTitle("New Title");
    file.save();

    return 0;
}

위의 코드에서는 setArtistsetTitle을 사용하여 메타데이터를 설정하고, save를 사용하여 변경사항을 파일에 저장합니다.

이제 여러분은 Taglib을 사용하여 C++에서 FLAC 파일의 메타데이터를 읽고 쓸 수 있는 방법을 알게 되었습니다. Taglib은 MP3, Ogg 등 다양한 오디오 형식을 지원하므로 유용하게 활용할 수 있습니다.