下面是在還沒有改之前,經常出現在 iPad 上的畫面:
臨時 disable IPv6 的方法
如果在 Raspberry PI 的 Console 中輸入底下的指令:
ifconfig -a
可以看到類似底下的結果:
特別注意箭頭所指的 「inet6 address ....」那行,這表示系統目前有啟用 IPv6,在這種組態下,xbmc 的 AirPlay 接收到 iPad 送來的控制資料的成功機率較低。
可以先試試看,將 Raspberry PI 的 IPv6 關掉,執行底下這行指令:
sudo sysctl net.ipv6.conf.all.disable_ipv6=1
如果我們再次執行「ifconfig -a」來查看網路介面的組態,應該會變成類似底下的內容:
「inet6 addr:......」IPv6 的組態不見了,只剩下「inet addr:......」IPv4 的部份。
將 Raspberry PI 的 IPv6 disable 以後,再利用 iPad 試著播放影片,並導向給 Raspberry PI 中的 XBMC ,應該不會再出現錯誤訊息了。
利用 sysctl 組態暫時 disable IPv6
那如何將 IPv6 disable 變成 Raspberry PI 的預設值,而不用每次得在重新啟動後打指令呢?Raspberry PI 在啟動時會去讀取「/etc/sysctl.d」目錄中的 *.conf ,並讓 sysctl 去執行檔案中的內容,因此,我們可以在 /etc/sysctl.d 中新增一個叫「disableipv6.conf」,執行底下的指令:
sudo nano /etc/sysctl.d/disableipv6.conf
然後再該檔中新增 IPv6 disable 的參數:
net.ipv6.conf.all.disable_ipv6=1
編輯完畢後,將該檔案儲存起來,這樣,下一次啟動時,IPv6 就會被關掉了。
啟動時不載入 ipv6 module
想關得更徹底一點是根本在 boot 時,就不要載入 ipv6 的模組,我們可以將「ipv6」加入modprobe 的「blacklist」清單中。在「/etc/modprobe.d」目錄中,編輯或新增一個檔名為「ipv6-blacklist.conf」的檔案,執行:
sudo nano /etc/modprobe.d/ipv6-blacklist.conf
然後在裡面加入底下的內容:
blacklist ipv6
修改完,將檔案儲存,這樣子,下次啟動時,ipv6 的模組就不會被載入了。
關於 XBMC 上的解析度
如果 IPv6 disable 了,卻仍然出現「無法播放視訊」的對話框,有可能發生在使用 HDMI 時,因為它預設的解析度是 1080P ,解析度高,造成運算能力不強的 Raspberry PI 負載過重而出不來。不只是 AirPlay 有問題,甚至連使用「TED Talk 」、「YouTube」......等視訊附加元件也會有影片載入很久播放不出來的情形。
我試著由系統設定中去設定視訊的解析度,設為 1024x768 就正常了,難怪我在那台平價的 7吋小螢幕上都很流暢,而在 42吋的大螢幕上以 HDMI 連接卻老是卡住。
相關文章
1080p30fps h264 的影片 Raspberry PI 中的 omxplayer 會使用硬解,
回覆刪除播放沒問題,但得注意 memory_split 的設定,官方建議設到 64 以上,
用於 GPU 解碼暫存。