Tag: avassetreader

.m4a来自iPod Library的原始数据不能播放

所以我面临一个非常奇怪的问题,并想知道是否有其他人遇到这个问题。 我从手机音乐库抓取MPMediaItem的原始数据,然后通过HTTP将其发送到别处播放。 当我从一个.m4atypes的文件中抓取原始数据的时候,我的问题就出现了。 例如,如果我从iTunes检查的原始文件是7.4MB,从我的代码得到的是7.3MB的大小。 我做了一些研究,发现一个.m4a文件实际上是一个封装,我想我没有得到封装的文件只是原始音乐数据,因此它是不可识别的。 这里是我的代码,给我从MPMediaItem原始音乐数据 NSError * error = nil; MPMediaQuery *query = [MPMediaQuery albumsQuery]; NSArray * songs = query.items; MPMediaItem * song = [songs objectAtIndex:socket_data_index]; AVURLAsset *songAsset = [AVURLAsset URLAssetWithURL:[song valueForProperty:MPMediaItemPropertyAssetURL] options:nil]; AVAssetReader * reader = [[AVAssetReader alloc] initWithAsset:songAsset error:&error]; AVAssetTrack * songTrack = [songAsset.tracks objectAtIndex:0]; AVAssetReaderTrackOutput * output = [[AVAssetReaderTrackOutput alloc] initWithTrack:songTrack […]

使用AVAssetReader按时间值获取特定的帧

我已经检查了这个http://www.7twenty7.com/blog/2010/11/video-processing-with-av-foundation来逐帧获取video。 但我真正的要求是在特定的时间得到一个框架。 我知道应该可以通过AVAssetReader ,不知道是否有任何直接的方法在AVAssetReader 。 请给我任何指导,如何在特定时间得到框架。 我检查了AVAssetImageGenerator但这不是我真正想要的。 最后我find了答案,你必须使用timeRange属性。 这是唯一的方法。

AVAssetWriter如何写下采样/压缩m4a / mp3文件

我试图采取本地m4a或MP3文件和压缩/下采样此文件(为了制作一个较小的文件的目的)。 最初,我使用AVAssetExportSession将AVAsset导出到临时目录,但我没有任何控制压缩/下采样的方法(只能使用预设,其中只有.wav文件格式支持质量下降) 。 然后,在这里几个例子,我尝试使用AVAssetReader / AVAssetWriter预制这个'出口'。 我创build我的读者/作家是这样的: NSString *exportPath = [NSHomeDirectory() stringByAppendingPathComponent:@"out.m4a"]; NSURL *exportURL = [NSURL fileURLWithPath:outPath]; // reader NSError *readerError = nil; AVAssetReader *reader = [[AVAssetReader alloc] initWithAsset:asset error:&readerError]; AVAssetTrack *track = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; AVAssetReaderTrackOutput *readerOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSettings:nil]; [reader addOutput:readerOutput]; // writer NSError *writerError = nil; AVAssetWriter *writer = [[AVAssetWriter […]

如何将AVAssetaudio从一个iOS设备无线传输到另一个?

我正在做一些像从iPod库stream式传输audio,通过networking或蓝牙发送数据,并使用audio队列播放。 感谢这个问题和代码 。 帮助我很多。 我有两个问题。 我应该从一台设备发送到另一台设备? CMSampleBufferRef? AudioBuffer? MDATA? AudioQueueBuffer? 包? 我不知道。 当应用程序完成播放,它坠毁,我得到错误(-12733)。 我只是想知道如何处理错误,而不是让它崩溃。 (检查OSState?发生错误时,停止它?) 错误:无法读取示例数据(-12733)

如何在iOS上使用AVAssetReader正确读取已解码的PCM样本 – 目前解码不正确

我目前正在从事计算机科学学士学位的申请工作。 该应用程序将关联来自iPhone硬件(加速度计,GPS)和正在播放的音乐的数据。 这个项目还处于起步阶段,只有2个月的时间。 我现在正需要帮助的时刻,是从iTunes库中的歌曲中读取PCM样本,并使用audio单元进行播放。 目前我想工作的实现如下:从iTunes中随机select一首歌曲,并在需要时从中读取样本,并存储在缓冲区中,让我们称之为sampleBuffer。 稍后在消费者模型中,audio单元(具有混音器和remoteIO输出)具有callback,我只需将sampleBuffer中所需的样本数复制到callback中指定的缓冲区中。 然后我通过扬声器听到的是不是我所期望的; 我可以认识到,它正在播放歌曲,但它似乎是不正确的解码,它有很多的噪音! 我附加了一个图像,显示了第一〜半秒(24576样本@ 44.1kHz),这不像一个正常的输出。 在我进入清单之前,我已经检查过这个文件没有被破坏,类似的,我写了缓冲区的testing用例(所以我知道缓冲区不会改变这个样本),尽pipe这可能不是最好的方法(有些人会主张走audio队列路线),我想对样本进行各种操作,并在完成之前更改歌曲,重新排列播放什么歌曲等。此外,audio中可能存在一些不正确的设置单位,但是,显示样本(显示样本解码不正确)的graphics是从缓冲区中直接获取的,因此我现在只是在寻找解决为什么从磁盘读取和解码不能正常工作的原因。 现在我只想通过工作来玩游戏。 不能张贴图像,因为新的到stackoverflow所以inheritance人的形象的链接: http : //i.stack.imgur.com/RHjlv.jpg 清单: 这是我设置audioReadSettigns将用于AVAssetReaderAudioMixOutput // Set the read settings audioReadSettings = [[NSMutableDictionary alloc] init]; [audioReadSettings setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; [audioReadSettings setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; [audioReadSettings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; [audioReadSettings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; [audioReadSettings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsNonInterleaved]; [audioReadSettings setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 现在下面的代码清单是一个接收NSString和歌曲的persistant_id的方法: -(BOOL)setNextSongID:(NSString*)persistand_id { […]