Java 返回视频信息视频智能API

Java 返回视频信息视频智能API,java,google-api,google-cloud-platform,video-intelligence-api,Java,Google Api,Google Cloud Platform,Video Intelligence Api,我无法显示本地视频的信息,当我使用示例返回的视频进行测试时,但当我尝试使用机器的文件时,不会返回任何内容 public String consultar() throws Throwable { requisicaoVideo("C:\\Users\\Web Designer\\Desktop\\Placas de Carros\\cat.mp4"); return "analiseForenseVideos.xhtml"; } public vo

我无法显示本地视频的信息,当我使用示例返回的视频进行测试时,但当我尝试使用机器的文件时,不会返回任何内容

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());
                    }
                }
public String consultar()抛出Throwable{
requisicaoVideo(“C:\\Users\\Web Designer\\Desktop\\Placas de Carros\\cat.mp4”);
返回“analiseForenseVideos.xhtml”;
}
public void requiresCaoVideo(字符串文件路径)引发异常{
try(VideoIntelligenceServiceClient=VideoIntelligenceServiceClient.create()){
//读取文件并编码为Base64
Path Path=Path.get(filePath);
字节[]数据=文件。readAllBytes(路径);
字节[]encodedBytes=Base64.encodeBase64(数据);
System.out.println(encodedBytes+“linha74”);
AnnotateVideoRequest=AnnotateVideoRequest.newBuilder()
.setInputContent(ByteString.copyFrom(encodedBytes)).addFeatures(Feature.LABEL_DETECTION).build();
//创建一个操作,该操作将在执行该操作时包含响应
//完成。
OperationFuture response=client.annotateVideoAsync(请求);
System.out.println(“等待操作完成…”);
System.out.println(response.get().getAnnotationResultsList()+“Linha 83”);
for(VideoAnnotationResults:response.get().getAnnotationResultsList()){
//处理视频/片段级标签注释
System.out.println(“位置:”);
for(LabelAnotation LabelAnotation:results.getSegmentLabelAnotationsList()){
System.out.println(“视频标签:+labelanotation.getEntity().getDescription());
//类别
for(实体categoryEntity:LabelAnotation.getCategoryEntitiesList()){
System.out.println(“视频标签类别:+categoryEntity.getDescription());
}
//分段
for(LabelSegment段:LabelAnotation.getSegmentsList()){
双起始时间=段。getSegment().getStartTimeOffset().getSeconds()
+segment.getSegment().getStartTimeOffset().getNano()/1e9;
double-endTime=segment.getSegment().getEndTimeOffset().getSeconds()
+segment.getSegment().getEndTimeOffset().getNano()/1e9;
System.out.printf(“段位置:%.3f:%.2f\n”,开始时间,结束时间);
System.out.println(“Confidence:+segment.getConfidence());
}
}

我支持谷歌云。感谢您报告此问题。我一直在做一些测试,并在
Detect.java
文件的
analyzeLabelsFile
函数中发现了某种缺陷

如果让作业运行很长时间,它可能会完成(对我来说,从谷歌云存储导入文件需要30秒,使用本地文件需要16分钟),但无论如何,它不提供信息,只提供最后的“位置:”消息

我已经将所有与此相关的信息(如何重现问题、可能的原因等)发送给谷歌视频智能API团队,以便他们可以查看


我还没有找到本地文件的解决方法,但您可以通过其URL和
分析标签
功能在GCS中处理该文件。

我建议您也阅读一下不赞成对代码进行屏幕截图的内容,请将代码插入您的问题中您如何进行测试?您是否正在执行'mvn exec:java-DDet'ect-Dexec.args=“标签gs://[YOUR_BUCKET]/filename.mp4”在Cloud Shell中?当我提交一个错误编码的文件时,我在Cloud Shell中得到了一个有用的错误描述。我正在使用一个本地文件进行测试,我正在使用他们提供的示例,以使该文件转换为base64并仅发送,当testo在云存储中使用文件时,该文件不会返回任何内容。