[專案分享] 在歐洲卡車模擬 2 聽 m3u8 廣播

[專案分享] 在歐洲卡車模擬 2 聽 m3u8 廣播

[Project] Play m3u8 stream in Euro Truck Simulator 2


Cover Image for [專案分享] 在歐洲卡車模擬 2 聽 m3u8 廣播

最近迷上了 Euro Truck Simulator 2,經常下課後窩在 lab 裡面用賽車組玩,體會現實生活中體驗不到的開一趟幾百萬、一個禮拜開公司財富自由的快感,裝了痛車模組之後一整個更快樂,養車跟養老婆一樣

遊戲內建收音機功能,可以在開車送貨同時收聽線上廣播,在開啟收音機功能時,官方會提供列表收錄各個歐陸的廣播電台,我們也可以利用改遊戲檔案來添加自己的廣播或音樂。但是有個很大的限制:遊戲播放器只支援 mms 或 HTTP mp3 格式,對於其他格式一概都不接受。

現今有許多廣播電台都已經轉換成 m3u8 格式,把音訊切成一小段一小段,將幾個小段建立索引讓接收端了解該去哪裡載這些音檔,這個索引就是 m3u8,但是很遺憾的歐卡目前不支援這種格式。

於是我就寫了一個 app (暫且稱作 TruckerM3U8),能夠在本地將 m3u8 等其他格式轉成歐卡支援的 HTTP mp3 串流。

專案連結:https://github.com/JCxYIS/TruckerM3U8

如何使用

首先先前往下載程式
連結:https://github.com/JCxYIS/TruckerM3U8/releases/latest
下載 TruckerM3U8_x64.zip

解壓縮後開啟執行檔 TruckerM3U8.exe,會自動開啟瀏覽器
http://localhost:3378/settings.html

直接選一個電台開始播放,可以點選畫面上方的連結 http://localhost:3378/ 試聽看看。

開始播放後就可以將瀏覽器關閉,而另一個命令列程式不要關閉 (程式本體),留著就好。

在 ETS2 裡面播放

打開遊戲檔案的 live_streams.sii 檔案 ({User Documents}/Euro Truck Simulator2/live_streams.sii)

滑到文件最底部,添加以下這行 (可能需要改括號 [] 裡的值)

stream_data[274]: "http://localhost:3378|<color value=FFBBC539>TruckerM3U8|You Choose|XX|128|0"

滑到文件最上面,把 stream_data 加一 ([]裡的值+1)

打開歐卡,可以看到有我們的電台了

之後如果要在遊戲裡聽廣播,記得先開啟 TruckerM3U8 播放想要的電台,再進入遊戲選擇。

加入自定義電台

可以直接到 TruckerM3U8 資料夾修改 wwwroot/radio.json

技術實現

稍微看一下可以發現這根本就是 ffmpeg 啟動器

+--------+
| |
| FFMPEG | (Download & convert m3u8 to mp3 stream)
| |
+--------+
|
| tcp (port 1049)
|
v
+-------------+
| TruckerM3U8 | (Distribute mp3 stream)
+-------------+
|
| tcp (port 3378)
|
v
+-------------+
| User (ETS2) |
+-------------+