无法在带有 gst-launch-1.0 的 Qemu 的 armv7 上播放 wav 音频

Cannot play wav audio on armv7 with Qemu with gst-launch-1.0

本文关键字:armv7 Qemu 播放 音频 wav gst-launch-1      更新时间:2023-10-16

我正在尝试使用 Qt 和 C++ 播放 WAV 音频文件,它失败了,然后我尝试使用 gst-launch-1.0 播放它,它也失败了。这一切都是使用 armv7 工具链和在 QEMU 下运行的。

使用代码C++失败后

QAudioDecoder decoder;
QFileInfo fileInfo(WAV_FILE_NAME);
decoder.setSourceFilename(fileInfo.absoluteFilePath());
decoder.start();
if (decoder.state() == QAudioDecoder::DecodingState)
qDebug() << "Decoding";

它失败并显示错误

0:00:00.167441195 29283 0xf375dc00 WARN                 basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.176093619 29283 0xf375dc00 WARN                 basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.237290158 29283 0xf37fc660 WARN            uridecodebin gsturidecodebin.c:921:unknown_type_cb:<uridecodebin0> warning: No decoder available for type 'audio/x-wav'.
0:00:00.238382698 29283 0xf37fc660 WARN               decodebin gstdecodebin2.c:4640:gst_decode_bin_expose:<decodebin0> error: no suitable plugins found:
Missing decoder: WAV (audio/x-wav)
0:00:00.239083745 29283 0xf37fc660 WARN            uridecodebin gsturidecodebin.c:988:no_more_pads_full:<uridecodebin0> error: no suitable plugins found:
../../../gst-plugins-base-1.14.4/gst/playback/gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstPlayBin:playbin1/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: WAV (audio/x-wav)
0:00:00.240739264 29283 0xf37fc660 WARN                typefind gsttypefindelement.c:1231:gst_type_find_element_loop:<typefind> error: Internal data stream error.
0:00:00.240853974 29283 0xf37fc660 WARN                typefind gsttypefindelement.c:1231:gst_type_find_element_loop:<typefind> error: streaming stopped, reason not-linked (-1)

这就是为什么我尝试使用

./gst-launch-1.0 -v uridecodebin uri=file:///home/vbox/myaudio.wav

然后我也得到了这个错误

Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0: source = "(GstFileSrc) source"
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/x-wav
Missing element: WAV demuxer
WARNING: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'audio/x-wav'.
Additional debug info:
../../../gst-plugins-base-1.14.4/gst/playback/gsturidecodebin.c(921): unknown_type_cb (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0
ERROR: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0: Your GStreamer installation is missing a plug-in.
Additional debug info:
../../../gst-plugins-base-1.14.4/gst/playback/gsturidecodebin.c(988): no_more_pads_full (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0:
no suitable plugins found:
../../../gst-plugins-base-1.14.4/gst/playback/gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: WAV (audio/x-wav)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

我不确定真正缺少什么。另外,这是 gst-inspect-1.0 的输出

$> ./gst-inspect-1.0 | grep wav
audiovisualizers:  wavescope: Waveform oscilloscope
typefindfunctions: application/x-shockwave-flash: swf, swfl
typefindfunctions: audio/x-wav: wav
typefindfunctions: audio/x-wavpack: wv, wvp
typefindfunctions: audio/x-wavpack-correction: wvc

这里可能缺少什么?

"wavparse" 插件应该可用。