极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 50919|回复: 25

RaspCTL--将树莓派打造成视频机顶盒--支持优酷,迅雷,PPS等网站

[复制链接]
发表于 2013-1-23 17:50:42 | 显示全部楼层 |阅读模式
原文:https://code.google.com/p/stonelab/wiki/RaspCTL

什么是RaspCTL
RaspCTL是Raspberry Pi和Control字母的组合,表示树莓派控制端。 RaspCTL是一款通过手机终端(泛义上包括手机,平板,电脑等设备)控制树莓派的软件。
目前,通过Raspberry&RaspCTL组合,打造成家庭多媒体播放机顶盒,在此场景中,RaspCTL非常类似XBMC平台。
未来,会不断扩展RaspCTL功能,成为控制家庭物联网的设备中心,比如控制摄像头,空调开关等。此乃后话,按下不表。
为什么选择Raspberry Pi&RaspCTL为什么选择Raspberry Pi
我们先来看看Raspberry Pi的相关参数:
CPU700 MHz, ARM1176JZF-S
GPU(显卡)Broadcom VideoCore? IV,OpenGL ES 2.0, 1080p30 h.264/MPEG-4 AVC high-profile decoder
MEM(内存)512M
分辨率1080P
输出接口1*SD口 2*USB口 1*音频口 1*HDMI口 1*网卡
尺寸85.6 x 53.98 x 17mm (一张信用卡大小)
价格$35

好吧,一起来总结下Raspberry Pi的优势吧
  • 小巧:只有一张信用卡大小
  • GPU强悍: 硬解1080P,30帧/S,通俗地将,差不多是iphone4S手机的2倍性能
  • 输出接口丰富: 包括2*USB,1*HDMI
  • 性价比高:$35
从这些特性看,Raspberry非常合适充当高清视频播放机顶盒,来替代目前的华数机顶盒(华数官方垄断,费用高,质量差)。 家庭中,只要购置了Raspberry Pi和宽带,高清电影电视,免费看。 :)
为什么选择RaspCTL
只有一个原因:Raspberry Pi CPU很弱:700MHZ。 同样,我们来看一组数据:
  • Raspbian Terminal下 CPU LOAD在0.2左右
  • Raspbian XWindows下, CPU占用率差不多在70%以上
  • XBian下,CPU占用率在95%以上

如果,Raspberry Pi CPU能强悍那么一点点,那么XBian一定是首选,我也不会重新创造RaspCTL这个轮子了。只是目前,XBMC在Raspberry Pi(XBian)上的性能太糟糕了。 从数据看,只有在Raspbian Terminal下的性能,才能符合用户的期望,所以作者编写了RaspCTL这个控制端。通过手机终端的界面,来操作Raspbian Terminal,实现多媒体播放的功能。
RaspCTL功能特性V0.1.0
  • 支持视屏,音频播放
    • 支持播放,暂停,停止,快进,快退,播放列表,上一首,下一首等
  • 支持本地文件查看
    • 查看多媒体文件
  • 配置系统信息
    • 配置多媒体文件根路径等
  • 视频网站真实URL分析
    • 支持包括优酷,土豆,迅雷,百度等82个网站视频URL分析
  • 制定Plugins规范
    • 可非常方便开发RaspCTL Pugin
V0.1.1
  • 增加百度视频插件
    • 使用百度视屏搜索,支持优酷,迅雷看看,PPS,乐视,CNTV,电影网,风行网视频
  • 树莓派 重启 & 关机 功能
  • 增加首页
V0.1.2
  • 播放器bugfix
    • 解决多线程同步问题
使用者文档如何安装RaspCTL如何使用RaspCTL常见问题
  • Q:如何自启动RaspCTL服务
    • 将 bin/start.sh 配置到树莓派的/etc/rc.local exit之前。 同理,你在rc.local中可以启动其他任何服务;
  • Q:如何使用80端口
    • debian系统禁用了小于1024的端口,所以RaspCTL只有使用8000端口。可以通过iptable将80端口请求转发到8000端口: iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-ports 8080
开发者文档类库API
Omxplayer
play播放,可以指定播放列表中任一一个资源
pause暂停播放
resume恢复播放
stop停止播放
lseek快退, 快退30秒, 参数为True的话,快退10分钟
rseek快进, 快进30秒,参数为True的话,快进10分钟
prev播放上一首
next播放下一首
set_playlist设置播放列表
add_playitem添加多媒体资源到播放列表中, 参数为 ('url', 'name') 资源地址, 资源显示名
del_playitem清空播放列表
sort_playitem播放列表排序
set_dev设置输出设备, hdmi接口 或者 本地音频接口
set_loop设置播放模式:顺序,循环
get_info获取播放器信息,如播放状态等

LocalFile?
get_mediapath获得多媒体文件根目录路径
list获取一个目录下的所有资源
list_all递归获取一个目录下的所有资源

Config
load获取raspctl.cnf中的配置信息
save更新raspctl.cnf中的配置信息

MediaUrl?
get_urls获取网站url对应的真实视屏url地址信息, fmt=high 获取高清视屏地址

Ajax规范
使用Ajax的目的:为了RaspCTL提供的服务可以同时被WAP, Android APP, IOS APP使用,RaspCTL服务均以Ajax形式提供。希望Plugins开发者也遵照这个规约,但不强制。
类库中,只要被标志@classmethod的方法,会直接暴露成Ajax服务,如:
class Foo:
    @classmethod
    def hello(cls, arg1, arg2):
        return {msg: 'Hello Ajax[%s %s]' % (arg1, arg2)}
Ajax服务地址为:http://xxx.xxx.xxx.xxx:8000/api?data={"name":"Foo.hello", "args":["stone2083", "connie2083"]} 服务信息为:
{
  status: "Success",
  message: "Success",
  api: {
    args: [ ],
    name: "Foo.hello"
  },
  result: {
    msg: "Hello Ajax[stone2083 connie2083]"
  }
}Plugins规范youku --> 插件名字
    __init__.py --> 插件程序
    index.html --> 插件模板 【可选择】
init.py 内容为:
from rasplib import Plugin
urls = (
    '/', 'Index',
)

# 必须创建plugin实例,参数分别为插件名,作者名,版本号, 支持功能的urls
#其中,plugin中包含RaspCTL类库的所有方法,可直接调用
plugin = Plugin('youku','stone2083', '0.1', urls)

#web.py写法,插件规范并不引入新的学习成本。
class Index:
    def GET(self):
        return 'youku-NotSupported.'  #可以直接输出
        #return plugin.render.index()  #可以渲染某个模板信息
写在最后
  • RaspCTL作者联系信息:stone2083#yahoo.cn 程序的任何问题可直接联系这个邮箱
  • 招募UED设计前端界面 0.1.0前端非常糟糕,急待重构
  • 招募Plugin开发者,丰富RaspCTL
  • 期待小白鼠适用RaspCTL
  • Demo
回复

使用道具 举报

发表于 2013-1-23 20:03:51 | 显示全部楼层
好东西,顶一个
回复 支持 反对

使用道具 举报

发表于 2013-1-23 20:07:26 | 显示全部楼层
本帖最后由 wyyyh 于 2013-1-23 20:14 编辑

支持一个,找时间当个小白

建议html5 + mobile jquery
回复 支持 反对

使用道具 举报

发表于 2013-1-23 22:08:56 | 显示全部楼层
能有 airplay 的功能吗? xbmc上 airplay 音乐还行,看视频经常出不来图像
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-24 10:52:53 | 显示全部楼层
benjaminxuu 发表于 2013-1-23 22:08
能有 airplay 的功能吗? xbmc上 airplay 音乐还行,看视频经常出不来图像

没用过Airplay,能具体说说它的功能吗?
RaspCTL目前可以播放音乐,视频 (包括本地资源,网络资源)
就音乐而言,只能播放音乐,无法显示歌词,作者,专辑等信息,原因在于:
1. 为了性能,放弃了桌面(只使用Raspbian Terminal),所以要显示歌词到HDMI,实现难度非常大
2. RaspCTL使用的播放器,其实仅仅是Wap了Omxplayer。它本身不支持歌词,专辑显示功能。 要支持的话,我只能通过进程间通讯,获取到Omxplayer的输出信息,然后辅以歌词功能,作为同步输出。实现成本很大。

上面这两个理论上都可以实现,但是成本都很大,我没有太多动力去做。
网上先收集下这些个需求吧,如果需求量比较大,我后续去开发这个功能。
回复 支持 反对

使用道具 举报

发表于 2013-1-24 11:06:23 | 显示全部楼层
airplay我理解是手机上的传输到电脑上播放,视频或者图像。流媒体?

楼主,播放文件时没成功。U盘坏了,下次再试。
回复 支持 反对

使用道具 举报

发表于 2013-1-24 11:10:41 | 显示全部楼层
本帖最后由 wyyyh 于 2013-1-24 11:15 编辑



我搬了个图,这样似乎好看点?bottle + html5
仅建议,请个美工兄弟建议一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-1-24 11:52:58 | 显示全部楼层
太好了,顶贴!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-24 13:47:56 | 显示全部楼层
wyyyh 发表于 2013-1-24 11:06
airplay我理解是手机上的传输到电脑上播放,视频或者图像。流媒体?

楼主,播放文件时没成功。U盘坏了, ...

airplay我理解是手机上的传输到电脑上播放,视频或者图像

有点意思,这个应该可以做。 我回头考虑下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-24 13:49:47 | 显示全部楼层
wyyyh 发表于 2013-1-24 11:10
我搬了个图,这样似乎好看点?bottle + html5
仅建议,请个美工兄弟建议一下

这个界面靠谱多了。
我对写前端没什么兴趣, 希望有UED朋友加入一起完善这个产品。

之前那个代码,后端服务我才花了3天时间左右,页面花了我差不多6-7天,不会写 :(
回复 支持 反对

使用道具 举报

发表于 2013-1-24 16:28:34 | 显示全部楼层
各展所长吧,把接口做好,让能手上 :)
回复 支持 反对

使用道具 举报

发表于 2013-1-24 16:55:30 | 显示全部楼层
支持下lz,看起来相当不错啊
回复 支持 反对

使用道具 举报

发表于 2013-1-24 17:52:08 | 显示全部楼层
airplay是苹果推出的一款支持视频,图片,音乐分享的协议,主要是将相关内容分享的更大的显示屏(电视机),当然电视机要连接可以支持airplay的设备,并且该设备和手机需要连接到同一个路由才可以。
回复 支持 反对

使用道具 举报

发表于 2013-1-24 20:49:17 | 显示全部楼层
不错!!!这个很有前途,希望继续努力
可以我就会java,不会前端,否则就一起弄!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-25 10:35:56 | 显示全部楼层
liyun12356 发表于 2013-1-24 17:52
airplay是苹果推出的一款支持视频,图片,音乐分享的协议,主要是将相关内容分享的更大的显示屏(电视机), ...

这么一说,我记起来了。 之前在橘子酒店,还用过这个设备。
对于android,和越狱的ios,还是比较好搞的。
非越狱的ios,还没有想到方案。

不过这玩意不需要在RaspCTL服务端可发, 完全是客户端(wap还不行,必须是app)的功能。
初步想法是:
1. app提供http服务,暴露本地资源(音乐,视频)
2. app将手机端资源信息推送到RaspCTL
3. 播放即可
能支持音乐,视频;图片是否能支持,我还要研究下。

希望搞android,ios app开发的人,一起来完成这个需求。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 20:53 , Processed in 0.043497 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表