Я никогда не видел 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
Вы видите, что? Это Python 2.7.3 для Linux; похоже, что вы на Mac OS X, так что это может выглядеть немного иначе.
Во всяком случае, у меня есть тот же сломанный значок воспроизведения на iPad, который вы видели. Я предполагаю, что простой HTTP-сервер Python просто не знает, как обслуживать столько данных одновременно.
Альтернативное решение: Если все, что вам нужно прямо сейчас, это простой, статический, баребонский HTTP-сервер, я рекомендую webfs. Скомпилируйте его в командной строке и выполните его из любого места, чтобы установить непривилегированный статический HTTP-сервер на порту 8000 (по умолчанию). Я только что протестировал его и смог передать основной файл .MP4 на iPad через тег видео в Safari.