为什么是打造家庭影院,主要还是因为我有台电视机,想把手机投屏到上面看电影,但又不想买电视盒子,干脆就用树莓派来打造好了。
参考通过KODI 观看IPTV电视直播 手把手教程
参考[原创干货]用树莓派看电视
参考PotPlayer新用法:电脑看电视、全球8000+直播源、高清
参考Kodi/XBMC手机遥控器使用图文教程
1 安装kodi
kodi是一个屡获殊荣的自由和开源的跨平台媒体播放器和用于HTPC(Home theater PC,家庭影院PC)的数字媒体娱乐中心软件,可以运行在Linux、OSX、Windows、Android 系统。最初为 Xbox 而开发,叫XBMC(全称是XBOX Media Center),顾名思义就是 Xbox平台的媒体中心。
1.1 安装kodi本体和插件
使用 apt-show-versions 列出软件所有版本,并查看是否已经安装
$ sudo apt-get install apt-show-versions
$ apt-show-versions -a vim
还可以通过apt-show-versions -u package查询是否有升级版本。
(1)首先ssh登录树莓派,安装kodi本体软件包:
sudo apt-get update #更新系统软件
sudo apt-get install kodi
(2)安装PVR插件
这个插件不装的话看不了电视直播,所以基本也是必装的。
sudo apt install kodi-pvr-iptvsimple
1.2 修改GPU显存大小
树莓派上的内存是分一些给CPU用,分一些给GPU用的,GPU占用的默认是64M。
如果我们不用树莓派的桌面的话,没必要分那么多,可以把它降到最低16M。
反过来,如果你用树莓派做视频播放、浏览网页,那么就要多分一点:最起码256M或512M。
sudo raspi-config
(1)选择Performance Options
(2)选择GPU Memory
(3)修改为512M。
目前使用中设置为256M就可以了,如果看某些高清视频还出现卡顿的话可以再调大一些。
2 开启kodi
2.1 首次启动
(1)树莓派 HDMI 连接上显示器,并通电启动。
(2)显示器video打开kodi就会出现kodi的界面。
2.2 设置语言
kodi原生支持中文,但是在修改语言前需要先更改主题字体。
否则改完语言后,所有中文都将显示为方框。
(1)打开Settings/ Interface / Skin / Fonts 设置为 Arial based。
接下来就可以设置语言了。
(2)打开 Settings / Interface / Regional / Language 设置为中文。
如果Regional中只有English,关闭kodi并重启树莓派,再次进入kodi即可。
2.3 允许远程控制
设置好语言后可以再服务中开启允许远程控制,就可以用手机上的遥控器控制了。
目前Kodi支持两种方式,分别是网页远程控制和Kodi遥控软件。
(1)打开kodi播放器,进入System【系统】->Settings【设置】->Services-【服务】>Webserver,选中允许远程控制。
注意:端口号、用户名和密码默认即可。
(2)快控(Kodi遥控器)。
3 网络直播节目
3.1 插件安装
PVR IPTV Simple Client插件的安装,通过KODI 插件库中的PVR IPTV Simple Client插件进行IPTV的播放的,所以我们首先要进行插件的安装。
(1)点击KODI主页面的的设置按钮,进入设置界面。
(2)点击插件按钮,进入插件页面。
(3)选择我的插件。
(4)选择PVR客户端。
目前只安装了PVR IPTV Simple Client插件,所以直接选就好了。
(5)点击设置。
(6)将常规-位置部分改到local path(本地路径)。
(7)选择M3U playlist path。
(8)找到并选择M3U8视频源。
(9)回到KODI主界面,选择电视。
3.2 直播源
直播源地址:https://github.com/iptv-org/iptv/blob/master/README.md。
这是一个开源项目,有8000 的播放源,并且有详细的分类。
Collection of publicly available IPTV channels from all over the world.
Internet Protocol television (IPTV) is the delivery of television content over Internet Protocol (IP) networks.
收集来自世界各地的8000多个公共IPTV频道。
互联网协议电视(IPTV)是通过互联网协议(IP)网络传送电视内容的方法。
3.3 IPTV
随着科技的进步,曾经的黑白电视逐渐变成了彩色电视,然后变成了液晶电视,从天线变成了网络电视,现在又出了iptv,可能很多人并不知道iptv是什么意思,下面就来说说iptv的意思。
PTV即交互式网络电视,是一种利用宽带有线电视网,集互联网、多媒体、通讯等多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服务的崭新技术。
其系统结构主要包括流媒体服务、节目采编、存储及认证计费等子系统,主要存储及传送的内容是以MPEG-2/4标准为编码核心的流媒体文件,基于IP网络传输,通常要设置内容分配服务节点,配置流媒体服务及存储设备,用户终端可以是IP机顶盒+电视机,也可以是PC机。
IPTV既不同于传统的模拟式有线电视,也不同于经典的数字电视,因为传统的模拟电视和经典的数字电视都具有频分制、定时、单向广播等特点。尽管经典的数字电视相对于模拟电视有许多技术革新,但只是信号形式的改变,而没有触及媒体内容的传播方式。
IPTV的主要特点
(1)承载在IP网络上,能够为用户提供高质量的数字媒体信息服务;
(2)实现媒体提供者和媒体消费者的实质性互动,用户可以互动点播自己喜欢的内容;
(3)IPTV能够提供实时和非实时业务,IP技术和个性化的按需服务,使得用户可按需获取宽带IP网提供的实时、非实时的媒体节目;
(4)用户可以随意选择宽带IP网上各网站提供的视频节目。
IPTV用户端可以采用多种接入方式,最常使用的方法是ADSL接入方式,也可以采用光纤电路的接入方式。用户在家中只要安装了宽带,通过电视机和IPTV机顶盒就可享受到IPTV的全部精彩内容。如果用户端有电脑,还可以在看电视的同时进行网上冲浪。
3.4 m3u
M3U(Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator)这种文件格式,本质上说不是音频文件,它并不能在脱机模式下读取网络资源音频,它是音频文件的列表文件,是纯文本文件。你下载下来打开它,播放软件并不是播放它,而是根据它的记录找到网络地址进行在线播放。
M3U文件的大小很小,也就是因为它里面没有任何音频数据。把M3U文件直接转换为音频文件是不可能的,除非你把它指向的音频文件下载下来再作处理。
4 无线投屏
目前三种主流同屏技术的介绍:目前这种将终端信号经由WiFi传输到电视、电视盒的技术有三种:DLNA、AirPlay、Miracast。
设备不同,需要的投屏协议也不一样。
一般来说,Windows电脑和Android手机、平板会使用Miracast协议。
而macOS电脑和iOS手机、平板会使用AirPlay协议。
你可以根据需要二选一,当然也可以两个都选,以同时支持Miracast协议和AirPlay协议。
这里选取的lazycast及RPiPlay均在Raspberry Pi 4B上测试成功,可以正常使用。
4.1 投屏协议
4.1.1 DLNA投屏协议
DNLA,Digital Living Network Alliance,是索尼、英特尔、微软等发起的一套 PC、移动设备、消费电器之间互联互通的协议。它们的宗旨是“随时随地享受音乐、照片和视频”。
DLNA与苹果的AirPlay功能比较类似,协议也大体相同,他们都可以让你手机中的媒体内容投放到电视屏幕里。不同的是手机上的DLNA 并没有类似Apple TV的AirPlay的镜像功能,也没有Apple TV 所支持的双屏体游戏体验。目前DLNA更多只是能将手机的照片和视频投送到大屏幕中。
另外,在线视频也可以用DLNA模式推送到客厅电视上显示,安卓系统部分播放器就具备DLNA功能,目前支持无线推送的视频客户端有以下:腾讯视频、搜狐视频、PPTV视频。可以将原来应该在N7屏幕的影片转移到电视屏幕上。前提是你要有能支持DLNA的电视或者电视盒。
如果电视仅支持DLNA投屏协议(取决于电视品牌型号),请从视频、音乐、图库等应用内的投屏入口发起投屏。
然后在手机上开启WLAN,启动【视频】,播放界面点【MENU】键,选择【选择播放器】;
DLNA是基于文件的,媒体文件可能有各种各样的编码格式,播放器这端必须能够处理这么多种编码格式。通常为了比较好的播放体验,DLNA会先缓存一小段时间。
4.1.2 Miracast
Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连为基础的无线显示标准。支持此标准的设备可通过无线方式分享视频画面,例如手机可通过Miracast将影片或照片直接在电视或其他装置播放而无需受到连接线缆长度的影响。
与DLNA不同的是,Miracast 也有类似于AirPlay 的镜像功能,可以将手机中屏幕内容直接投放到高清电视屏幕里,这样你也可以通过电视屏幕来玩游戏了。
Android4.2版本以后系统标配此功能(在设置或显示菜单中可以找到,应用名称诸如:Wlan display、Wifi display、Miracast、Allshare cast、Mirroring screen、无线显示等,只是各手机厂家命名不同而已)。可以将手机屏幕通过无线显示接收器将画面无线传输到其他较大屏幕上,如客厅电视,会议室投影仪。画面传输延时150ms以下,几乎同时。
Miracast是实时的,它可以实时传输源端(Source)的输出。源端任何屏幕的操作都会被传输到接收(Sink)端。如果源端是播放媒体文件,源端负责先对媒体文件解码,然后再编码成H.264的格式。接收端只需要做H.264的解码就可以了。相对DLNA,Miracast对于WiFi通路的要求要更高一些。
4.1.3 AirPlay
AirPlay 是苹果开发的一种无线技术,可以通过WiFi将iPhone 、iPad、iPodtouch 等iOS 设备上的包括图片、音频、视频通过无线的方式传输到支持AirPlay 设备。售价99美元的Apple TV就具备这样的功能,现在一些传统的家庭影院和HIFI如马兰士和天龙的新品功放和网络播放器已经支持AirPlay功能。。
AirPlay具备与DLNA所没有的镜像功能,这一功能叫AirPlay镜像,可将iPhone 或iPad 上的画面无线传输到电视上,也就是说你设备显示的是什么,电视屏幕显示就就是什么,而不仅限于图片和视频。你可以拿着iPad 来当做方向盘,然后看着大屏玩游戏。
另外AirPlay镜像最牛地方是它可以实现双屏游戏,让你的游戏有更多的交互。比如,电视里显示的是游戏画面,而iPad上显示的是比赛的路线图。
4.2 蓝牙键盘
M3青春版10.1英寸键盘套华为平板
BAH-W09皮套
BAH-AL00无线蓝牙键盘鼠标
蓝牙连到平板电脑或者树莓派。
无线鼠标转换头,连到手机或平板上。
4.3 手机投屏
4.3.1 方式一kodi开启DLNA
树莓派接到显示器,怎么可以把其他移动终端的内容也投到显示器上,让树莓派做投屏服务器,相当于电视盒子。
这里用到的应用程序是kodi,毕竟方便,支持的DLNA和airplay,非常强大了。
(1)点击齿轮进入系统设置。
(2)选择服务设置。
(3)UPnP/DLNA,设置全部开启。
(4)AirPlay,设置全部开启。
(5)视频中选择投屏。
4.3.2 方式二lazycast
在gitee上下载lazycast或者在github上下载lazycast
lazycast: A Simple Wireless Display Receiver
lazycast:一个简单的无线显示接收器
lazycast是一个简单的wifi显示接收器。 它最初是针对Raspberry Pi(作为显示)和Windows 8.1 / 10(作为源)的,但它也可能在其他Linux平台和Miracast源上工作。
对于其他Linux系统,请跳过准备部分。
树莓派上不用Downgrade wpa_supplicant。
树莓派上不用Install NetworkManager。
安装过程
(1)安装依赖包Install packages used to compile the players:
sudo apt install libx11-dev libasound2-dev libavformat-dev libavcodec-dev
(2)编译库文件Compile libraries on Pi:
cd /opt/vc/src/hello_pi/libs/ilclient/
make
cd /opt/vc/src/hello_pi/hello_video
make
(3)拉取安装包Clone this repo (to a desired directory):
cd ~/
git clone https://github.com/homeworkc/lazycast
(4)编译安装Go to the lazycast directory and then make:
cd lazycast
make
(1)命令行启动方式
运行./all.sh以启动lazycast接收器。
等待“The display is ready”消息。
显示屏的名称将显示在此消息之后。
然后,在要强制转换的源设备上搜索此名称。
默认的PIN码是31415926。
如果源支持反向通道控制,则Pi上的键盘和鼠标输入将作为远程控制重定向到源。
后台启动
cd lazycast
/home/pi/lazycast/all.sh >> /tmp/lazycast_output.log 2>&1 &
ps -ef | grep all.sh
kill -9 进程号
5 升级kodi
在Raspbian上升级:
sudo apt-get update
sudo apt-get upgrade
6 问题及解决
今天git clone 的时候突然遇到 gnutls_handshake() failed: The TLS connection was non-properly terminated. 这个问题。
解决方式:最后重置代理。
git config --global --unset https.https://github.com.proxy
git config --global --unset http.https://github.com.proxy