Django: Streaming de arquivo de vídeo / mp4 usando HttpResponse
Estou usando Python2.7,django==1.7
euwsgi
para streaming de arquivo de vídeo / mp4 paraiPhone
jogador.
Meu código é como abaixo:
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
Quando uso um vídeo pequeno (menos de 1 MB), ele é transmitido no navegador, mas no iPhone palyer eu tenho este erro:
[chave uwsgi-http: 127.0.0.1:8008 client_addr: 192.168.0.172 client_port: 14563] hr_write (): tubo quebrado [plugins / http / http.c linha 564]
E quando o tamanho do vídeo é superior a 5 MB, ele não é transmitido em ambos (significa navegador e player do iPhone) com o mesmo erro.
Tentei fazer isso retornando usando o StreamHttpRespose como abaixo:
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')
Mas há o mesmo erro:Broken pipe
.
Eu posso transmitir arquivos PDF e de imagem. Esse problema é apenas com arquivos mp4. E também mudei o content_type para 'video-mpeg', o navegador baixou isso, enquanto eu quero impedir o download de arquivos.
Qual é a sua ideia? Qualquer solução!!?