Solve media file streaming issue with Python Flask

This is how to solve mobile file streaming issue with Python Flask.

If you serve video file with Python Flask, Flask serve the media file with 206 Partial Content, but Connection is set to Close. If you want to serve media file like streaming service, Python Flask cannot serve to iOS or Android media file like streaming.

On iOS or Android phone, browser said can not play this media file like this image.

To solve this problem, you should serve media file with Connection: Keep-Alive.

But Python Flask does not support this feature.

So Here is a solution.
It needs Nginx and Gunicorn.
Nginx will serve the media file, but it will prevent to access from not authorized access using “internal” function in Nginx.
“internal” function allows you to accept traffic only from the Python Flask code(not direct access).

The media file serving flow
User -> Nginx -> Gunicorn -> Authentication check and redirect to serve media file -> Response Media Data from Nginx

Nginx Config

server {
listen 80;
server_name yourserver.com;

location /download_file/ {
internal; # Receive only internal redirect
alias /file/path/in/your/server/;
}

# For Gunicorn Serving Gateway
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;

if (!-f $request_filename) {
proxy_pass http://localhost:12345;
break;
}
}
}

Python Code

@app.route('/download/')
def download(filename):
if not authentication():
abort(404)

redirect_path = '/download_file/' + filename

response = make_response("")
response.headers["X-Accel-Redirect"] = redirect_path
response.headers["Content-Type"] = mimetypes.guess_type(filename)
return response

Then iOS and Android browser can play the media file served from your server.

Reference :
1. http://stackoverflow.com/questions/19421014/error-occurred-in-mobile-when-send-video-using-send-file-in-python-flask
2. http://mattspitz.me/2013/11/20/serving-authenticated-media-with-nginx.html

XBOX 나이인증 아이핀 오류 해결방법

거지같은 XBOX 나이인증의 아이핀 오류 해결방법입니다.

XBOX Live 에 로그인 시 0x8015DC0C 에러가 발생한다면 아이핀을 통해 나이인증을 받아야 합니다.

혹은 XBOX 게임패스 1개월/3개월 구매시 자꾸 결제 취소가 되는 경우도 아래의 방법을 사용해서 나이인증을 받아야 합니다.

하지만 기본적으로 찾을수 있는 XBOX 나이인증 URL 에서는 아래와 같이 거지같은 아이핀 인증이 계속 에러가 나는걸 볼 수 있는데요.

[에러번호] J100511

와 같은 에러가 발생합니다.

하지만 이 거지같은 아이핀 인증을 해결할수 있는 특별 URL 이 있습니다.

내가 이렇게까지 해서 XBOX Live 를 써야하나 하고 생각하시겠지만 거지같지만 어쩔수가 없는 부분입니다.

아래 URL 을 통해서 접속하시면 오류 없이 바로 인증이 가능합니다.

https://account.xbox.com/ko-kr/xbox/account/api/v1/settings/KoreanAgeVerification