- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在播放 MP3 和 AAC 广播电台。我正在读取 ICY/HTTP header ,并且在检测内容类型中的音频/aac 或音频/aacp 时,我提供 kAudioFileAAC_ADTSType 作为 AudioFileStreamOpen 的线索,否则我给它 kAudioFileMP3Type。
它工作得很好,问题是当电台正在播放 AAC 时,但没有在 HTTP header 中将音频/aacp 作为内容类型发送。当发生这种情况时,我通常使用 mp3 线索创建音频文件流(0 作为线索也没有什么不同),然后音频文件流的属性回调表明流认为它正在读取 MP3,格式列表回调也从不发生,当时间到了创建音频队列失败。
有没有办法让 AudioFileStream 与 AAC 一起工作,而无需在其构造函数中传递 AAC 提示,或者除了在我的电台数据库中以某种方式标记它们之外,是否有人对如何检测这些电台有任何其他想法?每次我正常失败时,我也不想尝试创建一个带有 AAC 的新音频文件流作为提示。
最佳答案
我有一段时间没看过这段代码了,但我认为它应该可以解决问题。
// the file stream parser is now ready to produce audio packets.
// get the stream format.
AudioFormatListItem afli = GetFirstPlayableAudioFormatForFile(inAudioFileStream);
AudioStreamBasicDescription asbd = afli.mASBD;
...
// create the audio queue
err = AudioQueueNewOutput(&asbd, MyAudioQueueOutputCallback, myData, NULL, NULL, 0, &myData->audioQueue);
GetFirstPlayableAudioFormatForFile 实现:
AudioFormatListItem GetFirstPlayableAudioFormatForFile(AudioFileStreamID inAudioFileStream)
{
AudioFormatListItem *formatListPtr = NULL;
AudioFormatListItem formatItem = {0};
UInt32 propertySize;
OSStatus status = noErr;
if (NULL == inAudioFileStream) return formatItem;
status = AudioFileStreamGetPropertyInfo(inAudioFileStream, kAudioFileStreamProperty_FormatList, &propertySize, NULL);
if (noErr == status) {
// allocate memory for the format list items
formatListPtr = (AudioFormatListItem *)malloc(propertySize);
if (NULL == formatListPtr) return formatItem;
// get the list of Audio Format List Item's
status = AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_FormatList, &propertySize, formatListPtr);
if (noErr == status) {
// print out some helpful information
UInt32 numFormats = propertySize / sizeof(AudioFormatListItem);
printf ("This file has a %d layered data format:\n", (int)numFormats);
/*for (unsigned int i = 0; i < numFormats; ++i) {
CAStreamBasicDescription(formatListPtr[i].mASBD).Print();
}*/
UInt32 itemIndex;
UInt32 indexSize = sizeof(itemIndex);
// get the index number of the first playable format -- this index number will be for
// the highest quality layer the platform is capable of playing
status = AudioFormatGetProperty(kAudioFormatProperty_FirstPlayableFormatFromList, propertySize,
formatListPtr, &indexSize, &itemIndex);
if (noErr == status) {
printf ("Returning AudioFormatListItem at index %d.\n", (int)itemIndex);
// copy the format item at index we want returned
formatItem = formatListPtr[itemIndex];
}
}
free(formatListPtr);
} else {
AudioStreamBasicDescription asbd;
UInt32 asbdSize = sizeof(asbd);
/*status = */AudioFileStreamGetProperty(inAudioFileStream, kAudioFileStreamProperty_DataFormat, &asbdSize, &asbd);
//if (err) { errorDidOccur(myData, err, @"get kAudioFileStreamProperty_DataFormat"); return err; }
formatItem.mASBD = asbd;
}
return formatItem;
}
关于iphone - 使用 AQ 和音频文件流动态检测和流式传输 AAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5290696/
目前我找到的最佳解决方案是: http://jsfiddle.net/kizu/UUzE9/ 但事实并非如此。你看,我有三列;其中两个需要避免明确调整大小。好吧,第二个确实需要调整大小;但不完全是。
假设我们有两种类型和它们的联合: type A = {tag: 'a'}; type B = {tag: 'b'}; type U = A | B; 以及返回 A 或 B 的函数,具体取决于提供的标签
我有四个 div。 div 2 是 div 1 高度的一半,div 3 & 4 是 div 2 高度的一半。 在大显示器上 div 的位置很好: ---------------- ----------
要使用 display: block 居中元素,人们使用 margins: auto。如果我将 max-width 设置为需要居中的子项,并且它周围有足够的空间,它将根据需要尽可能多地流动到 max-
我试图获得的效果是在 bootstrap 中使用列从左到右文本流动的位置。在第一个部分的第十二列之后,我想换行,希望代码能让它更清晰。
我知道固定列可以在 X 轴和 Y 轴上溢出'。我还在某处读到,如果您将其中一个轴设置为自动/滚动,则另一组将继承前一个轴的行为,除非它被设置为 hidden。 我的困境是:我有一个固定的列
我基本上想要这个: ----------------------------------------------------------------- |
我正在尝试构建一个由三个主要 block 组成的移动就绪设计,广告 block 、内容 block 和侧边栏 block (加上页眉和页脚,但这些对于这个问题并不重要)。 想法是让广告和侧边栏具有固定
我正在关注这个guide上传照片。代码工作正常,但 flowtype 会告诉我有一个错误:调用方法“append”。不能在交集类型交集的任何成员上调用函数 出现错误后,流程不会传递该代码是有道理的,因
通过研究引用应用程序和阅读手册,我对 Spring WebFlow 2.1 有了第一印象。在进一步讨论之前,我想问一下对这个社区的印象。 实际上,我计划我的网站只包含一个网页。其他所有内容(登录/注销
我不确定为什么,但我得到这个文本显示/流动在 之外标签。我认为这与 float 有关,但我已经尝试了所有我知道的解决方案来修复它,但它们都没有奏效。 这是 jsfiddle(我在 Safari 中)
典型的 ISP 设置。一台服务器是 Web 服务器,另一台是 DB SQL 服务器。在两台计算机上创建了一个本地管理员帐户(假设为 XYZ)。因此,当我远程登录时,我要么是 WebServer\XYZ
我无法理解 IE7 中的 float 问题。我 div 包含一个向右浮动的列表,以便文本保持在左侧。我使用的方法在其他浏览器中有效,但在 IE7 中无效。我简化了代码以使问题更清楚:
我有两个街区。其中一个呈三 Angular 形。如何围绕这个 div 文本流动?例子: HTML: Triangle Lorem ipsum dolor sit a
我在网上搜索过,似乎找不到一个干净、简单、所有浏览器都友好的 3 列布局。 我希望有 3 列布局,左列固定为 200px,右列固定为 200px,中间列为剩余宽度,但最小宽度为 600px。所以整体最
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this q
我是一名优秀的程序员,十分优秀!