2011-09-03 2 views
0

이것은 Flac samples calculation의 후속 질문입니다.flac 이미지를 트랙으로 분할

파일의 시작 부분 또는 스트림이 시작되는 메타 데이터 (here) 이후에 해당 수식으로 생성 된 오프셋을 구현합니까?

내 목표는 프로그래밍 방식으로 파일을 직접 나눠서 학습하는 것입니다. 나의 생각은 이미지에서 배운 값을 기반으로 flac 헤더와 메타 데이터 블록을 적어두고 큐트 시트를 사용하여 마스터 이미지에서 얻은 실제 트랙을 적는 것이다.

현재 내 코드에서 각 메타 데이터 블록을 구문 분석하고 프레임이 시작되는 곳에서 끝낼 수 있습니다.

답변

1

M:S.F = 3:45.30에서 시작하는 디코딩을 시도한다고 가정합니다. 초당 75 프레임 (CDDA 섹터)이 있으며 분당 60 초입니다. 귀하의 큐 시트에서 M : S.F를 샘플 오프셋 값으로 변환하려면, 먼저 원하는 시작점 인 CDDA 섹터의 수를 계산하십시오 : (((60 * 3) + 45) * 75) + 30 = 16,905. 초당 75 섹터가 있기 때문에 오디오가 44,100 Hz에서 샘플링된다고 가정하면 섹터 당 44,100/75 = 588 개의 오디오 샘플이 있습니다. 따라서 디코딩을 시작할 원하는 오디오 샘플 오프셋은 588 * 16,905 = 9,940,140입니다.

방금 ​​계산 된 오프셋은 압축 된 FLAC 스트림 (바이트 단위가 아님)으로가 아니라 압축 해제 된 PCM 샘플에 대한 오프셋입니다. 따라서 각 FLAC 프레임에 포함 된 샘플 수를 계산하고 현재 위치의 실행 집계를 유지하십시오. 시작 오디오 샘플이 포함 된 것을 찾을 때까지 FLAC 프레임을 건너 뜁니다. 이 시점에서 오디오 디코딩을 시작하여 필요없는 FLAC 프레임의 샘플을 버릴 수 있습니다.

FLAC도 SEEKTABLE 블록을 지원합니다.이 블록을 사용하면 방금 설명한 프로세스의 속도가 크게 향상됩니다. 아직 구현하지 않았다면 reference decoder의 구현을 살펴볼 수 있습니다.

+0

확인. 감사. 이것은 확실히 도움이되었습니다. 이제 프레임 헤더의 "UTF-8"코딩 된 프레임 번호가 내 머리를 긁어 모으게됩니다. 하지만 여전히 참조 디코더에 대한 링크를 검토해야합니다. – Cooter