Я пытаюсь передать видео файл с помощью cherrypy. Когда я перехожу на localhost: 8080/stream? Video = video.avi, он начинает загрузку, но через несколько секунд он просто «завершает» загрузку независимо от того, насколько большой файл. Я довольно новичок в этом и не могу понять, почему это делается. Кроме того, почему он даже не распознает файл, если это Matroska (.mkv)?Потоковые файлы с cherrypy
Вот мой класс потока:
class Stream(object):
@cherrypy.expose
def default(self, video=None):
BASE_PATH = ".."
video = os.path.join(BASE_PATH, video)
if video == None:
return "no file specified!"
if not os.path.exists(video):
return "file not found!"
f = open(video)
size = os.path.getsize(video)
mime = mimetypes.guess_type(video)[0]
print(mime)
cherrypy.response.headers["Content-Type"] = mime
cherrypy.response.headers["Content-Disposition"] = 'attachment; filename="%s"' % os.path.basename(video)
cherrypy.response.headers["Content-Length"] = size
BUF_SIZE = 1024 * 5
def stream():
data = f.read(BUF_SIZE)
while len(data) > 0:
yield data
data = f.read(BUF_SIZE)
return stream()
default._cp_config = {'response.stream': True}
Выполнение чего-то подобного. Кроме того, получение некоторой остановки при буферизации, а также не уверен, как продолжить загрузку источника после того, как размер буфера будет удовлетворен. – Twisty