我正在尝试流式传输传入的 AMR_NB。我不能直接使用 MediaPlayer,因为它需要一个可搜索的文件。我想使用 MediaCodec,但要使用我需要的 MediaCodec(我想......请纠正我!) MediaExtractor 给我诸如presentationTime之类的东西。真的吗?我可以在没有 MediaExtractor 的情况下使用 MediaCodec 吗?
MediaExtractor 似乎需要可搜索的文件。该文档仅针对其中一个 setDataSource 操作特别说明了这一点,但是当我尝试使用其他任何操作时,由于查找尝试失败而失败。
那么,我该怎么做才能播放传入的 AMR 流?我知道一种方案,您可以将传入的数据保存到文件中并定期制作该文件的副本以提供给 MediaPlayer,但我真的更愿意找到一个真正诚实的流媒体解决方案。
是否可以在不使用 MediaExtractor 的情况下使用 MediaCodec?如果是这样,我如何找到演示时间和传递给 MediaCodec.createDecoderByType 的字符串?文档说“audio/3gpp”是我想要的,但是当我尝试使用它时,我收到以下错误:
codec = MediaCodec.createDecoderByType("audio/3gpp");
01-02 03:59:36.980: E/OMXMaster(21605): A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
所以我也不确定如何使用 MediaCodec。