Как узнать строки профиля gstreamer

Пытаюсь использовать encodebin и его профили. Документация здесь: https://gstreamer.freedesktop.org/documentation/pbutils/encoding-profile.html?gi-language=c#defining-a-gstencodingprofile-as-a-string и там: https://gstreamer.freedesktop.org/data/doc/gstreamer/1.9/gst-plugins-base-libs/html/gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile список примеров, но они на самом деле не объясняют, как я на самом деле создаю эти строки.

Он называет общий формат muxer_source_caps:video_encoder_source_caps:audio_encoder_source_caps, но откуда взять muxer_source_caps. application/ogg:audio/x-vorbis из примеров работает отлично.

Например, как мне приступить к выяснению необходимого профиля для кодирования в aac в контейнере mp4.

Делаем дикие предположения об использовании типов mime из https://github.com/GStreamer/gstreamer/blob/cc55b304ef4ab1cd95f6348d33f268ccebaab8e8/docs/random/mimetypes также не будет работать.

все попытки терпят неудачу с WARNING: erroneous pipeline: could not set property "profile" in element "enc" или некоторыми более длинными ошибками при использовании только audio/x-m4a без muxer_source_cap

Спасибо


person sezanzeb    schedule 01.07.2020    source источник


Ответы (1)


по крайней мере, для ogg, хотя это не работает для других форматов, которые я пробовал.

с помощью gst-inspect-1.0 | grep ogg -i oggmux можно найти

gst-inspect-1.0 oggmux дает, среди прочего:

  SINK template: 'audio_%u'
    Availability: On request
    Capabilities:
      audio/x-vorbis

  SRC template: 'src'
    Availability: Always
    Capabilities:
      application/ogg

muxer_source_caps равен SRC template, то есть application/ogg

audio_encoder_source_caps — это SINK template, то есть audio/x-vorbis

делает application/ogg:audio/x-vorbis

иногда есть переменные, например layer в xingmux. Они добавляются как:

audio/mpeg,mpegversion=1,layer=3

person sezanzeb    schedule 01.07.2020
comment
см. stackoverflow.com/a/54272399 о том, как encodebin используется в конвейере. - person sezanzeb; 15.07.2020