首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: AAC+广播流不适用于MediaPlayer (Android4.2.2/ Shoucast链接)

Android: AAC+广播流不适用于MediaPlayer (Android4.2.2/ Shoucast链接)
EN

Stack Overflow用户
提问于 2013-03-05 13:31:15
回答 3查看 10.2K关注 0票数 14

最近,我面临着流媒体AAC+与安卓MediaPlayer的一些问题。关于文件,在Android4.1中应该支持流式AAC+。(测试设备是带有Android 4.2.2的Nexus 2)

我发现了一些相关的问题(查看这里这里这里),但它们主要是与较旧的安卓版本有关,或者是在发布4.1之前。我找到了AACPlayerAndroid字库,但你必须在那里购买许可证。

如果我尝试流AACPlus流,MediaPlayer抛出MediaPlayerError (1,-2147483648),它被定义为“不支持的媒体格式”。但是,如果我在仿真器中启动相同的AAC+流,它就可以正常工作了!

到目前为止我尝试过的是:

  • 在仿真器中尝试相同的代码有效吗?!?(为什么..。可能是本地机器支持的编解码器?)
  • 用4.1或4.2测试其他两个设备也会失败
  • 使用手动标头和setDataSource(String path)设置AAC+流,这是不起作用的(更改http头也失败)
  • 设置一个新的SimpleMediaPlayer项目->也会失败
  • 试图检查网络流量,如果android设备被重定向到错误的url。实际上,我用一个Charles连接了设备,但是只能监视安卓浏览器。我仍然认为重定向是正确的!

下面是我的setDataSource of my Streaming.class的实现

代码语言:javascript
复制
public AmplifyMediaPlayer(PlayerStationObject playerStationObject, Context context) {
     super();
     this.setAudioStreamType(AudioManager.STREAM_MUSIC);
     this.mCurrentStationObject = playerStationObject;
     try {
        //AAC+ TestStream #1: NOT WORKING
        //Uri uri = Uri.parse("http://up-gc2.webnow.com.br/alpha.aac");

        //AAC+ TestStream #2: NOT WORKING   
        //Audio codec: 64 kbit/s 44.1 kHz AAC+, 128 kbit/s 44.1 kHz MP3
        //Uri uri = Uri.parse("http://relay.publicdomainproject.org:80/jazz_swing.aac   ");

        //Setting HTTP header for fixing some issues with normal setDataSource Header from Android
        //User-Agent "iTunes" was set to force re-direct to shoutcast streaming url     
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("User-Agent", "iTunes");

        setDataSource(context, uri, headers);

        //AAC Codec works fine...
        //setDataSource("http://fri.net.pl:8000/fri");

        prepareAsync();

        //...

所以实际上我有以下问题:

为什么我不能在Android4.1和更高版本上播放ACC+流,即使它们应该得到支持?

有人有ACC+流吗?他成功地从MediaPlayer类中获得了该流?(只是为了检查一下,我的玩家整合是否有问题)

如果不支持ACC+,您知道要查看一个好的libary或示例项目,它们是如何解决这个问题的?

谢谢您的建议和建议!

我测试过的其他AAC+流:http://jam-aacp.rautemusik.fm

到目前为止,编辑的结果是:这是不可能的。库是一个很好的解决方案,但它还不稳定.希望Android能很快支持这一点。如果您不同意,请评论

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-13 13:00:08

我的应用程序也有同样的问题。

我和MediaPlayer玩了很多次,但没有成功。我甚至在该应用程序中使用一个代理进行测试,该应用程序用于在较早的android版本上播放MP3流。

我也测试了aacplayer android/android解码器,但是在我的测试中它不是很稳定.

由于我们找不到Android低音,所以我们最终使用了它。

但是它也需要一个AAC专利许可证*如果你想让这个应用公开(为了私人用途,我想它不在乎.)而且,除非你是一个非商业实体,否则它需要一个低音许可证

* Android应用程序被视为消费产品,而不是消费PC软件.为了避免我们在应用上犯的错误.

更新

为什么专利费是必需的?

一旦产品(在这种情况下,应用程序)带来的是自己的解码器(或编码器),低音和aac解码器-android带来他们自己的解码器代码,他们需要有一个AAC许可证,就必须支付费用。只有当能够使用主机系统上可用的解码器(即由主机系统的开发人员授权/付费--在本例中是Google)时,它才是“免费的”。但由于其看起来目前没有办法访问/使用设备编解码器.

票数 3
EN

Stack Overflow用户

发布于 2013-03-12 00:54:49

如果您可以将您的Nexus 2连接到usb并运行adb shell并获得一个终端,则可以使用stagefright检查所支持的可用编解码器和配置文件。

例如,stagefright -lstagefright -p将是两个有用的命令。

票数 0
EN

Stack Overflow用户

发布于 2016-04-04 11:44:15

我也研究过这个问题,我发现如果你包括你自己的解码器,就有必要支付许可费。

审咨委答复说:

“如果你将利用Android系统对AAC的支持,使你的应用程序不包括AAC编码器或解码器,那么你就不会有许可证的需要/义务--你的产品不会被侵犯。”

这意味着,在不收取版税的情况下,您可以使用AAC的唯一方式是本地Android播放器支持AAC及其内置解码器。从外观上看,对此4没有支持。我已经尝试给玩家一个AAC流,它只是永远缓冲。

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

https://stackoverflow.com/questions/15225076

复制
相关文章

相似问题

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