天天看點

J2me流媒體技術實作讨論[3]

 <b>jffmpeg</b><b>應該是對</b><b> ffmpeg </b><b>這個</b><b>c</b><b>編寫的工具的</b><b>java</b><b>封裝。</b><b> </b>

<b>另一個封裝的是</b><b></b>

http://fobs.sourceforge.net/

fobs, the c++ &amp; jmf wrapper for ffmpeg.

<b></b>

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的。”

<b>我試驗過了,利用</b><b>ffmpeg</b><b>的這兩個參數,可以控制讓</b><b>ffmpeg</b><b>來将一個大</b><b>mp3</b><b>劈分成許多小段的獨立播放的</b><b>amr</b><b>檔案。</b><b></b>

-ss time_off        set the start time offset

-t duration         set the recording time

<b>比如你寫這麼個</b><b>perl</b><b>檔案,然後運作:</b><b></b>

@inputfilename = "c:\\opt\\media\\changjin.wma";

@outputfilename = "c:\\opt\\media\\changjin";

for($i=1,$j=1;$i&lt;=1000;$i+=10,$j++)

    system("c:\\software\\ffmpeg.exe -i @inputfilename -ac 1 -acodec amr_nb -t 10 -ss $i @outputfilename.$j.\".amr\"");

}

<b>就把一個大檔案拆分成許多小</b><b>amr</b><b>了,每一個</b><b>amr</b><b>檔案隻有</b><b>17kb</b><b>。</b><b></b>

<b> </b>

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

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

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

檔案逐漸增大,從目前移動網速計算,

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

可以下載下傳比第一次下載下傳大的檔案了,這樣能減少網絡開銷<b>”</b>