我想在播放器里直接调用硬解解码,对底层不是很熟悉,大概了解了下OMX之类的东西,但是还是不知道应该怎么做才能直接调用硬件解码,不知道是否能够直接通过java层调用,还望大神指点一二

解决方案 »

  1.   

    好像不行吧,这个由底层决定的.java层估计不能决定
      

  2.   

    谢谢你的回复,那如果我想通过设置解码的方式为硬解,然后通过jni直接调用底层修改解码的方式为硬解是否可行呢?
    就像mxplayer那样,不知道该从哪儿入手
      

  3.   

    我觉得第三方的播放器 所谓调用硬解 就是调用系统的mediaplayer,而软解 就是调用自己实现的player,基于ffmpeg的。native有所谓的prefer,就是有软解和硬解存在的时候,优先调用perfer
      

  4.   

    谢谢您的回复,我想问问调用系统的mediaplayer是指调用awesomeplayer之类的吗?需要直接通过jni调用?ffmpeg是属于软解吗?对于我要实现的这个功能,不知道您有没有什么方案,我看了mx player和rock plyer里面都有切换硬解和软解的功能,不知道具体是怎么实现的,我看到rock player有用到ffmpeg,但具体原理不懂,希望指点下
      

  5.   

    谢谢您的回复,我想问问调用系统的mediaplayer是指调用awesomeplayer之类的吗?需要直接通过jni调用?ffmpeg是属于软解吗?对于我要实现的这个功能,不知道您有没有什么方案,我看了mx player和rock plyer里面都有切换硬解和软解的功能,不知道具体是怎么实现的,我看到rock player有用到ffmpeg,但具体原理不懂,希望指点下
      

  6.   

    我觉得硬解 你就调用mediaplayer就行了,因为硬解只能这么办,软解的话 如果你需要增加格式支持,就需要移植ffmpeg了
      

  7.   

    哦哦,您的意思是直接调用java层的mediaplayer?它默认会先找硬解吗?硬解支持的格式是不是得由厂家提供的libstagefrighthw.so来决定?
      

  8.   

    格式只是container,看硬解还是软解 看的是编码格式 H263,H264之类的跟container没啥关系。具体平台framework里面写死的
      

  9.   

    哦哦,清晰很多了!您看看我现在的一个理解对不对:调用java层的mediaplayer进行播放的时候,会默认调用硬解,如果设备不支持就会调用系统的软解,如果想定制解码器,可以自己写相应的解码器,或者引入ffmpeg之类的解码库实现,望指点
      

  10.   

    哦哦,清晰很多了!您看看我现在的一个理解对不对:调用java层的mediaplayer进行播放的时候,会默认调用硬解,如果设备不支持就会调用系统的软解,如果想定制解码器,可以自己写相应的解码器,或者引入ffmpeg之类的解码库实现,望指点
    系统针对某种解码格式有对应的硬解或者软解实现,会在注册的map里面找。想要 扩展解码器 如果不是厂商,一般都是引入ffmpeg。目前市面的基本都是