Куренто
Просто просмотрев источник — GStreamerFilter
ограничен простыми плагинами GStreamer. Они отвергают мусорные ведра, и я не понимаю, как вы могли бы указать/изолировать несколько пэдов, поэтому, вероятно, это не сработает.
(EDIT: возможно, я ошибаюсь здесь - я все еще учусь. Я вижу микшер пример изоляции типов мультимедиа, и это заставляет меня думать, что это возможно)
gstreamer
С другой стороны, установка gstreamer не должна быть такой уж накладной — тогда свяжите выходное соединение RTP с конвейером gst-launch
, который может выводить RTMP. Это просто отстой, что вы не можете управлять полным конвейером с помощью kurento.
(Я не знаю, как будет выглядеть этот пайплайн — сам исследую его. Это что-то вроде этого:
gst-launch-1.5 -v \
udpsrc port=9999 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! mux. \
multifilesrc location=sample.aac loop=1 ! aacparse ! mux. \
mpegtsmux name=mux mux. ! rtpmp2tpay ! queue ! udpsink host=10.20.20.20 port=5000
Но я имитирую звук в этом и не заработал полный поток)
вернуться в куренто
Дальнейшее исследование показало, что, возможно, Композит MediaElement
будет работать (tl;dr: нет):
Composite composite = new Composite.Builder(pipeline).build();
HubPort in_audio = new HubPort.Builder(composite).build();
HubPort in_video = new HubPort.Builder(composite).build();
HubPort out_composite = new HubPort.Builder(composite).build();
GStreamerFilter filter = new GStreamerFilter.Builder(pipeline, "rtmpsink location=rtmp://127.0.0.1/live/live_stream_720p").build();
webRtcEndpoint.connect(in_audio, MediaType.AUDIO);
webRtcEndpoint.connect(in_video, MediaType.VIDEO);
out_composite.connect(filter);
результаты (журналы kurento):
...15,011560 21495 [0x4f01700] debug KurentoWebSocketTransport WebSocketTransport.cpp:422 processMessage() Message: >{"id":28,"method":"create","params":{"type":"GStreamerFilter","constructorParams":{"mediaPipeline":"5751ec53_kurento.MediaPipeline","command":"rtmpsink location=rtmp://127.0.0.1/live/live_stream_720p"},"properties":{},"sessionId":"d8abb1d8"},"jsonrpc":"2.0"}<
...15,011862 21495 [0x4f01700] debug KurentoGStreamerFilterImpl GStreamerFilterImpl.cpp:47 GStreamerFilterImpl() Command rtmpsink location=rtmp://127.0.0.1/live/live_stream_720p
...15,015698 21495 [0x4f01700] error filterelement kmsfilterelement.c:148 kms_filter_element_set_filter() <kmsfilterelement0> Invalid factory "rtmpsink", unexpected pad templates
...15,016841 21495 [0x4f01700] debug KurentoWebSocketTransport WebSocketTransport.cpp:424 processMessage() Response: >{"error":{"code":40001,"data":{"type":"MARSHALL_ERROR"},"message":"Given command is not valid, pad templates does not match"},"id":28,"jsonrpc":"2.0"}
т.е. отказ.
person
J. Longman
schedule
28.03.2018