- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据此博客条目中的教程创建 MTAudioProcessingTap - http://chritto.wordpress.com/2013/01/07/processing-avplayers-audio-with-mtaudioprocessingtap/
问题在于处理各种音频格式。我已经能够使用 M4A 成功创建一个 Tap,但它不适用于 MP3。对我来说更奇怪的是 - 代码可以在两种格式的模拟器上运行,但不能在设备上运行(只有 m4a 可以运行)。我在进程 block 中收到 OSStatusError 代码 50,如果我尝试使用 AudioBufferList 数据,则会出现错误的访问。我正在使用的点击设置和回调如下。进程 block 似乎是罪魁祸首(我认为),但我不知道为什么。
更新 - 经过一段时间的休息后,它似乎第一次可以偶尔工作,但只是第一次。我感觉我的音频文件被某种锁定。有谁知道在未准备的区 block 中应该做什么来清理?
取消准备 block -
void unprepare(MTAudioProcessingTapRef tap)
{
NSLog(@"Unpreparing the Audio Tap Processor");
}
进程 block (将得到 OSStatus 错误 50)-
void process(MTAudioProcessingTapRef tap, CMItemCount numberFrames,
MTAudioProcessingTapFlags flags, AudioBufferList *bufferListInOut,
CMItemCount *numberFramesOut, MTAudioProcessingTapFlags *flagsOut)
{
OSStatus err = MTAudioProcessingTapGetSourceAudio(tap, numberFrames, bufferListInOut,
flagsOut, NULL, numberFramesOut);
if (err) NSLog(@"Error from GetSourceAudio: %ld", err);
}
点击设置 -
NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"DLP" withExtension:@"mp3"];
assert(assetURL);
// Create the AVAsset
AVAsset *asset = [AVAsset assetWithURL:assetURL];
assert(asset);
// Create the AVPlayerItem
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
assert(playerItem);
assert([asset tracks]);
assert([[asset tracks] count]);
self.player = [AVPlayer playerWithPlayerItem:playerItem];
assert(self.player);
// Continuing on from where we created the AVAsset...
AVAssetTrack *audioTrack = [[asset tracks] objectAtIndex:0];
AVMutableAudioMixInputParameters *inputParams = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:audioTrack];
// Create a processing tap for the input parameters
MTAudioProcessingTapCallbacks callbacks;
callbacks.version = kMTAudioProcessingTapCallbacksVersion_0;
callbacks.clientInfo = (__bridge void *)(self);
callbacks.init = init;
callbacks.prepare = prepare;
callbacks.process = process;
callbacks.unprepare = unprepare;
callbacks.finalize = finalize;
MTAudioProcessingTapRef tap;
// The create function makes a copy of our callbacks struct
OSStatus err = MTAudioProcessingTapCreate(kCFAllocatorDefault, &callbacks,
kMTAudioProcessingTapCreationFlag_PostEffects, &tap);
if (err || !tap) {
NSLog(@"Unable to create the Audio Processing Tap");
return;
}
assert(tap);
// Assign the tap to the input parameters
inputParams.audioTapProcessor = tap;
// Create a new AVAudioMix and assign it to our AVPlayerItem
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
audioMix.inputParameters = @[inputParams];
playerItem.audioMix = audioMix;
// And then we create the AVPlayer with the playerItem, and send it the play message...
[self.player play];
最佳答案
这显然是 6.0 中的一个错误(我的设备仍在运行)。模拟器版本为 6.1
将设备升级到 6.1.2,错误消失。
关于ios - 设备上的 MTAudioProcessingTap 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15351507/
在我的 iOS 8.0 中。 App 我需要对(非实时)音频播放应用一些自定义音频处理。通常,音频来自设备本地音频文件。 目前,我在 AVMutableAudioMix 上使用 MTAudioProc
阅读这篇文章后:How do you release an MTAudioProcessingTap? ,按照克里斯的一次点击建议似乎有效,并且调用了 unprepare 和 finalize 回调。
MTAudioProcessingTap 的头文件说它的初始化和准备回调将由未准备和完成回调平衡。然而,在 Apple's example ,这些回调永远不会被调用(我向它们添加了日志记录以便我可以检
我正在尝试根据此博客条目中的教程创建 MTAudioProcessingTap - http://chritto.wordpress.com/2013/01/07/processing-avplaye
我正在尝试实现 MTAudioProcessingTap,它运行良好。问题是当我完成使用 Tap 并重新启动我的类并创建一个新的 Tap 时。 我怎么可能松开水龙头1-我在创建时将水龙头保留为属性,希
我正在尝试使用 AVAssetExportSession 导出可变组合。我使用 MTAudioProcessingTap 处理可变组合中的音频数据,并根据音频数据,使用 AVVideoComposit
我正在尝试构建一个 iOS 应用程序来播放视频文件并使用 MTAudioProcessingTap 做一些有趣的事情。我需要它能够播放各种格式,包括一些 Apple 不支持的格式。我正在考虑从 VLC
由于关于 MTAudioProcessingTap 的文档非常少(实际上几乎没有),我使用的是 Apple's demo app from WWDC 2012 . 我正在尝试在 MTAudioProc
因此,我尝试使用 Accelerate.framework 阅读有关 FFT 的所有内容,并获得了一个适用于 MTAudioProcessingTap 的示例,但我觉得我做错了什么,我的标绘点不应该看
我正在尝试在 iOS 设备上播放用户 iPod 库中的音频文件,同时使用 AudioUnit 应用参数 EQ 效果。我一直在使用这个示例作为指南:https://developer.apple.com
关于 AVAudioMix 的文档很少和 MTAudioProcessingTap,它允许处理应用于 AVFoundation(在 iOS 上)中媒体 Assets 的音轨(PCM 访问)。这arti
我是一名优秀的程序员,十分优秀!