# Partage d'écran - aide

**URL:** https://wazo-platform.discourse.group/t/partage-decran-aide/1421
**Category:** Développement: API/Events
**Created:** [December 21, 2023, 10:51am UTC](https://wazo-platform.discourse.group/t/partage-decran-aide/1421 "2023-12-21T10:51:31Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)
#### Post date: [December 21, 2023, 10:51am UTC](https://wazo-platform.discourse.group/t/partage-decran-aide/1421/1 "2023-12-21T10:51:31Z")

</div>

Bonjour,

Je tente de faire un partage d’écran lors d’un appel Vidéo.

Actuellement, j’arrive bien a récupérer le MediaStream de mon navigateur et à l’enregistrer dans mon localStream.  
Ce qui fait que je vois bien ce que je partage.

En revanche, la personne distante ne vois pas mon partage.

De plus, je ne comprend pas bien comment utiliser les fonctions du SDK:

```auto
async startScreenSharing(constraints: Record<string, any>, callSession?: CallSession): Promise<MediaStream | null> {
    return this.phone?.startScreenSharing(constraints, callSession) || null;
  }

  stopScreenSharing(callSession?: CallSession, restoreLocalStream = true): Promise<OutgoingInviteRequest | void | null> {
    return this.phone ? this.phone.stopScreenSharing(restoreLocalStream, callSession) : Promise.resolve();
  }

```

startScreenSharing est une promise qui ne renvoi pas de resolve.  
J’aurais pensé que ça me permettrait de mettre à jour mon callSession.screensharing = true

et seul stopScreenSharing resolve la promise précédente.

Et je ne vois pas de websocket qui pourrait être reçu par le destinataire lorsque je partage mon écran.

Je ne vois pas de SetMediaStream ou autre fonction du genre.

Je ne sais donc pas où injecter mon stream pour qu’il soit reçu par le destinataire.

Pour l’instant, mon code ressemble à ça:

```auto
const startScreenSharing = (callSession) => {
    navigator.mediaDevices.getDisplayMedia({}).then((stream) => {
      setLocalStream(stream);
      Wazo.Phone.startScreenSharing({audio: true, video: true}, callSession)
    });
    
  }

const stopScreenSharing = callSession => {
    Wazo.Phone.stopScreenSharing(callSession, true)
  }

```

Un peu d’aide et d’explication serait la bienvenue !

cheers !

---

<div class="post-metadata">

### Author: ![manu](https://avatars.discourse-cdn.com/v4/letter/m/7c8e57/32.png) [@manu](https://wazo-platform.discourse.group/u/manu)
#### Post date: [December 22, 2023, 8:36pm UTC](https://wazo-platform.discourse.group/t/partage-decran-aide/1421/2 "2023-12-22T20:36:01Z")

</div>

Hello Julien,  
Il n’y a pas besoin de faire de `getUserMedia` lorsqu’on appel `startScreenSharing`, il est déjà fait par le SDK.

`Wazo.Phone.startScreenSharing` retourne la valeure de `WebRTCPhone.startScreenSharing` qui retourne le `mediaStream` du flux vidéo de l’écran.

Une fois le flux créé, le SDK va envoyer un re-INVITE pour envoyer le flux vide via la Websocket Asterisk.

C’est l’évémenent `ON_SHARE_SCREEN_STARTED` qui te renverra une callSession avec le `screensharing = true`.

Manu

---

<div class="post-metadata">

### Author: ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)
#### Post date: [December 28, 2023, 7:07pm UTC](https://wazo-platform.discourse.group/t/partage-decran-aide/1421/3 "2023-12-28T19:07:04Z")

</div>

Hello,

hum, c’est pas clair tout ça 😜

ça attend des **constraints**

```auto
Wazo.Phone.startScreenSharing({
      audio: true,
      video: true
    }, callSession);

```

Mais il me faut bien récupérer le stream avec

```auto
navigator.mediaDevices.getDisplayMedia({ audio: true, video: true })

```

Du coup, je fais quelques choses comme ça:

```auto
const startScreenSharing = async (callSession) => {
    // récupère mon partage d'écran du navigateur
    let myStream;
    await navigator.mediaDevices.getDisplayMedia({ audio: true, video: true }).then((stream) => {
        myStream = stream;
    });

    // récupère la track audio et vidéo
    const audioTrack = myStream.getAudioTracks()[0];
    const videoTrack = myStream.getVideoTracks()[0];
    
    // lance le partage
    const share = await Wazo.Phone.startScreenSharing({
      audio: true,
      video: true
    }, callSession);

    // je tente d'ajouter mon stream à celui de Wazo
    myStream.getTracks().forEach(track => {
        share.addTrack(track, share);
    });

};

```

Mais à ce niveau, le partage n’est pas visible par le destinataire (peer).

j’ai tenté

`const share = await Wazo.Phone.startScreenSharing(videoTrack, callSession);`

ce qui me renvoit l’erreur:

`TypeError: Failed to execute 'addTrack' on 'MediaStream': parameter 1 is not of type 'MediaStreamTrack'`

Je pense que la démarche est bonne, mais que l’erreur se trouve à la fin:

```auto
myStream.getTracks().forEach(track => {
        share.addTrack(track, share);
    });

```

bref, ça ne fonctionne toujours pas 🙃

cheers

ps: bonne fêtes !

---

<div class="post-metadata">

### Author: ![julienfr](https://yyz2.discourse-cdn.com/free1/user_avatar/wazo-platform.discourse.group/julienfr/32/797_2.png) [@julienfr](https://wazo-platform.discourse.group/u/julienfr)
#### Post date: [January 10, 2024, 7:11am UTC](https://wazo-platform.discourse.group/t/partage-decran-aide/1421/4 "2024-01-10T07:11:14Z")

</div>

Hello,

un petit up, car je n’avance pas sur ce point.

> [@manu](#):
>
> `Wazo.Phone.startScreenSharing` retourne la valeure de `WebRTCPhone.startScreenSharing` qui retourne le `mediaStream` du flux vidéo de l’écran.
> 
> Une fois le flux créé, le SDK va envoyer un re-INVITE pour envoyer le flux vide via la Websocket Asterisk.

Comment envoyer autre chose qu’un flux vide, c’est bien mon soucis 🙂
