Как определить строки профиля 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