Как транслировать mp4 из частного ведра, используя django в качестве прокси? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь вернуть ответ на потоковое видео из приватного ведра. Для этого мой django сервер получит видео от S3 и вернет ответ.

def get_video_from_fragment(self, request, custom_id=None):
        s3 = AmazonApi()
        streaming_body = s3.get_file_to_stream(fragment.video.file)
        if streaming_body is None:
            return Response({'details': "error retreiving the video"}, status=500)
        response = StreamingHttpResponse(streaming_content=streaming_body)
        response['Content-Disposition'] = f'attachment; filename="{fragment.video.filename}"'

        return response

Он хорошо работает для Chrome и Firefox, но не для Safari.

Я читал для Safari, что контент должен доставляться с кодом состояния 206. Дело в том, что мой Nginx уже хорошо передает файлы статики (в данном случае mp4), но не такой ответ.

Я пытался добавить

response = StreamingHttpResponse(streaming_content=streaming_body, status=206)

, но на самом деле, это ничего не меняет. Я тестирую curl, как в документации (от Apple)

Imgur

Я полагаю, что мой nginx (или django) знает как управлять моими файлами .mp4, но не знаю, как это сделать с вызовом, который возвращает StreamingHttpResponse.

Также я проверяю, как другие веб-сайты доставляют свой контент, и вижу на своей вкладке сети консоли Safari разницу в положение дел. Например, на веб-сайте Google есть код состояния в заголовках ответа Imgur

, но мой только в сводной части.

Итак, как я могу управлять доставкой контента с S3, используя django как прокси?

...