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

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

編輯:關於JAVA

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:\\opt\\media\\changjin.wma";
@outputFilename = "C:\\opt\\media\\changjin";
for($i=1,$j=1;$i<=1000;$i+=10,$j++)
{
system("C:\\software\\ffmpeg.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