微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Windows上使用gstreamer播放.wav音频文件?

如何解决如何在Windows上使用gstreamer播放.wav音频文件?

wavparse documentation提供了此示例,用于在Linux上的扬声器上使用Alsa音频播放.wav音频文件

gst-launch-1.0 filesrc location=sine.wav ! wavparse ! audioconvert ! alsasink

我试图通过wasapisinkautoaudiosink将其修改为在Windows上使用:

gst-launch-1.0.exe -v filesrc location=1.wav ! wavparse ! audioconvert ! autoaudiosink
gst-launch-1.0.exe -v filesrc location=1.wav ! wavparse ! audioconvert ! wasapisink

两次尝试均会导致错误

错误:来自元素/ GstPipeline:pipeline0 / GstWavParse:wavparse0:内部数据流错误

完整日志如下:

Setting pipeline to PAUSED ...
Pipeline is prerollING ...
/GstPipeline:pipeline0/GstWavParse:wavparse0.GstPad:src: caps = audio/x-raw,format=(string)S16LE,layout=(string)interleaved,channels=(int)2,channel-mask=(bitmask)0x0000000000000003,rate=(int)44100
ERROR: from element /GstPipeline:pipeline0/GstWavParse:wavparse0: Internal data stream error.
Additional debug info:
../gst/wavparse/gstwavparse.c(2308): gst_wavparse_loop (): /GstPipeline:pipeline0/GstWavParse:wavparse0:
streaming stopped,reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
ERROR: from element /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstWasapiSink:autoaudiosink0-actual-sink-wasapi: The stream is in the wrong format.
Additional debug info:
../gst-libs/gst/audio/gstaudiobasesink.c(1117): gst_audio_base_sink_wait_event (): /GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstWasapiSink:autoaudiosink0-actual-sink-wasapi:
Sink not negotiated before eos event.
ERROR: pipeline doesn't want to preroll.
Freeing pipeline ...

我尝试了来自不同来源的多个.wav文件。总是一样的结果。

我已经确认autoaudiosink可在我的PC上正常工作,因为这两个命令都产生了声音:

gst-launch-1.0.exe -v audiotestsrc samplesperbuffer=160 ! audioconvert ! autoaudiosink
gst-launch-1.0.exe -v audiotestsrc samplesperbuffer=160 ! autoaudiosink

我还确认了playbin可以通过我的扬声器播放文件,但这对我来说不起作用,因为最终我将需要进一步分配管道。

gst-launch-1.0.exe -v playbin uri=file:///C:/1.wav

我正在Windows 10上使用gstreamer 1.18.0。如何使用.wavfilesrc通过扬声器播放autoaudiosink文件内容

解决方法

也许也可以在audioresample之前或之后尝试audioconvert。不能完全确定当前的Windows音频子系统-但是当今的硬件往往要求48000 Hz的采样率。如果音频子系统无法解决问题,则需要您自己处理。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。