# PlayoutBee

Turn your Device (Windows, macOS, Raspberry Pi 4) into a PlayoutDevice that supports the  Hyperdeck Protocol to play clips directly from your ATEM Switcher or via the web interface.

## Getting Started

{% content-ref url="/pages/-Mce5dECbduco1fRrJf9" %}
[URLs](/urls)
{% endcontent-ref %}

{% content-ref url="/pages/-Md7QDGZO8Tz7R0D8JTp" %}
[Settings](/settings)
{% endcontent-ref %}

{% content-ref url="/pages/-Mce0jQYvIs5WaGyNUK6" %}
[API](/api)
{% endcontent-ref %}

{% content-ref url="/pages/-Mce0rwcDR\_eesRd-4hL" %}
[Support](/untitled)
{% endcontent-ref %}

## Installation

{% content-ref url="/pages/-MdCw9IZ\_cgbPeShLayI" %}
[Raspberry Pi](/installation/raspberry-pi)
{% endcontent-ref %}

{% content-ref url="/pages/-MdCqIKeZ4uu6aHU1AJX" %}
[Windows](/installation/untitled)
{% endcontent-ref %}

{% content-ref url="/pages/-MdCwAogffra3Dn65tDa" %}
[Mac OS](/installation/mac-os)
{% endcontent-ref %}


# URLs

all the URLs you can use for PlayoutBee

{% hint style="danger" %}
Replace playoutbee with the IP address of the System you are running PlayoutBee on
{% endhint %}

## **Control URLs**

### <http://playoutbee:3000/>

Web interface to control the PlayoutBee, change Settings, and upload Media.

### <http://playoutbee:3000/timecode>

Displays the Name of the Current Clip and the Remaining Timecode without Control perfect for Producers who just need to see the time

### <http://playoutbee:3000/dropzone>

Quick Drag and Drop interface to upload multiple assets easily

## **Output URLs**

### <http://playoutbee:3000/output>

The normal Output of PlayoutBee can be opened multiple times.

{% hint style="danger" %}
Most browsers don't support autoplay for Videos anymore and you need to enable Audio for Playoutbees Output to work
{% endhint %}

### <http://playoutbee:3000/?bg=transparent>

Set the Background to be transparent, useful for use with CaspertCG Vmix or OBS for Key Fill Outputs. Also can be set to a colour for ChromaKey.

### <http://playoutbee:3000/?bg=url(>"")

*Put an Image as Background useful to get a corporate Design behind a 9x16 Video. Make sure to URLENCODE it before setting it.*


# Settings

### ClipFolder

The location where Uploaded Media files get uploaded

### WatchFolder

The folder that should be scanned for new Assets to be added to the Playlist

### Enable WatchFolder

Enables the Watchfolder support for PlayoutBee

### **Open Output on Startup**

Automatically opens the Output to the last location it was when PlayoutBee Starts.

### Enable BlackOut when paused

Shows the Background when PlayoutBee is not playing anything ( so stopped or paused)&#x20;


# API

the Api Documentation for PlayoutBee

{% hint style="danger" %}
Since PlayoutBee is still in Beta, this API is still subject to change, but the main functions should be stable
{% endhint %}

### The PlayoutBee API is split into these categories:&#x20;

[#transport-functions](#transport-functions "mention")

[#asset-functions](#asset-functions "mention")

[#info-functions](#info-functions "mention")

[#raspberrypi-specific-api](#raspberrypi-specific-api "mention")

[#windows-and-macos-api](#windows-and-macos-api "mention")

### Transport Functions

## Play

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/play`

This endpoint will send the Play Command.

{% tabs %}
{% tab title="200 " %}

```
 e
```

{% endtab %}
{% endtabs %}

## Pause

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/pause`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Stop

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/stop`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## goes to the next Clip

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/next`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## goes to the previous Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/prev`

## Select Clip

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/select/{Index}`

Select's the Current Clip by Index

#### Path Parameters

| Name  | Type    | Description                          |
| ----- | ------- | ------------------------------------ |
| Index | integer | 0 Based index of the Asset to select |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Goto specifc timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/goto/{ms}`

#### Path Parameters

| Name                                 | Type   | Description                                                               |
| ------------------------------------ | ------ | ------------------------------------------------------------------------- |
| ms<mark style="color:red;">\*</mark> | String | Timestamp to go to in ms or leading with a \[+/-] for incremental changes |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Goto last X Seconds

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/last/{ms}`

#### Path Parameters

| Name                                 | Type  | Description                              |
| ------------------------------------ | ----- | ---------------------------------------- |
| ms<mark style="color:red;">\*</mark> | float | seconds to go before the end of an asset |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Asset Functions

All Asset commands also accept "next", "prev" or "current" as Index&#x20;

## Upload Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/upload`

uploads an Asset and adds it to the playlist

#### Request Body

| Name  | Type   | Description                               |
| ----- | ------ | ----------------------------------------- |
| files | object | an Array of files that should be uploaded |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Selects the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/select`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Enables the Asset and puts it into the rotation

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/enable`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Disable the Asset and removes it from the rotation

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/disable`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Volume of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/volume/{volume}`

#### Path Parameters

| Name                                    | Type   | Description                                                                                                                      |
| --------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"                                                                                  |
| volume                                  | String | Volume of the Asset either a float between 0 and 1 or a float between 0 and 1 with a \[+/-] sign infront for incremental changes |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Action of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/action/{action}`

set's the Action for the Asset&#x20;

#### Path Parameters

| Name                                    | Type   | Description                                                                   |
| --------------------------------------- | ------ | ----------------------------------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"                               |
| action                                  | String | <p>0 = Pause<br>1 = PlayNext </p><p>2 = Next</p><p>3 = Loop <br>4 = Reset</p> |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Set the Rotation of the Asset

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/{Index}/rotate/{rotation}`

#### Path Parameters

| Name                                    | Type   | Description                                        |
| --------------------------------------- | ------ | -------------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current"    |
| rotation                                | String | <p>One of these : <br>0 <br>90 <br>180 <br>270</p> |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Sets the InPoint to the current timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/inPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Sets the OutPoint to the current timestamp

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/outPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Resets the Inpoint of the current Asset&#x20;

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/resetinPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Resets the Outpoint of the current Asset&#x20;

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/asset/current/resetOutPoint`

#### Path Parameters

| Name                                    | Type   | Description                                     |
| --------------------------------------- | ------ | ----------------------------------------------- |
| Index<mark style="color:red;">\*</mark> | String | Index of the Asset or "next", "prev", "current" |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Info Functions

## get all of the Assets&#x20;

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/assets`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## get the current Player State

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/player`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## get the current Player State

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/settings`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## the current Version of Playoutbee

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/version`

{% tabs %}
{% tab title="200: OK as example : "1.10.0"" %}

{% endtab %}
{% endtabs %}

## responds with Pong to the response

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/ping`

{% tabs %}
{% tab title="200: OK "pong"" %}

{% endtab %}
{% endtabs %}

## the currentTime of the Asset

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/currentTime`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## RaspberryPI Specific API

## opens the Chrome Browser for PlayoutBee to Output on the Pi

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/openOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Shutsdown the RaspberryPi

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/shutdown`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Windows & MacOS API

## Move Output to Screen

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/moveOutput/{id}`

#### Query Parameters

| Name                               | Type   | Description                                      |
| ---------------------------------- | ------ | ------------------------------------------------ |
| <mark style="color:red;">\*</mark> | String | Index of the Screen the Output should be sent to |

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Fullscreen Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/fullscreenOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/toggleFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Enable Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/enableFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Disable the Frame around the Output

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/disableFrame`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Output always beeing on Top

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/alwaysOnTop`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Toggle the Prevent Sleep Setting

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/preventSleep`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Opens the OutputWindow if it isn't Open already

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/openOutput`

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}

## Moves the Output window to x / y and resizes it to W and H

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/moveOutput/{x}/{y}/{w}/{y}`

#### Path Parameters

| Name | Type   | Description                       |
| ---- | ------ | --------------------------------- |
| x    | String | X in Pixels for the Output Window |
| y    | String | Y in Pixels for the Output Window |
| w    | String | Width of the Output Window        |
| h    | String | Height of the Output Window       |

{% tabs %}
{% tab title="200: OK float  as example "4.24"" %}

{% endtab %}
{% endtabs %}


# API V1

{% hint style="danger" %}
This is the old Api for PlayoutBee up to version 0.9.5 please check API v2 if want to see the latest&#x20;

{% endhint %}

## Play

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/play`

This endpoint will send the Play Command

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Pause

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/pause`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Stop

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/stop`

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Select Clip

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/select/{ID}`

Select's the&#x20;

#### Path Parameters

| Name | Type    | Description                      |
| ---- | ------- | -------------------------------- |
| ID   | integer | 0 Based id of the Clip to select |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Set Loop

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/loop/{state}`

#### Path Parameters

| Name  | Type   | Description      |
| ----- | ------ | ---------------- |
| state | string | either on or off |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Next

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/api/next`

goes to the next Clip

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

## Get Clips

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/clips`

returns a list of all Clips

{% tabs %}
{% tab title="200 " %}

```
[{"name":"Name of file","uri":"location of the file","length":"00:00:09:06},
{"name":"Name of file","uri":"location of the file","length":"00:00:09:06}]
```

{% endtab %}
{% endtabs %}

## Get Player

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/player`

Get's the Player Object

#### Path Parameters

| Name | Type   | Description |
| ---- | ------ | ----------- |
|      | string |             |

{% tabs %}
{% tab title="200 " %}

```
{"clipID":0,
"status":"stopped",
"loop":false,
"timecode":"00:00:00:00",
"remainingtimecode":9.24,
"preview":false,
"clips":[List of Clips]}
```

{% endtab %}
{% endtabs %}

## Get Current Clip

<mark style="color:blue;">`GET`</mark> `http://playoutbee:3000/api/currentClip`

Gets the current Player Object

{% tabs %}
{% tab title="200 " %}

```
{"name":"Nameofclip.mp4","uri":"location of Clip","length":"00:00:09:06"}
```

{% endtab %}
{% endtabs %}

## upload Video

<mark style="color:green;">`POST`</mark> `http://playoutbee:3000/upload`

uploads a Video and adds it to the playlist

#### Request Body

| Name | Type   | Description        |
| ---- | ------ | ------------------ |
| file | object | the file to Upload |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}


# Support

{% hint style="info" %}
Community Support on **Discord**: <https://bytehive.link/discord>

**Email** Support <jonas@bytehive.de>
{% endhint %}


# Raspberry Pi

For installing PlayoutBee on your Raspberrypi, there are 2 Ways available:

[Raspberry Pi Image](/installation/raspberry-pi/raspberry-pi-image) or [Raspberry Pi Manual](/installation/raspberry-pi/raspberry-pi-manual)\
If you want to use PlayoutBee with another software, you can use the Manual install, but keep in mind that you will need to tweak the OS by yourself to have the best experience with PlayoutBee.

{% embed url="<https://www.youtube.com/watch?t=10s&v=WOHdIauZqQI>" %}


# Raspberry Pi Image

1. Download the "playoutbee" disc image file&#x20;
2. &#x20;insert target SD card into PC&#x20;
3. &#x20;launch the raspberry Pi Imager (download it at <https://www.raspberrypi.org/downloads/>) ●&#x20;
4. Select "choose os"
5. Select "use custom"
6. Browse to the playoutbee image file & click open
7. click "sd Card" & select your target SD card
8. Click write
9. Wait until finished writing message&#x20;
10. DONE! (creating the SD card)

{% hint style="danger" %}
The Username for the Image is **bee** and the Password is **bytehive**
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=WOHdIauZqQI>" %}


# Raspberry Pi Manual

## How to Install on Raspberry Pi :

1. Upload the AppImage to your Pi
2. Make it Executable Right-click File -> Properties -> Permissions -> Set Execute to anyone
3. Double-click it and select execute
4. Open **<http://localhost:3000/output>** in your Browser
5. Allow Sound in the Website settings. Click on the I left of the Address -> Site settings -> Go to Sound and change it to allow
6. You are ready to go&#x20;

{% hint style="success" %}
&#x20;You can now open <http://ip-of-your-pi:3000/> and control it from any Device in the same network as your Pi&#x20;
{% endhint %}

## How to updated manually&#x20;

### Prerequisites

* Raspberry Pi with SSH enabled
* Terminal application on your computer
* PlayoutBee AppImage in `/home/bee` directory

### SSH Connection Instructions

#### Windows Users

1. Download and install PuTTY from <https://putty.org>
2. Open PuTTY
3. Enter your Pi's IP address in the "Host Name" field or playoutbee
4. Default port is 22
5. Click "Open"
6. Log in with username (default: `bee`) and password bytehive

#### Mac/Linux Users

1. Open Terminal
2. Connect using:

```bash
ssh bee@playoutbee
```

### Finding Your Pi's IP Address

```bash
hostname -I
```

### Updating the Launch Script

1. Navigate to bee directory:

```bash
cd /home/bee
```

2. Open the launch script:

```bash
sudo nano launch_playoutbee.sh
```

3. Delete current contents (Ctrl + K)
4. Add new content:

```bash
#!/bin/bash
export DISPLAY=:0
cd /home/bee
/home/bee/PlayoutBee-2.1.0-armv7l.AppImage
```

5. Save:
   * Ctrl + X
   * Y
   * Enter
6. Set permissions:

```bash
sudo chmod +x launch_playoutbee.sh
sudo chmod +x PlayoutBee-2.1.0-armv7l.AppImage
```

### Testing

```bash
/home/bee/launch_playoutbee.sh
```

### Troubleshooting

Check permissions:

```bash
ls -l /home/bee/launch_playoutbee.sh
ls -l /home/bee/PlayoutBee-2.1.0-armv7l.AppImage
```


# Set Resolutions


# Windows

## Enable AutoStart :&#x20;

1. open the Run window by pressing : "win + r "
2. type shell:startup into the box that opens&#x20;
3. then copy a shortcut to Playoutbee in the folder that opened, you can do this by right-clicking PlayoutBee in the Start menu and clicking "Go to Folder" then copy the Playoutbee shortcut from there.


# Mac OS


# Changelog

## 2.1.2

Hotfixes for the Raspberry Pi, causing the Pi to hang after a bit of time.

## 2.1.0

**🎮 Better Control & UI**

* The settings menu got a complete makeover
* You can now see what's currently playing right at the top
* Added a new MediaManager mode (/mediamanager)
* File names look cleaner (no more pesky file extensions!)
* Added asset types and more helpful tooltips
* There is a new option to open on your second screen (we'd love your feedback on this!).
* Set default actions for new imports
* Customize your Electron output background
* Plus, we fixed those annoying bugs with moving assets and settings loading

**⌨️ New Hotkey Controls**

K to stop, L to play, Space to toggle pause, Up/down arrows to navigate files

## 2.0.3

\+ Fix: Issues with creating the initial folders

\+ Fix: Issues when the system suddenly loses power while PlayoutBee is writing to a file&#x20;

\+ Fix: Improved loading of Settings

\+ Fix: Racecontioon on the Pi Let Playoutbee consume 10% of CPU

\+ Feat: updated OpenOutput command to open Chrome with the right command line parameters

## 2.0.2

\+ Fix: Updated Hyperdeck protocol Version to be compatible with Atem 9.5.0

\+ Fix: Updated CMD/CTRL + F to work for Fullscreen on macOS

\+ Feat:  TCP API without feedback for usage with QSYS systems&#x20;

\+ Fix: Removed unused Logging&#x20;

## 2.0.0

\+ Fix: Issue with Fullscreening on MacOs

\+ Feat: Improve scaling for non 16:9 media on a 16:9 canvas

\+ Feat: API to open Output on Pi and manage the Output window on MacOS and Windows.

\+ Feat: API to shutdown the Pi&#x20;

\+ Change: Default to not blacking out on Pause

\+ Feat: allow other ports than 3000 for PlayoutBee ( right now, it only needs to be changed in the Settings file)

+Feat: API to rotate Assets and  set the End Action

+Feat: Send Updates to connected Atems if we have an update in PlayoutBee

## OLD Changelog for Version 0.9->1.0

### 0.9.4

### Changed

* refreshed UI
* added ability to Select Clips to use for Next , Play Next&#x20;
* added Goto command to the API
* added /setBlackout Api endpoint
* added /setAction Api endpoint
* replaced /alpa and /secondOutput with query Parameters see "URLS"
* fixed Pause Button&#x20;
* fixed duplicate Timecode
* Slate and Overlay option for displaying current clip name and timecode on the Output
* fix autoplay restarting when opening a controller
* fix loop not loaded after restart&#x20;
* fix selected ID not selected after Restart&#x20;
* performance Improvements

## 0.9.3

### Changed

* you now can choose what PlayoutBee should do when a Video ends&#x20;
* Changes for the API + new functions fix for pointer being shown on Boot
* Countdown mode to make the Video end at a specific time.&#x20;


# Current State of the RaspberyPI version and Image

This Page will have the most up to date info on the current Status on the Raspberrypi Version of Playoutbee

## Appimage

The AppImage is used for custom installations and people who want to have the latest or customize their PlayoutBee instance themselves.&#x20;

The current version of the app image is 2.0.3 and can be installed following the guide here: There are no known issues with the AppImage itself, outside of needing FKMS to force the EDID for Atems.

## Image

The Image is the best way to get a ready out-of-the-box experience optimized for PlayoutBee . Check out how to get started with it here : [Raspberry Pi Image](/installation/raspberry-pi/raspberry-pi-image)


