# I need help about libmediasoupclient recvtransport

**URL:** <https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217>\
**Category:** mediasoup libraries\
**Created:** [August 21, 2019, 10:20am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217 "2019-08-21T10:20:11Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![zhangpengcool](https://avatars.discourse-cdn.com/v4/letter/z/4da419/32.png) [@zhangpengcool](https://mediasoup.discourse.group/u/zhangpengcool)\
**Post date:** [August 21, 2019, 10:20am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/1 "2019-08-21T10:20:11Z")

</div>

Now can send audio and video, In broadcaster demo create SendTransport for audio and video.  
How to create recvtransport for audio and video. Can you write some indicative code here?

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 21, 2019, 10:37am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/2 "2019-08-21T10:37:22Z")

</div>

Follow the libmediasoupclient API documentation. We have written it for something.

---

<div class="post-metadata">

**Author:** ![zhangpengcool](https://avatars.discourse-cdn.com/v4/letter/z/4da419/32.png) [@zhangpengcool](https://mediasoup.discourse.group/u/zhangpengcool)\
**Post date:** [August 22, 2019, 4:27am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/3 "2019-08-22T04:27:57Z")

</div>

I read the libmediasoupclient api document,but CreateRecvTransport has no example.  
I write some code for it. but throw

// Ensure the device can consume it.  
auto canConsume = ortc::canReceive(\*rtpParameters, \*this-\>extendedRtpCapabilities);  
if (!canConsume)  
throw Exception(“cannot consume this Producer”);

I modify Broadcaster.cpp like this after create CreateSendTransport ok(createaudiotrack createvideotrack):  
auto recvTransport = this-\>device.CreateRecvTransport(  
this,  
this-\>transportId,  
response[“iceParameters”],  
response[“iceCandidates”],  
response[“dtlsParameters”]);

```
std::unordered_map<std::string, mediasoupclient::Producer*> producers =
  sendTransport->GetProducers();
if (this->device.CanProduce("audio"))
{		
	for (auto& producer: producers)
	{
		mediasoupclient::Producer* pro = producer.second;
		if (pro->GetKind() == "audio")
		{
			recvTransport->Consume(
			  this,
			  std::to_string(rtc::CreateRandomId()),
			  pro->GetId(),
			  pro->GetKind(),
			  &pro->GetRtpParameters());

			break;
		}
	}
}

```

producers is sendTransport created audioproducer and videoproducer

where is wrong?

---

<div class="post-metadata">

**Author:** ![mkh](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/mkh/32/145_2.png) [@mkh](https://mediasoup.discourse.group/u/mkh)\
**Post date:** [August 22, 2019, 4:50am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/4 "2019-08-22T04:50:20Z")

</div>

Check this out, a simple mediasoup client/server implementation:

> **[mkhahani/mediasoup-sample-app](https://github.com/mkhahani/mediasoup-sample-app)**
>
> Mediasoup v3 sample app. Contribute to mkhahani/mediasoup-sample-app development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![zhangpengcool](https://avatars.discourse-cdn.com/v4/letter/z/4da419/32.png) [@zhangpengcool](https://mediasoup.discourse.group/u/zhangpengcool)\
**Post date:** [August 22, 2019, 7:20am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/5 "2019-08-22T07:20:15Z")

</div>

Thanks.But i have a little knowledge about nodejs.  
I git install and run to see it.

can you tell me how to create recvTransport and consumer?

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [August 22, 2019, 10:56am UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/6 "2019-08-22T10:56:43Z")

</div>

> [@zhangpengcool](#):
>
> // Ensure the device can consume it.  
> auto canConsume = ortc::canReceive(\*rtpParameters, \*this-\>extendedRtpCapabilities);  
> if (!canConsume)  
> throw Exception(“cannot consume this Producer”);

Why are you calling `ortc::canReceive()`? That’s is not public API, it’s not documented and you should not use it at all. libmediasoupclient will use it internally, you must just use the documented [libmediasoupclient API](https://mediasoup.org/documentation/v3/libmediasoupclient/api/) (plus the libwebrtc API to get `MediaStreamTracks` and so on).

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [December 2, 2019, 11:10pm UTC](https://mediasoup.discourse.group/t/i-need-help-about-libmediasoupclient-recvtransport/217/7 "2019-12-02T23:10:53Z")

</div>


