Я использую код под файлом 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 работает нормально. К сожалению, это не для AVPlayer (используемого пакетом flutter video_player) в IOS.
Я нашел эту ветку iOS 10 AVPlayer не будет транслировать видео с URL без расширения и с видео / mp4 в качестве типа контента
Однако расширение файла предоставляется с явным именем файла, и я не понимаю, что такое заголовок. Есть ли у кого-нибудь подобный опыт и решение?
Изменить: в имени файла, например, 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, но истинно при использовании прямого файла из AWS, не обслуживаемого starlette:
_controller = VideoPlayerController.network('urlWithMp4StreamOrAttachment',);
Заранее спасибо, Кристиан