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!!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage