Cherrypy kullanarak bir video dosyası yayınlamaya çalışıyorum. localhost: 8080/stream? Video = video.avi'a gittiğimde indirmeye başlar, ancak birkaç saniye sonra dosya ne kadar büyük olursa olsun indirme işlemini "tamamlar". Bunun için oldukça yeniyim ve bunu neden yaptığını bulamıyorum. Ayrıca, neden Matroska (.mkv) ise dosyayı tanımıyor?Cherrypy ile akış dosyaları
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}
Benzer bir şey yapmak. Ayrıca, arabelleğe alma sırasında bir tür duraklama elde etmek ve aynı zamanda, arabellek boyutu karşılandıktan sonra kaynağın indirilmeye devam etmeyeceğinden emin olmak. – Twisty