fread를 사용하여 파일에서 pcm 샘플을 읽고 샘플의 신호 강도를 확인하고 싶습니다. 어떻게해야합니까?fread와 fwrite를 사용하여 파일에서 pcm 샘플을 읽는 방법?
읽으려면 1 pcm 샘플을 몇 바이트로 구성합니까? 한 번에 1 pcm 샘플을 읽을 수 있습니까? WAV 및 AAC 파일 용입니다.
fread를 사용하여 파일에서 pcm 샘플을 읽고 샘플의 신호 강도를 확인하고 싶습니다. 어떻게해야합니까?fread와 fwrite를 사용하여 파일에서 pcm 샘플을 읽는 방법?
읽으려면 1 pcm 샘플을 몇 바이트로 구성합니까? 한 번에 1 pcm 샘플을 읽을 수 있습니까? WAV 및 AAC 파일 용입니다.
WAV 파일 (및 훨씬 더 AAC 파일)이 모두 동일하지 않다는 것을 알아야합니다. WAV 파일에 대해서만 설명 하겠지만 AAC 파일과 함께 사용하면 이해할 수 있습니다. 지적하신대로 WAV 파일에는 PCM으로 인코딩 된 데이터가 있습니다. 그러나 8 비트, 16 비트, 32 비트, 모노, 스테레오, 5.1, ..., 8kHz, 16kHz, 44.1kHz 등이 될 수 있습니다.이 값에 따라 데이터를 해석해야합니다 (예를 들어 fread() 함수로 읽는 경우). 따라서 WAV 파일에는 헤더가 있습니다. 당신은 먼저 표준 방식으로 헤더를 읽어야한다 (나는 세부 사항을 모른다). 그런 다음 실제 데이터를 읽는 방법을 알고 있습니다. 쉬운 일이 아니기 때문에, 거기에있는 라이브러리를 사용하여 WAV 파일을 읽는 것이 좋습니다. http://www.mega-nerd.com/libsndfile/. 물론 Google을 사용하거나 SO를 사용하여 다른 사용자를 찾을 수도 있습니다. 또는 어려운 방법으로 WAV 파일 헤더의 모양을 확인하고 해당 데이터를 먼저 디코딩 한 다음 실제 PCM으로 인코딩 된 데이터로 이동하십시오.
나는 WAV 파일에 대한 경험이 없지만 한번 mp3 파일에서 데이터를 읽습니다. MP3 파일의 경우, 각 576 pcm 샘플이 프레임으로 인코딩됩니다. 모든 프레임은 파일에 직접 저장되어 일부 부가 정보가 있습니다. 인코딩 된 데이터를 처리 할 때 mp3 파일에서 이진 데이터를 읽고 버퍼에 저장하고 버퍼링 된 데이터를 디코딩 한 다음 나에게 의미있는 것을 추출합니다.
wav 파일 (내 이해 당 pcm 샘플 저장)이 상당히 다르다고 생각합니다. 파일에서 직접 바이너리 데이터를 읽고 wav 인코딩 사양에 따라 일부 변환을 수행 할 수 있습니다.
파일 자체는 데이터 형식이 무엇인지 알지 못합니다. 파일에서 모든 것을 바이트 (일반 텍스트)로 가져올 수 있으며, 바이너리 데이터를 직접 해석하는 파일에서 바이트를 읽을 수 있습니다.
어떤 파일이 있습니까? WAV? MP3? AAC? – selbie