如何使用jetty / ring将视频文件提供给ipad

时间:2012-09-09 05:03:52

标签: clojure jetty ring

我已经设置了一个带文件服务器的简单响铃服务器

(ns scratch.basic-test
  (:use [ring.middleware.file :only [wrap-file]]
        [ring.middleware.file-info :only [wrap-file-info]])
  (:require [ring.adapter.jetty :as jetty]))

(defn naked-handler [request]
  {:status 200
   :headers {"Content-Type" "text/html"}
   :body (str request})

(defonce server 
  (run-jetty (-> #'naked-handler
                 (wrap-file "resources/public")
                 wrap-file-info)               
             {:port 8890 :join? false}))

我在test.mp4目录中有video.htmlresources/public


video.html引用mp4文件:

  ...blah...
  <video id="my_video_1" controls>
     <source src="test.mp4" type='video/mp4'>
   </video>
  ...blah...

当我在safari中打开http://server-ip-address:8890/video.html时,firefox即可正常运行

然而,当我在ipad上打开它时,却没有...而是显示黑色无法播放的矩形。


当我将相同的文件放在apache服务器中并在ipad上打开video.html时,视频播放完美....

发生了什么事?

1 个答案:

答案 0 :(得分:1)

我会在这里回复,因为评论部分太紧,不符合我的口味:)。

我认为在更改任何内容之前,有必要查看HTML标头。比较Apache给你的戒指。问题可能与描述here的问题有关,也可能与其他问题有关。如果您不知道如何查看标题this可能会有所帮助。

至于修改标题我认为如果有任何必须修改它将在环级别而不是Jetty。

我在这里运行你的应用程序是标题:

Name    Value
Date    Wed, 12 Sep 2012 05:26:20 GMT
Content-Length  36320472
Last-Modified   Sat, 12 May 2012 21:04:47 +0000
Server  Jetty(7.6.1.v20120215)
Content-Type    video/mp4;charset=UTF-8

它在Chrome中播放,抱歉我没有iPad来检查它。内容长度是正确的,它等于原始的mp4文件大小。

我猜,除非你从两台服务器发布标题,否则我无能为力。