STREAMA - 可以同步觀看影片的媒體伺服器

Streama是完全免費且開源的,由於是受到Neflix啟發的專案,在首頁以及播放器上都能看到類似的設計語彙

他有個主打功能是可以同步觀看影片,這在疫情時期是許多平台力推的功能,像是iPhone也在Facetime中加入這些功能

只可惜很多串流平台的App並不兼容,我們可以透過自行架設影音串流伺服器來解決這個缺憾

Install

一樣先介紹最簡單且不會污染環境的安裝方式

Docker Compose

https://github.com/streamaserver/streama/blob/master/docker/docker-compose.yml

由於會用到多個container像是mysql db以及nginx作為reverse proxy,所以還是得依賴docker compose

version: "3"

services:
  mysql:
    image: mysql:5.7
    restart: always
    container_name: mysql
    hostname: mysql
    networks:
      - net-backend
    expose:
      - 3306
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: streama_root_password
      MYSQL_USER: streama
      MYSQL_DATABASE: streama
      MYSQL_PASSWORD: streama_password

  streama:
    image: streama
    build: .
    restart: always
    container_name: streama
    hostname: streama
    depends_on:
      - mysql
    networks:
      - net-backend
    expose:
      - 8080
    volumes:
      - $HOME/movies:/data/streama # Change to your video folder
      - app_data:/app/streama
    environment:
      ACTIVE_PROFILE: mysql
      MYSQL_HOST: mysql
      MYSQL_PORT: 3306
      MYSQL_DB: streama
      MYSQL_USER: streama
      MYSQL_PASSWORD: streama_password

networks:
  net-backend:

volumes:
  db_data:
  app_data:

reverse-proxy的部分可以照需求選擇要不要啟用

docker-compose up -d

連線方式是 http://localhost:8080

預設登入帳密會是admin


實際上最好使用能吃到GPU資源的環境,不然單純靠CPU解碼會吃很多資源 (尤其是沒內顯的)

用docker的話則要裝nvidia-docker才能吃到GPU資源

在yaml檔裡面可以加上runtime: nvidia ,確保環境用的是nvidia-docker

(Windows的docker desktop預設會用nvidia runtime,就不用在yaml檔內設定)


Features

Admin Settings

第一次登入後要先去設定local file path,這樣才能讀到已經在container內的電影

在admin要面下要設定2個選項,Upload Directory, Local Video Files

值都填上/data/streama 就好,再來就可以去content頁面新增影片

字幕跟影片資訊會分別去兩個網站抓,要自備這兩個網站的API token,用的API和plex基本上一樣

Add Movies/ TV Shows

如果選擇要加的影片抓不到相關資訊,也可以透過手動輸入並拖拉字幕和影片檔(或是兩者所在的資料夾)的方式來新增

如果當初沒有把影片丟進container內,也可以改用上傳的方式

Dashboard

和各大串流平台的主界面一樣會顯示資料庫內有的影片內容以及觀看進度

Manage Users

可以創新的使用者並決定其權限

Stream Session

在影片時間軸的右下方有個按鈕可以去做開啟

開啟這個功能後只要兩個人用的session_id是一致的,不論哪一方快轉或是暫停,全部人都可以同時看到

在plex這個功能叫做watch video together (用plex的好處是他也有針對手機等裝置出app)

Reference

GitHub - streamaserver/streama: Self hosted streaming media server. https://docs.streama-project.com/