Python - Django: transmisión de archivos de video / mp4 usando HttpResponse
Estoy usando Python2.7,django==1.7
yuwsgi
para transmitir archivos de video / mp4 aiPhone
jugador.
Mi código es el siguiente:
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
Cuando uso un pequeño video (menos de 1 MB), se transmite en el navegador, pero en el iPhone Palyer tengo este error:
[uwsgi-http key: 127.0.0.1:8008 client_addr: 192.168.0.172 client_port: 14563] hr_write (): Tubería rota [plugins / http / http.c línea 564]
Y cuando el tamaño del video es más de 5 MB, no se transmite en ambos (significa navegador y reproductor de iPhone) con el mismo error.
Intenté hacerlo volviendo un trozo de trozo usando StreamHttpRespose como se muestra a continuación:
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')
Pero hay el mismo error:Broken pipe
.
Para tu información, puedo transmitir archivos PDF e imágenes. Este problema es solo con archivos mp4. Y también cambié content_type a 'video-mpeg', el navegador lo descargó, mientras quiero evitar la descarga de archivos.
¿Cuál es tu idea? ¿¡¡Alguna solución!!?