Я использую 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?