<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++ & 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<=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>