簡體   English   中英

如何從 Spring controller 返回視頻?

[英]How to return video from Spring controller?

我有一個簡單的 Spring Boot controller ,它返回一個視頻字節作為資源

    @Override
    public ResponseEntity<Resource> getVideoFileAsVideo(final Long videoId) {
        final Resource videoResource = videoService.getVideoFile(videoId);
        final VideoDto video = videoService.getVideoById(videoId);

        return ResponseEntity.ok()
            .contentType(MediaType.parseMediaType("video/" + video.getFileExtension()))
            .header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=video_%s.%s", videoId, video.getFileExtension()))
            .body(videoResource);
    }

我得到了這個錯誤。 如何解決這個問題?

org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class java.util.ImmutableCollections$List12] with preset Content-Type 'video/mp4'
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:313) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:226) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82) ~[spring-web-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:403) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:61) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80) ~[spring-webmvc-5.2.2.RELEASE.jar!/:5.2.2.RELEASE]
    ```

檢查您的資源對象導入 package。 當我使用此代碼時,視頻字節數組返回。 您是否嘗試返回字節數組而不是資源?

  InputStream is = getClass().getClassLoader().getResourceAsStream("sample.mp4");
        byte[] videoResource = IOUtils.toByteArray(is);

        return ResponseEntity.ok()
                .contentType(MediaType.parseMediaType("video/mp4"))
                .header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=video_%s.%s", 1, "mp4"))
                .body(videoResource);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM