我正在编写一个快速查看插件,可以为ogg
和flac
等一些音频文件生成预览,方法是将其转换为ffmpeg
的AIFF,然后返回带有{的简约网页{1}}引用转换后的AIFF文件的标记。
除了我需要在临时文件夹中创建临时AIFF文件外,一切运行良好。当用户关闭Quick Look窗口以便能够删除我的AIFF文件时,我一直在寻找一种方法来获得回调,但我找不到。
我有一个好方法可以删除我的Quick Look插件生成的临时文件吗?
答案 0 :(得分:3)
我只是花了一点时间尝试解决这个问题,试图创建一个插件来读取各种不支持的图像格式。据我所知,你不能真正得到一个回调告诉你何时关闭视图,因为你将数据移交给Quick Look,所以你以后不能真正删除它们。如果可能,尝试将其转换为NSData对象,然后在HTML中对其进行编码。该示例以Dynamically Generating Previews > Generating Enriched 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:)。