Как определить строки профиля gstreamer

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

Он называет общий 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

Спасибо

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

Другие вопросы по тегам