Audio
為什麼 sox 不記錄任何內容?
我有一個 RTL-SDR 無線電接收器,可以將流數據輸出到標準輸出。我可以使用以下命令收聽音頻:
$ rtl_fm -M wbfm -f 96.5M | play -r 32k -t raw -e s -b 16 -c 1 -V1 -
如您所見,rtl_fm 以 32 kHz 的採樣率輸出由 16 位有符號整數組成的樣本流。
現在,我想用 sox 錄製這個音頻,所以我嘗試了
$ rtl_fm -M wbfm -f 96.5M -g 25 | rec -e s -b 16 -r 32000 out.wav
我得到了一個 wav 文件,但它只是空的——所有的值都是零。我試過了
$ rtl_fm -M wbfm -f 96.5M -g 25 | rec -e s -b 16 -r 32000 -t raw out.wav
但這只是給了我一個文件,Audacity 沒有辨識為 wav。如果我將其作為原始數據導入,它仍然是全零。
就像我寫的那樣,當我執行播放命令時,我有音頻,但是當我錄製時,我什麼也得不到。
對於它的價值,這裡是記錄命令的輸出:
$ 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
你可以
rec
用ffmpeg -f s16le -ar 32k -ac 1 -i pipe: file.wav
ffmpeg -formats | grep PCM
以防我錯了。你的輸出
rec WARN alsa: can’t encode 0-bit Unknown or not applicable
可能表明您實際上是從實際麥克風錄製的(我認為它沒有連接)。