2014-12-20 7 views
0

이것에 대한 스레드를 시작하고 싶습니다. 많은 사람들이 특정 상황이나 특정 언어로 작업을 수행하는 방법을 궁금해하는,하지만 난 두 가지 사례를 보는 것을 일반디스크에서 오디오 파일을 재생하기위한 전략

에서 최고의 전략입니다 궁금 해서요 :

  • 부하 작은 덩어리 (2048 샘플과 같은) 버퍼의 파일. 가장 직관적으로 보일 지 모르지만 디스크를 많이 사용해야하므로 최선이 아닐 것으로 생각됩니다.

  • 모든 파일을 큰 버퍼에로드하십시오. 하드 드라이브에 좀 더 부드럽게, 그러나 긴 파일 몇 개를 사용하면 많은 램이 필요합니다. 파일이 너무 길거나 채널이 많은 경우 색인 변수가 손상 될 수 있다고 생각합니다. 예를 들어이 16 비트 정수 어쩌면의 경우는 파일의 끝에 도달 할 수없는 (또는 나는 편집증입니까?)

와 나는 같은 하이브리드 것들에 대해 생각하고 있어요 : 매우 사용

  • 전체 파일을로드하지 않고 큰 버퍼

  • 하드 드라이브에 사용자 정의 형식으로 파일을 저장합니다.이 형식은 하드 드라이브에 빠르게 액세스 할 수 있도록 최적화되어 있습니다.

그래서 어떻게 생각하십니까? 어떻게 처리합니까? 나는 "최고"가 무엇인지 상관하지 않습니다. 나는 각각의 장단점에 대해 더 궁금합니다.

답변

0

내 질문에 대한 답변 부분 (하이브리드 솔루션에 대한 부분).

Audacity는 저장 및 재생을 위해 사용자 지정 BlockFiles 형식을 사용하고 있습니다. 그것은 1Mb 정도의 큰 (콜백보다) 콜백 버퍼와 커스텀 파일 타입 (.aup)의 아이디어를 캡슐화합니다.

"BlockFiles는 과도한 복사없이 오디오를 삽입하고 삭제할 수 있으며 재생 중에 디스크에 대한 각 요청마다 합당하게 큰 청크를 얻을 수 있습니다. 블록이 작을수록 잠재적 인 디스크 같은 양의 오디오 데이터를 가져 오기 요청. 블록이 클수록 삽입 및 삭제시 더 많은 복사가 수행됩니다. " (from : http://www.aosabook.org/en/audacity.html)

내가 읽은 바로는 매우 긴 파일의 버전을 빠르게하기 위해 (예 : 처음부터 데이터를 삽입하지 않고 모든 것을 이동하지 않고) 주로 설계되었습니다. 그러나 비교적 짧은 오디오 데이터 (< 1 시간)를 재생할 때는 RAM에 모든 것을 넣는 것이 좋습니다.