我以前从未见过这个python -m SimpleHTTPServer
把戏。但我试了一下,能够让它为一些静态文件提供服务。但是,当我尝试提供一个支持视频标签的大型 .MP4 文件时,我看到了这个输出(并且服务器继续运行):
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
你看见了吗?这是 Linux 上的 Python 2.7.3;看起来您使用的是 Mac OS X,所以看起来可能会有些不同。
无论如何,我在 iPad 上看到的播放图标与您看到的相同。我猜测简单的 Python HTTP 服务器只是不知道如何一次提供这么多的数据。
替代解决方案:如果您现在只需要一个简单的、静态的、准系统 HTTP 服务器,我推荐webfs。将其编译成命令行并在任何地方执行它以在端口 8000(默认情况下)上建立一个非特权静态 HTTP 服务器。我刚刚对其进行了测试,并且能够通过 Safari 中的视频标签将基本的 .MP4 文件流式传输到 iPad。