July 4,2008

讓 Banshee 啟動時自動播放音樂

主要是利用上一篇介紹的 BooScript Extension,讓 Banshee 能在一開始就播放音樂...
BooScript Extension 在載入時,會檢查是否有 script 要執行,有的話,會進行編譯並執行,所以這個時候 Banshee 內部還有許多事情還沒初始完成,所以必須要將 AutoPlay 的動作排程到 Application.ClientStarted 裡,讓 Application 啟動之後去執行 AutoPlay 的動作。
import System
import System.IO
import Banshee.ServiceStack

def OnClientStarted( client as Client ):
	Hyena.Log.Information( "engine is playing now..." )
	ServiceManager.PlayerEngine.Play()

Hyena.Log.Information( "autoplay script is loaded." )

Banshee.ServiceStack.Application.ClientStarted += OnClientStarted
就這麼簡單,下次要加上自動記錄播放與自動播放記錄曲目的功能。


Posted by elleryq at 樂多Roodo! │10:09 │回應(7)引用(0)Boo
樂多分類:網路/3C 共同主題:.Net/Mono 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/6319131
回應文章

想請問一下~~上面的程式碼要加到那個檔案??
因為banshee跑起來的時候,是下#banshee --play-enqueued --enqueue %u
程式本身按n會下一首,有辦法可以輸入指令就可以讓他暫停或是下一首嗎?? 謝謝
Posted by 阿欽 at October 16,2008 13:54
要參考這篇:http://blog.roodo.com/thinkingmore/archives/6293803.html

利用 booscript 這個 addon.
Posted by elleryq at October 17,2008 07:20

你好,我會問這個問題是起因是我用A2DP的藍芽耳機聽音樂,可是在藍芽連線斷線(不管是耳機或是電腦斷線),在播放器Banshee在播放的歌會整個當掉,所以我猜可能是banshee的問題,所以想要查一下banshee播放器的部份
我想請問一下,我是用banshee1.2.1版本的用
#banshee-1 --help-all可以查到它的選項有--pause和--next這兩個可是我用終端機打
#banshee-1 --pause(已經有開banshee播放器了,是想讓它暫停)可是會變成暫停沒有用而是又開一個播放器出來,所以想說有沒有指令可以完成這樣的動作,你說可以用利用 booscript 這個 addon.是否可再麻煩你進一步解說,謝謝
Posted by 阿欽 at October 17,2008 22:42
Posted by elleryq at October 18,2008 23:55

謝謝你給的資訊,讓我得知可以用DBUS這個方向,也有用f-deet這個不錯的工具,經過幾天測試發現我原本要這樣做的方法是行不通的
原本是想說用python或是指令(dbus-send --session --type=method_call --dest=org.bansheeproject.Banshee /org/bansheeproject/Banshee/PlaybackController org.bansheeproject.Banshee.PlaybackController.First)
類似這樣的方式去控制藍芽斷線後做後續的動作
是否再請教一下
1.據我查資訊大概了解使用A2DP藍芽耳機聽音樂,播放程式banshee並不知道他是透過藍芽來播放,對播放程式來說,他是在存取 ALSA 裝置
通常藍芽連線中斷後,播放程式banshee應該不會真的當掉(藍芽斷線後,播放器視窗的按鈕還是可以觀看瀏覽,只是要再按播放鈕時,才會整個程式當掉),所以我想說先用指令列terminal 下直接由 command line 啟動 banshee,看看中斷藍芽連線後,console 上有沒有出現什麼錯誤訊息。但我在d-feet上面看到的command line是banshee-1 /usr/lib/banshee-1/Nereid.exe而用Xfce 4 Appfinder看是banshee-1 --redirect-log --play-enqueued %U的下法,用兩種下法藍芽斷線還是都沒有錯誤資訊出來,請問有其它方式得知聲音輸出有問題時的log資訊嗎??

2.在d-feet中的interface有四個(clientwundow、dbuscommandservice、playbackcontroller、playerengine)有可以直接對輸出切換的可以使用嗎??因為我用a2dp聽音樂如果要切換到speaker我是下#gconftool --type string --set /system/gstreamer/0.10/default/musicaudiosink "autoaudiosink"這個指令 如果要再切換到藍芽就是#gconftool --type string --set /system/gstreamer/0.10/default/musicaudiosink "alsasink device=bluetooth"
但是這個切換都是必須下一首歌才會切換過去,沒有辦法即使切換,所以我猜可能是因為有個buffer所以播放器一直往藍芽耳機輸出聲音,所以想看是否有在控制"聲音輸出"的介面可以使用

3.就是在用d-feet的時候,剛開始用的時候,在system或是session都看不到banshee的,後來在加入org.bansheeproject.Banshee後就有看到了,之前不小心關掉session bus,banshee的部份都不見了,再用新增一個connection也沒有出來,到是用類似前面那個指令(dbus-send --session ~~~~~~First)就會在d-feet又看到banshee,關掉軟體之後又不見了,可是之前就算關掉,它還會存在,不會像現在動態載入時才會出現,不曉得是那方面有問題??
也感謝你這個有耐心提供我資訊,謝謝
Posted by 阿欽 at October 28,2008 11:39
1.據我所知,banshee 是用 gstreamer 來作輸出。
而 gstreamer 會視你系統設定來決定使用 pulseaudio、alsa或是osd...等來作為輸出裝置。
2.我記得bluetooth應該有使用dbus作為聯繫之用...

以上,希望對你有幫助。
Posted by elleryq at October 29,2008 23:45

你好 之前在你的資訊幫忙之下,現在成功可以
用banshee之下聽A2DP藍芽耳機,在我藍芽耳機斷線之後,播放器不會當機了而會從內建speaker播放,是否可在請教一個問題,就是我有用一個按鈕就是可以切換藍芽耳機與電腦內建喇叭的功能
主要就是用執行一個script大約是用這個功能
#gconftool --type string --set /system/gstreamer/0.10/default/musicaudiosink "autoaudiosink"
我有大約研究一下audio的架構
■Audio

----------------------------------------------------------
│Application │
│ Banshee Amarok │
│ ↓ │
----------------------------------------------------------
│Desktop Environment │
│ ↓ ↓ ↓ │
│ GNOME KDE XFCE │
│ │
--------------------------DBus----------------------------
│ │
---------------------------------------------------------- GStreamer framework解碼器
│Sound Server │
│ ↓ ↓ │
│ ↓ ↓ │
│ ESD aRTs PulseAudio│
----------------------------------------------------------
│Kernel │
│ ↓ │
│ ALSA driver │
----------------------------------------------------------
│Hardware │
│ ↓ │
│ Soundcard │
----------------------------------------------------------
是否是我只控制到Gstreamer解碼器這邊的部份,如果要做到即時的話,是否說要控制到kernel那部份
才可以達到即時切換的功能,謝謝
如果方便可以跟你要e-mail方便與你請教嗎? 我的e-mail: f8742651@ms33.hinet.net
Posted by 阿欽 at November 12,2008 15:07