我正在编写一个 Quick Look 插件,它可以生成一些音频文件的预览,例如ogg
,flac
通过将它们转换为 AIFF,ffmpeg
然后返回一个带有<video>
引用转换后的 AIFF 文件的标签的简约网页。
一切运行良好,除了我需要在临时文件夹中创建那些临时 AIFF 文件。我一直在寻找一种在用户关闭“快速查看”窗口以删除我的 AIFF 文件时获得回调的方法,但我找不到。
我有什么好方法可以删除我的 Quick Look 插件生成的那些临时文件吗?
我正在编写一个 Quick Look 插件,它可以生成一些音频文件的预览,例如ogg
,flac
通过将它们转换为 AIFF,ffmpeg
然后返回一个带有<video>
引用转换后的 AIFF 文件的标签的简约网页。
一切运行良好,除了我需要在临时文件夹中创建那些临时 AIFF 文件。我一直在寻找一种在用户关闭“快速查看”窗口以删除我的 AIFF 文件时获得回调的方法,但我找不到。
我有什么好方法可以删除我的 Quick Look 插件生成的那些临时文件吗?
我只是花了一些时间尝试自己解决这个类似的问题,试图创建一个插件来读取各种不受支持的图像格式。据我所知,当视图关闭时,您无法真正得到回调来告诉您,因为您将数据交给 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:)。