2

我正在编写一个 Quick Look 插件,它可以生成一些音频文件的预览,例如oggflac通过将它们转换为 AIFF,ffmpeg然后返回一个带有<video>引用转换后的 AIFF 文件的标签的简约网页。

一切运行良好,除了我需要在临时文件夹中创建那些临时 AIFF 文件。我一直在寻找一种在用户关闭“快速查看”窗口以删除我的 AIFF 文件时获得回调的方法,但我找不到。

我有什么好方法可以删除我的 Quick Look 插件生成的那些临时文件吗?

4

1 回答 1

3

我只是花了一些时间尝试自己解决这个类似的问题,试图创建一个插件来读取各种不受支持的图像格式。据我所知,当视图关闭时,您无法真正得到回调来告诉您,因为您将数据交给 Quick Look,因此您以后无法真正删除它们。如果可能,尝试将其转换为 NSData 对象,然后在 HTML 中对其进行编码。该示例以动态生成预览 > 生成丰富的 HTML的形式提供。对于您的情况,您只需要替换该部分:

[html appendString:@"<img src=\"cid:tabs.png\"><br>"];

用你的标签。cid: URL 是访问临时数据的重要调用。在你的情况下,它会是这样的:

[html appendString:@"<audio src=\"cid:converted.aiff\" controls autoplay><br>"];

然后设置:

NSMutableDictionary *audioProps = [[NSMutableDictionary alloc] init];
[audioProps setObject:@"audio/aiff" forKey:(NSString *)kQLPreviewPropertyMIMETypeKey];
[audioProps setObject:audioData forKey:(NSString *)kQLPreviewPropertyAttachmentDataKey];
[props setObject:[NSDictionary dictionaryWithObject:audioProps forKey:@"converted.aiff"] forKey:(NSString *)kQLPreviewPropertyAttachmentsKey];

其中props是主要的属性引用,audioData是代表您的 aiff 文件的 NSData 等。如果您在 tmp 中有来自其他处理的数据,一旦您使用 NSData 将数据加载到内存中,您应该删除 tmp 文件(参见NSData dataWithContentsOfFile:)。

于 2013-05-18T02:30:23.933 回答