Skip to main content
Version: 0.0.x

Stream Ingestion | Python

Stream Ingestion in VideoSDK Meeting allows capturing or processing streams from custom audio/video inputs. You can ingest streams from various custom audio/video sources such as files, HTTP streams, or buffers.

notification

Understanding MediaPlayer​

MediaPlayer is a component provided by the vsaiortc library for handling media streams in WebRTC applications. It enables capturing or processing streams from custom audio and video inputs, like files, HTTP streams, or buffers.

How MediaPlayer Works​

  1. Initialization: Initialize a MediaPlayer instance with a source URL or file path, specifying the type of media input.
  2. Stream Handling: The MediaPlayer decodes the media stream, making it accessible for further processing or transmission.
  3. Integration: Use MediaPlayer to feed media streams into a VideoSDK meeting, allowing participants to view or hear the ingested content.

Basic Stream Ingestion​

import asyncio
from videosdk import MeetingConfig, VideoSDK
from vsaiortc.contrib.media import MediaPlayer

VIDEOSDK_TOKEN = "<TOKEN>"
MEETING_ID = "<MEETING_ID>"
NAME = "<NAME>"
loop = asyncio.get_event_loop()

def main():
# Open a video file.
player = MediaPlayer("./example.mp4")

# Open an HTTP stream.
# player = MediaPlayer('http://example.com/video.mp4')

# Open webcam on Linux.
# player = MediaPlayer('/dev/video0', format='v4l2', options={'video_size': '640x480'})

# Open webcam on OS X.
# player = MediaPlayer('default:none', format='avfoundation', options={'video_size': '640x480'})

# Open webcam on Windows.
# player = MediaPlayer('video=Integrated Camera', format='dshow', options={'video_size': '640x480'})

# Pass track to meeting
meeting_config = MeetingConfig(
meeting_id=MEETING_ID,
name=NAME,
mic_enabled=True,
webcam_enabled=True,
token=VIDEOSDK_TOKEN,
custom_camera_video_track=player.video,
custom_microphone_audio_track=player.audio,
)
meeting = VideoSDK.init_meeting(**meeting_config)
meeting.join()
print("Joined the meeting...")

if __name__ == "__main__":
main()
loop.run_forever()

Using enable_mic() Method​

You can pass the MediaPlayer audio track to the enable_mic() method.

Example​

import asyncio
from videosdk import MeetingConfig, VideoSDK
from vsaiortc.contrib.media import MediaPlayer

VIDEOSDK_TOKEN = "<TOKEN>"
MEETING_ID = "<MEETING_ID>"
NAME = "<NAME>"
loop = asyncio.get_event_loop()

async def main():
# Open a video file.
player = MediaPlayer("./example.mp4")

# Pass track to meeting
meeting_config = MeetingConfig(
meeting_id=MEETING_ID,
name=NAME,
token=VIDEOSDK_TOKEN
)
meeting = VideoSDK.init_meeting(**meeting_config)
print("Joining the meeting...")
await meeting.async_join()

print("Starting player audio...")
meeting.enable_mic(track=player.audio)

if __name__ == "__main__":
loop.run_until_complete(main())
loop.run_forever()

Using enable_webcam() Method​

You can pass the MediaPlayer video track to the enable_webcam() method.

Example​

import asyncio
from videosdk import MeetingConfig, VideoSDK
from vsaiortc.contrib.media import MediaPlayer

VIDEOSDK_TOKEN = "<TOKEN>"
MEETING_ID = "<MEETING_ID>"
NAME = "<NAME>"
loop = asyncio.get_event_loop()

async def main():
# Open a video file.
player = MediaPlayer("./example.mp4")

# Pass track to meeting
meeting_config = MeetingConfig(
meeting_id=MEETING_ID,
name=NAME,
token=VIDEOSDK_TOKEN
)
meeting = VideoSDK.init_meeting(**meeting_config)
print("Joining the meeting...")
await meeting.async_join()

print("Starting player video...")
meeting.enable_webcam(track=player.video)

if __name__ == "__main__":
loop.run_until_complete(main())
loop.run_forever()

Output​

API Reference​

Refer to the following API documentation for methods and events used in this guide:

Got a Question? Ask us on discord