Python - Django: потоковое видео / mp4 файл с использованием HttpResponse
Я использую Python2.7,django==1.7
а такжеuwsgi
для потокового видео / mp4 файла вiPhone
игрок.
Мой код, как показано ниже:
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
Когда я использую небольшое видео (менее 1 МБ), оно транслируется в браузере, но в iPhone palyer у меня появляется эта ошибка:
[uwsgi-http ключ: 127.0.0.1:8008 client_addr: 192.168.0.172 client_port: 14563] hr_write (): сломанный канал [plugins / http / http.c line 564]
А когда размер видео превышает 5 МБ, он не транслируется в обоих направлениях (имеется в виду браузер и проигрыватель iPhone) с одинаковой ошибкой.
Я попытался сделать это путем возврата чанка, используя StreamHttpRespose, как показано ниже:
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')
Но есть та же ошибка:Broken pipe
.
К вашему сведению, я могу передавать файлы в формате PDF и изображения. Эта проблема только с файлами mp4. А также я изменил content_type на 'video-mpeg', загруженный браузером, в то время как я хочу предотвратить загрузку файлов.
какая у тебя идея? Любое решение !!?