MMSCatchCha - Side Project 的始與末


    自己的專案命名為MMSCatchCha,是在Android平台上方便收聽空中英語教室系列的廣播節目。






    專案起源於2013年,本意是要做mms串流的多媒體播放器,輸入串流網址後可以無限循環播放。但最後先聚焦於英文廣播,來達成學外文又能夠有效利用上下班通勤的時間。以聽覺的方式學習,既能避免在搖晃的車廂內過度使用眼睛,也能藉由不斷循環播放當日廣播的方式,反覆練習加深該日容在腦中的記憶。[1]

    一開始空中英語教室官方網頁(http://studioclassroom.com)的串流位置是hard code在網頁上,以網頁爬蟲切割文字的方式極為容易的取得mms url,當時的程式碼如下:
https://github.com/dragonjohn/SCstreamGet/blob/master/src/SCStreamMain.java

    約兩年前,官方網站更改為restful API,以GET request送出廣播節目類型(大家說英語、空中英語教室或彭蒙惠英語)和日期為參數給伺服器,隨後回應mms連結給本機端。可參考以下程式碼catchUrls片段,比較重要的是對方伺服器服務為了防止盜連,而限制只能由studioclassroom網域下的網頁才能連結到串流,當然這用程式加入referer欺騙伺服器是很容易的事。
https://github.com/dragonjohn/MMSCatchCha/blob/master/app/src/main/java/dragonjohn/mmscatchcha/main.java

    取得播放連結後,由於Android原生的media player太過於陽春,整合開源軟體VLC media player又遇到技術上的問題[2],只好安裝VLC player並透過此來播放取得的串流位置。欲想的整合方式是將VLC player整合至APP,並且能夠實踐A-B區間反覆播放。(串流播放在結束後會重新發送request給伺服器重新讀取串流內容,若是要保留cache裡面的資料並且在重複播放時不用經由網路讀取來源,必須在廣播結束前迴轉到開開始的片段繼續播放)

    然而今年開始改變串流播放方式,空中英語教室集團透過Brightcove客制化javascript串流播放器,藉此可以在各種用戶端的平台上播放。這個改變除了需要登入帳號做身份驗證外,串流的位置深藏在3萬多行的javascript程式中。

    因此這個專案項目可以說到了一個階段,在還沒找到串流位置之前不再做維護。因此身為full-stack engineer & product manager,對於專案執行與預期成果可以用下圖圖表說明。




    除了需要解決整合VLC的問題以及讓介面精簡到一鍵收聽外,形象廣告算是我著重的項目。藉由之前自編自導自演的經驗來完成溫馨的快樂學英語形象,將App傳達到觀眾心底 :)

    產品開發延宕原因百百種,脫離不了錯估研究技術的時間[3]、下班所能運用的時間有限、其他外務影響...。加上內容是屬於空中英語教室集團的,貿然上架也一定是被秒告的地步,因此不得不在完全做好的狀況下才得以上架,才不會在功能還需要修正的狀況下被告知要下架。

    創造其他side project、打造自己的產品將是個永不結束的旅程。產品經理之路還有很多面向需要精進。


產品連結
https://play.google.com/store/apps/details?id=dragonjohn.mmscatchcha
產品廣告
https://youtu.be/-Gck-hIHBww


附註

[1] 一萬小時定律有個中心思想是在不斷的練習、重複做某件事情讓肌肉記住,之後對於相同的情況就能用反射動作快速的反應,這就是為何同一天要重複聽當天的廣播內容。當然一萬小時定律是有破綻的,包含只能是固定範圍內的技能,以及產出的程度因天賦而異...等。

[2] VLC media player有開源程式可以整合至android application。
https://wiki.videolan.org/Git/

[3] 閱讀能力這件事情,可以分成閱讀文字速度、文章理解速度、專注力這三個面向。專注力可以訓練,但影響專注力外在因素太多,例如有些人天生對於聲音比較敏感(我),容易因為外界的聲音中斷閱讀。文字、文章的理解速度,雖然說有訓練的方法,但毫無捷徑。透過大量閱讀去保持語感語和對文字理解,若一開始就有閱讀上的障礙,在現有的環境下似乎沒有有效的替代方案。研究所做過關於學習風格診斷與分析,即便動畫類的視覺化學習較容易學習,但也不得不說不是任何內容都能以視覺化呈現。

留言

這個網誌中的熱門文章

[專案] 銀行端末系統

如何在MacOS 中自由切換不同Python版本 - pyenv + virtualenv

用 C# 控制 Win7 輸入法