- 透過Apple TV直接播放Mac中各種格式的影片。
- 不需使用iPhone、iPad作為中繼轉發。
- 不用破解、修改Apple TV任何設定。
- Mac在睡眠狀態時,可自動喚醒建立連線。
- 徹底取代一般NAS。
若不在同一台Router底下,
跨越多台HUB時,
家庭共享的速度會異常緩慢。
幾乎無法使用。
支援的影片格式,
也屈指可數。
目前網路上大部分的解決方案,
都只能達到第一項功能,
或是使用iPhone、iPad作為中繼,
Airplay至Apple TV。
少部分能達到第二項功能。
關於第三項功能,
沒有看到完美的解決方案。
小弟花了一些時間,
終於找到方法,
分享給各位參考。
硬體需求
- Mac mini Late 2012, OSX Yosemite 10.10.1
其餘機型搭配此版作業系統應可適用。
IP: 192.168.1.9 - Apple TV 3rd Generation, iOS 7.0.2
舊款機型可適用。
IP: 192.168.1.35 - Router: ASUS RT-N16, Tomato v1.28 by shibby
一般Router也可適用,
若搭配Tomato韌體,
可不用修改Apple TV任何設定。
IP: 192.168.1.1
- Plex Media Server 0.9.11.4
提供即時轉碼的功能,
在iOS、Android手機平板,
或Samsung、LG等電視上直接播放,
儲存在Mac中各種格式的影片。
https://plex.tv/ - PlexConnect 0.4
串連Plex Media Server與Apple TV,
在Apple TV上直接播放,
儲存在Mac中的影片。
https://github.com/iBaa/PlexConnect - SleepWatcher 2.2
可在Mac睡眠前,
或喚醒後執行指令。
http://www.bernhard-baehr.de/
- 高畫質電影 (1080P) 可使用XMedia Recode,
製作符合Apple TV格式的影片,
才能讓Plex直接播放 (Direct Play),
減少即時轉碼 (Direct Stream、Transcoding) 的需求。
http://apingxh.blogspot.tw/2013/09/how-to-convert-mkv-to-m4v-for-playing.html
https://support.plex.tv/hc/en-us/sections/200076783-Direct-Play-Direct-Stream-Transcoding
例如:
封裝格式: M4V
影像: H264
音軌1: AAC
音軌2: Dolby AC3 5.1
內嵌字幕1 (tx3g): 中文
內嵌字幕2 (tx3g): 英文
外掛字幕1 (srt): 中文
外掛字幕2 (srt): 英文 - 可將M4V影片匯入iTunes,
來編輯封面、影片、分類等資訊,
或是在Plex中編輯。 - 其餘一般影片可保持MP4、
WMV、MKV、AVI、RM等格式。
- 安裝Plex Media Server。
https://plex.tv/downloads - 連線至http://127.0.0.1:32400/web/
在Settings > Server > Transcoder (Show advanced) 修改:
Enable Dolby Digital on Apple TV
(解說: 若M4V中包含AC3音軌,不用重新轉碼)
Transcoder quality: Prefer higher speed
Transcoder default throttle buffer: 10
(解說: 減少轉碼等待時間) - 新增影片至Plex資料庫。
- 安裝PlexConnect。
https://github.com/iBaa/PlexConnect/wiki/Install-Guide-Mac - 修改PlexConnect設定。
編輯~/Applications/PlexConnect-master/Settings.cfg,
enable_plexgdm = False
(解說: 關閉Plex GDM自動搜尋設備,減少網路封包)
ip_pms = 192.168.1.9
(解說: 執行Plex Media Server的IP位址) - 以Daemon方式執行PlexConnect,
確保Mac開機時會自動執行。
https://github.com/iBaa/PlexConnect/wiki/Install-Guide-Mac#optional-run-PlexConnect-as-launchctl-daemon - 下載plist。
https://github.com/wahlmanj/PlexConnect/blob/master/update/OSX/com.plexconnect.wake_dns.plist
https://github.com/wahlmanj/PlexConnect/blob/master/update/OSX/com.plexconnect.wake_web.plist
https://github.com/wahlmanj/PlexConnect/blob/master/update/OSX/com.plexconnect.wake_pms.plist - 將所有plist移到/Library/LaunchDeamons,
確保是以Root的權限隨Mac開機執行。
(解說: 放在LaunchAgents要使用者登入後才執行,
一但登出就中止運行。
http://www.grivet-tools.com/blog/2014/launchdaemons-vs-launchagents/)
接者修改權限與所有權,
sudo chmod 644 *
sudo chown root:wheel *將所有plist移到/Library/LaunchAgents,確保Mac開機時會自動執行。 安裝SleepWatcher。
參閱以下連結快速安裝,
可在終端機執行:
sh sleepwatcher.sh
http://tyhoffman.com/blog/2013/09/sleepwatcher-power-event-driven-automation/在/etc/rc.wakeup新增,dns-sd -R "PlexConnect_DNS" _domain._udp. . 53 pdl=application/dnsserverdns-sd -R "PlexConnect_Web" _http._tcp. . 80 pdl=application/webserver解說:Mac可在Bonjour服務列表中,宣告 (Advertise) 可提供的網路服務。當Mac在睡眠狀態時,只要有符合宣告的服務要求時,例如DNS (Port: 53),Mac會被自動喚醒。
http://support.apple.com/zh-tw/ht3774雖然可透過dns-sd來宣告可用的網路服務,但僅限一次有效;換句話說,當Mac睡眠後再度喚醒時,在Bonjour服務列表中,已經沒有此項服務,也就無法被喚醒。
可用Bonjour Browser來檢查。
http://www.tildesoft.com/因此,可搭配SleepWatcher,每次Mac被喚醒後,重新宣告可用的網路服務。
執行syslog | grep "Wake reason"
來了解喚醒的事件為何。- 不用USB來安裝憑證至Apple TV。
https://miapple.me/PlexConnect-installling-certificates-on-apple-tv-without-usb/ - 修改Apple TV的DNS為192.168.1.9,
攔截電影預告 (Trailers) 的IP位置,
直接連線至Mac。 - 所有設備重新開機後,
選擇Apple TV中的電影預告,
即可觀看Mac中的影片。
縱使Mac在睡眠狀態,
也可以自動喚醒。
若不修改Apple TV任何設定,
並要任意指定PlexConnect預設Port,
可搭配Tomato韌體的Router,
進行以下步驟。
- 編輯~/Applications/PlexConnect-master/Settings.cfg,
enable_dnsserver = False
(解說: 關閉PlexConnect的DNS服務)
port_webserver = 8080
port_ssl = 8081
(解說: 修改PlexConnect預設Port: 80 (http)、443 (http SSL)) - 在Tomato router > Advanced >DHCP/DNS > Dnsmasq新增:
address=/trailers.apple.com/192.168.1.1
(解說: 攔截電影預告的IP位置,連線到Router) - 在Tomato router > Administration > Scripts > Firewall新增:
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.35 -d 192.168.1.1 --dport 80 -j DNAT --to-destination 192.168.1.9:8080
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.35 -d 192.168.1.1 --dport 443 -j DNAT --to-destination 192.168.1.9:8081
(解說: Apple TV向Router請求http與http SSL網路服務時,
透過iptables轉至Mac的任意Port) - 編輯/Library/LaunchDeamons/com.plexconnect.wake_web.plist,
將80改為8080並存檔。 - 編輯/Library/LaunchDeamons/com.plexconnect.wake_web.plist,
將8080改為8081。
將_http._tcp.改為_https._tcp
將PlexConnect_Web改為PlexConnect_Web_Secured
另存com.plexconnect.wake_web_secured.plist
(解說: Apple TV的電影預告使用https建立連線) 編輯/etc/rc.wakeup只保留,
dns-sd -R "PlexConnect_Web" _http._tcp. . 8080 pdl=application/webserver
dns-sd -R "PlexConnect_Web_secured" _https._tcp. . 8081 pdl=application/webserver- 修改Apple TV的DNS為自動。
- 所有設備重新開機後,
選擇Apple TV中的電影預告,
即可觀看Mac中的影片。
縱使Mac在睡眠狀態,
也可以自動喚醒。
備註: 目前此種方法雖然會自動喚醒,
但Yosemite似乎有些問題,
喚醒傳輸一些資料後,
又會自動睡著。
目前無解,煩惱中!
2014/12/30: Plex方案,經過長久測試後,我完全放棄了,非常不穩定。直接聽取網友建議,改用Air Video的方案,穩定度較佳、也沒有Mac mini睡睡醒醒的問題。在此推薦給大家,這篇就留個紀錄。
但Yosemite似乎有些問題,
喚醒傳輸一些資料後,
又會自動睡著。
目前無解,煩惱中!
2014/12/30: Plex方案,經過長久測試後,我完全放棄了,非常不穩定。直接聽取網友建議,改用Air Video的方案,穩定度較佳、也沒有Mac mini睡睡醒醒的問題。在此推薦給大家,這篇就留個紀錄。
No comments:
Post a Comment