Я пытаюсь работать с PhotoCam Primeface (версия 6.2) и, используя пример из их витрины, камера не работает для меня на Firefox (Developer Edition 63.0b13) или Safari версии 12 .. и не работаетв Safari и на мобильном устройстве (мобильное устройство на iOS12).
Он развернут на сайте с https и работает в Chrome как на настольном, так и на мобильном браузере.
Я сейчас использую демонстрационную демонстрацию, найденную здесь (код также выложен ниже):
https://www.primefaces.org/showcase/ui/multimedia/photoCam.xhtml
Я даже зашел так далекоКак загрузить файл витрины и попробовать эту версию, без изменений в успехе.
Может кто-нибудь помочь, пожалуйста?
Что происходит?
В Firefox:
- Я получаю приглашение разрешить доступ к камере, нажимаю кнопку ОК.
- Я получаю приглашение запустить Adobe Flash, я согласен.
- После принятия обоих, «коробка» камеры просто белого цвета.
- Когда я нажимаю на Capture, я получаю сообщение об ошибке «Ошибка Webcam.js: веб-камера еще не загружена».
- ПРИМЕЧАНИЕ. Консоль возвращает «недостижимый код после оператора возврата [Подробнее]» при загрузке страницы, но после принятия двух запросов дополнительные сообщения не отображаются.
В Safari:
- Я получаю приглашение разрешить доступ к камере, нажимаю кнопку ОК.
- Я получаю сообщение об ошибке "Ошибка веб-камеры.js: не удается получить доступ к веб-камере: Ошибка типа: Ошибка типа Ошибка типа: Ошибка типа"
В Safari на мобильном устройстве:
- Я получаю сообщение об ошибке "Ошибка веб-камеры.js: Не удалось получить доступ к веб-камере: Ошибка: недопустимое ограничение Ошибка: недопустимое ограничение"
Вот код HTML:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" template="/common/template.xhtml">
<ui:define name="title">PhotoCam</ui:define>
<ui:define name="content">
<h:form>
<h:panelGrid columns="3" cellpadding="5">
<p:photoCam widgetVar="pc" listener="#{photoCamView.oncapture}" update="photo"/>
<p:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/>
<p:outputPanel id="photo">
<p:graphicImage name="demo/images/photocam/#{photoCamView.filename}.jpeg"
rendered="#{not empty photoCamView.filename}"/>
</p:outputPanel>
</h:panelGrid>
</h:form>
</ui:define>
Вот класс Java
public class PhotoCamView {
private String filename;
private String getRandomImageName() {
int i = (int) (Math.random() * 10000000);
return String.valueOf(i);
}
public String getFilename() {
return filename;
}
public void oncapture(CaptureEvent captureEvent) {
filename = getRandomImageName();
byte[] data = captureEvent.getData();
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
String newFileName = externalContext.getRealPath("") + File.separator + "resources" + File.separator + "demo" +
File.separator + "images" + File.separator + "photocam" + File.separator + filename + ".jpeg";
FileImageOutputStream imageOutput;
try {
imageOutput = new FileImageOutputStream(new File(newFileName));
imageOutput.write(data, 0, data.length);
imageOutput.close();
}
catch(IOException e) {
throw new FacesException("Error in writing captured image.", e);
}
}}
Я ценю любую помощь в этом.
(Я также разместил это на форуме Primefaces и надеюсь, что кто-то здесь или там может мне помочь. Я обновлю оба сайта, когда выясню это)
Кристина