专栏首页生信了利用树莓派和Kodi进行投屏

利用树莓派和Kodi进行投屏

1. 什么是投屏 投屏就是将一个设备上的屏幕显示内容投射到另一台设备上播放,最常用的场景就是将手机或者平板电脑上的视频投射到电视机上进行播放,毕竟电视机的屏幕大得多,看起来更过瘾。

比如,你在爱奇艺上看视频时,一般都会有一个“TV”的按钮,那就是用于投屏的,可以将爱奇艺上正在播放的视频投射到电视机上播放。

实现投屏功能,一般要求两台设备都支持 Airplay 或者 DLNA 协议。这两个协议下文还会涉及到。

2. 什么是树莓派和Kodi 简单来说,树莓派就是一个“卡片式电脑”,可以安装Linux、Windows等多种操作系统,并且自带多种输入输出接口,可以做很多有意思的事情。价格在300元左右。

Kodi,可以实现“家庭影院”功能的开源软件/系统。用它可以管理你的本地媒体资源(包括视频、音频以及图片),并且可以播放远端媒体资源。

我就准备用树莓派和Kodi来实现投屏功能。

3. 适用情境

初想到了买一个投屏的盒子,看了一下主流的价格在200元左右。想到自己还有一个“被遗忘”的树莓派,就边搜索教程边摸索着实践起来了。

硬件配置一览:

  1. 老式电视机一台(只有AV接口,没有HDMI接口);

2. 树莓派1代B+(有3.5mm复合音视频输出接口),安装了官方的Raspbian系统

4. 具体实现过程 4.1 连接电视机和树莓派 这一步千万注意连接线的选择!首先当然要选择一分三的AV连接线,但是市面上一般的AV连接线是对应“国标”的,而树莓派3.5mm接口是对应“美标”的,所以需要一个转接头进行转换。转接头某宝上有卖,AV线(一分三的)加转接头大概12元左右。

4.2 配置树莓派视频输出参数 既然连接上了,当然要播放一个视频看看啦!用树莓派上的视频播放器mplayer播放一个测试视频,结果只出来了声音,但是没有视频画面。即使如此,还是让我兴奋了一下,毕竟这说明连接没有什么大的问题!

但是不能一直没有声音吧,所以我网上搜索一番,发现需要重新配置树莓派的视频输出参数。具体做法如下: 编辑 /boot/config.txt 文件,编辑前请确保你有root或者sudo权限,并且可以先备份一下这个文件,以防设置过程出错!

用vi或nano等文本编辑器打开文件,其中重要的参数如下(参考来源):

overscan_left=16 //将画面向左移动16个像素点
overscan_right=16 //将画面向右移动16个像素点
overscan_top=16 //将画面向上移动16个像素点
overscan_bottom=16 //将画面向下移动16个像素点
disable_overscan=0 //设置是否允许屏幕过扫描1为不允许,0为允许
framebuffer_width=800 //设置屏幕宽度为800个像素点
framebuffer_height=400 //设置屏幕高度为400个像素点
sdtv_mode=2 //设置树莓派输出的电视制式
          //0-NTSC,北美视频标准
          //1-NTSC-J,日本视频标准
          //2-PAL,英国和其他国家视频标准
          //3-PAL-M,巴西标准
sdtv_aspect=2 //设置输出画面宽高比,1-4:3,2-14:9,3-16:9

经过测试,我选用了如下参数:(究竟要用什么参数,要根据自己的实际环境而定) 需要注意的是,当你更改了这些参数,它们不会立刻生效,必须重启系统后才能生效!

disable_overscan=0
overscan_left=20
framebuffer_width=850
framebuffer_height=750
sdtv_mode=2

当我更改参数并重启系统后,再次播放视频,电视机的画面和声音都有了,并且并没有噪音,Lucky!

最后说一句,如果你使用HDMI线连接电视机的话,需要用其他参数,主要是hdmi开头的那些参数,具体可以另行搜索。

4.3 安装Kodi 安装Kodi可以直接选用针对Kodi的定制化Linux发行版。由于我已经安装了其他系统,偷个懒就直接安装Kodi软件了。

如果要安装较新的Kodi版本,首先需要更新软件源(我用的是中科大的源): 打开 /etc/apt/sources.list 文件,将内容替换成:

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie main non-free contrib

然后打开 /etc/apt/sources.list.d/raspi.list 文件,将内容替换成:

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ jessie main

更新软件源后,接着就是实际地更新软件并安装Kodi了:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install kodi

这样Kodi就算安装好了!

4.4 设置Kodi播放参数 安装好Kodi后,当然还要进行调试啊。首先启动Kodi看看: 命令行输入Kodi就可以启动了:

kodi
#或者运行 kodi & 这个命令,可以后台运行Kodi

果然,出现了Kodi的画面!

接下来就是设置Kodi的参数了。有两种方法:一是通过电脑+鼠标键盘或者电视机+遥控器来进行可视化设置,二是通过配置文件来进行设置。我家的遥控器不灵了,只能利用配置文件来调控Kodi啦!这里提一句,第一种方法能做到的第二种方法都能做到,而第二种方法能做的第一种不一定能做到!

最重要的两个配置文件都在 ~/.kodi/userdata/ 文件夹下。分别是 guisettings.xml 和 advancedsettings.xml。其中 guisettings.xml 文件就是用来存放你通过电脑屏幕或电视机屏幕调控的那些参数。而 advancedsettings.xml 是存放一些更高级功能的参数,该文件里的参数可以覆盖 guisettings.xml 中的参数。经过我测试,直接修改 guisettings.xml 是不起作用的,而修改 advancedsettings.xml 可以直接操控Kodi。

比如,我们要开启 Airplay、UPnP(即DLNA)以及 webserver(分别是用来支持Apple设备播放、支持DLNA协议设备播放以及网络端控制),这些功能的参数在 guisettings.xml 中都有,但是我们不能直接修改它,而是要在 advancedsettings.xml 中重新设置这些参数。第一次打开 advancedsettings.xml,里面应该是空的(如果没有这个文件,就在上面提到的文件夹下面创建一下该文件),然后在里面输入以下参数:

<advancedsettings>
    <services>
        <airplay>true</airplay>
        <airplaypassword default="true"></airplaypassword>
        <airplayvideosupport default="true">true</airplayvideosupport>
        <airplayvolumecontrol default="true">true</airplayvolumecontrol>
        <devicename default="true">Kodi</devicename>
        <esallinterfaces>true</esallinterfaces>
        <escontinuousdelay default="true">25</escontinuousdelay>
        <esenabled default="true">true</esenabled>
        <esinitialdelay default="true">750</esinitialdelay>
        <esmaxclients default="true">20</esmaxclients>
        <esport default="true">9777</esport>
        <esportrange default="true">10</esportrange>
        <upnpannounce default="true">true</upnpannounce>
        <upnpcontroller default="true">false</upnpcontroller>
        <upnplookforexternalsubtitles default="true">false</upnplookforexternalsubtitles>
        <upnprenderer>true</upnprenderer>
        <upnpserver>true</upnpserver>
        <useairplaypassword>true</useairplaypassword>
        <webserver>true</webserver>
        <webserverpassword default="true"></webserverpassword>
        <webserverport default="true">8080</webserverport>
        <webserverusername default="true">kodi</webserverusername>
        <webskin default="true">webinterface.default</webskin>
        <zeroconf default="true">true</zeroconf>
    </services>
</advancedsettings>

这样就开启了三个功能。比如,我们看一看 webserver。浏览器里打开:8080(我的树莓派ip地址是192.168.1.111,所以我在浏览器里输入192.168.1.111:8080)就可以对Kodi进行远端控制了。

4.5 测试投屏

既然树莓派已经支持 Airplay 以及 DLNA 协议了,那当然要测试能不能投屏了啊,终于等到这一步!

重启Kodi。命令行重启Kodi的命令如下:

ps aux | grep -i "kodi" | awk '{print $2}' | xargs -I {} kill -9 {}
kodi &

重启后在爱奇艺上选择一个节目(看了四五遍的《请回答1988》),点击投屏按钮,预想的画面出现啦!一番折腾没有白费!

4.6 下载手机遥控器 最后还要解决一下遥控器的问题,官方 Wiki 推荐了一系列的手机APP来替代真实的遥控器。我选择了一款 “Official XBMC Remote for iOS” 的APP,非常好用(快进、设置等等都可以)。

5. 结语 至此利用树莓派和Kodi进行投屏就成功了。本次为实现投屏,硬件的总花费为12元。其实如果不是有一个闲置的树莓派,我应该不会花这么一番功夫来折腾!毕竟一个投屏的盒子也就百元左右。

网上的教程都语焉不详,希望我啰里啰嗦的文章能帮助到有需要的人!

谢谢大家看此长文!

本文分享自微信公众号 - 生信了(gh_ed36a29a9a9d),作者:hxj7

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Shell(一)好的操作习惯

    前一段时间顺丰运维人员将生产数据库删除的传闻着实成为了新闻热词,如果传闻是真的,相信那位运维也是无心之过,可能只是一瞬的手误。但是代价太大了,业内人员都懂的。

    一只羊
  • 序列匹配(五)重复匹配问题的动态规划算法

    问题及算法描述 更具体地描述上面的问题:有序列x和y,其中y是包含结构域的序列,x是要从中找到多重匹配的序列。将x分割成一段一段的不交叠的子序列,这些子序列要...

    一只羊
  • 序列比对(一)全局比对Needleman-Wunsch算法

    所谓全局比对算法,就是根据一个打分矩阵(替换矩阵)计算出两个序列比对最高得分的算法。关于它的介绍网上已经非常多了,我们只需看看其中的关键点及实现代码。

    一只羊
  • 我的javascript学习之路_01之js基础1JavaScript的简介JavaScript的使用JavaScript输出javascript语句JavaScript注释JavaScript变量J

    近期开始接触学习extjs框架。该框架是基于JavaScript的。为了更好地理解学习extjs,必然需要先对JavaScript有一个较好的理解。

    desperate633
  • JavaScript学习笔记(一)——JS基础知识介绍

    Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器...

    阳光岛主
  • 优质的前端书籍推荐

    木子星兮
  • 限时领取| 6GJavaScript高级视频,高级前端工程师必备武器!

    之前场主分享了13G的JavaScript基础视频,共140集实战教学。没想到领取人数竟超过了5000+,着实让场主感受到了JavaScript教程的需求,及还...

    养码场
  • 企业级JavaScript:机遇,威胁与解决方案[每日前端夜话0x8E]

    Enterprise JavaScript: Opportunities, Threats, Solutions

    疯狂的技术宅
  • 如何正确学习JavaScript(写给非JavaScript程序员和编程新手)

    目录 不要这样学习JavaScript 本课程资源 1~2周(简介,数据类型,表达式和操作符) 3~4周(对象,数组,函数,DOM,jQuery) JavaSc...

    前朝楚水
  • web开发技术-javascript

    快速入门 JavaScript 指南 中级教程 高级 内置对象 表达式和运算符 语句和声明 函数 Classes Errors 更多 Ne...

    达达前端

扫码关注云+社区

领取腾讯云代金券