2013-06-11 11 views
1

나는 이것에 관해서 다른 답변을 찾을 수 있지만 실제로 MPEG-1/MPEG-2 (또는 MP3, 분명히)를 알고있는 누군가의 설명을 원한다.MPEG-1/MPEG-2 프레임의 페이로드에서 잘못된 동기화 단어를 찾을 수 있습니까?

MPEG-1/2 프레임의 시작은 바이트 경계에서 시작하여 12 비트 세트이므로 바이트 fff*입니다. 여기서 *은 임의의 니블입니다. 이 12 비트를 동기 단어이라고합니다. 이것은 MPEG-1/2 스트림에서 프레임의 시작을 찾는 데 유용한 특성입니다.

첫 번째 질문은 공식적으로 틀린 싱크 워드가 헤더 밖에있는 MPEG-1/2 프레임의 페이로드에서 발견되는지 여부입니다.

그렇다면 여기 두 번째 질문이 있습니다. 왜 동기화 단어 메커니즘이 존재합니까? fff을 읽을 때 새 프레임을 찾지 못하면이 동기화 단어의 목적은 무엇입니까?

답변에 ID3을 고려하지 마십시오. ID3v2 페이로드에서 찾을 수있는 동기화 단어에 대해서는 이미 알고 있지만 잘 설명되어 있습니다.

답변

0

저는 MPEG-2 스트림에서 작업했습니다.보다 정확하게 Transport Streams (TS) : 우리는 유사점을 찾을 수 있다고 생각합니다.

TS는 전송 바이트로 구성되며, 헤더는 동기화 바이트 0x47으로 시작합니다.
또한 TP의 페이로드 내에 0x47을 찾을 수 있지만 정렬되지 않았기 때문에 동기화 바이트가 아닙니다 (TP는 고정 크기 인 188 바이트를 가짐).

  • 동기 단어는 스트림을 보는 사람에게 진입 점을 제공하고 프로그램이 자신의 프로세스를 스트림 (즉, 이름)과 동기화 할 수있게합니다.
  • 또한 스트림을 빠르게 찾아보고 파싱 할 수 있습니다. TS에서 패킷에서 다른 것으로 이동할 수 있습니다 (헤더 검사, 동기화 바이트 검사, 188 바이트 건너 뛰기 등)
  • 마지막으로 안전 조치입니다

이 인수는 약 TS이지만 내 생각에는 동일한 경우가 있습니다. 동기화를 찾는 것입니다 (예 : 전송 중에 스트림에서 전송 중 오류가 발생하는 경우) 페이로드와 헤더를 항상 구분할 수 있어야하기 때문에 페이로드 내의 단어는 문제가되지 않아야합니다. 크기 정보가 TP와 같이 고정되었거나이므로 0 형식).

+2

MP3 프레임은 MP3 스트림에서 가변 크기 일 수 있으며 예 헤더의 프레임 크기를 알 수있는 문서화 된 수식이 있습니다. 그러나 당신은 아직도이 머리말이 어디에 있는지 알아야합니다. 일부 MP3 스트림 소스에 연결한다고 가정 해 봅시다. 처음받은 내용은 프레임의 중간 부분입니다. 다음 'fff'가 동기화 단어인지 페이로드인지 어떻게 알 수 있습니까? – eepp