npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@formoe/use-media-stream

v0.4.0

Published

use media stream

Downloads

11

Readme

use-media-stream

The useMediaStream hook. The hook can be used to acquire MediaStream input objects from the users system using the navigator.mediaDevices interface.

Usage

import { useMediaStream } from "@formoe/use-media-stream"

const streamConfig = {
  requestAudio: true,
  requestVideo: true,
  dummyAudio: true,
  dummyVideo: true,
}

const ownVideoPreview = useRef<null | HTMLMediaElement>(null)

const { streamResult } = useMediaStream({ streamConfig, display })

// initially mute outgoing audio tracks (mute own mic)
useEffect(() => {
  if (streamResult.response) {
    streamResult.response.getAudioTracks().forEach((track) => {
      track.enabled = false
    })
  }
}, [streamResult.response])

return <video ref={ownVideoPreview}></video>

Returned Interface

The hook returns the streamResult. This is a @formoe/use-async result. It contains the acquired MediaStream object as response if finished successfully and an error if the given configuration could not successfully be fullfilled.

Params

The hook takes a configuration object containing two parameters:

Stream Configuration

streamConfig contains the configuration on which devices to acquire.

The optional flags requestAudio and requestVideo mark whether or not the specified media type is optional:

  • undefined means media will be aquired if possible but ignored if not
  • true means media has to be aquired, resulting in an error response on failure
  • false means meadia will not be aquired in any case

Acquiring media will prompt the user to allow access to the given media type.

The optional flags dummyAudio and dummyVideo mark whether or not a dummy track should be used if media is not aquired. For video this will result in a black 640x480px track and for audio in a silent track. This is useful if you need media tracks (for example for a WebRTC connection) but can not aquire it from the user.

The display parameter is a HTMLMediaElement, that get's its srcObject set to the aquired stream on sucessful aquisition.

{
  streamConfig: {
    requestAudio?: boolean,
    requestVideo?: boolean,
    dummyAudio?: boolean,
    dummyVideo?: boolean,
  },
  display?: HTMLMediaElement | null,
}