【问题标题】:Android MediaCodec unable to decode wma filesAndroid MediaCodec 无法解码 wma 文件
【发布时间】:2014-09-09 05:06:42
【问题描述】:

我已经设法使用MediaCodec 解码MP3 文件。但未能解码mime type = x/ms-wmawmafiles。该代码对 MP3 文件按预期工作,我看到 MP3Extractor[MediaExtractor](http://androidxref.com/4.1.2/xref/frameworks/av/media/libstagefright/MediaExtractor.cpp) 中实例化

但是libstagefright中没有WMAExtractor这样的类,

如果这是问题所在,那么MediaPlayer 如何能够播放wma 文件??

我在哪里遗漏了什么,或者哪里搞砸了??

谁能指导我很好地理解这个场景

如何解码wma 文件?

注意当我选择 wma file 时,我会在日志中看到

收到kKeyCodecConfig的消息

被测设备为三星 GTS9300

【问题讨论】:

  • 我删除了我的答案,因为我刚刚发现我的手机也可以播放 WMA。 :) 我查看了亚行的输出以寻找线索。没有骰子。
  • 在我的 HTC M8 上,WMA 与 MediaPlayer 配合得很好。随意的互联网搜索表明,IHV 可能会将其他编解码器与手机捆绑在一起。但这并不能回答您的问题。对不起。 :(
  • @selbie,谢谢,我同意 x/ms-wma 是专有的,因此 Android 不能让它获得 AOSP 许可版本(如果我错了,请纠正我)。因此,手机供应商捆绑了他们的自定义/旧版编解码器来支持它,尽管
  • 查看 android 上的 ffmpeg 或 vlc 以获取库以处理基础 android 中缺少的编解码器。
  • @RobertRowntree,我确实希望供应商已经暴露了 wma 编解码器,所以尽量在没有外部库的情况下做这些事情,我知道如果只有 Android 源代码树是不可能的,那么接下来就是您建议的外部库

标签: android media android-mediacodec stagefright


【解决方案1】:

对于wma,即Windows Media Audio,容器格式通常为ASF,即高级系统格式或AVI,即音频视频交错格式。 AFAIK,wma 没有像 MP3 这样的内置容器规范,因此依赖于其他容器格式,如 asfavi

大多数asf 文件都有wma 音频内容,因此,如果您的设备支持asf 文件,您应该能够播放它们。大多数三星设备都可以播放asf,因此它应该开箱即用。

即使平台可能公开wma MediaCodec 即编解码器组件,您也应该有相应的MediaExtractor,因此,您应该检查是否支持asfavi。我的赌注是asf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 2013-04-25
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2012-10-08
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多