Sox는 왜 아무것도 기록하지 않습니까?

Sox는 왜 아무것도 기록하지 않습니까?

스트리밍 데이터를 표준 출력으로 출력하는 RTL-SDR 라디오 수신기가 있습니다. 다음 명령을 사용하여 오디오를 들을 수 있습니다.

$ rtl_fm -M wbfm -f 96.5M | play -r 32k -t raw -e s -b 16 -c 1 -V1 -

보시다시피, rtl_fm은 32kHz의 샘플 속도로 16비트 부호 있는 정수로 구성된 샘플 스트림을 출력합니다.

이제 sox를 ​​사용하여 이 오디오를 녹음하고 싶어서 시도해 보았습니다.

$ rtl_fm -M wbfm -f 96.5M -g 25 | rec -e s -b 16 -r 32000 out.wav

wav 파일을 받았는데 그냥 비어있습니다. 모든 값이 0입니다. 나는 노력했다

$ rtl_fm -M wbfm -f 96.5M -g 25 | rec -e s -b 16 -r 32000 -t raw out.wav

하지만 이것은 Audacity가 wav로 인식하지 못하는 파일만을 제공합니다. 원시 데이터로 가져오면 여전히 모두 0입니다.

제가 쓴 것처럼 재생 명령을 실행하면 오디오가 나오지만 녹음하면 아무것도 나오지 않습니다.

어쨌든, 기록 명령의 출력은 다음과 같습니다.

$ rtl_fm -M wbfm -f 96.5M -g 25 | rec -e s -b 16 -r 32000 -c 1 out.wav
Found 1 device(s):
0:  Realtek, RTL2838UHIDIR, SN: 00000001

rec WARN alsa: can't encode 0-bit Unknown or not applicable
Using device 0: Generic RTL2832U OEM

Input File     : 'default' (alsa)
Channels       : 1
Sample Rate    : 32000
Precision      : 16-bit
Sample Encoding: 16-bit Signed Integer PCM

In:0.00% 00:00:00.00 [00:00:00.00] Out:0     [      |      ]        Clip:0    Detached kernel driver
In:0.00% 00:00:00.26 [00:00:00.00] Out:0     [      |      ]        Clip:0    Found Rafael Micro R820T tuner
In:0.00% 00:00:00.51 [00:00:00.00] Out:8.19k [      |      ]        Clip:0    Tuner gain set to 25.40 dB.
Tuned to 96771000 Hz.
oversampling input by: 6x.
Oversampling output by: 1x.
Buffer size: 8.03ms
Exact sample rate is: 1020000.026345 Hz
Create UDP thread
Created UDP thread
Allocating 15 zero-copy buffers
Main socket started! :-) Tuning enabled on UDP/6020 
Sampling at 1020000 S/s.
Output at 170000 Hz.
In:0.00% 00:00:09.22 [00:00:00.00] Out:287k  [      |      ]        Clip:0    ^CSignal caught, exiting!

User cancel, exiting...
In:0.00% 00:00:09.47 [00:00:00.00] Out:295k  [      |      ]        Clip:0    
Aborted.
Signal caught, exiting!
Reattached kernel driver

답변1

당신 rec은로 대체 할 수 있습니다ffmpeg -f s16le -ar 32k -ac 1 -i pipe: file.wav

ffmpeg -formats | grep PCM내가 틀렸을 경우를 대비해.

당신의 결과물

Rec WARN alsa: 알 수 없거나 적용할 수 없는 0비트를 인코딩할 수 없습니다.

실제 마이크(연결되지 않은 것으로 가정)에서 실제로 녹음하고 있음을 나타낼 수 있습니다.

관련 정보