문제

음악 파일에서 태그 정보를 읽는 C 라이브러리에서 작업하고 있습니다. 이미 ID3V2를 처리했지만 OGG 파일이 어떻게 구성되어 있는지 알 수 없습니다.

Hexeditor에서 .ogg 파일을 열었고 태그 데이터를 모두 읽을 수 있었기 때문에 태그 데이터를 찾을 수있었습니다. 그러나 파일의 시작부터 태그 데이터까지 모든 것이 쓰레기처럼 보였습니다. 이 데이터는 어떻게 인코딩됩니까?

실제 코드에 도움이 필요하지 않습니다. OGG 헤더의 모습과 인코딩을 사용하여 읽을 수 있도록 사용하는 데 도움이 필요합니다. OGG 파일을 읽는 데 비 혼성한 접근 방식을 사용하고 싶습니다.

나는보고 있었다 FLAC 형식, 도움이되었습니다.

내가보고있는 FLAC 파일에는 "FLAC"식별자와 사람이 읽을 수있는 댓글 섹션 사이에 약 350 바이트가 있으며 Hex 편집기에서는 인간이 읽을 수 없으므로 그 중 어느 것도 있어야한다고 확신합니다. 무엇 거기에서 중요합니다.

Linux를 사용하고 있으며 Windows 또는 OS X로 포팅 할 의도가 없습니다. 따라서 인코딩을 변환하기 위해 GLIBC 전용 기능을 사용해야하는 경우 괜찮습니다.

도움이 되었습니까?

해결책

제공 한 링크에 설명 된 바와 같이, 다음 메타 데이터 블록은 "FLAC"마커와 Vorbis_comment 메타 데이터 블록 사이에서 발생할 수 있습니다.

  • StreamInfo :이 블록에는 샘플 속도, 채널 수, 총 샘플 수 등과 같은 전체 스트림에 대한 정보가 있습니다. 스트림의 첫 번째 메타 데이터 블록으로 존재해야합니다. 다른 메타 데이터 블록이 따라갈 수 있으며 디코더가 이해하지 못하는 블록은 건너 뜁니다.
  • 응용 프로그램 :이 블록은 타사 응용 프로그램에서 사용하기위한 것입니다. 유일한 필수 필드는 32 비트 식별자입니다. 이 ID는 FLAC 관리자가 신청서에 요청하면 부여됩니다. 나머지는 블록이 등록 된 응용 프로그램에 의해 정의됩니다. FLAC에 신청서의 ID를 등록하려면 등록 페이지를 방문하십시오.
  • 패딩 :이 블록은 임의의 양의 패딩을 허용합니다. 패딩 블록의 내용은 의미가 없습니다. 이 블록은 인코딩 후 메타 데이터가 편집 될 것으로 알려진 경우 유용합니다. 사용자는 인코더에게 충분한 크기의 패딩 블록을 예약하도록 지시하여 메타 데이터가 추가되면 기존 파일에 올바른 위치에 삽입하는 대신 패딩 (비교적 빠른)을 덮어 쓸 수 있도록합니다. 일반적으로 전체 파일을 다시 작성해야합니다).
  • SeekTable : 이것은 Seek Points를 저장하기위한 선택적인 블록입니다. Seek 테이블이없는 FLAC 스트림에서 주어진 샘플을 찾을 수는 있지만 비트 전송률은 스트림 내에서 크게 다를 수 있으므로 지연이 예측할 수 없을 수 있습니다. SEEK 포인트를 스트림에 추가 함으로써이 지연은 상당히 줄어들 수 있습니다. 각 Seek Point는 18 바이트를 차지하므로 스트림 내에서 1% 해상도가 2K 미만을 추가합니다. 스트림에는 하나의 찾기 쉬운 만있을 수 있지만 테이블에는 수많은 탐색 포인트가있을 수 있습니다. 또한 디코더에 의해 무시 될 수 있지만 미래의 탐색 지점 삽입을위한 공간을 예약하는 데 사용할 수있는 특별한 '자리 표시 자'탐색 지점도 있습니다.

위의 설명 직후, 각 블록의 형식의 사양도 있습니다. 링크도 말합니다

FLAC 비트 스트림에 사용 된 모든 숫자는 정수입니다. 부동 소수점 표현은 없습니다. 모든 숫자는 빅 엔디 언 코드입니다. 달리 지정되지 않는 한 모든 숫자는 서명되지 않습니다.

그래서, 당신은 무엇을 놓치고 있습니까? 당신은 말합니다

OGG 파일을 읽는 데 대한 비정상적인 접근 방식을 원합니다.

이미 도서관이 이미 존재할 때 그렇게하도록 도서관을 다시 작성합니까?

다른 팁

OGG 파일 형식이 문서화됩니다 여기. 자세한 서면 설명으로 요청했을 때 매우 멋진 그래픽 시각화가 있습니다.

당신은 또한보고 싶을 수도 있습니다 libogg OGG 파일을 읽고 쓰는 오픈 소스 BSD 라이센스 라이브러리입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top