Missing gstreamer plugins when using wine to run win32 exe that calls Windows Media Control Interface

I am running a galgame(a kind of visual novel) on manjaro with wine5.22.
When it calls Windows MCI to play external video, game reports error and the terminal says missing plugins in my gstreamer installation.

Terminal output:
(The Chinese below means that: plugin missing in your gstreamer installation)

0024:fixme:wbemprox:client_security_SetBlanket 62E9F768, 001A2590, 10, 0, (null), 3, 3, 0
0000000, 0x00000000
0024:fixme:wbemprox:client_security_Release 62E9F768
0024:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0024:fixme:d3d:wined3d_check_device_format_conversion output 0x1a2590, device_type WINED3
D_DEVICE_TYPE_HAL, src_format WINED3DFMT_B8G8R8X8_UNORM, dst_format WINED3DFMT_B8G8R8X8_U
NORM stub!
0024:fixme:d3d9:Direct3DShaderValidatorCreate9 Returning stub validator 67C9D028.
00b8:err:clipboard:convert_selection Timed out waiting for SelectionNotify event
00f4:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core
contexts.
0024:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound out
put probably won't work.
0120:err:gstreamer:unknown_type Could not find a filter for caps: "video/quicktime, varia
nt=(string)iso"
0024:err:gstreamer:gstdecoder_init_gst Failed to play stream.
0120:err:gstreamer:watch_bus decodebin0: 您的 GStreamer 安装缺少插件。
0120:err:gstreamer:watch_bus ../gst-plugins-base/gst/playback/gstdecodebin2.c(4719): gst_
decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: Quicktime (video/quicktime, variant=(string)iso)

So I installed “lib32-gst-plugins-good” and tried again.
This time the err message is:

012c:err:winediag:MIDIMAP_drvOpen No software synthesizer midi port found, Midi sound out
put probably won't work.
017c:err:gstreamer:unknown_type Could not find a filter for caps: "video/x-h264, stream-f
ormat=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high, codec_d
ata=(buffer)0164001fffe100196764001facc86014016ec0440000030004000afc803c60c66801000568e97
972c0, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fr
ac"...
017c:err:gstreamer:unknown_type Could not find a filter for caps: "audio/mpeg, mpegversio
n=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)1, base-profile=
(string)lc, profile=(string)lc, codec_data=(buffer)131056e59d4800, rate=(int)24000, chann
els=(int)2"
012c:err:gstreamer:gstdecoder_init_gst Failed to play stream.
017c:err:gstreamer:watch_bus decodebin0: 您的 GStreamer 安装缺少插件。
017c:err:gstreamer:watch_bus ../gst-plugins-base/gst/playback/gstdecodebin2.c(4719): gst_
decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream
-format=(string)raw, level=(string)1, base-profile=(string)lc, profile=(string)lc, codec_
data=(buffer)131056e59d4800, rate=(int)24000, channels=(int)2)
Missing decoder: H.264 (High Profile) (video/x-h264, stream-format=(string)avc, alignment
=(string)au, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe10019
6764001facc86014016ec0440000030004000afc803c60c66801000568e97972c0, width=(int)1280, heig
ht=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1)

017c:err:gstreamer:unknown_type Could not find a filter for caps: "video/x-h264, stream-f
ormat=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high, codec_d
ata=(buffer)0164001fffe100196764001facc86014016ec0440000030004000afc803c60c66801000568e97
972c0, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fr
ac"...
017c:err:gstreamer:unknown_type Could not find a filter for caps: "audio/mpeg, mpegversio
n=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)1, base-profile=
(string)lc, profile=(string)lc, codec_data=(buffer)131056e59d4800, rate=(int)24000, chann
els=(int)2"
012c:err:gstreamer:gstdecoder_init_gst Failed to play stream.
017c:err:gstreamer:watch_bus decodebin1: 您的 GStreamer 安装缺少插件。
017c:err:gstreamer:watch_bus ../gst-plugins-base/gst/playback/gstdecodebin2.c(4719): gst_
decode_bin_expose (): /GstBin:bin1/GstDecodeBin:decodebin1:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream
-format=(string)raw, level=(string)1, base-profile=(string)lc, profile=(string)lc, codec_
data=(buffer)131056e59d4800, rate=(int)24000, channels=(int)2)
Missing decoder: H.264 (High Profile) (video/x-h264, stream-format=(string)avc, alignment
=(string)au, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe10019
6764001facc86014016ec0440000030004000afc803c60c66801000568e97972c0, width=(int)1280, heig
ht=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1)

I installed all gst-plugins from pacman source, here is gst-inspect-1.0-32 results:

$ gst-inspect-1.0-32  -a|grep video/x-h264
rtph264pay:       video/x-h264
rtph264pay:       video/x-h264
rtph264depay:       video/x-h264
rtph264depay:       video/x-h264
avimux:       video/x-h264
avidemux:       video/x-h264
avidemux:       video/x-h264
avidemux:       video/x-h264
avidemux:       video/x-h264
matroskamux:       video/x-h264
3gppmux:       video/x-h264
ismlmux:       video/x-h264
mp4mux:       video/x-h264
qtmux:       video/x-h264
v4l2sink:       video/x-h264
v4l2src:       video/x-h264
flvmux:       video/x-h264
flvdemux:       video/x-h264
ogmvideoparse:       video/x-h264
ogmvideoparse:       video/x-h264
ogmvideoparse:       video/x-h264
ogmvideoparse:       video/x-h264

$ gst-inspect-1.0-32  -a|grep audio/mpeg
rtpmp4gpay:       audio/mpeg
rtpmp4gdepay:       audio/mpeg
rtpmp4adepay:       audio/mpeg
rtpmp4apay:       audio/mpeg
rtpmparobustdepay:       audio/mpeg
rtpmpapay:       audio/mpeg
rtpmpadepay:       audio/mpeg
shout2send:       audio/mpeg
twolamemp2enc:       audio/mpeg
avimux:       audio/mpeg
avimux:       audio/mpeg
avidemux:       audio/mpeg
avidemux:       audio/mpeg
avidemux:       audio/mpeg
matroskamux:       audio/mpeg
matroskamux:       audio/mpeg
mpegaudioparse:       audio/mpeg
mpegaudioparse:       audio/mpeg
aacparse:       audio/mpeg
aacparse:       audio/mpeg
3gppmux:       audio/mpeg
3gppmux:       audio/mpeg
ismlmux:       audio/mpeg
ismlmux:       audio/mpeg
mp4mux:       audio/mpeg
mp4mux:       audio/mpeg
qtmux:       audio/mpeg
qtmux:       audio/mpeg
mpg123audiodec:       audio/mpeg
pulsesink:       audio/mpeg
pulsesink:       audio/mpeg
flvmux:       audio/mpeg
flvmux:       audio/mpeg
flvdemux:       audio/mpeg
flvdemux:       audio/mpeg
wavparse:       audio/mpeg
wavparse:       audio/mpeg
wavparse:       audio/mpeg
alsasink:       audio/mpeg
ogmaudioparse:       audio/mpeg
ogmaudioparse:       audio/mpeg
ogmaudioparse:       audio/mpeg

There are no found results after I ran ‘gst-inspect-1.0 -a |grep video/x-h264’ and ‘gst-inspect-1.0 -a |grep audio/mpeg’.
And MCI still can’t work properly.
Here is the video information from ffprobe. And it can be played on vlc.

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './mov/op00.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2012-04-14T15:52:42.000000Z
  Duration: 00:02:57.24, start: 0.000000, bitrate: 1485 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1424 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2012-04-15T14:37:15.000000Z
      handler_name    : L-SMASH Video Media Handler
      encoder         : AVC Coding
    Stream #0:1(jpn): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 57 kb/s (default)
    Metadata:
      creation_time   : 2012-04-14T15:52:43.000000Z
      handler_name    : GPAC ISO Audio Handler

I really don’t know what’s going on.

I am a new linux user and have little knowledge about programming and computer systems.
Many thanks to anyone who can help me with this.

P.S. If you feel my English a bit strange, please forgive a Chinese high school student of poor English.

What’s the output of:

pacman -Qs gst-plugins

I suggest installing all optional dependencies of wine if you haven’t already:

sudo pacman -S --asdeps --needed $(pacman -Si wine | sed -n '/^Opt/,/^Conf/p' | sed '$d' | sed 's/^Opt.*://g' | sed 's/^\s*//g' | tr '\n' ' ')

If you’re a serious gamer that plays a lot of Windows games, then wine-staging might be more helpful:

sudo pacman -S wine-staging && sudo pacman -S --asdeps --needed $(pacman -Si wine-staging | sed -n '/^Opt/,/^Conf/p' | sed '$d' | sed 's/^Opt.*://g' | sed 's/^\s*//g' | tr '\n' ' ')

You may also be missing some Windows libraries you may need to install in your WINE prefix with winetricks like wmp11 or something.

Thank you for your response.
I have installed all the optional dependencies of wine, but it still doesn’t work. Same err message.

Output of “pacman -Qs gst-plugins”:

$ pacman -Qs gst-plugins
local/gst-plugins-bad 1.18.2-1
    Multimedia graph framework - bad plugins
local/gst-plugins-bad-libs 1.18.2-1
    Multimedia graph framework - bad
local/gst-plugins-base 1.18.2-1
    Multimedia graph framework - base plugins
local/gst-plugins-base-libs 1.18.2-1
    Multimedia graph framework - base
local/gst-plugins-good 1.18.2-1
    Multimedia graph framework - good plugins
local/gst-plugins-ugly 1.18.2-1
    Multimedia graph framework - ugly plugins
local/lib32-gst-plugins-base 1.18.2-1
    GStreamer Multimedia Framework Base Plugins (32-bit)
local/lib32-gst-plugins-base-libs 1.18.2-1
    GStreamer Multimedia Framework Base Plugin libraries (32-bit)
local/lib32-gst-plugins-good 1.18.2-1
    GStreamer Multimedia Framework Good Plugins (32-bit)

Galgames are not complicated games. They are usually just some pictures, musics, videos, at most some 3D animation. And all these except playing external videos work well. I don’t think I need those new features in wine-staging.

In the game config I can choose to use either MCI or WMP to play the video. I haven’t installed wmp11(because it keeps reports shasum256 mismatch) in WINEPREFIX, and it crashes immediately if it trys to call WMP. That’s why I switched to MCI.

Another clue I can provide is that it works if I install windows codec package K-Lite in WINEPREFIX, however it doesn’t work perfectly: The first video can be played, but when the second one is played, MCI crashes(game only reports error and doesn’t crash). It seems that the first process(or something) didn’t exit properly. I can’t provide more details as this installation was accidentally deleted by me.