私はmp4ファイルの下にコードを提供します:
import os
from starlette.responses import FileResponse
return FileResponse(
filename_out,
media_type="video/mp4",
filename=os.path.basename(filename_out)
)
Firefox、Chrome、およびAndroidでは正常に動作します。残念ながら、IOS の AVPlayer (flutter video_player パッケージで使用) には対応していません。
このスレッドを見つけましたiOS 10 AVPlayer will not stream video from URL with no extension and with video/mp4 as content type
ただし、ファイル拡張子は明示的なファイル名で提供されており、ヘッダーについて混乱しています。誰か似たような経験と解決策はありますか?
編集:ファイル名は例えばvideo.mp4で、その後test.clientを使用すると次のようになります。
{'content-type': 'video/mp4', 'content-disposition': 'attachment; filename="video.mp4"',
'content-length': '5909110', 'last-modified': 'Mon, 10 Feb 2020 21:23:10 GMT', 'etag': 'd4be0ee89866a2fdc6e2c2dc94c4bc21'}
アタッチメントは、ストリームの有無にかかわらず正しくないと感じ、一般的なブラウザ プレーヤーと Android では動作しますが、IOS では動作しません。flutter パッケージ video_player を使用し、_controller.value.initialized は IOS では常に false ですが、starlette によって提供されない AWS からの直接ファイルを使用すると true になります。
_controller = VideoPlayerController.network('urlWithMp4StreamOrAttachment',);
前もって感謝します、クリスチャン