0

试图弄清楚如何让 gstreamer 将原始音频数据输出为 -1 到 1 范围内的有符号 32 位浮点数。

这是我到目前为止所得到的,但这些值是无符号的,并且不在 -1 到 1 的范围内:

gst-launch-1.0 filesrc location="sound.mp3" ! mad ! audioresample ! audioconvert ! capsfilter caps="audio/x-raw, format=F32BE, rate=44100, channels=1" ! filesink location=sound.raw

任何帮助是极大的赞赏。谢谢。

4

2 回答 2

1

经过一些测试,我可以确认 GStreamer 远远超出了范围[-1,1]。在我看来,如果你想使用 GStreamer,这个问题并没有真正简单的解决方案(你可以编写一个后处理器,它需要一个原始的 32 位有符号整数文件并将每个 4 字节块转换为浮点数,但这有点 hacky )。

但是,我可以使用以下方法为您提供替代解决方案ffmpeg

avconv -i /path/to/input/file.mp3 -f f32be -ac 1 /path/to/output_float.raw

我使用以下方法成功播放了输出文件aplay

aplay -r 44100 -f FLOAT_BE -c1 /path/to/output_float.raw
于 2013-05-28T10:18:01.120 回答
0

您可以更改/添加到上限的两件事:

- audio/x-raw  to audio/x-raw-float

- signed=true
于 2013-10-28T14:07:32.663 回答