J2me流媒体技术实现讨论[3]

news/2024/7/7 6:50:28

Jffmpeg应该是对 ffmpeg 这个C编写的工具的Java封装。

另一个封装的是
http://fobs.sourceforge.net/
FOBS, the C++ & JMF wrapper for ffmpeg.

 

Cleverpig said:“其实,感觉上可以自己编写一套流媒体规范的实现,比如将源文件指定为wav格式或者其它的raw格式,然后分段发送到mobile。。
但是这样做确实效率低,而且浪费带宽。本人研究了一下Tea Vui Huangmobilecast实现有些心得,在此与大家讨论一下:
1
。使用MMS发送radiocast:由于MMS服务可以使用图片、音乐等多媒体元素,而且技术比较成熟,所以将它作为radiocast的载体是方便的选择。而对于mobile用户来讲,cast的使用方式可以采用请求和订阅两种模式;

2
radio文件格式的选择:对于某些手机不能支持mp3格式文件,即使支持mp3也受到memory size的限制,所以采用更为普遍、压缩比更大的amr格式是比较好的choice

3
amr文件的分割:由于目前大多数手机仅能支持100KB左右的彩信,所以最佳的cast长度应该是50秒。比如将大约5分钟的mp3文件分割为6amr章节文件,每个章节文件所包含的audio长度为45-50秒。而每个amr格式的压缩比将是普通mp3格式3-6倍。按照播放率为600KB/minmp3格式计算,保守地假定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语音文件播放的时间要比下载的时间长.在第一次下载后开始播放的这段时间中,
可以下载比第一次下载大的文件了,这样能减少网络开销





http://www.niftyadmin.cn/n/3649722.html

相关文章

mqtt debian_如何在Debian 10上安装和保护Mosquitto MQTT消息代理

mqtt debian介绍 (Introduction) MQTT is a machine-to-machine messaging protocol, designed to provide lightweight publish/subscribe communication to “Internet of Things” devices. It is commonly used for geo-tracking fleets of vehicles, home automation, env…

J2me流媒体技术实现讨论[2]

cleverpig said“之所以有些格式的媒体文件不支持分段播放&#xff0c;是因为它们文件中不含有索引信息。就像在以顺序方式读取文件时无法seek一样。。这个问题可以通过人工&#xff08;或者用程序&#xff09;将文件分割后部署放到服务器上来解决。”以及“随着iTunes4.9版的发…

redis管理客户端_如何在Redis中管理副本和客户端

redis管理客户端介绍 (Introduction) Redis is an open-source, in-memory key-value data store. One of its most sought-after features is its support for replication: any Redis server can replicate its data to any number of replicas, allowing for high read scal…

J2me流媒体技术实现讨论[1]

看到很多很多人持续在问这个问题。以前我也听说&#xff0c;好像kvm底层实现不太支持j2me来做streaming video/audio&#xff0c;但我不知道那人为什么这么说。那么现在国外有一个人提出下面这种思路&#xff0c;并且号称在Nokia6260[相关数据&#xff1a;诺基亚 6260 Nokia626…

golang中使用指针_了解Go中的指针

golang中使用指针介绍 (Introduction) When you write software in Go you’ll be writing functions and methods. You pass data to these functions as arguments. Sometimes, the function needs a local copy of the data, and you want the original to remain unchanged…

RSS和社会性书签Chicklet创建器

“RSS and Social Bookmarking Chicklet Creator”&#xff0c;从名称上好像看不出来是做什么的&#xff0c;进去之后&#xff0c;你就明白了&#xff0c;那摸多的web 2.0参与者们&#xff0c;你们不正需要这套工具吗&#xff1f;它可以一次性帮你解决订阅按钮问题&#xff1a;…

命令行curl上传文件_命令行基础知识:使用cURL下载文件

命令行curl上传文件Client URL, or simple cURL is a library and command-line utility for transferring data between systems. It supports a myriad of different protocols and tends to be installed by default on many Unix-like operating systems. Because of it’s…

认识JSON Web令牌(JWT)

什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明一般被用来在身份提供者和服务提…