Возвращение видеоинформации API Video Intelligence - PullRequest
0 голосов
/ 15 мая 2018

Я не могу отобразить информацию о локальном видео, когда я делаю тест с видео, примеры возвращаются, но при попытке с файлами на машине ничего не возвращается.

public String consultar() throws Throwable {
        requisicaoVideo("C:\\Users\\Web Designer\\Desktop\\Placas de Carros\\cat.mp4");
        return "analiseForenseVideos.xhtml";
    }
    public void requisicaoVideo(String filePath) throws Exception {
        try (VideoIntelligenceServiceClient client = VideoIntelligenceServiceClient.create()) {
            // Read file and encode into Base64
            Path path = Paths.get(filePath);
            byte[] data = Files.readAllBytes(path);
            byte[] encodedBytes = Base64.encodeBase64(data);
            System.out.println(encodedBytes + "Linha 74");
            AnnotateVideoRequest request = AnnotateVideoRequest.newBuilder()
                    .setInputContent(ByteString.copyFrom(encodedBytes)).addFeatures(Feature.LABEL_DETECTION).build();
            // Create an operation that will contain the response when the operation
            // completes.
            OperationFuture<AnnotateVideoResponse, AnnotateVideoProgress> response = client.annotateVideoAsync(request);
            System.out.println("Waiting for operation to complete...");
            System.out.println(response.get().getAnnotationResultsList() + "Linha 83");
            for (VideoAnnotationResults results : response.get().getAnnotationResultsList()) {
                // process video / segment level label annotations
                System.out.println("Locations: ");
                for (LabelAnnotation labelAnnotation : results.getSegmentLabelAnnotationsList()) {
                    System.out.println("Video label: " + labelAnnotation.getEntity().getDescription());
                    // categories
                    for (Entity categoryEntity : labelAnnotation.getCategoryEntitiesList()) {
                        System.out.println("Video label category: " + categoryEntity.getDescription());
                    }
                    // segments
                    for (LabelSegment segment : labelAnnotation.getSegmentsList()) {
                        double startTime = segment.getSegment().getStartTimeOffset().getSeconds()
                                + segment.getSegment().getStartTimeOffset().getNanos() / 1e9;
                        double endTime = segment.getSegment().getEndTimeOffset().getSeconds()
                                + segment.getSegment().getEndTimeOffset().getNanos() / 1e9;
                        System.out.printf("Segment location: %.3f:%.2f\n", startTime, endTime);
                        System.out.println("Confidence: " + segment.getConfidence());
                    }
                }

1 Ответ

0 голосов
/ 25 мая 2018

Я с поддержкой Google Cloud. Спасибо за сообщение об этой проблеме. Я провел несколько тестов и обнаружил какую-то ошибку в функции analyzeLabelsFile в файле Detect.java.

Если вы позволите заданию работать в течение длительного времени, оно может быть завершено (для меня это займет 30 секунд при импорте файла из Google Cloud Storage и 16 минут при использовании локального файла), но в любом случае не предоставляет информацию, просто «Местоположения: "сообщение в конце.

Я отправил всю соответствующую информацию об этом (как воспроизвести проблему, возможную причину и т. Д.) Команде API Google Video Intelligence, чтобы они могли посмотреть.

Я не нашел обходного пути для локальных файлов, но вы можете обработать файл в GCS через его URL и функцию analyzeLabels.

...