Skip to content

BinauralMeet/mediasoupStreamer

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
This branch is 28 commits ahead of ethand91:master.

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
app
 
 
 
 
 
 
 
 

Modified for VRChat screen sharing

See https://scrapbox.io/binaural-meet/VRChat%E7%94%A8RTSP_server for usage and details.

The below is the original document.

Simple video/audio Record Demo Using mediasoup 3 and GStreamer/FFmpeg


Introduction

Simple video/audio record application using Mediasoup and GStreamer

Recorded files are stored in the server's files directory or the directory set by the user (via process.env.RECORD_FILE_LOCATION_PATH)

File names are simply the current timestamp

This sample currently only uses VP8/opus and the output file is .webm


How to use

Install GStreamer

# For Ubuntu
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

Install Server Modules

cd server && npm i

Install App Modules

cd app && npm i

Configure the server

Change the announced IP in src/config.js to your local ip (config -> webRtcTransport -> listenIps)

Start the server

# The server uses FFmpeg as default
cd server && node src/server

# To use GStreamer
PROCESS_NAME="GStreamer" node src/server

Build and start the application

cd app
npm run build

# Copy the files from dist to a webserver etc.
# OR start the dev server
npm run dev

Access the sample page

https://localhost:8080

By default recorded videos will be available in server/files directory.


Server ENV Options

Argument Type Explanation
RECORD_FILE_LOCATION_PATH string Path to store the recorded files (user running node MUST have read/write permission)
GSTREAMER_DEBUG_LEVEL number GStreamer Debug Level (GStreamer only)
PROCESS_NAME string The command to use (GStreamer/FFmpeg) (case sensitive) default is FFmpeg
SERVER_PORT number Server port number (default is 3000). Note if you change this you will also need to edit the WebSocket connection url.

TODO

  • video/audio only recording
  • Multiple formats (mp4/avi etc)
  • Docker support

Like my work? Any support is appreciated.

Buy Me A Coffee

About

Streaming from WebRTC to RTMP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.9%
  • Shell 0.1%