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 SDK下载不了了 Android怎么硬解x264 如何申请的到google map key android 添加快捷方式后总是启动第一个activity 求解,关于android来电桌面 使用startActivityForResult时出现不能onresume错误,求解!在线等 Transport endpoint is not connect android 引包时提示错误... 我应该怎么选择?或者继续吗? 哪位大牛做过Android支付宝的接口,请留个联系方式请教交流。 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就那么亲切~~~