Как я могу запустить QuickTime и начать проигрывать URL? - PullRequest
1 голос
/ 07 апреля 2011

Я использую MonoMac, но я достаточно хорошо понимаю какао и objc, поэтому, если вы можете ответить мне на этих языках, пожалуйста, сделайте.

У меня есть URL с моего веб-сервера, который возвращает mp4. Я бы хотел, чтобы мое приложение MonoMac запустило QuickTime и начало воспроизведения этого URL.

Я попробовал эти методы:

Process.Start("/Applications/QuickTime Player.app/Contents/MacOS/QuickTime Player", url);

но когда 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[]{""});

но это запускается в сафари

 NSWorkspace.SharedWorkspace.OpenFile(url, "QuickTimePlayer");

но это ничего не делает.

Поэтому я пытаюсь NSTask

MonoMac.Foundation.NSTask.LaunchFromPath("/Applications/QuickTime Player.app/Contents/MacOS/QuickTime Player",
                                         new string[] {url});

Но это дает то же самое "... не может быть найдено ...", как моя самая первая попытка выше.

Наконец, если я запустил QuickTime Player и использовал открытый URL-адрес, вставил URL-адрес в текстовое поле и нажал кнопку Открыть, поток воспроизводится без ошибок.

Как приложение из какао может отправить URL-адрес в QuickTime Player?

1 Ответ

2 голосов
/ 07 апреля 2011

Учитывая, что URL-адрес является удаленным, вы можете использовать Мост сценариев в приложениях Cocoa , чтобы попросить 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 с вашим приложением.

...