Re[14]: Относительно твоих вопросов в рассылке gstreamer'а
От: Conductor СССР  
Дата: 11.08.23 11:06
Оценка: 15 (1)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Sharov, Вы писали:


S>>>>И как побороть, а главное понять почему он там еще работает? Какой это может быть компонент?

C>>>Ну он же тебе в логах говорит про d3d11bufferpool2, явно намекая на d3d11. Визуализировать сформированный decodebin'ом пайплайн не хочешь? Думаю, что и прояснится многое и, если сам будешь формировать (о чём ты в следующем сообщении пишешь), поможет. И если явно будет виден пул как элемент, то тогда можно будет ему max_buffers выставить.
S>>http://files.rsdn.org/79401/graphviz.svg

S>Кажется, что такое на коленке собрал по образу и подобию, но не уверен, что все правильно и оптимально:


У тебя видеокарта на боевых машинах предполагается, и если да, то какая, NVidia? Сколько видеопотоков одновременно? Нужно смотреть загрузку CPU. Ежели всё устраивает, дык и ладно. С GPU свои заморочки есть (с ограничением экземпляров кодирования на процесс).
Decodebin у тебя d3d11h264dec выбирал, он же, вроде, hardware использует, значит, условия соответствуют. Выбор осуществляется из элементов, которые могут работать в данных условиях, элемента с максимальным рангом.

https://developer.ridgerun.com/wiki/index.php?title=GStreamer_modify_the_elements_rank

S>Не до конца понимаю, почему простой варинат filesrc ! queue ! h264parse ! appsink не сработал...


А декодировать h264 кто будет в этом пайплайне? А сейчас у тебя этим avdec занимается.

S>Методом тыка что-то заработало.


S>Смущает несколько моментов:


S>1)код saveimg имеет такую строчку

S>var neededFrame = Global.VideoConvertSample(sample, new Caps("image/jpeg"), Constants.MSECOND * 100);
S>и что-то первое время по таймауту во время отладки падало, пришлось увеличить. Сейчас откатил как выше, вроде нормально, но что это было??

Где-то чего-то на что-то наложилось, другой ответ мне сложно дать. А тебе и в боевой работе изображения надо будет так же сохранять? Или с ними ещё что-то делать? Там же просто плагины разные есть, может быть можно и без доп.кода обойтись. Ну и, на всякий случай, выходной формат на уровне пайплайна можно разный запросить (с помощью videconvert).

S>2) сыпятся такие сообщения

S>0:00:11.961293800 30572 000002232259B7E0 WARN basesrc gstbasesrc.c:3693:gst_base_src_start_complete:<filesrc> pad not activated yet
S>0:00:11.963705700 30572 000002232218CF00 WARN qtdemux qtdemux.c:3245:qtdemux_parse_trex:<qtdemux> failed to find fragment defaults for stream 1

S>Что с этим делать?


Дык, видимо, не раскочегарилось ещё. У тебя readerPipe.SetState(State.Playing) GST_STATE_CHANGE_ASYNC возвращает? А в лог плюётся во время PullSample()? Не хочешь GetState'ом подождать завершения изменения состояния? Оно как часто эти сообщения выдаёт?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.