Python - Django: Streaming von Video- / MP3-Dateien mit HttpResponse
Ich benutze Python2.7,django==1.7
unduwsgi
für das Streamen von Video- / MP3-Dateien zuiPhone
Spieler
Mein Code ist wie folgt:
def stream(request):
with open('/path/video.mp4', 'r') as video_file:
response = HttpResponse(video_file.read(), content_type='video/mp4')
response['Content-Disposition'] = 'inline; filename=%s' % 'video.mp4'
return response
video_file.close
Wenn ich ein kleines Video (weniger als 1 MB) verwende, wird es im Browser gestreamt, aber im iPhone-Player habe ich diesen Fehler:
[uwsgi-http key: 127.0.0.1:8008 client_addr: 192.168.0.172 client_port: 14563] hr_write (): Pipe unterbrochen [plugins / http / http.c line 564]
Und wenn das Video größer als 5 MB ist, wird es nicht mit demselben Fehler in beide Streams (dh Browser und iPhone-Player) übertragen.
Ich habe versucht, dies zu tun, indem ich Chunk Chunk mithilfe von StreamHttpRespose wie folgt zurückgab:
def read(chunksize=8192):
with open('/path/video.mp4', 'rb') as video_file:
byte = video_file.read(chunksize)
while byte:
yield byte
return StreamingHttpResponse(read(), content_type='video/mp4')
Aber es gibt den gleichen Fehler:Broken pipe
.
fyi Ich kann PDF- und Bilddateien streamen. Dieses Problem tritt nur bei mp4-Dateien auf. Außerdem habe ich den content_type in 'video-mpeg' geändert, den der Browser heruntergeladen hat, während ich das Herunterladen von Dateien verhindern möchte.
Was ist deine Idee? Irgendeine Lösung!!