diff --git a/samples/pom.xml b/samples/pom.xml new file mode 100644 index 000000000..13e47f80f --- /dev/null +++ b/samples/pom.xml @@ -0,0 +1,74 @@ + + + + + 4.0.0 + com.example.cloud + videointelligence-samples + pom + 1.0 + + + + com.google.cloud.samples + shared-configuration + 1.0.11 + + + + 1.8 + 1.8 + UTF-8 + + + + + + com.google.cloud + google-cloud-video-intelligence + 1.1.0 + + + + + junit + junit + 4.13 + test + + + commons-cli + commons-cli + 1.4 + + + com.google.truth + truth + 1.0 + test + + + + + + + ../proto-google-cloud-video-intelligence-v1p3beta1 + ../grpc-google-cloud-video-intelligence-v1p3beta1 + + + \ No newline at end of file diff --git a/samples/resources/googlework_short.mp4 b/samples/resources/googlework_short.mp4 new file mode 100644 index 000000000..30af418a6 Binary files /dev/null and b/samples/resources/googlework_short.mp4 differ diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesBeta.java new file mode 100644 index 000000000..f6dc983dd --- /dev/null +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesBeta.java @@ -0,0 +1,113 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +// [START video_detect_faces_beta] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoProgress; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoRequest; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoResponse; +import com.google.cloud.videointelligence.v1p3beta1.DetectedAttribute; +import com.google.cloud.videointelligence.v1p3beta1.FaceDetectionAnnotation; +import com.google.cloud.videointelligence.v1p3beta1.FaceDetectionConfig; +import com.google.cloud.videointelligence.v1p3beta1.Feature; +import com.google.cloud.videointelligence.v1p3beta1.TimestampedObject; +import com.google.cloud.videointelligence.v1p3beta1.Track; +import com.google.cloud.videointelligence.v1p3beta1.VideoAnnotationResults; +import com.google.cloud.videointelligence.v1p3beta1.VideoContext; +import com.google.cloud.videointelligence.v1p3beta1.VideoIntelligenceServiceClient; +import com.google.cloud.videointelligence.v1p3beta1.VideoSegment; +import com.google.protobuf.ByteString; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class VideoDetectFacesBeta { + + public static void detectFaces() { + // TODO(developer): Replace these variables before running the sample. + String localFilePath = "resources/googlework_short.mp4"; + detectFaces(localFilePath); + } + + // Detects faces in a video stored in a local file using the Cloud Video Intelligence API. + public static void detectFaces(String localFilePath) { + try (VideoIntelligenceServiceClient videoIntelligenceServiceClient = + VideoIntelligenceServiceClient.create()) { + // Reads a local video file and converts it to base64. + Path path = Paths.get(localFilePath); + byte[] data = Files.readAllBytes(path); + ByteString inputContent = ByteString.copyFrom(data); + + FaceDetectionConfig faceDetectionConfig = + FaceDetectionConfig.newBuilder() + // Must set includeBoundingBoxes to true to get facial attributes. + .setIncludeBoundingBoxes(true) + .setIncludeAttributes(true) + .build(); + VideoContext videoContext = + VideoContext.newBuilder().setFaceDetectionConfig(faceDetectionConfig).build(); + + AnnotateVideoRequest request = + AnnotateVideoRequest.newBuilder() + .setInputContent(inputContent) + .addFeatures(Feature.FACE_DETECTION) + .setVideoContext(videoContext) + .build(); + + // Detects faces in a video + OperationFuture future = + videoIntelligenceServiceClient.annotateVideoAsync(request); + + System.out.println("Waiting for operation to complete..."); + AnnotateVideoResponse response = future.get(); + + // Gets annotations for video + VideoAnnotationResults annotationResult = response.getAnnotationResultsList().get(0); + + // Annotations for list of faces detected, tracked and recognized in video. + for (FaceDetectionAnnotation faceDetectionAnnotation : + annotationResult.getFaceDetectionAnnotationsList()) { + System.out.print("Face detected:\n"); + for (Track track : faceDetectionAnnotation.getTracksList()) { + VideoSegment segment = track.getSegment(); + System.out.printf( + "\tStart: %d.%.0fs\n", + segment.getStartTimeOffset().getSeconds(), + segment.getStartTimeOffset().getNanos() / 1e6); + System.out.printf( + "\tEnd: %d.%.0fs\n", + segment.getEndTimeOffset().getSeconds(), segment.getEndTimeOffset().getNanos() / 1e6); + + // Each segment includes timestamped objects that + // include characteristics of the face detected. + TimestampedObject firstTimestampedObject = track.getTimestampedObjects(0); + + for (DetectedAttribute attribute : firstTimestampedObject.getAttributesList()) { + // Attributes include unique pieces of clothing, like glasses, poses, or hair color. + System.out.printf("\tAttribute: %s;\n", attribute.getName()); + } + } + } + } catch (Exception exception) { + System.err.println("Failed to create the client due to: " + exception); + } + } +} +// [END video_detect_faces_beta] \ No newline at end of file diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesGcsBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesGcsBeta.java new file mode 100644 index 000000000..d6f773a1a --- /dev/null +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectFacesGcsBeta.java @@ -0,0 +1,105 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +// [START video_detect_faces_gcs_beta] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoProgress; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoRequest; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoResponse; +import com.google.cloud.videointelligence.v1p3beta1.DetectedAttribute; +import com.google.cloud.videointelligence.v1p3beta1.FaceDetectionAnnotation; +import com.google.cloud.videointelligence.v1p3beta1.FaceDetectionConfig; +import com.google.cloud.videointelligence.v1p3beta1.Feature; +import com.google.cloud.videointelligence.v1p3beta1.TimestampedObject; +import com.google.cloud.videointelligence.v1p3beta1.Track; +import com.google.cloud.videointelligence.v1p3beta1.VideoAnnotationResults; +import com.google.cloud.videointelligence.v1p3beta1.VideoContext; +import com.google.cloud.videointelligence.v1p3beta1.VideoIntelligenceServiceClient; +import com.google.cloud.videointelligence.v1p3beta1.VideoSegment; + +public class VideoDetectFacesGcsBeta { + + public static void detectFacesGcs() { + // TODO(developer): Replace these variables before running the sample. + String gcsUri = "gs://cloud-samples-data/video/googlework_short.mp4"; + detectFacesGcs(gcsUri); + } + + // Detects faces in a video stored in Google Cloud Storage using the Cloud Video Intelligence API. + public static void detectFacesGcs(String gcsUri) { + try (VideoIntelligenceServiceClient videoIntelligenceServiceClient = + VideoIntelligenceServiceClient.create()) { + + FaceDetectionConfig faceDetectionConfig = + FaceDetectionConfig.newBuilder() + // Must set includeBoundingBoxes to true to get facial attributes. + .setIncludeBoundingBoxes(true) + .setIncludeAttributes(true) + .build(); + VideoContext videoContext = + VideoContext.newBuilder().setFaceDetectionConfig(faceDetectionConfig).build(); + + AnnotateVideoRequest request = + AnnotateVideoRequest.newBuilder() + .setInputUri(gcsUri) + .addFeatures(Feature.FACE_DETECTION) + .setVideoContext(videoContext) + .build(); + + // Detects faces in a video + OperationFuture future = + videoIntelligenceServiceClient.annotateVideoAsync(request); + + System.out.println("Waiting for operation to complete..."); + AnnotateVideoResponse response = future.get(); + + // Gets annotations for video + VideoAnnotationResults annotationResult = response.getAnnotationResultsList().get(0); + + // Annotations for list of people detected, tracked and recognized in video. + for (FaceDetectionAnnotation faceDetectionAnnotation : + annotationResult.getFaceDetectionAnnotationsList()) { + System.out.print("Face detected:\n"); + for (Track track : faceDetectionAnnotation.getTracksList()) { + VideoSegment segment = track.getSegment(); + System.out.printf( + "\tStart: %d.%.0fs\n", + segment.getStartTimeOffset().getSeconds(), + segment.getStartTimeOffset().getNanos() / 1e6); + System.out.printf( + "\tEnd: %d.%.0fs\n", + segment.getEndTimeOffset().getSeconds(), segment.getEndTimeOffset().getNanos() / 1e6); + + // Each segment includes timestamped objects that + // include characteristics of the face detected. + TimestampedObject firstTimestampedObject = track.getTimestampedObjects(0); + + for (DetectedAttribute attribute : firstTimestampedObject.getAttributesList()) { + // Attributes include unique pieces of clothing, like glasses, + // poses, or hair color. + System.out.printf("\tAttribute: %s;\n", attribute.getName()); + } + } + } + } catch (Exception exception) { + System.err.println("Failed to create the client due to: " + exception); + } + } +} +// [END video_detect_faces_gcs_beta] diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoBeta.java index cbaaccabb..40a2adeac 100644 --- a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoBeta.java +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoBeta.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoGcsBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoGcsBeta.java index 1959ea792..584f8e8fe 100644 --- a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoGcsBeta.java +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectLogoGcsBeta.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonBeta.java new file mode 100644 index 000000000..d30f8cf79 --- /dev/null +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonBeta.java @@ -0,0 +1,125 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +// [START video_detect_person_beta] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoProgress; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoRequest; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoResponse; +import com.google.cloud.videointelligence.v1p3beta1.DetectedAttribute; +import com.google.cloud.videointelligence.v1p3beta1.DetectedLandmark; +import com.google.cloud.videointelligence.v1p3beta1.Feature; +import com.google.cloud.videointelligence.v1p3beta1.PersonDetectionAnnotation; +import com.google.cloud.videointelligence.v1p3beta1.PersonDetectionConfig; +import com.google.cloud.videointelligence.v1p3beta1.TimestampedObject; +import com.google.cloud.videointelligence.v1p3beta1.Track; +import com.google.cloud.videointelligence.v1p3beta1.VideoAnnotationResults; +import com.google.cloud.videointelligence.v1p3beta1.VideoContext; +import com.google.cloud.videointelligence.v1p3beta1.VideoIntelligenceServiceClient; +import com.google.cloud.videointelligence.v1p3beta1.VideoSegment; +import com.google.protobuf.ByteString; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class VideoDetectPersonBeta { + + public static void detectPerson() { + // TODO(developer): Replace these variables before running the sample. + String localFilePath = "resources/googlework_short.mp4"; + detectPerson(localFilePath); + } + + + // Detects people in a video stored in a local file using the Cloud Video Intelligence API. + public static void detectPerson(String localFilePath) { + try (VideoIntelligenceServiceClient videoIntelligenceServiceClient = + VideoIntelligenceServiceClient.create()) { + // Reads a local video file and converts it to base64. + Path path = Paths.get(localFilePath); + byte[] data = Files.readAllBytes(path); + ByteString inputContent = ByteString.copyFrom(data); + + PersonDetectionConfig personDetectionConfig = + PersonDetectionConfig.newBuilder() + // Must set includeBoundingBoxes to true to get poses and attributes. + .setIncludeBoundingBoxes(true) + .setIncludePoseLandmarks(true) + .setIncludeAttributes(true) + .build(); + VideoContext videoContext = + VideoContext.newBuilder().setPersonDetectionConfig(personDetectionConfig).build(); + + AnnotateVideoRequest request = + AnnotateVideoRequest.newBuilder() + .setInputContent(inputContent) + .addFeatures(Feature.PERSON_DETECTION) + .setVideoContext(videoContext) + .build(); + + // Detects people in a video + // We get the first result because only one video is processed. + OperationFuture future = + videoIntelligenceServiceClient.annotateVideoAsync(request); + + System.out.println("Waiting for operation to complete..."); + AnnotateVideoResponse response = future.get(); + + // Gets annotations for video + VideoAnnotationResults annotationResult = response.getAnnotationResultsList().get(0); + + // Annotations for list of people detected, tracked and recognized in video. + for (PersonDetectionAnnotation personDetectionAnnotation : + annotationResult.getPersonDetectionAnnotationsList()) { + System.out.print("Person detected:\n"); + for (Track track : personDetectionAnnotation.getTracksList()) { + VideoSegment segment = track.getSegment(); + System.out.printf( + "\tStart: %d.%.0fs\n", + segment.getStartTimeOffset().getSeconds(), + segment.getStartTimeOffset().getNanos() / 1e6); + System.out.printf( + "\tEnd: %d.%.0fs\n", + segment.getEndTimeOffset().getSeconds(), segment.getEndTimeOffset().getNanos() / 1e6); + + // Each segment includes timestamped objects that include characteristic--e.g. clothes, + // posture of the person detected. + TimestampedObject firstTimestampedObject = track.getTimestampedObjects(0); + + // Attributes include unique pieces of clothing, poses, or hair color. + for (DetectedAttribute attribute : firstTimestampedObject.getAttributesList()) { + System.out.printf( + "\tAttribute: %s; Value: %s\n", attribute.getName(), attribute.getValue()); + } + + // Landmarks in person detection include body parts. + for (DetectedLandmark attribute : firstTimestampedObject.getLandmarksList()) { + System.out.printf( + "\tLandmark: %s; Vertex: %f, %f\n", + attribute.getName(), attribute.getPoint().getX(), attribute.getPoint().getY()); + } + } + } + } catch (Exception exception) { + System.err.println("Failed to create the client due to: " + exception); + } + } +} +// [END video_detect_person_beta] \ No newline at end of file diff --git a/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonGcsBeta.java b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonGcsBeta.java new file mode 100644 index 000000000..99f696315 --- /dev/null +++ b/samples/src/main/java/com/google/cloud/examples/videointelligence/v1p3beta1/VideoDetectPersonGcsBeta.java @@ -0,0 +1,116 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +// [START video_detect_person_gcs_beta] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoProgress; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoRequest; +import com.google.cloud.videointelligence.v1p3beta1.AnnotateVideoResponse; +import com.google.cloud.videointelligence.v1p3beta1.DetectedAttribute; +import com.google.cloud.videointelligence.v1p3beta1.DetectedLandmark; +import com.google.cloud.videointelligence.v1p3beta1.Feature; +import com.google.cloud.videointelligence.v1p3beta1.PersonDetectionAnnotation; +import com.google.cloud.videointelligence.v1p3beta1.PersonDetectionConfig; +import com.google.cloud.videointelligence.v1p3beta1.TimestampedObject; +import com.google.cloud.videointelligence.v1p3beta1.Track; +import com.google.cloud.videointelligence.v1p3beta1.VideoAnnotationResults; +import com.google.cloud.videointelligence.v1p3beta1.VideoContext; +import com.google.cloud.videointelligence.v1p3beta1.VideoIntelligenceServiceClient; +import com.google.cloud.videointelligence.v1p3beta1.VideoSegment; + +public class VideoDetectPersonGcsBeta { + + public static void detectPersonGcs() { + // TODO(developer): Replace these variables before running the sample. + String gcsUri = "gs://cloud-samples-data/video/googlework_short.mp4"; + detectPersonGcs(gcsUri); + } + + // Detects people in a video stored in Google Cloud Storage using + // the Cloud Video Intelligence API. + public static void detectPersonGcs(String gcsUri) { + try (VideoIntelligenceServiceClient videoIntelligenceServiceClient = + VideoIntelligenceServiceClient.create()) { + // Reads a local video file and converts it to base64. + + PersonDetectionConfig personDetectionConfig = + PersonDetectionConfig.newBuilder() + // Must set includeBoundingBoxes to true to get poses and attributes. + .setIncludeBoundingBoxes(true) + .setIncludePoseLandmarks(true) + .setIncludeAttributes(true) + .build(); + VideoContext videoContext = + VideoContext.newBuilder().setPersonDetectionConfig(personDetectionConfig).build(); + + AnnotateVideoRequest request = + AnnotateVideoRequest.newBuilder() + .setInputUri(gcsUri) + .addFeatures(Feature.PERSON_DETECTION) + .setVideoContext(videoContext) + .build(); + + // Detects people in a video + OperationFuture future = + videoIntelligenceServiceClient.annotateVideoAsync(request); + + System.out.println("Waiting for operation to complete..."); + AnnotateVideoResponse response = future.get(); + // Get the first response, since we sent only one video. + VideoAnnotationResults annotationResult = response.getAnnotationResultsList().get(0); + + // Annotations for list of people detected, tracked and recognized in video. + for (PersonDetectionAnnotation personDetectionAnnotation : + annotationResult.getPersonDetectionAnnotationsList()) { + System.out.print("Person detected:\n"); + for (Track track : personDetectionAnnotation.getTracksList()) { + VideoSegment segment = track.getSegment(); + System.out.printf( + "\tStart: %d.%.0fs\n", + segment.getStartTimeOffset().getSeconds(), + segment.getStartTimeOffset().getNanos() / 1e6); + System.out.printf( + "\tEnd: %d.%.0fs\n", + segment.getEndTimeOffset().getSeconds(), + segment.getEndTimeOffset().getNanos() / 1e6); + + // Each segment includes timestamped objects that include characteristic--e.g. clothes, + // posture of the person detected. + TimestampedObject firstTimestampedObject = track.getTimestampedObjects(0); + + // Attributes include unique pieces of clothing, poses, or hair color. + for (DetectedAttribute attribute : firstTimestampedObject.getAttributesList()) { + System.out.printf( + "\tAttribute: %s; Value: %s\n", attribute.getName(), attribute.getValue()); + } + + // Landmarks in person detection include body parts. + for (DetectedLandmark attribute : firstTimestampedObject.getLandmarksList()) { + System.out.printf( + "\tLandmark: %s; Vertex: %f, %f\n", + attribute.getName(), attribute.getPoint().getX(), attribute.getPoint().getY()); + } + } + } + } catch (Exception exception) { + System.err.println("Failed to create the client due to: " + exception); + } + } +} +// [END video_detect_person_gcs_beta] diff --git a/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesBetaTest.java b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesBetaTest.java new file mode 100644 index 000000000..dfe5dead8 --- /dev/null +++ b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesBetaTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 2020 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class VideoDetectFacesBetaTest { + + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testDetectFaces() { + VideoDetectFacesBeta.detectFaces("resources/googlework_short.mp4"); + String got = bout.toString(); + assertThat(got).contains("glasses"); + } +} diff --git a/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesGcsBetaTest.java b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesGcsBetaTest.java new file mode 100644 index 000000000..e365b45cf --- /dev/null +++ b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectFacesGcsBetaTest.java @@ -0,0 +1,50 @@ +/* + * Copyright 2020 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class VideoDetectFacesGcsBetaTest { + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testDetectFacesGcs() { + VideoDetectFacesGcsBeta.detectFacesGcs("gs://cloud-samples-data/video/googlework_short.mp4"); + String got = bout.toString(); + assertThat(got).contains("glasses"); + } +} diff --git a/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonBetaTest.java b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonBetaTest.java new file mode 100644 index 000000000..6e854d3ac --- /dev/null +++ b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonBetaTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 2020 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class VideoDetectPersonBetaTest { + + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testDetectPerson() { + VideoDetectPersonBeta.detectPerson("resources/googlework_short.mp4"); + String got = bout.toString(); + assertThat(got).contains("Hair"); + } +} diff --git a/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonGcsBetaTest.java b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonGcsBetaTest.java new file mode 100644 index 000000000..9efedb53e --- /dev/null +++ b/samples/src/test/java/com.google.cloud.examples.videointelligence.v1p3beta1/VideoDetectPersonGcsBetaTest.java @@ -0,0 +1,51 @@ +/* + * Copyright 2020 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.examples.videointelligence.v1p3beta1; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class VideoDetectPersonGcsBetaTest { + + private ByteArrayOutputStream bout; + private PrintStream out; + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testDetectPersonGcs() { + VideoDetectFacesGcsBeta.detectFacesGcs("gs://cloud-samples-data/video/googlework_short.mp4"); + String got = bout.toString(); + assertThat(got).contains("Hair"); + } +}