오디오 파일 사이즈 계산하기
만약 MP3 오디오 파일을 WAV로 인코딩한다거나 FLAC 파일을 AAC파일로 인코딩하려고 할 때,
결과 파일의 사이즈를 어떻게 계산할 수 있을까?
처음에는 변환 전 오디오 파일의 비트레이트나 샘플레이트에 따라서 결과 파일의 사이즈가 달라질 것이라 예상했지만 그렇지 않았다.
파일 사이즈는 변환 전후 타입과 스펙에 상관없이, 변환하고자 하는 파일 타입의 스펙과 오디오 길이에 따라 쉽게 계산할 수 있다. 이 글에서는 Compressed, Uncompressed 파일 타입에 따라 오디오 파일의 사이즈를 계산하는 방법을 정리한다.
Uncompressed File
WAV, AIFF 파일이 대표적인 무압축 음원 파일이다. WAV 파일을 예로 들자면 무손실, 무압축 음원 파일로서 순수 음원 데이터인 PCM(Pulse Code Modulation) data를 가지고 있다.
ffmpeg으로 음원 메타데이터 확인 시, 아래와 같은 오디오 정보를 확인할 수 있다.
pcm_s16le | s | signed integer number | 16 bit의 signed integer number 크기의 데이터로 little endian 방식으로 인코딩 된 pcm data |
16 | 16 bit | ||
le | little endian | ||
44100Hz | 1초에 44100개 sample을 가지고 있음 | ||
2 channels | 2개 스피커로 들음 (stereo) |
pcm data가 뭔지 모른다거나, pcm_s16le에 대하여 자세히 알고 싶다면 아래 글을 참고한다.
2022.01.30 - [프로그래밍/ETC] - wav 파일의 pcm codec들은 각각 어떤 의미일까?
wav 파일의 pcm codec들은 각각 어떤 의미일까?
현재 회사에서 음원 서비스를 다루게 되면서 단순하게 wav는 pcm data를 담고 있는 품질 좋은 오디오 파일이다 라고만 알고 있었지만, 업무 이해도를 높이기 위해서 조금 더 자세히 알아야 할 필요
heyinsayshey.tistory.com
PCM data (Uncompressed file) 크기 계산 공식
file_size = sample_rate * (bit_depth / 8) * channels * duration(sec)
위의 샘플을 토대로 크기를 계산하면 아래와 같다.
sample_rate = 44100
bit_depth = 16
channels = 2
duration = 4740(seconds)
file_size = 44100 * 2 * 2 * 4740 = 836,136,000 bit = 836MB
실제 파일 사이즈와 일치한다.
Compressed file
압축 파일은 대표적으로 MP3, FLAC, AAC 파일 형식이 있다. 압축 음원은 비트레이트를 통해서 파일 사이즈를 구할 수 있다. MP3 샘플 파일의 오디오 정보를 확인한다.
Compressed file 크기 계산 공식
file_size = (bitrate_kbps * bits_per_kb / bits_per_byte) * duration(sec)
위 샘플 값으로 계산하면 다음과 같다.
bitrate_kbps = 192
bits_per_kb = 1000
bits_per_byte = 8
duration = 10800(second)
file_size = ( 192 * 1000 / 8 ) * 10800 = 259,200,000 = 259.2MB
실제 파일 사이즈와 같다.