рдЬрд╛рд╡рд╛, рд╕реНрдкреНрд░рд┐рдВрдЧ, рдХреБрд░реЗрдВрдЯреЛ рдФрд░ рдореАрдбрд┐рдпрд╛ рд╕реЗрд╡рд╛рдПрдВред рднрд╛рдЧ реи


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдХреБрд░реНрддреЗрдУ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЬрд╛рд╡рд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдФрд░ рдХреБрд░реЗрдВрдЯреЛ рдореАрдбрд┐рдпрд╛ рд╕рд░реНрд╡рд░-рдП рдореЗрдВ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЕрдЧрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡реЗрдмрдЖрд░рдЯреАрд╕реА рдореИрдЬрд┐рдХ рдорд┐рд░рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд╛рдо рд╕реЗ рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рджрд░реНрдкрдг рдереЛрдбрд╝рд╛ рдЕрд▓рдВрдХреГрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдлрд╝рд┐рд▓реНрдЯрд░ FaceOverlay рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХреИрдорд░реЗ рдореЗрдВ рдПрдХ рдорд╛рдирд╡ рдЪреЗрд╣рд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрд░реЗрдВрдЯреЛ рдореАрдбрд┐рдпрд╛ рд╕рд░реНрд╡рд░ рдЕрдкрдиреЗ рд╕рд┐рд░ рдкрд░ рд╕реБрдкрд░ рдорд╛рд░рд┐рдпреЛ рдХреИрдк "рдбрд╛рд▓рддрд╛" рд╣реИред рдпрджрд┐ рд▓реЗрдВрд╕ рдореЗрдВ рдХрдИ рдЪреЗрд╣рд░реЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдХреЛрдИ рдЯреЛрдкреА рдкрд╣рдиреЗ рд╣реБрдП рд╣реИред

Kurento рдореАрдбрд┐рдпрд╛ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ

sudo service kurento-media-server start 

рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрд░реНрддреЗрдиреЛ рдЬрд╛рд╡рд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдХреНрд▓реЛрди рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рди рдЪрд▓рд╛рдПрдВ:

 git clone https://github.com/Kurento/kurento-tutorial-java.git 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ

 cd kurento-tutorial-java/kurento-magic-mirror 

рд╣рдо рдорд╛рд╡реЗрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

 mvn compile exec:java 

рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЗрдбрд┐рдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, https: // localhost: 8443 / рдкрд░ рдЬрд╛рдПрдВ

рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдПрдХ рддрд╕реНрд╡реАрд░ рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐
рдЗрд╕ рдЕрдиреБрднрд╡ рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ: рдореЗрд░реА рдмрд┐рд▓реНрд▓реА рдХрд╛ рдЪреЗрд╣рд░рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЗрдВрд╕рд╛рди рдЬреИрд╕рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдкрд░ рдорд╛рд░рд┐рдпреЛ рдХреА рдЯреЛрдкреА рдЙрд╕рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рдкрд┐рдЫрд▓реЗ HelloWorld рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЛрд╣рд░рд╛рддреА рд╣реИред рддреАрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмреНрд▓реЙрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд╛рдЗрдб рдкрд░, рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдЬреЛ рдХрд┐ рдХреБрд░реЗрдВрдЯреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо Json рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЖрд░реЗрдЦ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЗрдПрдордПрд╕ рдореЗрдВ, WebRtcEndpoint рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреНрд▓реЙрдХ рдЕрдм рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдореАрдбрд┐рдпрд╛ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рдВрдЪрд░рдг рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЗрд╕реЗ рдлреЗрд╕рдСрд╡рд░рд▓реЗрдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЬреЛ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдПрдХ рдЪреЗрд╣рд░реЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреНрд▓реЙрдХ рдХреЗ рдмреАрдЪ рд╕рд┐рдЧреНрдирд▓ рдПрдХреНрд╕рдЪреЗрдВрдЬ рд▓рдЧрднрдЧ рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИред

рдЫрд╡рд┐

рдЬрдм рдЖрдк "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред MediaPipeline рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореАрдбрд┐рдпрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, WebRtcEndpoint рдФрд░ FaceOverlayFilter рдореАрдбрд┐рдпрд╛ рддрддреНрд╡ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЙрди рдХрдердиреЛрдВ рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рдХреНрд░рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреНрд▓реЙрдХ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред

 MediaPipeline pipeline = kurento.createMediaPipeline(); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); FaceOverlayFilter faceOverlayFilter = new FaceOverlayFilter.Builder(pipeline).build(); webRtcEndpoint.connect(faceOverlayFilter); faceOverlayFilter.connect(webRtcEndpoint); 

RTP рд░рд┐рд╕реАрд╡рд░ рдирд╛рдордХ рдХреБрд░реНрддреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡реЗрджрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдпрджрд┐ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ Kurento Media Server рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

 sudo service kurento-media-server start 

рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрд░реНрддреЗрдиреЛ рдЬрд╛рд╡рд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдХреНрд▓реЛрди рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рди рдЪрд▓рд╛рдПрдВ:

 git clone https://github.com/Kurento/kurento-tutorial-java.git 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ

 cd kurento-tutorial-java/kurento-rtp-receiver 

рд╣рдо рдорд╛рд╡реЗрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

 mvn compile exec:java 

рдпрд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЗрдбрд┐рдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, https: // localhost: 8443 / рдкрд░ рдЬрд╛рдПрдВ

рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, "рдкреНрд░рд╛рд░рдВрдн" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рдЫрд╡рд┐

KMS рдХрдиреЗрдХреНрд╢рди рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, Gstreamer рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ: рдСрдбрд┐рдпреЛ, рд╡реАрдбрд┐рдпреЛ рдкреЛрд░реНрдЯ, рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕ред рдпрд╣ рдбреЗрдЯрд╛, рд╕рд╛рде рд╣реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рдХрдорд╛рдВрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

 PEER_A={KMS_AUDIO_PORT} PEER_V={KMS_VIDEO_PORT} PEER_IP={KMS_PUBLIC_IP} \ SELF_PATH="{PATH_TO_VIDEO_FILE}" \ SELF_A=5006 SELF_ASSRC=445566 \ SELF_V=5004 SELF_VSSRC=112233 \ bash -c 'gst-launch-1.0 -e \ rtpbin name=r sdes="application/x-rtp-source-sdes,cname=(string)\"user\@example.com\"" \ filesrc location="$SELF_PATH" ! decodebin name=d \ d. ! queue ! audioconvert ! opusenc \ ! rtpopuspay ! "application/x-rtp,payload=(int)96,clock-rate=(int)48000,ssrc=(uint)$SELF_ASSRC" \ ! r.send_rtp_sink_0 \ d. ! queue ! videoconvert ! x264enc tune=zerolatency \ ! rtph264pay ! "application/x-rtp,payload=(int)103,clock-rate=(int)90000,ssrc=(uint)$SELF_VSSRC" \ ! r.send_rtp_sink_1 \ r.send_rtp_src_0 ! udpsink host=$PEER_IP port=$PEER_A bind-port=$SELF_A \ r.send_rtcp_src_0 ! udpsink host=$PEER_IP port=$((PEER_A+1)) bind-port=$((SELF_A+1)) sync=false async=false \ udpsrc port=$((SELF_A+1)) ! r.recv_rtcp_sink_0 \ r.send_rtp_src_1 ! udpsink host=$PEER_IP port=$PEER_V bind-port=$SELF_V \ r.send_rtcp_src_1 ! udpsink host=$PEER_IP port=$((PEER_V+1)) bind-port=$((SELF_V+1)) sync=false async=false \ udpsrc port=$((SELF_V+1)) ! tee name=t \ t. ! queue ! r.recv_rtcp_sink_1 \ t. ! queue ! fakesink dump=true async=false' 

рд╡реИрд╕реЗ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдиреЗ Gstreamer рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ

 gst-launch-1.0 тАФgst-version 

рдкреЛрд░реНрдЯ рдФрд░ рд╕рд╛рдорд╛рди рдХреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧреИрд╕реНрдЯреНрд░рдорд░-рдПрдХ рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред

рдЕрдм, рдзреНрдпрд╛рди рд▓реЙрдЯрд░реА рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдЦреЗрд▓реА рдЬрд╛рдПрдЧреА рдпрд╛ рдирд╣реАрдВред рдХреНрд▓рд┐рдк рдХреЗ рдореЗрд░реЗ рдмрдЬрд╛рдп рдЦрд░рд╛рдм рд╕рдВрдЧреНрд░рд╣ рд╕реЗ, * .mpg рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рдЪрд▓рдиреЗ рд▓рдЧреАрдВ

рдЫрд╡рд┐

рдпрд╣рд╛рдВ рдкрд░ рдирддрд╛рд▓рд┐рдпрд╛ рдореЛрдЧрд┐рд▓реЗрд╡рд╕реНрдХрд╛рдпрд╛ рдХреА рдХреНрд▓рд┐рдк рдмрдЬрд╛рдИ рдЬрд╛рддреА рд╣реИред рдПрдХ рдЕрд▓рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реЗ рдХреНрд▓рд┐рдк рдпрд╛ рддреЛ рдЦреЗрд▓рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рд╡рд┐рдХреГрдд рдзреНрд╡рдирд┐ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВред

рдЗрд╕ рдЕрдиреБрднрд╡ рд╕реЗ рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ: рд╕рднреА рдпреЛрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИрдВред

рд╣рдо рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореАрдбрд┐рдпрд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛ рдореАрдбрд┐рдпрд╛ рдЯреНрд░реИрдлрд┐рдХ, рдФрд░ рд╕рд╛рде рд╣реА RtpEndpoint рдФрд░ WebRtcEndpoint рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЖрд░рдЯреАрдкреА рдкреИрдХреЗрдЯ рдХреЗ рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХреНрд▓рд┐рдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдХрдердиреЛрдВ рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рдХреНрд░рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 final MediaPipeline pipeline = kurento.createMediaPipeline(); final RtpEndpoint rtpEp = makeRtpEndpoint(pipeline, useSrtp); final WebRtcEndpoint webRtcEp = new WebRtcEndpoint.Builder(pipeline).build(); rtpEp.connect(webRtcEp); 

рдпрд╣ рдХреБрд░реНрддреЗрди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИ!

Kurento
Kurento рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ

Source: https://habr.com/ru/post/hi435922/


All Articles