首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MediaExtractor和MediaCodec设置音频流?

如何用MediaExtractor和MediaCodec设置音频流?
EN

Stack Overflow用户
提问于 2013-01-26 08:37:12
回答 1查看 3.2K关注 0票数 5

我正在尝试流式传输传入的AMR_NB。我不能直接使用MediaPlayer,因为它需要一个可查找的文件。我想使用MediaCodec,但要使用我需要的MediaCodec (我认为...请纠正我!)给我一些像presentationTime这样的东西。这是真的吗?我可以在没有MediaExtractor的情况下使用MediaCodec吗?

MediaExtractor似乎需要可查找的文件。文档只对其中一个setDataSource操作特别说明了这一点,但是当我尝试使用其他任何一个操作时,由于失败的查找尝试而失败。

那么,我该怎么做才能让我的传入AMR流播放呢?我知道有一种方案,你可以将传入的数据保存到一个文件中,并定期制作该文件的副本以馈送到MediaPlayer,但我真的更喜欢找到一个真正诚实的流媒体解决方案。

可以在不使用MediaExtractor的情况下使用MediaCodec吗?如果是这样,我如何找到表示时间和要传递给MediaCodec.createDecoderByType的字符串?文档说"audio/3gpp“是我想要的,但是当我尝试使用它时,我得到了以下错误:

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

发布于 2013-01-30 07:56:57

“我不能直接使用MediaPlayer,因为它需要一个可查找的文件”通常不是这样的。我希望你在你的流上尝试一下,并准确地报告发生了什么。

“我可以在没有MediaExtractor的情况下使用MediaCodec吗?”我对此表示怀疑:我相信它们是为了一起使用而设计的。

我已经使用这些组件来播放流。然而,据我所知,MediaExtractor有一些未记录在案的限制。所以使用一个小的代理服务器来提供它可以消化的东西。我有一个线程运行MediaExtractor,另一个线程从MediaCodec获取输出。然后,我必须避免死锁并处理同步。但如果你只想打前锋,那也不是那么糟糕。那么你就只有如何停止的问题了!

我建议你先试试MediaPlayer。否则,如果你热衷于尝试MediaExtractor,我们可以分享我们对它能消化什么和不能消化什么的发现。不要认为任何事情都是理所当然的。例如,它似乎可以播放我的MP3文件,但无法发现它们的持续时间,或在它们上寻找!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14532511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档