我正在使用MonoMac,但我很了解cocoa和objc,如果你能用这些语言回答我,请做。
我有一个来自我的网络服务器的网址,它返回一个mp4。我希望我的MonoMac应用程序启动QuickTime并开始播放该URL。
我试过这些方法:
Process.Start("/Applications/QuickTime Player.app/Contents/MacOS/QuickTime Player", url);
但是当网址类似于http://webhost/1/blah.mp4时,quicktime说“文件blah.mp4无法打开。文件不存在。我知道文件存在且一切正确。如果我使用这个方法:
var cfurl = MonoMac.CoreFoundataion.CFUrl.FromUrlString(url, null);
LSOpenCFURLRef(cfurl.Handle, (IntPtr)null);
在Safari中打开流,QuickTime插件开始播放。
我也尝试过NSWorkspace OpenUrls和OpenFile
NSWorkspace.SharedWorkspace.OpenUrls(new[]{NSUrl.FromString(url)},
@"com.apple.quicktimeplayer",
NSWorkspaceLaunchOptions.Async,
new NSAppleEventDescriptor(),
new[]{""});
但是这会在safari中启动
NSWorkspace.SharedWorkspace.OpenFile(url, "QuickTimePlayer");
但这没有任何作用。
所以我尝试NSTask
MonoMac.Foundation.NSTask.LaunchFromPath("/Applications/QuickTime Player.app/Contents/MacOS/QuickTime Player",
new string[] {url});
但是这就像我上面的第一次尝试一样“......无法找到......”。
最后,如果我启动QuickTime Player并使用打开的URL并将网址粘贴到文本框中并单击“打开”,则会播放该流而不会出错。
我的cocoa应用程序如何向QuickTime Player发送URL?
答案 0 :(得分:2)
考虑到URL是远程URL,您可以使用Scripting Bridge in Cocoa applications让QuickTime Player打开远程URL:
id qtApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.QuickTimePlayerX"];
[qtApp activate];
if ([qtApp isRunning]) {
// note that the parameter to openURL: must be the string representation of a URL
[qtApp openURL:@"http://movies.apple.com/media/us/ipad/2011/tours/apple-ipad2-feature-us-20110302_r848-9cie.mov?width=848&height=480"];
}
您需要将Scripting Bridge框架链接到您的应用程序。