美文网首页
Ktor 支持视频流传输

Ktor 支持视频流传输

作者: 何晓杰Dev | 来源:发表于2019-04-11 16:00 被阅读0次

我们经常需要在网站上嵌入视频,在 Ktor 的框架内,要支持视频也是非常容易的事情了,主要的麻烦在于浏览器的兼容。我们从最简单的代码开始:

<!DOCTYPE HTML>
<html><body>
    <video src="upload/sample.mp4" width="80%" controls="controls"></video>
</body></html>

初看这代码没有任何问题,但是放到 Safari 下是不工作的,会出现以下的画面:

播放异常

但是用 Chrome 播放却是好的,那问题出在哪里呢?这一篇很好的解答了(点击查看)。

所以,说到底就是一个服务端支持断点续传的问题,你或许可以找到其他的解决方案,比如说这种:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.mp4</url-pattern>
</servlet-mapping>

这个方法在 Servlet 上的确是简单粗暴且有效的,但是在 Ktor 上,改了 web.xml 框架会直教你做人,所以不能这么改(感兴趣的可以自己改改体会一下效果)。

那么 Ktor 下要如何实现呢?这会归功于它非常强大的插件系统,总之记得一句话,你需要的功能 99% 在插件里,插上就完事。于是代码就来了:

fun Application.installVideo() {
    install(PartialContent) { }
    install(Compression) {
        default()
        excludeContentType(ContentType.Video.Any)
    }
}

同时支持分段传输以及压缩传输,此时再运行服务器并请求视频,就可以正常播放了,无论是 Safari 还是其他浏览器,都行。

相关文章

网友评论

      本文标题:Ktor 支持视频流传输

      本文链接:https://www.haomeiwen.com/subject/lrgtwqtx.html