• Stars
    star
    208
  • Rank 182,477 (Top 4 %)
  • Language
    C#
  • License
    MIT License
  • Created almost 7 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Easily stream your Vimeo videos into Unity or record and publish out to Vimeo.

Vimeo Unity SDK

This plugin has two major features:

Installation

Download the most recent .unitypackage from the latest releases and open it up.

Recording

Features

The Vimeo Recorder is built on top of Unity's native MediaEncoder to make it simple to capture your Unity scene and share to Vimeo. Features include:

  • Easy Vimeo uploading: Customize your video title, privacy levels, downloads, and which project to add it to.
  • Record up to 4K video
  • Record 360 and stereo 360 video and publish to Vimeo's 360 platform
  • Record from the Unity Editor on Windows and Mac.
  • Capture from Screen, Camera, or Render Texture
  • Adjustable capture frame rate
  • Record in real-time or render offline
  • Control recording length manually, by duration, or via a custom script
  • *NEW* The Vimeo Recorder is now compatiable with AVPro Movie Capture. You should go check out their full feature list, but here are some of the most notable improvements:
    • Extremely robust & higher quality video recording
    • Works in the editor and also in standalone builds

Requirements

  • Requires a basic Vimeo account or higher.
  • Unity 2017.2 or higher.

Getting started

1. Setup

We provide a simple demo scene in the Vimeo/Scenes folder called Recorder. The Recorder scene contains the prefab, [VimeoRecorder]. Select it and in the component inspector you'll see the recording settings.

In order to add the Vimeo recorder in your own Unity scene simply go to the menu, GameObject > Video > Vimeo Recorder. You can also right-click in your Game Hierarchy and go to Video > Vimeo Recorder.

Sign into your Vimeo account by clicking Get Token. After you authorize Unity with Vimeo, copy the token, paste it into the Vimeo Token field, and click Sign into Vimeo.

2. Recording

Once you're signed in, all you have to do is click the Start Recording button. When you're done recording, click Finish & Upload.

Control recording via a script

Probably the most powerful part about this plugin is that you can control recording via a script. Below is a simple code snippet on how you would do that.

using UnityEngine;
using Vimeo.Recorder;

public class CustomRecorder : MonoBehaviour {
  VimeoRecorder recorder;

  void Start() {
    recorder = gameObject.GetComponent<VimeoRecorder>();
    recorder.defaultVideoInput = Vimeo.Recorder.VideoInputType.Camera;		
    recorder.defaultResolution = Vimeo.Recorder.Resolution.x2160p_4K;
    recorder.defaultAspectRatio = Vimeo.Recorder.AspectRatio.x16_9;
    recorder.frameRate = 60;
    recorder.recordMode = Vimeo.Recorder.RecordMode.Duration;
    recorder.recordDuration = 5; // in seconds
    recorder.autoUpload = true;

    recorder.videoName = "My Custom Video";
    recorder.privacyMode = Vimeo.Services.VimeoApi.PrivacyModeDisplay.HideThisFromVimeo;
    recorder.autoPostToChannel = false; 

    recorder.OnUploadComplete += UploadComplete;

    recorder.BeginRecording();
  }
  
  void UploadComplete() 
  {
    Debug.Log("Uploaded to Vimeo!");
    // Now you could change the scene and then immediately queue up another recording.
    // ...
    // recorder.BeginRecording();
  }
}

In this sample, CustomRecorder is assuming that it is a part of the same GameObject as the VimeoRecorder. All the settings that are avaiable in the editor GUI can be controlled via code.

Streaming

The SDK comes with the following example Unity scenes in the Vimeo/Scenes folder. Please note these demos don't work out of the box. You will need to authorize your Vimeo account and select your own video test.


Player - Demos simple video streaming inside of a 3D environment.

360Player - Demos how to stream 360 videos from Vimeo (supports 3D / stereoscopic video).

CanvasPlayer - Demos how to build a canvas-based player with basic playback controls.

Streaming Features

  • Vimeo Streaming leverages Unity's native VideoPlayer behind the scenes.
  • 4K video (on supported hardware)
  • 360 and stereo 360 video (equirectangular)
  • Select your preferred streaming video quality
  • Search for your Vimeo video within the Unity Editor, or manually specify via URL
  • Easy to use GUI and drag & drop components
  • We are now compatible with AVPro Video. You should go check out their full feature list, but here are some of the most notable improvements:
    • Versions for iOS, tvOS, macOS, Android, WebGL, Windows, Windows Phone and UWP
    • Adaptive video support. Vimeo supports HLS & DASH streaming. And with Vimeo Live you can even livestream into Unity.
    • 8K video (on supported hardware)
    • VR support (mono, stereo, equirectangular and cubemap)
  • *NEW* We now support streaming volumetric video using Depthkit. To learn more checkout our step by step walk-through on our wiki

Streaming Requirements

  • Unity 5.6.0 or higher.
  • Streaming Vimeo videos requires video file access via the Vimeo API. Accessing video files is limited to Vimeo Pro and Business customers.
  • You can only stream videos from your own Vimeo account. Access to all videos is limited to partnership-level integrations. If you are interested in a partnership, reach out to [email protected]

Setting up

1. Choose your playback method

Open up your Unity scene or create a new one. For streaming any Vimeo video, you will be using the VimeoPlayer component. There are two ways to setup the Vimeo player in Unity:

Prefab setup

The easiest way to get started is to either drag in one of the prefabs from Vimeo/Resources/Prefabs or simply right-click on your scene and the Vimeo Player from the Video menu:

Manual setup

If you are setting up your own scene and want to specify your video "screen" and audio outputs, you can add the Vimeo Player component to your GameObject.

2. Sign into your Vimeo account

Sign into your Vimeo account (or create one if you haven't already) and make sure you have some videos uploaded.

  • Click the "Get Token" button which will ask you to authorize with your Vimeo account.
  • After authorizing, copy the token and paste it into the Vimeo Token field in Unity.
  • Find your video and then copy the full URL or the video ID and paste it into the Vimeo Video URL field.
  • If you are not using one of the existing prefabs, then you will need to assign a GameObject to the Video Screen field. Currently, we only support Mesh and RawImage GameObjects.
  • Audio Output is optional. If left empty, a new audio object will be attached to the video screen.
  • For security reasons, the Vimeo token is not saved into the scene. But when you build it, the token will be included in the build itself automatically.

You're all set! Press play and you should now see your Vimeo video streaming in your app.

Vimeo & AVPro

If you're looking for an even more robust streaming and/or recording solution, we have integrated into AVPro's Video and Movie Capture plugins.

After installing either of AVPro's tools, the Vimeo plugin will automatically detect AVPro and a new option will appear.

Streaming with AVPro Video and Vimeo

The Vimeo Player component will now show a Video Player dropdown letting you to switch between Unity's native video player and AVPro Video. After selecting AVPro, you will need to assign their Media Player to the Vimeo Player component. Now when you run Unity, the Vimeo Player will automatically set the URL in the Media Player.

Recording with AVPro Movie Capture and Vimeo

The Vimeo Recorder component will now show a Video Encoder dropdown letting yo uswitch between Unity's native Media Encoder and AVPro Movie Capture. Select AVPro Movie Capture and assign the Capture component. Now when you record with AVPro's tools, Vimeo will automatically upload the video after it is finished recording.

Questions, help, and support

For questions and support, ask on StackOverflow. If you found a bug, please file a GitHub issue.

Make pull requests, file bug reports, and make feature requests via a GitHub issue.

Thanks

Big thanks to the Unity teams building MediaEncoder, GenericFrameRecorder, SkyboxPanoramicShader, and DepthKit

More Repositories

1

psalm

A static analysis tool for finding errors in PHP applications
PHP
5,435
star
2

player.js

Interact with and control an embedded Vimeo Player.
JavaScript
1,413
star
3

graph-explorer

A graphite dashboard powered by structured metrics
Python
1,060
star
4

php-mysql-engine

A MySQL engine written in pure PHP
PHP
544
star
5

player-api

Examples for our JavaScript and ActionScript player APIs.
450
star
6

vimeo.php

Official PHP library for the Vimeo API.
PHP
445
star
7

laravel

A Vimeo bridge for Laravel
PHP
384
star
8

stag-java

Speedy Type Adapter Generation
Java
351
star
9

VIMVideoPlayer

Deprecated: Please use [PlayerKit]( https://github.com/vimeo/PlayerKit) instead.
Objective-C
281
star
10

vimeo.js

Official Node.js library for the Vimeo API.
JavaScript
263
star
11

vimeo-oembed-examples

Some examples of how to use our oEmbed endpoint
HTML
237
star
12

vimeo.py

Official Python library for the Vimeo API.
Python
210
star
13

graphite-influxdb

An influxdb backend for Graphite-web and graphite-api
Python
198
star
14

vimeo-php-lib

Our official PHP library for the Advanced API.
PHP
180
star
15

tailgate

Tailgate is a nodejs app to pipe `tail -F` into websockets. It's a very simple way to have real-time access to your logs.
JavaScript
164
star
16

ABLincoln

A library for online experiments.
PHP
154
star
17

PlayerKit

Swift
154
star
18

vimeo-networking-java

The Vimeo Java (Android) SDK
Kotlin
122
star
19

py-money

Money class for Python 3
Python
121
star
20

vimeo-threejs-player

A plugin for streaming video from Vimeo to WebGL/VR/AR apps
JavaScript
88
star
21

tattletale.js

A utility to send console logs over XHR for server-side processing.
JavaScript
87
star
22

VimeoNetworking

The Vimeo API iOS SDK
Swift
83
star
23

vimeo-depth-player

A WebVR volumetric video renderer that uses color-depth based videos hosted on Vimeo.
JavaScript
83
star
24

aframe-vimeo-component

Stream Vimeo videos into WebVR.
JavaScript
81
star
25

simple-black-box

A simple black-box behavior testing framework
Shell
68
star
26

pentagon

Vault <-> Kubernetes Secrets
Go
59
star
27

VimeoUpload

The Vimeo iOS Upload SDK
Swift
59
star
28

whisper-to-influxdb

migrate (import) graphite data from whisper to influxdb
Go
58
star
29

smoketcp

Smokeping like tcp connectivity tester, reports to statsd. written in Golang
Go
58
star
30

VIMNetworking

The Vimeo iOS SDK
Objective-C
58
star
31

libvmod-boltsort

A fast Varnish module for sorting query string parameters.
C
58
star
32

vimeo-depth-viewer

OpenGL application for viewing depth and color video streams from Intel RealSense cameras
C++
52
star
33

iris

Vimeo Design System
TypeScript
50
star
34

carbon-tagger

native tag-based metrics for graphite/carbon
Go
50
star
35

go-util

Small reusable Go functions.
Go
44
star
36

Blueprint

aka How We Collaborate
41
star
37

graphite-api-influxdb-docker

docker image with graphite-api and graphite-influxdb
Shell
39
star
38

go-magic

Go Bindings for libmagic and an idiomatic API for getting a file's MIME type.
Go
39
star
39

rollup-plugin-bundle-size

A rollup plugin to show the size of the generated bundle(s).
JavaScript
29
star
40

vimeo-maxmsp

Play and manipulate Vimeo videos in Max/MSP and Jitter
Max
24
star
41

openapi

An OpenAPI specification for the Vimeo API.
17
star
42

VIMDeeplink

Simple Objc and Swift wrappers around the Vimeo iOS deeplink API
Swift
17
star
43

puppet-diamond

diamond module for puppet
Puppet
15
star
44

nagios-cloudwatch-plugin

AWS CloudWatch check Nagios plugin
Python
14
star
45

elevator

Validate and patch AV1 levels
Rust
12
star
46

puppet-statsd

statsd module for puppet
Puppet
11
star
47

VIMUpload

This library has been deprecated, use VimeoUpload instead
Objective-C
11
star
48

go-hammer

Go
10
star
49

VIMObjectMapper

An automatic JSON to model object converter
Objective-C
10
star
50

babel-plugin-transform-i18n

A Babel transform plugin to replace strings with their translations.
JavaScript
10
star
51

dials

Dials is an extensible configuration package for Go.
Go
9
star
52

go-clocks

A convenient package providing a Clock abstraction in Go
Go
9
star
53

go-taglog

Based on, and compatible with, the Go standard log package, but also provides additional functionality and features such as tagging.
Go
8
star
54

leaderelection

Go
8
star
55

ios-labs-staffpicks

An iOS Labs sample project
Swift
7
star
56

zendesk-ticket-history

JavaScript
7
star
57

grouplogger

Go
6
star
58

netstorage

go client for the new Akamai Netstorage http api
Go
6
star
59

caps

Go package to read/write popular video caption formats(mostly a port of pycaption)
Go
6
star
60

Uniform

Swift
6
star
61

alog

Another Go Logging Package
Go
5
star
62

vimeo-live-player-examples

Example application for using Vimeo Live M3U8 links with third-party players
HTML
5
star
63

graph-explorer-docker

Shell
5
star
64

eslint-config-player

ESLint config for all player team projects.
JavaScript
5
star
65

go-iccjpeg

A small utility package to extract ICC profiles from JPEGs.
Go
4
star
66

graphite-go

Go
4
star
67

go-retry

A small package for doing comprehensive retries.
Go
4
star
68

go-imgparse

A small go library to efficiently parse the resolution of various image format streams.
Go
4
star
69

vimeo-deeplink-android

A helper library to deep link into the official Vimeo Android App
Java
3
star
70

payment-gateway-logger

PHP
3
star
71

av1stats

An AV1 stream analysis CLI tool
Rust
3
star
72

omnipay-bluesnap

BlueSnap driver for the Omnipay PHP payment processing library
PHP
3
star
73

genepool

A golang package for building generic workpools in a standardized way
Go
2
star
74

omnipay-vindicia

Vindicia driver for the Omnipay PHP payment processing library
PHP
2
star
75

VimeoCommon

1
star
76

k8swatcher

Convenient watching interface for Kubernetes.
Go
1
star
77

policy

1
star