ストリーミングデータを標準出力に出力する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:不明または適用できないゼロビットをエンコードできません。
実際のマイク(接続されていないと仮定)で実際に録音していることを示します。