Android支持ogg格式的音频吗? 如题所示,小弟是新手,想请问一下,Android目前是不是支持ogg格式的音频啊?想做个ogg播放器,是不是很难? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 android-sdk/docs/guide/appendix/media-formats.html这个当然是支持的,注意其中x表示支持,欧美人的习惯专门作ogg播放器就没意思了,不难的 Android 好像支持的音频格式虽然不是很多,但是还是有几个的:比如说:MP3 wav ogg等 肯定支持,要相信android的强大,解码方式是最难搞的 ogg估计是Android第一个支持的东东吧,它默认的录音程序产生的文件就是ogg的文件。 支持的,MediaPlayer mp = null; int x = GameLet.getResourceID("xxx.ogg");mp = MediaPlayer.create(myActivity, x );mp.prepare();mp.setLooping(true);mp.start(); android-sdk/docs/guide/appendix/media-formats.html这个我有注意到,但是没有发现其解码在什么地方实现的?有关解码的部分不是在opencore这个框架里面吗?小弟手上下载了ogg的解码库,想实现一下移植,然后再进行解码.不知可行否? 5楼兄弟好像对这方面比较熟悉,我想自己移植ogg的解码库,不知可行吗? 不知道楼主想把ogg的解码库移植到哪里去呢? opencore 的架构里面好像提供了一个MediaPlayerInterface接口,将里面的库替换为别的解码库,是否可以实现解码? android的铃声库里面的都是ogg格式的 MediaPlayer(java)在播放多媒体文件的时候,主要分三类播放器(看createPlayer()函数的实现):(1)MidiPlayer -- *.mid文件(2)VobisPlayer -- *.ogg文件(3)PVPlayer -- 除了以上两类之外的所有文媒体文件(底层实现就在opencore里边)@FROM <android-src>/frameworks/base/media/libmediaplayerservice/MediaPlayerService.cppstatic sp<MediaPlayerBase> createPlayer(player_type playerType, void* cookie, notify_callback_f notifyFunc){ sp<MediaPlayerBase> p; switch (playerType) {#ifndef NO_OPENCORE case PV_PLAYER: LOGV(" create PVPlayer"); p = new PVPlayer(); break;#endif case SONIVOX_PLAYER: LOGV(" create MidiFile"); p = new MidiFile(); break; case VORBIS_PLAYER: LOGV(" create VorbisPlayer"); p = new VorbisPlayer(); break;#if BUILD_WITH_FULL_STAGEFRIGHT case STAGEFRIGHT_PLAYER: LOGV(" create StagefrightPlayer"); p = new StagefrightPlayer; break;#endif case TEST_PLAYER: LOGV("Create Test Player stub"); p = new TestPlayerStub(); break; } if (p != NULL) { if (p->initCheck() == NO_ERROR) { p->setNotifyCallback(cookie, notifyFunc); // ->setNotifyCallback() } else { p.clear(); } } if (p == NULL) { LOGE("Failed to create player object"); } return p;} *.mid和*.ogg的相关源码都在<android-src>/frameworks/base/media/libmediaplayerservice/目录下,没认真看过… 不好意思,纠正一下,Soundrecorder录音产生的文件是3gpp的,记错了。 16楼:谢谢了.收获不小.还有一个疑问,它是怎样实现ogg解码的呢?是硬解码吗? 只看了点pvplayer的,另外两个没看… 你可以自己看看源码的啊… 源码里面似乎没有找到.那我要是自己在opencore里面移植ogg的解码库,然后调用,可行不?因为课题需要,所以想这样做. 绝对的支持!可以用android.media.MeidaPlayer来做播放器。它已经封装的很好了 只要你能把frameworks对ogg那一层的解析屏蔽掉就可以的啊… 呵呵 谢谢楼上,现在开始有些明白了.我可不可在在PVPlayer下面自己构造一个VobisPlayer进行调用? 你的问题好像是,把ogg的codec整合到opencore中,是吧?这个应该可以的吧… 至于android为什么把midiplayer, vobisplayer,pvplayer这个三个分开来,这个不是很明白… 不过整个框架还是很清晰的,当然你是可以把midi,ogg都整合到opencore中的… 就是在mediaplayerservice这一层把所有的多媒体文件播放都推送到opencore来进行处理…原系统对ogg的支持已经很好了… 你只是想自己做一个ogg的codec,至于这个codec放在哪,这个好像并不很重要的吧 呵呵 关于ogg不在opencore中的,opencore是PVPlayer 谢谢大虾们的解答.尤其对 loveLingyi 表示深深的感谢.先结贴给分.以后有问题还请大家多指教 海涛好久不见哇,哈哈,一看GAMELET就那么亲切~~~ 很急的android Notification问题 求解 关于so里同名的问题 Android中的资源与国际化(cl) android 拖拉 功能 google code 上奇怪的 out of quota提示 从资源文件释放数据库的一个奇怪现象 自定义适配器加载布局文件时显示没有这个文件,很费解,大家来看一下吧 请问这种效果如何实现? Flash开发的程序当做一个插件内嵌到android原生应用中且不要webview加载flash 求解自定义相机短时间拍多张照片导致OOM如何解决 httppost 代码编写问题... 使用mediaRecorder录音被系统自动终止
注意其中x表示支持,欧美人的习惯专门作ogg播放器就没意思了,不难的
MP3 wav ogg等
解码方式是最难搞的
支持的,MediaPlayer mp = null;
int x = GameLet.getResourceID("xxx.ogg");
mp = MediaPlayer.create(myActivity, x );
mp.prepare();
mp.setLooping(true);
mp.start();
这个我有注意到,但是没有发现其解码在什么地方实现的?有关解码的部分不是在opencore这个框架里面吗?
小弟手上下载了ogg的解码库,想实现一下移植,然后再进行解码.不知可行否?
5楼兄弟好像对这方面比较熟悉,我想自己移植ogg的解码库,不知可行吗?
(1)MidiPlayer -- *.mid文件
(2)VobisPlayer -- *.ogg文件
(3)PVPlayer -- 除了以上两类之外的所有文媒体文件(底层实现就在opencore里边)@FROM <android-src>/frameworks/base/media/libmediaplayerservice/MediaPlayerService.cppstatic sp<MediaPlayerBase> createPlayer(player_type playerType, void* cookie,
notify_callback_f notifyFunc)
{
sp<MediaPlayerBase> p;
switch (playerType) {
#ifndef NO_OPENCORE
case PV_PLAYER:
LOGV(" create PVPlayer");
p = new PVPlayer();
break;
#endif
case SONIVOX_PLAYER:
LOGV(" create MidiFile");
p = new MidiFile();
break;
case VORBIS_PLAYER:
LOGV(" create VorbisPlayer");
p = new VorbisPlayer();
break;
#if BUILD_WITH_FULL_STAGEFRIGHT
case STAGEFRIGHT_PLAYER:
LOGV(" create StagefrightPlayer");
p = new StagefrightPlayer;
break;
#endif
case TEST_PLAYER:
LOGV("Create Test Player stub");
p = new TestPlayerStub();
break;
}
if (p != NULL) {
if (p->initCheck() == NO_ERROR) {
p->setNotifyCallback(cookie, notifyFunc); // ->setNotifyCallback()
} else {
p.clear();
}
}
if (p == NULL) {
LOGE("Failed to create player object");
}
return p;
}
源码里面似乎没有找到.那我要是自己在opencore里面移植ogg的解码库,然后调用,可行不?因为课题需要,所以想这样做.
海涛好久不见哇,哈哈,一看GAMELET就那么亲切~~~