gpt4 book ai didi

cocoa - QuickLook 音频生成器

转载 作者:行者123 更新时间:2023-12-03 16:46:21 25 4
gpt4 key购买 nike

我正在尝试创建一个 QuickLook 插件来播放包内的音频,以实现该包的 QuickLook 预览,但我的尝试仅显示默认的 QL 预览 - 较大的文件图标、文件名、类型、大小和修改日期。

我已经使用目标 UTI 类型的 XCode 设置成功将测试字符串显示为 kUTTPlainText,并验证了传递给 QLPreviewRequestSetDataRepresentation 的 CFDataRef 不为 NULL。

这是我的 GeneratePreviewForURL 函数中的基本代码:

NSURL *audioFilePath = @"the file path";
CFDataRef data = (__bridge CFDataRef)[NSData dataWithContentsOfURL:audioFilePath];
QLPreviewRequestSetDataRepresentation(preview, data, kUTTypeAudio, NULL);
return noErr;

有什么想法吗?是否可以通过 QuickLook 预览播放音频?

最佳答案

我的回答基于我的个人经历。

使用 OSX 10.6.8 上的 Xcode 4.2,只需使用 <src> 即可在基于 HTML 的 QuickLook 插件中加载音频文件。 <audio> 的属性标签:

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
@autoreleasepool {

if (QLPreviewRequestIsCancelled(preview)) return noErr;

NSMutableString *html=[[NSMutableString alloc] init];
NSDictionary *props;

props=@{
(__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey:@"UTF-8",
(__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"text/html",
};

[html appendString:@"<html>"];
[html appendString:@"<body>"];
[html appendString:@"<audio src=\"/tmp/AudioFile.mp3\" type=\"audio/mpeg\" controls=\"true\" autoplay=\"true\" />"];
[html appendString:@"</body>"];
[html appendString:@"</html>"];

QLPreviewRequestSetDataRepresentation(preview,(CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,(CFDictionaryRef)props);
}

return noErr;
}

现在,在 Mavericks 上使用 Xcode 5.1,似乎都不使用 cid:方案(我将在下面发布一个示例)可以完成这项工作:

OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
{
@autoreleasepool {

if (QLPreviewRequestIsCancelled(preview)) return noErr;

NSMutableString *html=[[NSMutableString alloc] init];
NSDictionary *props;
NSData *audioData=[NSData dataWithContentsOfFile:@"/tmp/AudioFile.mp3"];

props=@{
(__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey:@"UTF-8",
(__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"text/html",
(__bridge NSString *)kQLPreviewPropertyAttachmentsKey:@{
@"AUDIO":@{
(__bridge NSString *)kQLPreviewPropertyMIMETypeKey:@"audio/mpeg",
(__bridge NSString *)kQLPreviewPropertyAttachmentDataKey: audioData,
},
},
};

[html appendString:@"<html>"];
[html appendString:@"<body>"];
[html appendString:@"<audio src=\"cid:AUDIO\" type=\"audio/mpeg\" controls=\"true\" autoplay=\"true\" />"];
[html appendString:@"</body>"];
[html appendString:@"</html>"];

QLPreviewRequestSetDataRepresentation(preview,(CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],kUTTypeHTML,(CFDictionaryRef)props);
}

return noErr;
}

我认为你应该 report a bug to Apple为此!

关于cocoa - QuickLook 音频生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20312300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com