Sox는 특정 바이트 수 이후에 중지됩니다.

Sox는 특정 바이트 수 이후에 중지됩니다.

내 목표는 Raspberry Pi 3에서 긴 다중 채널 wav 파일(5시간 이상, 18채널)을 녹음하는 명령줄 도구를 갖는 것입니다. 오디오 인터페이스는벨린저 XR18.

이를 수행하는 방법은 물론 via 입니다 arecord. 불행하게도 pi에 버퍼 오버플로가 발생합니다. 왜냐하면 arecord고정된 최대값이 있기 때문입니다. 버퍼 크기는 500ms로 변경할 수 없거나 변경할 수 없으며 arecord의 출력을 sox로 파이프하여 ntfs USB 플래시 드라이브에 씁니다. 추가 보너스로 sox는 샘플을 32비트에서 24비트로 동적으로 변환하고 오버플로를 제거할 수 있습니다(내가 아는 한).

내가 실행한 명령은 다음과 같습니다.

arecord -M -D hw:CARD=X18XR18,DEV=0 -c18 -f S32_FE -r48000 | sox --input-buffer 51200 -t wav - -b24 -c18 -t wav <filename.wav>

첫 번째 부분은 배관 |작업이므로 도움이 필요하지 않습니다. 두 번째 부분도 작동하며, 녹음이 진행됨에 따라 파일이 생성되고 커집니다. 그런데 무슨 이유인지 1.5GB 정도에서 녹음이 멈추고 sox도 종료됩니다.

단독 실행에는 arecord이러한 제한이 없으며 몇 시간 동안 실행됩니다(물론 한도 내에서).

최종 파일 크기에 도달하기 직전에 파일이 지속적으로 커지는 것을 멈추고 대신 꽤 오랫동안 머물렀다가 크기가 몇 MB씩 커지는 것을 발견했습니다. 나에게 이것은 버퍼 오버플로와 매우 유사하게 들리지만 sox의 버퍼 크기를 100MB로 두 배로 늘려도 아무런 차이가 없습니다. sox의 출력도 별로 도움이 되지 않습니다. 자세한 정보 수준 3에서도 다음과 같은 내용만 표시됩니다.

sox WARN sox: '<filename>' output clipped 13403 samples; decrease volume?
sox WARN sox: '-' balancing clipped 13403 samples; decrease volume?

내가 지금까지 시도한 것 :

  • 양말 변경 --input-buffer-size- 차이 없음
  • 1.5GB 이전에 새 파일 시작을 시도했습니다. 작동하지만 추가된 파일 크기가 1.5GB에 도달하자마자 다시 중지됩니다.
  • 플래시 드라이브 대신 SD 카드에 직접 기록 - 차이 없음(오버플로 발생 제외)

ATM에서 이것을 테스트할 다른 ​​Linux 상자는 없지만 Raspberry Pi 3는 확실히 작업을 처리할 수 있어야 합니다(CPU/RAM 측면). 이 이상한 동작의 원인이 무엇인지 아는 사람이 있습니까?

답변1

이 스레드xfs 형식의 대상 디스크/SD 카드를 사용해 보십시오.

관련 정보