如何流狂想曲RAD / EA的音乐文件?

问题描述 投票:1回答:1

我正在写一个iOS应用程序,与Rhapsody music service SDK交互。我被困在那里我需要将音乐文件的RAD和EA部分结合点。根据他们的文档:

该轨迹回放信息已返回后,您现在就可以开始检索狂想曲音频数据。首先,加载从getTrackPlaybackInfos方法到您的客户端返回的媒体URL属性。大多数的允许流狂想曲格式需要通过狂想曲使用的安全方法称为RAD / EA。的RAD / EA安全模型允许通过广大的轨道(也称为音频的RAD部分)的HTTP立即下载。然后,客户端下载文件的一小加密部分(被称为文件的EA部分),每30秒,以构成完整的音乐文件。

如果媒体URL包含RAD,调用getEA方法来获取必要的音频(EA)。使用会话标识符,RAD版本(3,除非你直接狂想曲代表另有告知)从卡到getTrackPlaybackInfos返回,格式和比特率。你必须多次调用该方法getEA回放整个音频轨道。位置参数包含在EA块偏移量,开始检索的音频数据,以及计数参数包含要返回的实际字节数。例如,在第一次调用getEA,您将设置位置参数为0,并可以设置计数参数为4096这将返回4096个字节开始在赛道上的开始音频数据。在第二CAL获得EA,那么您需要设置位置参数为4096和计数参数为4096的第三个电话,位置参数将是8192和计数参数4096继续调用getEA方法,直到整个轨道玩了。

我能找到的RAD文件很容易。但是,我不是我就是再结合RAD和EA文件转换成一个流式传输/播放媒体文件清楚了吗?我想这是第1次谷歌已经让我失望。我甚至不能找到一个关于如何进行提示。

mp3 audio-streaming aac rhapsody
1个回答
0
投票
  1. 关于RAD / EA:在现场狂想曲有一些样品如何从输入RAD和EA文件可播放的音乐文件(在Java和C ++的样品)
  2. 我们可以直接下载RAD文件
  3. 问题EA文件 - 如何建立呢?在文档这是写我们需要调用getEA每30秒的方法,但接下来的问题在这里出现: 如何创建一个EA文件(我的理解应该有特殊的文件头特殊结构)从从WS getEA方法字节接收? 如何处理好离线模式,如果我们需要调用getEA方法每30秒解码RAD文件?

如果你有什么要补充的 - 请随时...我会很高兴的任何新信息。

解:

  1. 下载RAD文件。
  2. 呼叫getEA - 我们在这里得到一些信息交换标准码的数组。请在这里看到如何将它转换成Java中的字节数组中:ASCII codes => string of characters
  3. RadStream rs = new RadStream(getRadSource()); Log.e(TAG, "" + rs.getHeader()); EaStream es = new EaStream(getEaSource()); Log.e(TAG, "" + es.getHeader()); RadEaStream radea = new RadEaStream(rs, es); int counter = 0; FileOutputStream out = new FileOutputStream(fileWMA); for (int c = radea.read(); c >= 0; c = radea.read()) { out.write(c); counter += 1; } out.close();

对我来说,它的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.