2011-07-05 3 views
1

내 프로젝트의 일부로 인터넷 라디오 방송용 오디오 아카이브를 개발할 것을 고려 중입니다. 이 아카이브는 날짜/시간별로 색인화되고 주소 지정이 가능합니다.손실 압축을 사용하는 시간 인덱싱 오디오 아카이브를위한 전략

예를 들어, 서버는 스트림 (일반적으로 MP3로 인코딩 됨)에 연결하여 스트림 데이터를 저장합니다. 클라이언트가이 서버에 연결하여 오디오를 2011-07-05 15:58:30에서 2011-07-05 15:59:37으로 요청할 수 있습니다. 서버는 재생을 위해 오디오 데이터를 클라이언트에 반환합니다.

나의 초기 생각은 원시 MP3 데이터의 1 분 청크로 디스크에 데이터를 저장하고 데이터베이스에서이 파일을 참조하는 것이었다. 서버는 스트림/파일 형식에 어리석은 짓이며 mpeg 프레임을 이해하지 못합니다. 단순히 데이터를 클라이언트로 전달하여 청크를 선형으로 나누어 전송합니다. 스트림에 동기화하는 것은 클라이언트에게 달려 있습니다. 이것은 인터넷 라디오 서버가 일반적으로 실행되는 방식과 다르지 않습니다. SHOUTcast 서버는 바이트 단위로 바이트 단위로 데이터를 출력하며,이 데이터는 인코더에서 전송됩니다. 클라이언트가 연결되면 MP3 프레임에서 끝나는 지 여부에 관계없이 데이터가 전송됩니다. 동기화 할 클라이언트에 달려 있습니다.

클라이언트 및 오디오 형식과의 호환성을 극대화하는 더 나은 방법이 있는지 궁금합니다. 이것에 대해 어떻게 생각하니?

내가 생각할 수있는 유일한 다른 점은 원시 PCM 오디오로 MP3를 디코딩하고 요청시 필요할 때 다시 인코딩하는 것입니다. 나는 디스크 공간이 필요하고, 다시 인코딩 할 때 품질이 떨어지기 때문에이 경로를 사용하지 않는 것을 선호합니다.

이 질문은 언어에 구애받지 않지만, 도움이된다면 데이터베이스로 MySQL을 사용하여 PHP로 솔루션을 구현할 것입니다.

답변

1

shoutcast를 통해 액세스 한 모든 mp3는 고정 비트 전송률이므로 걱정할 필요가 없습니다. 색인을 생성 할 필요가 없습니까? 나는 5 분 청크로 압축 파일을 가지고있는 POC 프로젝트를 가지고 있으며, PHP를 사용하여 파일을 결합하고 shoutcast를 통해 윈앰프로 가상 스트림을 보낸다. 그것은 효과가있다!

mp3로 작업 중이므로 캡처 한 파일의 밀도가 선형임을 가정 할 수 있으므로 중간에 검색해야하는 60 초 파일의 30 초에 액세스 할 수 있습니다. mp3 디코더는 충분히 견고하기 때문에 여기서 프레임을 추적 할 필요가 없습니다.

AACplus, 완전히 다른 이야기. VBR 고유의 기능입니다.

관련 문제