- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在制作一个 iOS 应用。它的特点之一是可以保存录音和保存音频文件。
为了保存录制的音频文件的 URL,我将它们作为文件路径存储在 NSUserDefaults 中,如下所示:
file:///var/mobile/Containers/Data/Application/17F8E799-D7E1-4B3C-9DFE-7BA48E346314/Documents/recordName.aif
我正在使用名为“FVSoundWaveDemo”的库来尝试显示录制文件的声波。但是我的 URL 有问题......
“FVSoundWaveDemo”中的示例加载本地导入的文件,如下所示:
NSString* filename = [NSString stringWithFormat:@"song1.m4a"];
NSURL* url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:filename ofType:nil]];
_soundWaveView.soundURL = url;
您看到带有“song1.m4a”的位,我想替换它并让应用程序改用文件路径 URL。就像我在上面的问题中显示的文件路径 URL。
我已经尝试过各种方法,例如尝试将 filePath“转换”为普通 URL 并尝试使用 AVAssets 等。但是我尝试的一切都出现了这个错误:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
这是因为我正在使用的库像这样使用 AVAssets:
AVAssetReader* reader = [[AVAssetReader alloc] initWithAsset:songAsset error:&error];
AVAssetTrack* songTrack = [songAsset.tracks objectAtIndex:0];
NSDictionary* outputSettingsDict = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM],AVFormatIDKey,
[NSNumber numberWithInt:1],AVNumberOfChannelsKey,
[NSNumber numberWithInt:8],AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsNonInterleaved,
nil];
那么我如何才能让 AVAsset 只与文件路径 URL 一起工作呢?
请记住,我试图让它查看应用程序保存的录制音频文件,不是开发人员可以添加到 Xcode 项目中的本地导入音频文件。
我已经坚持了好几天了,如果你能帮助我,那将不胜感激,谢谢。
谢谢你抽出时间,丹。
最佳答案
最后想通了。我进行了以下更改以使其正常工作:
1) 我像这样使用 fileURLWithPath 而不是 URLWithString:
NSURL *assetURL = [NSURL fileURLWithPath:passURL];
AVURLAsset *asset = [AVURLAsset assetWithURL:assetURL];
2) 在保存音频文件 URL 之前,我将其保存为 NSString,如下所示:
file:///var/mobile/Containers/Data/Application/17F8E799-D7E1-4B3C-9DFE-7BA48E346314/Documents/recordName.aif
当您想使用 AVPlayer 之类的东西时,这不起作用。相反,您必须确保保存 URL,使其不在字符串的开头包含“file:///”位。为此,请确保保存字符串路径值而不是字符串路径的 NSURL,如下所示:
NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath_ = [searchPaths objectAtIndex:0];
NSString *pathToSave = [documentPath_ stringByAppendingPathComponent:@"audioName.aif"];
现在将“pathToSave”NSString 保存到您想要的任何位置,并在您想要加载文件时使用它。这样做会导致音频文件 URL 像这样被保存:
/var/mobile/Containers/Data/Application/45ABF4BD-FA0E-43F7-B936-7DE29D8F28ED/Documents/23Feb2015_074118pm.aif
您会看到它的开头没有“file:///”位。该字符串现在可用于此答案的第 1 部分。
希望这对遇到与我类似问题的人有帮助。
关于ios - AVAsset 无法识别 NSURL - 崩溃 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659944/
方法 -isFileReferenceURL 是在 NSURL 类上定义的,但我不知道这个方法是什么。我认为这决定了 URL 是否指向实际文件,但事实并非如此。即使文件存在,它也会返回NO。手册上说只
给定一个本地 URL 地址,例如 index.html 现在我需要使用UIWebView在iPad中加载它。我按照以下步骤操作: 创建 NSURL NSURL *url = [NSURL fileUR
我正在尝试将 NSString(文档目录中文件的路径)转换为 NSURL,但 NSURL 始终为空。这是我的代码: NSURL *urlToPDF = [NSURL URLWithString:app
我有一个将属性定义为 NSURL 的对象: @interface fcpElement : NSObject @property (copy) NSString* elementName; @prop
我正在尝试使用 swift 和 firebase 构建聊天应用程序并收到此错误:下面是代码:我仍然不明白哪里出了问题!!我也在使用 JSQMessageViewController。 func sen
我尝试将 deviceToken 附加到 webView loadRequest 之前的 URL,以便我可以使用 GET 值PHP 脚本。我的问题是,保存 deviceToken 值的函数 didFa
我有 2 个 [NSURL] 数组,它们具有相同的元素,但顺序不同。我正在尝试使用 array1 的索引路径来获取成员,并在另一个数组中检测成员的索引路径。 我不知道我是否可以检测到成员在 NSURL
我有一个文件(假设是一个 PDF)存储在我的 macOS Cocoa 应用程序的磁盘上。我有包含此文件路径的 NSURL。 我目前正在使用 NSView 向用户显示此文件存在,其中包含一个显示文件名的
我为 Swift 2 升级了我的代码,这里出现错误: 无法使用 (fileURLWithPath: NSURL) 类型的参数列表调用类型 NSURL 的初始化程序 代码如下: let dirP
我正在尝试将 NSURL * _Nullable 转换为不可为空。你们有没有人知道我该怎么做? 这里是一些上下文: 我正在尝试使用 ios-oauthconsumer ,我正在尝试初始化一些对象: s
我最近在比较两个 NSURL 并将一个 NSURL 与 NSString(这是一个 URL 地址)进行比较时遇到了一个问题,情况是我从某个地方得到了一个 NSURLRequest,我可能知道也可能不知
我必须解析一个 JSON API 的返回,我已将 URL 转换为一个字符串,然后我将它传递给 NSURL,但在 NSLog 中它显示为 nil。这是我的代码, NSString *urlstring=
我有一个名为 downloadedPhotoURLs 的变量,其类型为 [NSURL]?。 我正在尝试分配返回类型 [NSURL] 的函数的结果(非可选)。 我在分配时解开变量downloadedPh
我有一个网址 http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg 我要提取的文件名为“honda_v4
我有一个 NSURL: 服务器调用?x=a&y=b&z=c 获取 y 值最快、最有效的方法是什么? 谢谢 最佳答案 更新: 自 2010 年撰写本文以来,Apple 似乎已经为此目的发布了一套工具。请
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
-[NSURL startAccessingSecurityScopedResource] 状态的文档: You must balance every call to the startAccessi
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我是一名优秀的程序员,十分优秀!