Мне трудно понять, как создавать конвейеры gstreamer. Я прочитал много вопросов в google и stackoverflow, которые очень похожи на мои, но большинство из них предполагают, что я знаю, что делаю, что не так.
Я читаю документацию, но чтение документации и создание работающего пайплайна кажутся совершенно разными вещами, и шахты терпят неудачу.
Я отправляю этот конвейер с gst-launch-1.0:
gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480 ! \
videoconvert ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5600
и я пытаюсь отобразить и записать конвейер из приложения C, используя gst_parse_launch, используя этот конвейер:
udpsrc port=5600 ! application/x-rtp, clock-rate=90000,payload=96 \
! rtph264depay ! video/x-h264 ! queue ! h264parse !
tee name=qgc
qgc. ! queue ! decodebin ! glupload ! glcolorconvert ! qmlglsink name=sink
qgc. ! queue ! mp4mux ! filesink location=bleh.mp4
Этот пайплайн корректно отображает видео, но результирующий файл совершенно пуст на диске.
Поскольку есть много очень похожих вопросов о Gstreamer, я хочу задать несколько вопросов, чтобы не задавать вопросов по этому поводу в будущем.
0 - Правильно ли написан конвейер? на тройник немного странно ссылаться, и я не уверен, правильно ли я их использовал.
1 - как я могу обнаружить, что не так в конвейере? Есть ли какой-нибудь отладчик, который я могу использовать для вставки конвейера, и pipeline compiler
скажет мне, все ли так, как должно, или, по крайней мере, есть ли очевидные недостатки в созданном мной конвейере (например, отсутствующие заглушки или несовместимые порты)
2 - как мне исправить этот конвейер, чтобы получать видео (которое воспроизводится правильно) и сохранять его на диск? Я почти уверен, что это что-то простое, но я не понял.
Другие ответы на подобные вопросы в основном сбрасывают конвейер, который работает на компьютере пользователя, но в старой версии gstreamer, которая сегодня больше не работает. Извините за длинный текст, я устал.
Счастливого Рождества.