如何启动QuickTime并让它开始播放网址?

时间:2011-04-07 01:19:30

标签: cocoa core-foundation monomac

我正在使用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?

1 个答案:

答案 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框架链接到您的应用程序。