FLAC

FLAC
무손실 오디오코덱
FLAC logo vector.svg
FLAC 1.3.3 screenshot.png
개발자Xiph.Org 재단, Josh Collson, Erik de Castro Lopo
초기 릴리즈2001년 7월 20일; 21년 전(2001-07-20)
안정된 릴리스
1.3.4[1] / 2022년 2월 20일; 5개월 전 (2022년 2월 20일)
저장소
운영 체제크로스 플랫폼
유형코덱
면허증.명령줄 도구: GNU GPL
라이브러리: BSD
웹 사이트xiph.org/flac
무손실 오디오코덱
파일 이름 확장자
.flac
인터넷 미디어 유형
오디오/플랙
Uniform Type Identifier(UTI; 균일 유형 식별자)org.xiph.flac
매직 넘버fLaC[2]
포맷의 종류무손실 오디오
표준.xiph.org/flac/format.html
오픈 포맷?네, 그렇습니다[3].
프리 포맷?네.

FLAC(/flék/; Free Lossless Audio Codec)는 Xiph에 의해 개발된 디지털 오디오무손실 압축을 위한 오디오 코딩 형식입니다.Org Foundation은 FLAC 툴을 생산하는 무료 소프트웨어 프로젝트의 이름으로 코덱 구현을 포함한 참조 소프트웨어 패키지입니다.FLAC 알고리즘에 의해 압축된 디지털 오디오는 보통 원래[4] 크기의 50~70%로 압축 해제되어 원래 오디오 데이터의 동일한 복사본으로 압축 해제됩니다.

FLAC는 로열티가 없는 라이선스와 무료 소프트웨어인 참조 구현포함된 개방형 형식입니다.FLAC는 메타데이터 태그 부착, 앨범 커버 아트 및 빠른 검색을 지원합니다.

역사

개발은 2000년에 Josh Colvelson에 [5]의해 시작되었습니다.2001년 1월 15일 FLAC가 레퍼런스 구현 버전 0.5를 출시하면서 베타 단계에 진입했을 때 비트스트림 포맷은 동결되었습니다.버전 1.0은 2001년 [5]7월 20일에 출시되었습니다.

2003년 1월 29일, Xiph.Org Foundation과 FLAC 프로젝트는 FLAC의 도입을 Xiph.org 배너로 발표했습니다.Xiph.org은 Vorbis, Theora, Spex 및 [5][6][7]Opus와 같은 다른 무료 압축 포맷의 본거지입니다.

버전 1.3.0은 2013년 5월 26일에 출시되었으며, 그 시점에서 개발은 Xiph.org git [8]저장소로 이동되었다.

구성.

FLAC 프로젝트는 다음과 같이 구성됩니다.

  • 스트림 포맷
  • 스트림의 단순한 컨테이너 형식. FLAC(또는 네이티브 FLAC)라고도 합니다.
  • libFLAC, 참조 인코더 및 디코더 라이브러리 및 메타데이터 인터페이스
  • libFLAC++: libFLAC 주위의 객체 지향 래퍼
  • flacfLAC 스트림을 부호화 및 디코딩하기 위한 libFLAC 기반의 명령줄 프로그램
  • metaflac.flac 파일 및 ReplayGain 적용을 위한 명령줄 메타데이터 에디터
  • 다양한 음악 플레이어용 입력 플러그인(Winamp, XMMS, foobar2000, musikCube 등)
  • Xiph.org 통합으로 스트리밍에 적합한 Ogg 컨테이너 형식(Ogg FLAC라고도 함)

스트림 포맷의 사양은 누구나 사전 허가 없이 구현할 수 있습니다(Xiph.org는 FLAC 사양을 설정하고 컴플라이언스를 인증할 권리를 보유합니다). FLAC 포맷이나 구현된 인코딩 또는 디코딩 방법 모두 특허의 대상이 되지 않습니다.레퍼런스 실장은 무료 소프트웨어입니다.libFLAC 및 libFLAC++의 소스 코드는 BSD 라이선스로 사용할 수 있습니다.flac,metaflac플러그인은 GNU General Public License에서 사용할 수 있습니다.

FLAC 프로젝트는, 개발자에게 카피 방지 기능(DRM)이나 손실 압축등의 [9]실장을 권장하고 있습니다.

설계.

파일 구조

FLAC 파일은 매직 넘버로 구성됩니다. fLaC, 메타데이터 및 인코딩된 오디오.[10]

부호화된 오디오는 헤더, 데이터 블록 및 CRC16 체크섬으로 구성된 프레임으로 분할됩니다.각 프레임은 서로 독립적으로 부호화됩니다.프레임 헤더는 유효한 프레임의 시작을 식별하기 위해 사용되는 동기 워드로 시작합니다.헤더의 나머지 부분에는 샘플의 수, 프레임의 위치, 채널 할당 및 선택적으로 샘플링 속도와 비트 깊이가 포함됩니다.데이터 블록에는 오디오 [10]정보가 포함되어 있습니다.

FLAC의 메타데이터는 오디오보다 우선합니다.샘플링 속도 및 채널 수와 같은 속성은 항상 메타데이터에 포함됩니다.또한 앨범 표지와 같은 다른 정보도 포함될 수 있습니다.[10]FLAC는 제목이나 아티스트 이름 등의 메타데이터에 Vorbis 코멘트를 사용합니다.

인코딩 및 디코딩

FLAC 부호화 알고리즘은 여러 단계로 구성됩니다.제1단계에서는 입력된 오디오를 블록으로 분할한다.오디오에 여러 채널이 포함되어 있는 경우 각 채널은 서브블록으로 개별적으로 부호화됩니다.그런 다음 인코더는 단순한 다항식을 적합시키거나 일반적인 선형 예측 부호화를 통해 블록의 양호한 수학적 근사치를 찾으려고 합니다.그 후, 길이가 몇 바이트 밖에 되지 않는 대략적인 설명이 작성됩니다.마지막으로, 근사치와 입력 사이의 차이(잔차)는 Rice coding을 사용하여 부호화된다.대부분의 경우 근사치와 부호화된 잔차 설명은 펄스 코드 [10]변조를 사용하는 것보다 적은 공간을 차지합니다.

디코딩 프로세스는 부호화의 반대입니다.압축된 잔차는 먼저 [11][12]디코딩됩니다.그런 다음 수학적 근사치에 대한 설명을 사용하여 파형을 계산합니다.결과는 잔차 및 [13][14]계산된 파형을 더하여 형성됩니다.FLAC가 무손실 압축하므로 디코딩된 파형은 인코딩 전 파형과 동일합니다.

2채널 스테레오의 경우 인코더는 오디오를 공동 부호화하도록 선택할 수 있습니다.채널은 두 입력 채널의 차이인 사이드 채널과 두 입력 채널의 합계인 미드 채널로 변환됩니다.미드채널 대신 왼쪽 채널 또는 오른쪽 채널을 부호화할 수 있습니다.이것이 경우에 따라서는 공간 [15]효율이 향상될 수 있습니다.

참조 인코더는 스트림 [10]전체에 대해 단일 블록사이즈를 사용하지만 FLAC에서는 샘플의 블록사이즈를 블록별로 변경할 수 있습니다.

압축

압축량은 선형 예측 모델의 순서와 블록 크기를 비롯한 다양한 매개변수에 의해 결정됩니다.압축의 양에 관계없이 원래 데이터는 항상 완벽하게 재구성할 수 있습니다.

사용자의 편의를 위해 참조 구현에서는 부호화 알고리즘에 대한 보다 기술적인 파라미터의 사전 설정인 9개의 압축 레벨을 정의합니다.레벨은 0 ~8의 라벨로 지정되며 수치가 클수록 압축률이 높아지지만 압축속도는 높아집니다.각 압축 수준의 의미는 [16][17]구현에 따라 다릅니다.

FLAC는 부호화 속도를 희생하면서 복호화 속도에 최적화되어 있습니다.벤치마크에 따르면 디폴트 압축레벨 5를 넘어서는 압축레벨의 증가에 따라 디코딩 속도의 변화는 거의 없지만 부호화 프로세스는 레벨 [18]5에 비해 공간을 거의 절약하지 않고 상당히 많은 시간을 소비합니다.

다른 형식과의 비교

FLAC는 ZIP 및 gzip에서 사용되는 DEFLATE 의 범용 무손실 알고리즘과 달리 오디오 데이터의 효율적인 패킹을 위해 특별히 설계되었습니다.ZIP은 CD 품질의 오디오 파일의 크기를 10~20% 줄일 수 있지만 FLAC는 오디오의 특성을 활용하여 오디오 데이터의 크기를 40~50% 줄일 수 있습니다.

다른 무손실 포맷과 비교하여 FLAC의 기술적 강점은 압축 수준에 관계없이 신속하게 스트리밍 및 디코딩할 수 있는 능력에 있습니다.

FLAC는 무손실 방식이기 때문에 CD 및 기타 미디어의 소유자가 오디오 컬렉션을 보존하는 데 적합한 아카이브 형식입니다.원본 미디어가 분실, 손상 또는 마모된 경우 오디오 트랙의 FLAC 복사를 통해 언제든지 원본 데이터의 정확한 복제를 복구할 수 있습니다.같은 데이터의 손실된 복사본(예를 들어 MP3)에서 정확하게 복원할 수 없습니다.FLAC는 무손실 포맷 간에 통상적으로 관련된 트랜스코딩 품질 손실이 없는 MP3 등의 트랜스코딩에 매우 적합합니다.CD를 리핑할 선택적으로 CUE 파일을 만들 수 있습니다.CD를 읽고 FLAC 파일로 완전히 리핑한 경우, CUE 파일을 사용하면 트랙 순서나 프리갭을 포함한 오디오 데이터와 동일한 오디오 CD를 나중에 CD-Text 및 기타 추가 데이터(가사 및 CD+G [19]그래픽스 등)에 쓸 수 없습니다.

도입 및 구현

FLAC의 레퍼런스 실장은 libFLAC 코어 인코더 및 디코더 라이브러리로 구현되며, 주요 배포 가능 프로그램입니다.flaclibFLAC API의 참조 구현입니다. 코덱 API는 C++에서도 libFLAC++로 사용할 수 있습니다.FLAC의 레퍼런스 실장은 대부분의 Unix(Solaris, BSD ) 및 Unix 유사(Linux 포함), Microsoft Windows, BeOSOS/2 운영 체제를 포함한 많은 플랫폼에서 컴파일됩니다.autoconf/automake, MSVC, Watcom C 및 Xcode용 빌드 시스템이 있습니다.현재 libFLAC에서는 멀티코어를 지원하지 않지만 GNU 병렬 및 다양한 그래픽 프론트엔드 등의 유틸리티를 사용하여 인코더의 여러 인스턴스를 스핀업할 수 있습니다.

휴대용 오디오 디바이스 및 전용 오디오 시스템에서의 FLAC 재생 지원은[20] MP3나 비압축 PCM 등의 포맷에 비해 제한됩니다.FLAC 지원은 Windows 10, Android, BlackBerry 10 및 Jolla 장치에 기본적으로 포함되어 있습니다.

2014년에 몇몇 애프터마켓 모바일 전자업체들이 FLAC 지원을 포함한 멀티미디어 솔루션을 선보였습니다.여기에는 Pioneer Electronics의 NEX 시리즈와 Clarion의 VX404 및 NX404가 포함됩니다.

European Broadcasting Union(EBU; 유럽방송연합)은 Euroadio [21]네트워크를 통한 고품질 오디오 전송을 위해 FLAC 형식을 채택했습니다.Windows operating system은, Windows 10 [22]의 도입 이래, 네이티브 FLAC 통합을 서포트하고 있습니다.Android 운영 체제는 버전 [23][24]3.1부터 네이티브 FLAC 재생을 지원했습니다. macOS High Sierra 및 iOS 11에는 네이티브 FLAC 재생 [25]지원이 추가되었습니다.

중에서도 포노 음악 플레이어와 스트리밍 서비스는 FLAC [26][27]형식을 사용했습니다.Bandcamp는 업로드를 위한 무손실 포맷을 고집하며 다운로드 옵션으로 FLAC를 가지고 있습니다.[28]Wikimedia Foundation은 필요한 HTML5 [29]기능을 지원하는 브라우저용 무료 오픈소스 온라인 ECMAScript FLAC 도구를 후원했습니다.

다양한 운영 체제에서의 FLAC 지원
Microsoft Windows MacOS 리눅스 안드로이드 BlackBerry OS iOS
코덱 지원 네. 네. 네. 네. 네. 네.
컨테이너 서포트 FLAC(.flac)
마트로스카(.mka, .mkv)
FLAC(.flac)
코어 오디오 포맷(.caf)
FLAC(.flac)
마트로스카(.mka, .mkv)
Ogg(.oga)
FLAC(.flac) FLAC(.flac) FLAC(.flac)
코어 오디오 포맷(.caf)
메모들 Windows 10 에서는 서포트가 도입되고 있습니다. 하이 시에라에서 도입된 지원. 배포에 따라서는, FLAC 의 인스톨이 필요하게 되는 경우가 있습니다. Android 3.1에서 도입된 지원 BlackBerry OS 5.0에서 도입된 지원 iOS 11에서 도입된 지원(단, 사용하는 하드웨어에 따라 다름)

사용된 재생 소프트웨어에 따라 사용된 운영 체제와 독립적으로 다양한 다른 컨테이너가 지원됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "FLAC 1.3.4 (20-Feb-2022)".
  2. ^ Coalson, Josh. "FLAC – format". Retrieved 4 April 2013. "fLaC", the FLAC stream marker in ASCII, meaning byte 0 of the stream is 0x66, followed by 0x4C 0x61 0x43
  3. ^ "PlayOgg!". Free Software Foundation. 17 March 2010. Retrieved 1 October 2013.
  4. ^ "Looking at Flac Compression Ratios". Steven Pigeon. 7 February 2012. Retrieved 10 May 2018.
  5. ^ a b c "News". FLAC. Retrieved 31 August 2009.
  6. ^ "FLAC Joins Xiph.org". Xiph.org Foundation. 29 January 2003. Retrieved 31 August 2009.
  7. ^ Plant, Emmett. "FLAC Joins Xiph!". Xiph.org Foundation. Archived from the original on 29 May 2008. Retrieved 31 August 2009.
  8. ^ "FLAC – changelog". Xiph.org Foundation. Retrieved 15 October 2013.
  9. ^ "Developers". FLAC. Retrieved 15 October 2013.
  10. ^ a b c d e Coalson, Josh. "About the FLAC Format". Retrieved 13 February 2022.
  11. ^ "stream_decoder.c". libFLAC. Retrieved 19 February 2022.
  12. ^ libFLAC/stream_decoder.c, 회선 2734.
  13. ^ "lpc.c". libFLAC. Retrieved 19 February 2022.
  14. ^ libFLAC/lpc.c, 813 ~820 회선
  15. ^ "FLAC Format Specification". FLAC. Retrieved 19 February 2022.
  16. ^ "CUETools FLAC encoders comparison". CUETools Wiki. Retrieved 27 May 2013.
  17. ^ "Encoding Settings". JRiver Media Centre. Retrieved 27 May 2013.
  18. ^ "Lossless Codec Comparison". Synthetic-soul.co.uk. Archived from the original on 2 February 2009. Retrieved 26 November 2016.
  19. ^ "FAQ". FLAC. Retrieved 23 September 2014.
  20. ^ "Links". FLAC. Retrieved 24 March 2009.
  21. ^ "What is the EBU Musipop system?". EBU. 24 August 2021.
  22. ^ "Audio snobs rejoice: Windows 10 will have system-wide FLAC support". PC World. Retrieved 10 July 2015.
  23. ^ "Android Supported Media Formats". Android.com. 4 August 2011. Retrieved 27 February 2012.
  24. ^ "Issue 1461 – android – FLAC file support enhancement request". Google Code. Retrieved 5 August 2011.
  25. ^ "iOS 11 brings lossless FLAC audio playback to iPhone and iPad". idownloadblog.com. 9 June 2017. Retrieved 26 September 2017.
  26. ^ "FAQ". ponomusic.com. 14 March 2014. Retrieved 14 March 2014.
  27. ^ "Home". Qobuz.com. Retrieved 10 April 2014.
  28. ^ "How and why should I upload lossless files?". Bandcamp. Retrieved 16 February 2022.
  29. ^ Rillke (2015). "JavaScript FLAC de- and encoder". Retrieved 9 February 2015.

외부 링크