노래방은 인기 있는 노래의 반주를 재생해 주는 음악 시스템입니다. 공연자는 보통 화면에 나오는 가사를 보면서 라이브로 노래를 부릅니다. 이 단어는 이런 공연 자체를 가리키기도 합니다.
일본어 단어는 '빈'을 뜻하는 kara와 오케스트라를 줄인 말이 합쳐진 것입니다. 그래서 노래방, 즉 karaoke는 글자 그대로 '빈 오케스트라'라는 뜻입니다.
메타데이터 보고서에서 Karaoke는 더 좁은 의미를 가진 필드입니다. 이 이름은 FFmpeg 프로젝트의 파일 판독기인 ffprobe에서 가져왔습니다.
FFmpeg는 파일의 각 부분을 각각의 스트림으로 나열합니다. 각 스트림에는 Karaoke, Attached Pic 같은 disposition 플래그 집합이 지정됩니다. FFmpeg 문서는 이 플래그를 간단히 이렇게 정의합니다. 스트림에 노래방 오디오가 포함됩니다.
값이 어떻게 표시되는지
ffprobe 판독기의 -show_streams 옵션은 음악이 없는 파일에서도 모든 스트림에 대해 이 플래그를 출력합니다. 이 출력에서 플래그는 두 가지 값 중 하나를 가집니다.
0: 플래그가 꺼져 있음1: 플래그가 켜져 있어 스트림이 노래방 오디오로 표시됨
정확한 표기 형식은 보고서 유형에 따라 다릅니다. JSON 보고서는 "karaoke": 0를 표시하고, 일반 텍스트 보고서는 DISPOSITION:karaoke=0를 표시합니다.
어떤 파일에 포함되어 있는지
FFmpeg는 형식에 따라 이 플래그를 읽고 쓰기도 하고, 그렇지 않기도 합니다. 예시는 다음과 같습니다.
- NUT: 스트림은
Disposition라는 태그에karaoke라는 단어를 저장할 수 있습니다. - MKV: Matroska 사양에는 기본값, 강제, 코멘터리 같은 플래그는 있지만, 노래방 플래그는 없습니다.
- MP4: FFmpeg의 MP4 트랙 역할 목록에는 노래방 항목이 없습니다.
- AC-3 및 E-AC-3 오디오: 오디오 데이터에는 서비스 유형이 있으며, 그중 하나의 값이 노래방을 의미합니다.
FFmpeg는 오디오 채널이 2개 이상일 때 노래방 서비스 유형을 이 플래그로 변환하며, 이는 MKV나 MP4 파일에서도 마찬가지입니다. 다른 오디오 형식에서는 노래가 노래방 버전이더라도, MKV나 MP4 파일의 스트림은 일반적으로 0을 보고합니다.
일부 노래방 곡은 자체 파일 형식을 사용합니다. 미국 의회도서관은 노래방 MIDI 파일에 대해 kar 확장자를 사용한다고 안내합니다.
노래 가사가 저장되는 위치
Karaoke 플래그에는 단어가 아니라 0 또는 1 숫자만 저장됩니다. FFmpeg에는 가사 스트림을 위한 별도의 Lyrics 플래그가 있습니다. 실제 텍스트는 형식마다 서로 다른 위치에 저장됩니다.
- MP3: ID3v2 프레임 USLT는 타이밍 정보 없이 가사를 저장하고, SYLT 프레임은 각 음절이나 텍스트 단위에 타임스탬프를 함께 저장합니다.
- MKV:
LYRICS태그는 타이밍을 모를 때 가사를 저장하거나, 자막 트랙을 복사한 형태로 가사를 저장합니다.
값이 어디에서 오는지
FFmpeg는 각 스트림을 만들 때, 또는 나중에 스트림을 검사할 때 플래그를 설정합니다. NUT 파일의 경우 FFmpeg는 Disposition 태그에서 플래그를 읽습니다. AC-3 오디오의 경우 FFmpeg는 오디오 데이터에서 서비스 유형을 읽습니다.
FFmpeg의 -disposition 옵션을 사용하면 이 플래그를 직접 설정할 수 있습니다. 기본적으로 FFmpeg는 입력 스트림의 플래그를 출력 스트림으로 복사합니다.
컨테이너에만 저장된 플래그는 새 형식이 이를 저장할 수 있는 경우에만 새 파일로 전달됩니다. MKV용 FFmpeg 기록기에는 이 플래그를 위한 코드가 없습니다.
왜 중요한지
하나의 파일에 여러 오디오 스트림이 있을 수 있으며, 이 플래그로 그중 하나를 노래방 오디오로 표시할 수 있습니다. FFmpeg 명령에서 스트림 선택기 disp:karaoke는 이 플래그가 있는 스트림을 선택합니다.
이 플래그는 단순한 레이블일 뿐이므로 실제로 들리는 소리를 보장하지는 않습니다. 값이 0라고 해서 이 노래에 노래방 버전이나 가사가 없다는 의미는 아닙니다.