相关疑难解决方法(0)

AudioPlayer iOS和m4a

我制作了一个使用AVAudioPlayer播放音乐的应用程序.它可以上传或下载歌曲,将它们写入Core Data,然后在选择时调用它们进行播放.我一直在测试的所有15首歌曲都使用iPhone音乐客户端和我自己的电脑正常运行.

但是,其中三个不回放应用程序.具体来说,我可以按任意顺序上传这15首歌曲,清除我的Model.sqlite,再次将它们下载到应用程序中,并发现其中三首不播放.然而,他们确实拥有正确的头衔和艺术家.

考虑到这一点,我注意到不同的是,非工作文件是.m4a.如何使用AVAudioPlayer播放该格式的文件?

编辑("Whats"回忆?",你用什么URL初始化AVAudioPlayer?"):

有一个服务器,其中包含用户可以通过应用程序访问的歌曲.在选择要检索的子集S之后,应用程序然后下载S并使用NSManagedObjectContext将其写入CoreModel.每首歌曲作为单独的实体存储,具有唯一ID和与子集实体的关系(在本例中为S).

当我"回忆"使用AppDelegate使用上下文获取正确的歌曲时,也会返回数据.然后我像这样初始化AVAudioPlayer:

[[AVAudioPlayer alloc] initWithData:(NSData *)[currentSong valueForKey:@"data"] error:nil];
Run Code Online (Sandbox Code Playgroud)

...所以我写了那个,然后意识到我实际上没有检查出错误是什么(愚蠢的我).我发现它是OSStatus error 1954115647,它返回为不支持的文件类型.再看看这个,我发现这个iPhone:AVAudioPlayer不支持的文件类型.在那里提出了一种解决方案,即在开始时修剪坏数据或从URL的内容初始化.是否有可能在核心模型中找到数据的写入位置以将其作为URL提供?

编辑:(比较文件.它们有什么不同吗?)

对,他们是.我从我的服务器抓取一个样本.m4a文件,该文件由应用程序上传,并将其与iTunes中的文件进行比较.我发现该文件在偏移229404(超出2906191字节)之前被切断,从而开始20680001 A0000E21.在iTunes版本中,0028D83B 6D646174位于这些字节之前.在此之前是一大块零,之后是iTunes编码信息之前的大数据块.最顶层的是更多编码信息,将文件列为M4A.

m4a avaudioplayer ios

5
推荐指数
1
解决办法
3627
查看次数

标签 统计

avaudioplayer ×1

ios ×1

m4a ×1