轉(zhuǎn)自:https://code.google.com/p/stonelab/wiki/RaspCTL
COPY過來格式比較亂,將就地看吧。原文直接看googlecode wiki吧 :)
什么是RaspCTL
RaspCTL是Raspberry Pi和Control字母的組合,表示樹莓派控制端。 RaspCTL是一款通過手機終端(泛義上包括手機,平板,電腦等設(shè)備)控制樹莓派的軟件。
目前,通過Raspberry&RaspCTL組合,打造成家庭多媒體播放機頂盒,在此場景中,RaspCTL非常類似XBMC平臺。未來,會不斷擴展RaspCTL功能,成為控制家庭物聯(lián)網(wǎng)的設(shè)備中心,比如控制攝像頭,空調(diào)開關(guān)等。此乃后話,按下不表。
為什么選擇Raspberry Pi&RaspCTL
為什么選擇Raspberry Pi
我們先來看看Raspberry Pi的相關(guān)參數(shù):
CPU |
700 MHz, ARM1176JZF-S |
GPU(顯卡) |
Broadcom VideoCore? IV,OpenGL ES 2.0, 1080p30 h.264/MPEG-4 AVC high-profile decoder |
MEM(內(nèi)存) |
512M |
分辨率 |
1080P |
輸出接口 |
1*SD口 2*USB口 1*音頻口 1*HDMI口 1*網(wǎng)卡 |
尺寸 |
85.6 x 53.98 x 17mm (一張信用卡大小) |
價格 |
$35 |
好吧,一起來總結(jié)下Raspberry Pi的優(yōu)勢吧
- 小巧:只有一張信用卡大小
- GPU強悍: 硬解1080P,30幀/S,通俗地將,差不多是iphone4S手機的2倍性能
- 輸出接口豐富: 包括2*USB,1*HDMI
- 性價比高:$35
從這些特性看,Raspberry非常合適充當高清視頻播放機頂盒,來替代目前的華數(shù)機頂盒(華數(shù)官方壟斷,費用高,質(zhì)量差)。 家庭中,只要購置了Raspberry Pi和寬帶,高清電影電視,免費看。 :)
為什么選擇RaspCTL
只有一個原因:Raspberry Pi CPU很弱:700MHZ。 同樣,我們來看一組數(shù)據(jù):
- Raspbian Terminal下 CPU LOAD在0.2左右
- Raspbian XWindows下, CPU占用率差不多在70%以上
- XBian下,CPU占用率在95%以上
如果,Raspberry Pi CPU能強悍那么一點點,那么XBian一定是首選,我也不會重新創(chuàng)造RaspCTL這個輪子了。只是目前,XBMC在Raspberry Pi(XBian)上的性能太糟糕了。 從數(shù)據(jù)看,只有在Raspbian Terminal下的性能,才能符合用戶的期望,所以作者編寫了RaspCTL這個控制端。通過手機終端的界面,來操作Raspbian Terminal,實現(xiàn)多媒體播放的功能。
RaspCTL(V0.1.0)功能特性
- 支持視屏,音頻播放
- 支持播放,暫停,停止,快進,快退,播放列表,上一首,下一首等
- 支持本地文件查看
- 配置系統(tǒng)信息
- 視頻網(wǎng)站真實URL分析
- 支持包括優(yōu)酷,土豆,迅雷,百度等82個網(wǎng)站視頻URL分析
- 制定Plugins規(guī)范
使用者文檔
如何安裝RaspCTL
- 下載RaspCTL
- 下載,解壓到指定目錄
- 或者直接使用svn地址: svn co https://stonelab.googlecode.com/svn/tags/raspctl-0.1.0 RaspCTL
- 安裝RaspCTL
- chmox +x bin/install.sh; bin/install.sh
- 會自動安裝RaspCTL依賴的第三方庫,主要是python-webpy python-jinja2 python-pexpect依賴
如何使用RaspCTL
- 啟動RaspCTL服務(wù)
- 關(guān)閉RaspCTL服務(wù)
常見問題
- Q:如何自啟動RaspCTL服務(wù)
- 將 bin/start.sh 配置到樹莓派的/etc/rc.local exit之前。 同理,你在rc.local中可以啟動其他任何服務(wù);
- Q:如何使用80端口
- debian系統(tǒng)禁用了小于1024的端口,所以RaspCTL只有使用8000端口。可以通過iptable將80端口請求轉(zhuǎn)發(fā)到8000端口: iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-ports 8080
開發(fā)者文檔
類庫API
Omxplayer
play |
播放,可以指定播放列表中任一一個資源 |
pause |
暫停播放 |
resume |
恢復(fù)播放 |
stop |
停止播放 |
lseek |
快退, 快退30秒, 參數(shù)為True的話,快退10分鐘 |
rseek |
快進, 快進30秒,參數(shù)為True的話,快進10分鐘 |
prev |
播放上一首 |
next |
播放下一首 |
set_playlist |
設(shè)置播放列表 |
add_playitem |
添加多媒體資源到播放列表中, 參數(shù)為 ('url', 'name') 資源地址, 資源顯示名 |
del_playitem |
清空播放列表 |
sort_playitem |
播放列表排序 |
set_dev |
設(shè)置輸出設(shè)備, hdmi接口 或者 本地音頻接口 |
set_loop |
設(shè)置播放模式:順序,循環(huán) |
get_info |
獲取播放器信息,如播放狀態(tài)等 |
LocalFile?
get_mediapath |
獲得多媒體文件根目錄路徑 |
list |
獲取一個目錄下的所有資源 |
list_all |
遞歸獲取一個目錄下的所有資源 |
Config
load |
獲取raspctl.cnf中的配置信息 |
save |
更新raspctl.cnf中的配置信息 |
MediaUrl?
get_urls |
獲取網(wǎng)站url對應(yīng)的真實視屏url地址信息, fmt=high 獲取高清視屏地址 |
Ajax規(guī)范
使用Ajax的目的:為了RaspCTL提供的服務(wù)可以同時被WAP, Android APP, IOS APP使用,RaspCTL服務(wù)均以Ajax形式提供。希望Plugins開發(fā)者也遵照這個規(guī)約,但不強制。
類庫中,只要被標志@classmethod的方法,會直接暴露成Ajax服務(wù),如:
class Foo:
@classmethod
def hello(cls, arg1, arg2):
return {msg: 'Hello Ajax[%s %s]' % (arg1, arg2)}
Ajax服務(wù)地址為:http://xxx.xxx.xxx.xxx:8000/api?data={"name":"Foo.hello", "args":["stone2083", "connie2083"]} 服務(wù)信息為:
{
status: "Success",
message: "Success",
api: {
args: [ ],
name: "Foo.hello"
},
result: {
msg: "Hello Ajax[stone2083 connie2083]"
}
}
Plugins規(guī)范
youku --> 插件名字
__init__.py --> 插件程序
index.html --> 插件模板 【可選擇】
init.py 內(nèi)容為:
from rasplib import Plugin
urls = (
'/', 'Index',
)
# 必須創(chuàng)建plugin實例,參數(shù)分別為插件名,作者名,版本號, 支持功能的urls
#其中,plugin中包含RaspCTL類庫的所有方法,可直接調(diào)用
plugin = Plugin('youku','stone2083', '0.1', urls)
#web.py寫法,插件規(guī)范并不引入新的學(xué)習(xí)成本。
class Index:
def GET(self):
return 'youku-NotSupported.' #可以直接輸出
#return plugin.render.index() #可以渲染某個模板信息
寫在最后
- RaspCTL作者聯(lián)系信息:stone2083#yahoo.cn 程序的任何問題可直接聯(lián)系這個郵箱
- 招募UED設(shè)計前端界面 0.1.0前端非常糟糕,急待重構(gòu)
- 招募Plugin開發(fā)者,豐富RaspCTL
- 期待小白鼠適用RaspCTL