如何在 Windows 上使用 gstreamer 播放 .wav 音频文件?
How to play .wav audio file with gstreamer on Windows?
wavparse
documentation 提供了此示例,通过 Linux 上的扬声器使用 Alsa 音频播放 .wav
音频文件。
gst-launch-1.0 filesrc location=sine.wav ! wavparse ! audioconvert ! alsasink
我已尝试将其改编为在 Windows 上使用 wasapisink
或 autoaudiosink
:
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
两次尝试均导致错误:
ERROR: from element /GstPipeline:pipeline0/GstWavParse:wavparse0: Internal data stream error.
完整日志如下所示:
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
我将 gstreamer 1.18.0 与 Windows 一起使用 10. 如何使用 filesrc
和 autoaudiosink
通过我的扬声器播放 .wav
文件的内容?
也许也可以在 audioconvert
之前或之后尝试 audioresample
。不完全确定当前的 windows 音频子系统——但现在硬件往往需要 48000 赫兹的采样率。如果音频子系统无法处理,您需要自己处理。
wavparse
documentation 提供了此示例,通过 Linux 上的扬声器使用 Alsa 音频播放 .wav
音频文件。
gst-launch-1.0 filesrc location=sine.wav ! wavparse ! audioconvert ! alsasink
我已尝试将其改编为在 Windows 上使用 wasapisink
或 autoaudiosink
:
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
两次尝试均导致错误:
ERROR: from element /GstPipeline:pipeline0/GstWavParse:wavparse0: Internal data stream error.
完整日志如下所示:
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
我将 gstreamer 1.18.0 与 Windows 一起使用 10. 如何使用 filesrc
和 autoaudiosink
通过我的扬声器播放 .wav
文件的内容?
也许也可以在 audioconvert
之前或之后尝试 audioresample
。不完全确定当前的 windows 音频子系统——但现在硬件往往需要 48000 赫兹的采样率。如果音频子系统无法处理,您需要自己处理。