如题所示,小弟是新手,想请问一下,Android目前是不是支持ogg格式的音频啊?想做个ogg播放器,是不是很难?

解决方案 »

  1.   

    android-sdk/docs/guide/appendix/media-formats.html这个当然是支持的,
    注意其中x表示支持,欧美人的习惯专门作ogg播放器就没意思了,不难的
      

  2.   

    Android 好像支持的音频格式虽然不是很多,但是还是有几个的:比如说:
    MP3 wav ogg等
      

  3.   

    肯定支持,要相信android的强大,
    解码方式是最难搞的
      

  4.   

    ogg估计是Android第一个支持的东东吧,它默认的录音程序产生的文件就是ogg的文件。
      

  5.   


    支持的,MediaPlayer mp = null;  
    int x = GameLet.getResourceID("xxx.ogg");
    mp = MediaPlayer.create(myActivity, x );
    mp.prepare();
    mp.setLooping(true);
    mp.start();
      

  6.   

    android-sdk/docs/guide/appendix/media-formats.html
    这个我有注意到,但是没有发现其解码在什么地方实现的?有关解码的部分不是在opencore这个框架里面吗?
    小弟手上下载了ogg的解码库,想实现一下移植,然后再进行解码.不知可行否?
      

  7.   


    5楼兄弟好像对这方面比较熟悉,我想自己移植ogg的解码库,不知可行吗?
      

  8.   

    不知道楼主想把ogg的解码库移植到哪里去呢?
      

  9.   

    opencore  的架构里面好像提供了一个MediaPlayerInterface接口,将里面的库替换为别的解码库,是否可以实现解码?
      

  10.   

    android的铃声库里面的都是ogg格式的
      

  11.   

    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;
    }
      

  12.   

    *.mid和*.ogg的相关源码都在<android-src>/frameworks/base/media/libmediaplayerservice/目录下,没认真看过… 
      

  13.   

    不好意思,纠正一下,Soundrecorder录音产生的文件是3gpp的,记错了。
      

  14.   

    16楼:谢谢了.收获不小.还有一个疑问,它是怎样实现ogg解码的呢?是硬解码吗?
      

  15.   

    只看了点pvplayer的,另外两个没看… 你可以自己看看源码的啊…
      

  16.   


    源码里面似乎没有找到.那我要是自己在opencore里面移植ogg的解码库,然后调用,可行不?因为课题需要,所以想这样做.
      

  17.   

    绝对的支持!可以用android.media.MeidaPlayer来做播放器。它已经封装的很好了
      

  18.   

    只要你能把frameworks对ogg那一层的解析屏蔽掉就可以的啊… 呵呵
      

  19.   

    谢谢楼上,现在开始有些明白了.我可不可在在PVPlayer下面自己构造一个VobisPlayer进行调用?
      

  20.   

    你的问题好像是,把ogg的codec整合到opencore中,是吧?这个应该可以的吧… 至于android为什么把midiplayer, vobisplayer,pvplayer这个三个分开来,这个不是很明白… 不过整个框架还是很清晰的,当然你是可以把midi,ogg都整合到opencore中的… 就是在mediaplayerservice这一层把所有的多媒体文件播放都推送到opencore来进行处理…原系统对ogg的支持已经很好了… 你只是想自己做一个ogg的codec,至于这个codec放在哪,这个好像并不很重要的吧  呵呵
      

  21.   

    关于ogg不在opencore中的,opencore是PVPlayer
      

  22.   

    谢谢大虾们的解答.尤其对 loveLingyi 表示深深的感谢.先结贴给分.以后有问题还请大家多指教
      

  23.   


    海涛好久不见哇,哈哈,一看GAMELET就那么亲切~~~