LogoLogo
API Status
  • 👋Welcome
  • 🌐What is Morpheus Platform?
    • Interoperability
  • â„šī¸Help
    • 📗Glossary
    • 🆘Support
    • Firewall problems
    • EULA
  • CREATION
    • 🎮Unreal Development
      • ⚡Get Started
        • âš’ī¸Download the Editor
        • âĢUpload Content
        • 🌎Creating your own map
        • 📝Morpheus Base Project
        • ❓Differences from Unreal
          • 🧍Character Configuration
        • 📡Morpheus Networking
          • Introduction to Morpheus Networking
          • Network Levels
          • Replicated Properties
          • RPCs
          • Morpheus Render Targets
          • Morpheus Array
          • Networking FAQ
          • Replicating Sublevels
      • 📚Features & Guides
        • 📒Example Plugin
          • Nameplates
          • In-game roles
          • Resizing
        • 🏊Actor Pooling
        • 🔊Audio
        • 🎭Avatars
          • Creating an Avatar
          • Attachments
            • MML Attachments
          • Custom Animation Variables
          • Importing an NFT collection
          • Capsules and Mesh Transforms
        • 🤖Bots
        • đŸŽ™ī¸Chat
          • Unreal Text Chat
        • đŸŽ›ī¸Control Panels
          • Control Panel Configuration
          • DJ booth mission control
          • Observer Controls
        • 🔉Crowd Audio
        • đŸ¤ŧCrowd Rendering
          • Legacy Animated Crowd
            • Animated Crowd Console Commands
            • Attaching static meshes to crowd members
          • Crowd Materials
          • Performance Parameters
          • Live Config Settings
          • Crowd Animation
            • Crowd Anim Blueprint
              • User Guide - Crowd Anim Blueprint
              • Reference Guide - ABP Nodes
                • Animation Playback
                • States and State Machines
                • Variables
                • Transitions
                • Special
                • Blends
                • Additional Notes
        • 🍱Helpers & Extras
          • "Instanced Objects" in Blueprints
          • Objects with "world context"
          • Making DataAsset classes
          • Duplicate Objects
          • The Bootflow Subsystem
          • The "Wait For Condition" System
          • Advanced Graphics settings
          • Listening to inputs on UObjects
          • Morpheus UserID
          • World Services
          • M2Extras: Skins System
        • đŸ–Ĩī¸Loading Screen
        • ⚡Live Config
          • Editing for a World
          • Editing Locally
          • Default Settings
          • Accessing via Blueprint
          • Adding New Settings
          • Overriding Defaults
          • Using Arrays
        • 🧊MML
        • đŸ•ēMotion Capture
        • 📡Networking
        • đŸ“ĸNotifications
        • Raycastable Crowd
        • 🌐Singletons
        • 📱Streaming & Multiplatform
          • GFN on mobile
        • đŸ–Ĩī¸UI
          • "UI Mode"
        • đŸ—ƒī¸User Collections
          • Creating a New Object Definition
          • Accessing from Unreal
            • Creating Objects Definitions
            • Transfer Objects
            • User Collection Views
            • Receiving Updates
        • đŸ“ēVideo Players
          • Embedded Video Player
          • Millicast video streaming
            • How to Setup an In-Game Video Stream
            • Picture-in-Picture mode
          • Streaming Video Player
            • How to Setup a URL Video Player
            • Picture-in-Picture mode
        • 🐞Visual Debugging
          • Inspector
        • đŸĒŸWeb UI
        • Online Services
          • KV Store Service
        • 💠Web Requests
          • Http Requests
            • Legacy HTTP Nodes
          • JSON Handling
          • WebSockets
          • Identity Validation
          • Allowed External URLs
          • Walkthrough Example
            • Example Counter Service
        • âœˆī¸World Travel
          • World Travel in the editor
        • Avatar Physics Assets
        • Action Gameplay Helper Components
      • 🔑Workflows
        • â†—ī¸Upgrade the Editor
          • đŸ–Ĩī¸Version History
        • âš™ī¸Editing Project Settings
        • 📈Profiling
        • đŸ§ēMarketplace Importing
        • đŸ› ī¸Extra Workflows
          • Setup Play-in-Editor
          • Setup Local Asset Validation
          • Adding Gameplay Tags
          • Validating Game Assets
          • Custom Connection Modes
          • Connect Editor to a World
          • Common Issues
      • 📚Useful Reading
        • ⭐Best Practices
    • 🌎Worlds
      • 📩Invite Players
        • Setting Role Groups
      • Persistent Worlds
      • Always on Worlds
    • 📅Running events
      • ✅Large scale events - Checklist
      • 👾Anti-Cheat (EAC)
      • 🎮Player Entry
        • 📱React Native
        • Steam
        • đŸ’ģHardware Reqs
      • đŸŽĨBroadcast
        • 📹OBS Integration
      • Failover
      • 🏁Capacity And Queue Management
  • ADMINS
    • đŸ‘ĒAccess Control
      • Adding metaverse contributors
      • Creating a new project
    • 💲Pricing
      • Development Support
      • Included Usage & Overages
      • Cloud Streaming
      • Access Modes
      • War Room Support
      • Platform SLA
    • âš™ī¸Settings
      • đŸ—ƒī¸Projects
  • APIs and Tooling
    • đŸ–Ĩī¸API Reference
      • Accounts
      • Events
      • Key/Value Store
      • Organizations
      • Realtime
      • User Profile
      • World Builder
      • Worlds
    • đŸ’ģTemplate Web App
      • đŸ’ĸModeration
    • Pixel Streaming
    • 🚀Launcher
  • Integrations
    • 📊Analytics
      • Sending events from web
      • 🎮Sending Events from Unreal
    • đŸ’ŦChat
      • 🎮Integrating Pubnub with your Unreal Project
      • Adding Moderation to Chat
Powered by GitBook
On this page
  • Overview
  • Basic setup
  • Multi-stream support
  • Advanced - Implement Millicast In Your Own Blueprint
  • Millicast Control Config
  • Screen Control
  • Configuring your stream
  • Recommended Settings
  • Monitor Settings From Client
  • Known Issues

Was this helpful?

  1. CREATION
  2. Unreal Development
  3. Features & Guides
  4. Video Players

Millicast video streaming

PreviousEmbedded Video PlayerNextHow to Setup an In-Game Video Stream

Last updated 2 months ago

Was this helpful?

In Review - feature maturity not classified, documentation in progress and likely to change

Overview

Basic setup

Multi-stream support

We officially support up to 2 streams. Running more than two is possible but we cannot ensure optimal performance. Going above performance guidelines can cause lower hardware clients to run slower and provide a below optimal experience.

Advanced - Implement Millicast In Your Own Blueprint

Millicast Control Config

Example:

Screen Control

If you’re using BPM_VideoPlayer instead, you may have to check your screen controls and make sure the “Millicast” option is selected.

Configuring your stream

When streaming, you have to select either vp8 or vp9 codecs. h.264 is not supported by Unreal.

Furthermore RTMP and RTMPS are not supported.

OBS Output Tab

Video and Audio Bitrate will determine the amount of data per second which will be transferred to the client.

Note that bitrate numbers are Not an exact science, and the server will internally modulate this number to better fit the connection, so the resulting bitrate can be much higher than that. What we know is that those numbers will still influence the stream in some way. More of this in recommended settings.

Encoder is usually never changed. Has to be noted that using H264 currently has problems with Millicast for Unreal.

Encoder Preset can change the how quick the image gets encoded/decoded in expense of image quality.

OBS Video Tab

Output (Scaled) Resolution is the important one as it is the resolution the client will receive, scaled from the initial input.

Downscale Filter states how precise the scaled image will be when generated. Unless specific needs, a Bicubic should be fine.

Common FPS Values are the target frames per second the server will send to the clients. There is currently no point to go higher than 30 as the game instances we use are capped at 30 FPS. Also to note that this parameter highly influences performance.

Recommended Settings

The following values are to be taken as an example, and to consider if the hardware to support is down to the level of a G6_Half or lower budget.

Having multiple screens in the scene will add little performance loss. Most of Millicast performance cost is given by each data stream.

Other than the supported hardware, will depend on how many streams are intended to be used. Only the most influential parameters are named, the rest is at user choice:

Budget for pixels: as many as a resolution of 1920x1080

Budget for video bitrate: 4000

Common FPS Values: 30 or lower

Example with a single stream

Output (Scaled) Resolution: 1920x1080

Video Bitrate: 4000

Audio Bitrate: 192

Common FPS Values: 30

Example with two streams (for each stream)

Output (Scaled) Resolution: 1280x720

Video Bitrate: 2000

Audio Bitrate: 192

Common FPS Values: 30

Monitor Settings From Client

From a non-shipping client build it is possible to print the stats for the current active Millicast streams in the scene by using the command:

M2.Millicast.PrintStreamsStats

which, for each active stream, will print the following info:

FAQ

Q: I want to stream pre-recorded video, should I use millicast?

Q: I have added multiple Millicast screens and the performance is poor, what should I do?

A: Performance will decrease with each additional video played in your world. Please re-consider if multiple Millicast Screens is an appropriate solution to your problem.

Known Issues

Blueprint Loaded Sublevels: The control panels used to control Millicast screens detect available screens in their MorpheusBeginPlay. This means that if you have Millicast screens in sublevels that are dynamically loaded, there are no guarantees their detection of available screens will happen after those assets have been loaded. To avoid this issue, ensure that all Millicast screens are in always loaded sublevels.

Millicast is a third-party streaming solution offered by which is an e2e solution for recording, encoding and showing live video streams in the experience.

Follow the steps to get a video feed running in-game.

Your Stream Name and Account Id can be found on

Stream Url should be set to:

A: No, please use the lightweight instead.

🎮
📚
đŸ“ē
Dolby.io
here
Dolby.io
https://director.millicast.com/api/director/subscribe
Streaming Video Player
Streaming within the experience