You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GStreamer升级至1.22后缺失meta/x-gst-fourcc-mebx解码器求助

GStreamer 1.22升级后处理iPhone MOV视频的meta/x-gst-fourcc-mebx插件缺失问题

问题背景

Linux环境下将GStreamer从1.18版本升级至1.22后,处理iPhone拍摄的YUV420p10LE格式MOV视频(确认未损坏)时,出现插件缺失错误,1.18版本无此问题。

错误信息

运行时错误输出:

[hevc @ 0x7f26101eba00] Skipping NAL unit 62 
[hevc @ 0x7f26100fcd40] Skipping NAL unit 62 
[hevc @ 0x7f2610113e00] Skipping NAL unit 62 
missing-plugin, type=(string)decoder, detail=(GstCaps)meta/x-gst-fourcc-mebx, name=(string)"meta/x-gst-fourcc-mebx\ decoder";

GStreamer Discoverer提示:

Missing plugins (gstreamer|1.0|gst-discoverer-1.0|meta/x-gst-fourcc-mebx decoder|decoder-meta/x-gst-fourcc-mebx)

视频流信息

Stream #0:0(und): Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/arib-std-b67), 1920x1080, 8455 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 600 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2022-02-12T07:53:40.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : HEVC
    Side data:
      DOVI configuration record: version: 1.0, profile: 8, level: 4, rpu flag: 1, el flag: 0, bl flag: 1, compatibility id: 4
      displaymatrix: rotation of -90.00 degrees
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 181 kb/s (default)
    Metadata:
      creation_time   : 2022-02-12T07:53:40.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2022-02-12T07:53:40.000000Z
      handler_name    : Core Media Metadata
  Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2022-02-12T07:53:40.000000Z
      handler_name    : Core Media Metadata
  Stream #0:4(und): Data: none (mebx / 0x7862656D), 34 kb/s (default)
    Metadata:
      creation_time   : 2022-02-12T07:53:40.000000Z

处理方案

1. 忽略mebx元数据流(推荐)

视频中的mebx流是iPhone生成的Core Media元数据,不属于媒体播放必需的视频/音频流,GStreamer 1.22开始默认尝试解析所有流,而1.18版本会自动忽略这类非媒体流。可以通过手动构建管道跳过这些元数据流:

使用qtdemux手动分流管道示例:

gst-launch-1.0 filesrc location=your_video.mov ! qtdemux name=d \
d.video_0 ! h265parse ! avdec_h265 ! videoconvert ! autovideosink \
d.audio_0 ! aacparse ! avdec_aac ! audioconvert ! autoaudiosink

此管道仅连接视频和音频pad,完全跳过mebx元数据流。

使用uridecodebin时过滤pad:

如果使用uridecodebin,可以通过监听pad-added信号,只接受视频和音频类型的pad,忽略meta/x-gst-fourcc-mebx类型的pad。示例伪代码(C语言):

static void pad_added_handler(GstElement *src, GstPad *pad, gpointer data) {
    GstCaps *caps = gst_pad_get_current_caps(pad);
    const gchar *caps_str = gst_caps_to_string(caps);
    
    // 只处理视频和音频流
    if (g_strrstr(caps_str, "video/") || g_strrstr(caps_str, "audio/")) {
        GstPad *sink_pad = gst_element_get_static_pad(data, "sink");
        gst_pad_link(pad, sink_pad);
        gst_object_unref(sink_pad);
    }
    
    gst_caps_unref(caps);
}

// 在初始化时连接信号
g_signal_connect(uridecodebin, "pad-added", G_CALLBACK(pad_added_handler), pipeline_element);

2. 关于NAL unit 62警告的说明

Skipping NAL unit 62是HEVC的SEI(补充增强信息)单元,属于非必需的附加数据,跳过不影响视频正常播放,无需额外处理。

3. 无需寻找meta/x-gst-fourcc-mebx解码器

目前GStreamer官方社区没有针对meta/x-gst-fourcc-mebx的专用解码器插件,因为这类元数据不影响媒体播放,直接跳过即可。

内容的提问来源于stack exchange,提问作者ZZak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 07:25:00