Я пытаюсь разработать небольшой сайт, чтобы делать снимки моего дома с помощью веб-камеры, подключенной к моему Mac Mini дома. На mac mini работает OS X Server. Веб-камера представляет собой веб-камеру Logitech HD Pro Webcam C920 (подключение через USB). Он основан на PHP и HTML5 (никакого другого кода, кроме CSS).
Моя машина для разработки — это MacBook Pro, использующий внутреннюю камеру iSight. На нем не работает сервер OS X; Я вручную включил apache и PHP. При разработке сайта на моем ноутбуке все работало без нареканий. Когда я установил его на свой Mac Mini, программа imagesnap включает камеру, но никогда не завершает работу; Мне приходится вручную убивать процесс, а снимок никогда не создается.
Записывается следующая ошибка:
imagesnap[2363]: *** QTCaptureSession warning: Session received the following error while decompressing video: Error Domain=NSOSStatusErrorDomain Code=-12903 "The operation couldn’t be completed. (OSStatus error -12903.)". Make sure that the formats of all video outputs are properly configured.
Это только при запуске с сайта напрямую. Если я запускаю ту же программу из командной строки, она работает просто отлично... даже если я запускаю ее как пользователь _www!
sudo -u _www bin/imagesnap images/snapshot_$DATE.jpg
Это код, который выполняет вызов в PHP:
<?php
if(isset($_POST['submit'])) {
system('bin/run_imagesnap.sh', $return_value);
if ($return_value) {
echo "The command failed.";
}
}
?>
Я не смог понять, как записать дату в имя выходного файла (я новичок в PHP), поэтому я использовал скрипт bash, чтобы сделать это за меня (мне лучше с BASH):
#!/bin/bash
DATE=`date +"%m-%d-%y_%T"`
bin/imagesnap -q -w 3 images/snapshot_$DATE.jpg
Я также пробовал exec(), passthru() и shell_exec() с теми же результатами.
Наконец, я также пробовал следующее: Создайте test.php, поместите код:
<?php
system('bin/run_imagesnap.sh', $return_value);
if ($return_value) {
echo "The command failed.";
}
?>
и запустил его в командной строке как пользователь _www с помощью php-cli:
sudo -u _www php test.php
и он также работал нормально (создал файл снимка и не выдал ошибки).
Я думаю, может быть, это как-то связано с серверным приложением OS X, но поиск Google ничего не возвращает.
Я в тупике. Почему он ломается, когда я запускаю тот же самый код в браузере, но отлично работает в командной строке, используя те же самые инструменты и пользователя?