cleverpig said“之所以有些格式的媒體檔案不支援分段播放,是因為它們檔案中不含有索引資訊。
就像在以順序方式讀取檔案時無法seek一樣。。
這個問題可以通過人工(或者用程式)將檔案分割後部署放到伺服器上來解決。
”
以及“隨著iTunes4.9版的發布,podcaster(pod播客們)能夠建立自己的podcast,並可以通過增加投影片式的圖片使其更加吸引人。而且在附加資訊中的URL還可使使用者門自由的找到其他的podcast資源。這成為了podcast世界的“大地震”。目前這一特性移植到手機上是通過劃分“章節”來完成的,即將podcast資源檔劃分為多個章節,這樣做才能讓沒有“重播/定位”能力的手機進行播放。
但是另一個挑戰將擺在移動使用者面前,例如:移動收聽必須對中斷事件進行管理。當我們正開始播放20-40分鐘的podcast時,一個電話或者簡訊突然到來,這些情況將使播放被迫中斷。此時我們只能選擇重新開啟podcast從頭再聽或者是沒有心情從頭聽。另外媒體檔案格式問題也是對移動使用者的“噩夢”,大多數手機都不支援mp3或者AAC這種podcast的檔案格式,但它們都支援.3gp的標準AMR格式檔案。而且能夠儲存幾兆mp3或者AAC檔案)的手機目前也不是很普及。
但是Tea Vui Huang製作的javacast改變了這一切。這個軟體就是將mp3音樂轉換為手機可以播放的.3gp 標準amr(audio recording format)格式。大家可以到http://www.ringtone4me.com/看看,上面有一些具有此類功能軟體連結。
javacast的作者——Tea Vui Huang也是Mobcast的作者, 已經製作了一套處理工具將轉換Podcast到一個java Midlet中(使用者只需要在手機中調用javacast無線下載這個j2me應用程式,並可以播放podcast)。這使那些podcasters們通過簡單的增加一個下載這個midlet的連結就能很容易是獲得他們的podcast。
Huang的Mobcast,確實非常著名,幾個月以前,在我寫toodouPodcastMidlet時就看過許多人介紹過他,但是就是連不上http://www.geocities.com/tvhuangsg/mobcast/這個地址,所以一直未睹真容。
轉換各種格式的video為3gp,轉換各種格式的audio為amr,這些在開源軟體mplayer手下是隨手拈來,只需要看懂mplayer的各種參數即可做到了。所以拜mplayer所賜,我也能夠製作手機看交通實況錄影,都要感謝那些mplayer的開發人員!
"移動收聽必須對中斷事件進行管理",這個確實需要考慮。當進入Paused狀態時,需要通知播放線程暫停,同時連接線程暫時就不要去抓取伺服器的媒體資料了;等介面切換回來後,播放線程繼續replay,連接線程繼續下載音樂。
斑竹說“可以通過人工(或者用程式)將檔案分割後部署放到伺服器上來解決”,我想也是,簡單的檔案分割是不夠的,或者說僅僅適合於wav這種未經處理資料格式。應該事先將音樂檔案用mencoder分解成一段一段的音樂檔案放在伺服器上,mencoder將處理每一段的格式問題保證能獨立播放,這樣手機下載起來只需要按照編號一段一段地下載即可,伺服器不再需要運算和添加頭資訊。
美中不足,如果兩個player切換播放,中間會有一個卡啪聲。
cleverpig said“有興趣的話可以看jffmpeg,是一種能夠處理音頻視頻的java媒體架構。
”以及“想了一下,提出一個“移動音頻流網關”的想法:可以使用伺服器採用“即時”轉化格式的方式,將mp3、wav等格式音頻轉換為amr格式,當然也可以做分段,無論音頻源是什麼(甚至是podcast)都可以下載到手機上收聽。但這樣做的話,伺服器的負載是個問題,儘管已用採集過的音頻源不用再次處理。
其實,我原來寫的toodouPodcast就是這麼一個概念,由於那些播客們提供的音樂格式不符合手機播放,所以我都用toodouPodcast這麼個java web service調用ffmpeg工具進行音頻轉換。轉換格式,確實是一個很費CPU資源的事情,而且時間很長,如果使用者多的話,對伺服器壓力極大。
那麼現在做做分段也不錯,這樣,更適合手機使用者。
Jffmpeg應該是對ffmpeg這個C編寫的工具的Java封裝。
另一個封裝的是
http://fobs.sourceforge.net/
FOBS, the C++ & JMF wrapper for ffmpeg.