程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> J2me流媒體技術實現討論[3]

J2me流媒體技術實現討論[3]

編輯:J2ME

  Cleverpig said:“其實,感覺上可以自己編寫一套流媒體規范的實現,比如將源文件指定為wav格式或者其它的raw格式,然後分段發送到mobile。。

  但是這樣做確實效率低,而且浪費帶寬。本人研究了一下Tea Vui Huang的mobilecast實現有些心得,在此與大家討論一下:

  1。使用MMS發送radiocast:由於MMS服務可以使用圖片、音樂等多媒體元素,而且技術比較成熟,所以將它作為radiocast的載體是方便的選擇。而對於mobile用戶來講,cast的使用方式可以采用請求和訂閱兩種模式;

  2。radio文件格式的選擇:對於某些手機不能支持mp3格式文件,即使支持mp3也受到memory size的限制,所以采用更為普遍、壓縮比更大的amr格式是比較好的choice;

  3。amr文件的分割:由於目前大多數手機僅能支持100KB左右的彩信,所以最佳的cast長度應該是50秒。比如將大約5分鐘的mp3文件分割為6個amr章節文件,每個章節文件所包含的audio長度為45-50秒。而每個amr格式的壓縮比將是普通mp3格式3-6倍。按照播放率為600KB/min的mp3格式計算,保守地假定amr格式壓縮比為mp3格式的6倍,amr格式的播放率為100KB/min,而45秒的amr文件大小為75KB。

  所以Tea Vui Huang的做法是很clever的。”

  我試驗過了,利用ffmpeg的這兩個參數,可以控制讓ffmpeg來將一個大mp3劈分成許多小段的獨立播放的amr文件。

  -ss time_off set the start time offset

  -t duration set the recording time

  比如你寫這麼個perl文件,然後運行:

@inputFilename = "C:optmediachangjin.wma";
@outputFilename = "C:optmediachangjin";
for($i=1,$j=1;$i<=1000;$i+=10,$j++)
{
system("C:softwareffmpeg.exe -i @inputFilename -ac 1 -acodec amr_nb -t 10 -ss $i @outputFilename.$j.".amr"");
}

  就把一個大文件拆分成許多小amr了,每一個amr文件只有17KB。

  Qinjiwy said:“提一個優化的小建議

  如果分段太小,播放的間斷太多的話,用戶感覺上和系統開銷都不是很合適.

  可以考慮多開幾個線程, 另外,每個文件不一定要一樣大,可以考慮

  文件逐漸增大,從目前移動網速計算,

  壓縮比高的amr語音文件播放的時間要比下載的時間長.在第一次下載後開始播放的這段時間中,就

  可以下載比第一次下載大的文件了,這樣能減少網絡開銷”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved