clojure - 如何使用jetty/ring向ipad提供视频文件

标签 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}))

I have test.mp4 and video.html in the resources/public directory.


video.html references the mp4 file:

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

当我在 safari、firefox 和 ie 中打开 http://server-ip-address:8890/video.html 时,它工作正常

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

<小时/>

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

这是怎么回事?

最佳答案

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

我认为在更改任何内容之前,先查看一下 HTML header 是有意义的。将 Apache 为您提供的功能与 Ring 进行比较。该问题可能与描述的问题相关 here或者也许是别的东西。如果您不知道如何查看标题this可能有帮助。

至于修改 header ,我认为如果需要修改任何内容,它将在环级别而不是 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 文件大小。

我想除非您从两个服务器发布 header ,否则我无能为力。

关于clojure - 如何使用jetty/ring向ipad提供视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12336643/

相关文章:

vector - Clojure 中的日期周期

android - 如何动态分配戒指颜色

clojure - Clojure Ring 是否为每个请求创建一个线程?

function - 如何在 Clojure 中运行时序列化函数?

clojure - 从字符串表示中恢复映射

java - Clojure,反射 : Find classes that implement an interface

ssl - 在 Jetty 中,如何仅在 API 的子集上支持证书身份验证

java - 我可以强制 jetty *不*包含用于单元测试的 Content-Length header 吗?

jetty - 如何部署到jetty的容器?

unit-testing - 如何使用环模拟请求以 JSON 形式模拟测试 POST 请求?