想要架設子我的串流伺服器,老牌且深受企業喜愛的 Red5 肯定是個選擇。同時具備 Live 與 VoD 之串流更是讓其打趴一眾競爭者。而這也將是我們實作中所主要依賴的工具。在接下來的討論中,我們將探討如何快速架設這個系統,以及潛在的問題解決方案。
素材取用
docker-compose.yaml
version: '3.8'
services:
red5:
image: bbc_red5-2.0.9
build:
context: .
dockerfile: Dockerfile
container_name: red5-server
ports:
- "5080:5080" # HTTP
- "1935:1935" # RTMP
- "9253:8443" # HTTPS
volumes:
- ./media:/opt/red5-server/webapps/vod/streams:rw
restart: unless-stopped
dockerfile
FROM debian:sid-20250224
# Install Pre-Requisite Packages
#
RUN apt-get update
#
RUN apt-get install -y \
openjdk-21-jdk \
wget \
unzip \
nano
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
WORKDIR /opt
# Install Red5 by ZIP Realease
RUN wget https://github.com/Red5/red5-server/releases/download/v2.0.9/red5-server-2.0.9.zip && unzip red5-server-2.0.9.zip && rm red5-server-2.0.9.zip
WORKDIR /opt/red5-server
EXPOSE 5080 1935 8443
# Launch on start-up
CMD ["/bin/bash", "-c", "./red5.sh"]
實作過程
架設容器
為求穩定與獨立性,筆者決定將容器與資料架設在 C:\Red5 最簡易的位置之中。接著採用素材區所提供的兩份檔案,建立於路徑之中,並使用下列指令架設。這邊麻煩幫我檢查是否有空出 5080 1935 9253 三個端口,或者自行修改 docker-compose,yaml 之端口內容。
docker compose up -d
由於需要下載封包與資料解壓,首次執行需要略長的時間。完成之後我們會有台叫做 red5-server 的機台,以及名為 bbc_red5-2.0.9 的映像檔,總計佔約略 1.6 GB 之系統資源。

此時預設在 localhost:5080 將會有依賴 Tomcat 的網頁伺服器,當你看到下方的頁面即代表啟動成功。這邊各位不用在意上方的 DEMO,因為其原仰賴的 Adobe Flash 已經停止服務。

資料同步
後續為求使用 VoD 之功能,我們在建立容器時便同步綁定 /media 目錄。後續將會與本機中的 C:\Red5\media 的路徑做同步,後續我們處理過的隨選影片便能從這邊上架到伺服器,也不用過度擔心誤刪容器導致資料遺失的問題。

CORS
而另外如果要讓別的端站可以讀取資料,還需要額外開通 CORS 之設定。這邊我們僅示範關於 VoD 頁面之設定,而其他分頁有需要的話也能使用相同手法開通。
<web-app>
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
後話
各位如果前往其 GitHub 會發現它已經非常老舊,而基本上官方提供的文件也已無實際使用價值和參考意義,教學文章時常建議讓你轉往付費的 Red5 Pro 服務。雖然實作下來,各位可能認為架設這個服務非常輕鬆簡單。然而,這份腳本是筆者經過漫長且痛苦的檢查後才完成的成果,期間經歷對數個 JDK 版本的反覆測試和偵錯,甚至最終不得不放棄使用 Red5-Server-Core 最新的版本,才妥協並順利解決執行議題。
但這也是少數同時具備 Live 與 VoD 兩者服務的開源串流伺服器,為使用者節省了需要分別管理多個系統的麻煩。正是因為這種獨特的雙重功能性,以及開源專案所帶來的靈活性與可擴展性,即使面臨諸多技術挑戰和文檔不足的困境,這樣的情境之下,也算是不得不持續研究並投入時間的原因。
參考
[1] How to Set Up a Free RTMP Server with Open Source Red5 — Red5
https://www.red5.net/blog/online-rtmp-server-free/
[2] How to Enable CORS — Red5
https://www.red5.net/faqs/how-to-enable-cross-origin-resource-sharing-cors/
額外讀物
[1] Red5 Open Source — Red5
https://www.red5.net/open-source-live-streaming/