1

I was wondering how we can implement a video feature in a Spring MVC application. Would I have to use another technology, such as jQuery, or does Spring support a Video feature?

4

1 回答 1

0

Spring Content支持开箱即用的视频流(字节范围)。它支持各种后备存储。使用 Spring Content FS(即文件系统的 Spring Content),您可以自己创建一个由文件系统支持的“视频存储”,并通过 HTTP 将视频存储到客户端。

通过 start.spring.io 或您的 IDE spring 项目向导(在撰写本文时为 Spring Boot 1.5.10)创建一个新的 Spring Boot 项目。添加以下 Spring Boot/Content 依赖项,以便最终获得这些:-

<dependencies>
    <!-- Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.3</version>
    </dependency>

    <!-- Spring Content -->
    <dependency>
        <groupId>com.github.paulcwarren</groupId>
        <artifactId>spring-content-fs-boot-starter</artifactId>
        <version>0.0.9</version>
    </dependency>
    <dependency>
        <groupId>com.github.paulcwarren</groupId>
        <artifactId>spring-content-rest-boot-starter</artifactId>
        <version>0.0.9</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

然后在您的 Spring Boot Application 类中,创建一个 VideoStore。将其注释为`StoreRestResource。这有两件事;它会导致 Spring Content 注入此接口的实现(用于文件系统),以及在此接口之上注入 REST 端点 - 使您不必自己编写任何这些:-

    @SpringBootApplication 
    public class DemoApplication {

        public static void main(String[] args) {        
           SpringApplication.run(DemoApplication.class, args);  
        }

        @StoreRestResource(path="videos")   
        public interface VideoStore extends Store<String> {} 
    }

默认情况下,Spring Content(用于文件系统)将在 java.io.tmpdir 下创建一个存储。因此,您还需要设置 SPRING_CONTENT_FS_FILESYSTEM_ROOT 环境变量或系统属性来为您的“存储”设置一个稳定的根位置,这样当您的应用程序/服务重新启动时,它可以再次找到视频。

将您的视频复制到此“根”位置。启动应用程序,您的视频将从以下位置流式传输:-

/videos/some-video.mp4

Spring Content 也支持其他存储;目前是 S3、Mongo 的 GridFS 和 JPA(即 BLOB)。

它也可以在没有 Spring Boot 的情况下使用。如果对这种替代方案感兴趣,请告诉我,我可以为您更新答案。

于 2018-02-13T16:36:25.023 回答