如何使用 libvlc 检索编解码器信息?

How to retrieve codec information using libvlc?

我在使用libvlc 播放远程媒体时需要获取编解码器信息。由于VLC播放器可以做到这一点(见下面的截图),libvlc也可以做到。

此外,我发现 libvlc_media_tracks_get 可以 return 一个相关的结构如下:

typedef struct libvlc_media_track_t
{
  /* Codec fourcc */
  uint32_t    i_codec;
  uint32_t    i_original_fourcc;
  int         i_id;
  libvlc_track_type_t i_type;

  /* Codec specific */
  int         i_profile;
  int         i_level;

  union {
      libvlc_audio_track_t *audio;
      libvlc_video_track_t *video;
      libvlc_subtitle_track_t *subtitle;
  };

  unsigned int i_bitrate;
  char *psz_language;
  char *psz_description;
} libvlc_media_track_t;

也许成员i_codec存储了这样的信息,但它不是人类可读的,我不知道具体值的含义。大概有他们之间的地图,我还没找到。

第三行已经告诉你 i_codec 应该解释为 fourcc

fourcc是fourASCII c字符codes的序列,实际上是人类可读,只是不是整数。这些代码的列表可用 here.

libvlc在vlc_fourcc.h中声明了vlc_fourcc_GetDescription,可用于获取描述字符串