--- tags: 開源錄像藝術同步播放器 --- # 開源錄像藝術同步播放器開發計畫規劃 ## 1. 計畫目標 發展一個能夠進行「錄像同步播放」的開源系統。 ## 2. 錄像同步播放 最常見的應用是多個視訊檔案,由各自對應的螢幕輸出,並在同一個時間軸上同步。除了視訊同步以外,真實環境中的應用可能還需考慮聲音的輸出是否同步。 ## 3. 使用情境範例 有 5 個 2k 畫質的 mp4 檔案,5 個影片檔案的長度都一樣。分別放置在 5 台撥放器中(ex: RPi)以 HDMI 將影像和聲音輸出到 5 個螢幕上。 這 5 台設備的其中一台為 master,其餘的為 slave,上電後所有設備皆會自動撥放,slave 會透過區域網路同步 master 的播放狀態。 ## 4. 系統需求 ### 主要功能 * 開機後自動執行 * 上電後勿擾自動執行 * > [name=andrew] 這應該是小事情,透過 systemd 就可以做到 * 以全螢幕撥放,且不應該出現任何標題 * 預設一直重複撥放所有影片 * 可自訂畫面旋轉角度 * 藝術家可能會將螢幕轉 90 度擺放 * 關閉螢幕保護程式 * > [name=andrew] 通常是有進入 x-window 的系統才需要考慮這件事情。但的確需要注意系統有沒有省電模式,以及它的啟動條件。 * 多台播放設備可透過簡單的區域網路設定,同步播放影片 * 一組滑鼠鍵盤控制多台電腦硬體 * > [name=andrew] 其實如果在同一個區網內,使用 ssh 或是 vnc 應該足以應付所有狀況 * 一定要支援到 FullHD ,能 4k 更好 * 可決定音源從哪裡出去,不一定從 HDMI 出 * 支援多種檔案格式 * 可自動關機 ### 進階功能 * 影像融接 > [name=andrew] 這個需要定義清楚是什麼意思。如果你想把一個大畫面,拆成三個螢幕輸出,類似電視牆那樣。從視訊同步的角度來看,應該是要先切割成三個播放檔案,然後輸出到不同的螢幕上讓他們同步撥放。如果有神奇的工具可以不做切割就做到這件事情,那就很神了。 ### 其他需求 * 外觀 * 機器身上最好有可以拿來鎖螺絲或綁束線帶固定的孔 * 機器身上不要有奇怪的燈 * 能遙控(或有app連線) * 能同步或互動設定 ### 待討論 * 多螢幕時,可設定程式在執行哪個螢幕執行 > [name=andrew] 我不確定為何需要這個功能?不知道提出這個意見的人原本的想法是什麼?以錄像來說通常應該是設備上的 HDMI 接在哪個螢幕就期望從那個螢幕輸出 * 四角梯形校正 > [name=andrew] 這應該是投影機或是螢幕自己的功能,我不確定播放設備是否可以做到?就算可以做到,我也不覺得這應該在撥放裝置上做。除了角度旋轉以外,我認為不應該讓撥放設備直接輸出修正後的影像。 ### 簡報 [錄像藝術播放器](https://docs.google.com/presentation/d/1uLBwhbuigKqXHSJnbzG5OlHlFZgqlNy5hgar1_OeDzM/edit?usp=sharing) ## 5. 操作流程 1. 開機 2. 接上網路,為了之後用一組滑鼠鍵盤設定多台主機 3. 調整螢幕(梯形校正) 4. 投影機色彩校正(因為每一台投影機的色彩都有差異,儘管是同一家公司、同一天出廠都有差異) 5. 投影格對位(如果是多螢幕拼接的話) 6. 螢幕溶接(如果有用到多台投影機,相同影片內容,拼接起來播放) 7. 選擇播放影片檔 8. 設定播放時間 9. 設定開關機時間 ## 6. 開發專案參考 * [OMXPlayer-Sync](https://github.com/turingmachine/omxplayer-sync) * OMXPlayer-Sync 是一種便於通過網絡以主/從方式同步多個 OMXPlayer 裝置的工具。 * > [name=andrew] 這應該是目前最完整的方案,master/slave 透過區網同步撥放。但 OMXPlayer 已經不支援 pi4 了,不知道在 pi4 上是否會影像,或是有沒有其他的替代方案? * [Raspberry Pi3 B+ 同步播放器](https://www.liutingchun.com/post/raspberry-pi3-b-plus-video-sync) from [劉庭均](https://www.facebook.com/profile.php?id=100000280427608&locale=zh_TW)。本篇將解釋如何目前最流通的Raspberry Pi3 Model B+ 製作同步播放器。 * [node-omxplayer-sync](https://github.com/bmoren/node-omxplayer-sync) * node-omxplayer-sync 利用 socket.io 在一個廣播 Raspberry Pi 和多個聽眾 Raspberry Pi 之間建立連接,實現視頻的同步播放。當廣播器的視頻循環播放時,它會向所有聽眾發送通知。這會將所有聽眾(包括廣播器本身)重置到循環播放的開始。所有聽眾都在主廣播器的完整播放循環上同步,並將不斷嘗試在主廣播器的文件循環時重新同步。 * [VLC-LinkGo](https://github.com/weichih25/VLC-LinkGo) from [Wei-Chih Lin](https://www.facebook.com/weichih25) * 運作原理是,先用 VLC 撥放需要同步的影片。再用 python script 去偵測( UDP 廣播)同一個網段裡主畫面(Master)的時間,並即時調整(透過 Http 介面)本機影片(Slave)的時間。 * [RPi_SyncLooper](https://github.com/HsienYu/RPi_SyncLooper) from [鄭先喻](https://chenghsienyu.com/) * [exhiberry-pi](https://github.com/andrewintw/exhiberry-pi) from [Andrew Lin](https://www.facebook.com/andrewintw) * 這是一個將您的Raspberry Pi轉換為專用循環播放視頻的應用程序。它可以應用於藝術裝置、展覽、劇院、活動、信息屏幕、廣告等等... * 可在影片撥放到某個時間點時,觸發一個事件(指令)去做其他事情,ex: 控制電燈開關 * 目前沒有處理畫面同步撥放的問題 * [pi_video_looper](https://github.com/adafruit/pi_video_looper) from adafruit * 這個應該沒有處理同步,只是讓影片持續重複撥放而已 * 相關的文章: [Raspberry Pi Video Looper](https://learn.adafruit.com/raspberry-pi-video-looper) * 教學討論文章 * [linux: How to sync two video players on two computers?](http://superuser.com/questions/258974/linux-how-to-sync-two-video-players-on-two-computers) ## 7. 硬體 Raspberry Pi 目前缺貨不容易取得,其他替代品: * [Tinker Board](https://www.asus.com/tw/Networking-IoT-Servers/AIoT-Industrial-Solutions/All-series/Tinker-Board/) * 多媒體狂熱者會很感激能有固定功能的 H.264 和 H.265 播放支援,包括 HD 及 UHD 影片播放。 * Banana pi ### 藝術家與展覽單位推薦的工具 * [BrightSign](https://www.ops-tec.com/zh/products/digital-signage-system-brightsign-zh/) * [XMP-7300](https://www.iadea.com/products/xmp-7300/) * [酷盒國際的播放器](https://shopee.tw/coolboxwill) * HP MP200 * 黑色數位奇機自動播放插卡式廣告機 ## 8. 參考資料 ### 臉書相關議題討論 * [今晚的錄像同步災難...看來開發 linux 版本的同步播放器計畫非常有搞頭....](https://www.facebook.com/honki/posts/10151085523646375) * [現在做錄像藝術創作的播放器都用樹莓派了吧?支持雙屏 4K 輸出與 H.265 解碼。有其他可推薦的? ](https://www.facebook.com/honki/posts/10156793812831375) * [開一個錄像同步播放工作坊應該有人想上課吧。](https://www.facebook.com/honki/posts/10152472642696375) * [已經超過八年了~今天還有藝術家跟我討論這問題~xd](https://www.facebook.com/honki/posts/10157377229111375) * [我覺得BrightSign還是不行。要同步播放還是得乖乖用電腦。](https://www.facebook.com/AuraChen/posts/10217160379841572) * > [name=陳禹先] 紐約這邊有錢的館清一色都用Brightsign耶~ 上上週去Met還有讓觀眾可以用自己手機下載APP,在MET Wifi內網,掃QR碼就可以從自己手機聽到和影像同步的音軌的應用,主控也是用Brightsign(雖然有點不知道為什麼要這樣同步...因為明明就站在電視前面也聽得到電視送出的聲音XD) * [用 mac 與 windows 格式化出來的 fat32,mac 格式出來的在使用上有一些狀況。](https://www.facebook.com/honki/posts/10158833907706375) * [大家好,我有個影片展示整合燈光的需求想請教..](https://www.facebook.com/groups/arduinotaipei/posts/5611201098907295/) * [相關討論](https://www.facebook.com/permalink.php?story_fbid=10219595658215560&id=1038778450) * > [name=藝術行政許願1] 可以讀各種怪檔案,loop很順 沒有標題出現,開機設定不會跳掉,即插即讀或有足夠記憶體可以存檔案或開機播放設定簡單。還有最好開機自動播放。其實還有就是一天播八小時不會有過熱(當然過熱可以選擇關機)loop不能有上限(曾經有過只能loop100次的軟體)至於解析度... 基本一定要支援到FullHD (4k實在還是有點尷尬)以下加分:能遙控(或有app連線)能同步或互動設定(欸這不就brightsign????) * > [name=藝術行政許願2] 過電就開機播放、支援格式多元、可播4K、音源預設不跟HDMI出、loop的時候不要出現檔名跟黑畫面、內建記憶體+外接USB跟SD卡、身上最好有可以拿來鎖螺絲或綁束線帶固定的孔、不要有奇怪的燈、散熱越強越好 * > [name=關於 brightsign1] 又順又穩 loop還不會有字幕。案格式限制多,解析度也不能超過4K,調音量麻煩,要檢查影片時乖乖重頭看,沒遙控器能快轉,bit rate也有限制,太高影片會頓(去年的慘重教訓,要藝術家一直壓檔案) * > [name=關於 brightsign2]bs就是格式非常死 (雖然設定完成幾乎不用維護不能調音量不能暫停快轉真的是很容易整到自己(特別是當展場要拍線上360展覽時⋯) * [最近支援朋友做樹梅派影像同步(我用的是Pi 4), 有幾個takeaways供其他人參考, 主要的啟發是來自朋友 Liu Ting Chun 的一篇部落格文章](https://www.facebook.com/KanTeiChou/posts/pfbid0tiWP56eNzYTMTEWALe6SoRH9JMXWEXXY5Wn7eyAPYdw3VAn2setPnt7tuVqewEMal?locale=zh_TW) ## 9. 軟體工具 * [mplayer](https://mplayerhq.hu/design7/news.html) * 開源的多媒體播放器,可在各主流作業系統使用。 * MPlayer 是建基於命令列介面,在各作業系統可選擇安裝不同的圖形介面。 * [mplayer 參數說明](https://blog.csdn.net/futurepeter/article/details/5316014) * [Synchronized playback over a network](http://www.mplayerhq.hu/DOCS/HTML/en/networksync.html) * [omxplayer](https://github.com/popcornmix/omxplayer) * 樹莓派中的 CPU 效能較差,而GPU較強大,omxplayer 是專門針對樹莓派的GPU的播放器,支援硬體解碼。 * Pi4 以上不支援。注意:omxplayer 已被棄用,資源用於改進 vlc。 * [vlc player](https://www.videolan.org/) * [MPlayer Remote](https://play.google.com/store/apps/details?id=com.mplayer_remote&hl=zh_TW&gl=US) * 遙控功能,只用於 andriod,計畫已經停滯多年。 * [AMD 多重顯示器 Eyefinity 技術](https://www.amd.com/zh-hant/technologies/eyefinity) * [Multiscreen Video with PiWall](http://matthewepler.github.io/2016/01/05/piwall.html) * 影片牆系統 * 您只需每個顯示器使用一個Raspberry Pi,再加上一個主控的Raspberry Pi,就可以製作一個與您的錢包允許一樣大的影片牆,而整個系統只需單個主控。 ### Projection Mapping > [name=andrew] Projection Mapping 通常用於光雕表演,這應該單獨討論 * [ofxPiMapper](http://ofxpimapper.com/) * projection mapping software that runs on the Raspberry Pi mini-computer. It comes as an addon for the openFrameworks creative coding toolkit, is open source and available on GitHub. * 教學: [Projection Mapping with the Raspberry Pi](https://projectileobjects.com/2018/09/12/projection-mapping-with-the-raspberry-pi/) * [MapMap](https://mapmapteam.github.io//) * open source video mapping software ## 10. 開發紀錄 08/02 開發與測試方式如下: 第一種 tinker board 安裝 android 播放 4k 60fps 的品質流暢。如果要用這方式來做的話,還需要找出可以在 android 中同步播放的程式以及可以開機播放與自動關機的工具。 第二種 tinker board 安裝 tinker os 與 rasbarry pi 4 安裝 lubuntu ,都安裝 MPlayer 來做同步播放,1080p 30fps的品質流暢,4k 延遲很嚴重。 目前以這個方式為主要開發方式,因為考慮到未來的延伸運用(比如加上 GPIO 去控制燈光或是各種互動裝置)。 下一步的進度是要設計與開發容易使用的部分,讓使用者在 usb 隨身碟上放兩個檔案,一個是播放設定檔,裡面可以設定這台機器是主機還是子機,自動關機時間等等。一個是影片檔案。開機後就會自動去讀取 usb 隨身碟中的資料自動播放 [影片同步播放器使用說明](https://github.com/Oliver0804/sync_player) 此程式用於在區域網路中同步播放多部影片,可以在不同主機上同步播放影片。 由 Oliver 在聚會當天晚上完成.... 另外,聚會場地需要一個白板好方便討論,希望這個白板的影像也可以出現在線上會議中。 其他 [gst-rtsp-server](https://github.com/GStreamer/gst-rtsp-server) gst-rtsp-server 是 GStreamer 之上的一個函式庫,用於構建 RTSP 伺服器。 [syncplayer](https://github.com/mo3rfan/syncplayer) 同步播放器,這是 SyncPlayer 安卓應用程式的源程式,從 1.6.0 版本開始。 ## 其他 * [The Extended View Toolkit](http://extendedview.mur.at/index.html) * 用 puredata 完成的工具 * 這應該是全景投影的相關議題