This message was deleted.
# helpdesk
s
This message was deleted.
d
getting mic code :
Copy code
const stream = await navigator.mediaDevices.getUserMedia({
        audio: {
          sampleRate: 48000,
          deviceId: deviceId,
          echoCancellation: true,
          noiseSuppression: true,
          suppressLocalAudioPlayback: true,
          autoGainControl: false
        }
      })

      micTrack = stream.getAudioTracks()[0]
      await this.room.localParticipant.publishTrack(micTrack, {
        source: Track.Source.Microphone,
        red: true,
        dtx: true,
        audioPreset: AudioPresets.musicHighQualityStereo,
        forceStereo: true,
      })
getting camera code :
Copy code
const stream = await navigator.mediaDevices.getUserMedia({
        video: {
          facingMode: {ideal: "user"},
          frameRate: {
            ideal: 15,
          },
          width: {
            ideal: 300,
          },
          height: {
            ideal: 300,
          },
          aspectRatio: {ideal: 1}
        }
      })

await this.room.localParticipant.publishTrack(stream.getVideoTracks()[0], {
        source: Track.Source.Camera, videoEncoding: {maxBitrate: 32 * 8 * 1000, maxFramerate: 15}
      })
getting screen share code :
Copy code
const stream = await navigator.mediaDevices.getDisplayMedia({
        video: {
          frameRate: {ideal: 15},
        }
      })

     await this.room.localParticipant.publishTrack(screenShareTrack, {
        source: Track.Source.ScreenShare,
        videoEncoding: {maxBitrate: 32 * 8 * 1000, maxFramerate: 15},
        screenShareEncoding: {maxBitrate: 32 * 8 * 1000, maxFramerate: 15}
      })
getting video file code :
writing audios/videos to file code using go sdk :
Copy code
func NewTrackWriter(track *webrtc.TrackRemote, pliWriter lksdk.PLIWriter, fileName string) (*TrackWriter, error) {
	var (
		sb     *samplebuilder.SampleBuilder
		writer media.Writer
		err    error
	)
	switch {
	case strings.EqualFold(track.Codec().MimeType, "video/h264"):
		sb = samplebuilder.New(maxVideoLate, &codecs.H264Packet{}, track.Codec().ClockRate, samplebuilder.WithPacketDroppedHandler(func() {
			pliWriter(track.SSRC())
		}))
		writer, err = h264writer.New(fileName + ".h264")

	case strings.EqualFold(track.Codec().MimeType, "audio/opus"):
		sb = samplebuilder.New(maxAudioLate, &codecs.OpusPacket{}, 48000)
		writer, err = oggwriter.New(fileName+".ogg", 48000, track.Codec().Channels)

	default:
		return nil, errors.New("unsupported codec type")
	}

	if err != nil {
		return nil, err
	}

	t := &TrackWriter{
		path:   fileName,
		sb:     sb,
		writer: writer,
		track:  track,
		room:   s,
	}
	go t.start()
	return t, nil
}


func (t *TrackWriter) start() {
	for {
		if !t.room.IsRecording {
			break
		}
		pkt, _, err := t.track.ReadRTP()
		if err != nil {
			break
		}
		t.sb.Push(pkt)

		for _, p := range t.sb.PopPackets() {
			t.writer.WriteRTP(p)
		}
	}
}
@dry-elephant-14928 here is the codes , can you take a look please ?