Flutter video_player (только IOS / AVPlayer) не воспроизводит файлы mp4 без расширения с помощью fastapi

Я использую код под файлом 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',);

Заранее спасибо, Кристиан


person Christian    schedule 12.02.2020    source источник
comment
пробовали ли вы передать заголовок типа содержимого и добавить расширение к переменной filename_out   -  person Hedde van der Heide    schedule 12.02.2020
comment
Спасибо, но не повезло, см. Выше.   -  person Christian    schedule 13.02.2020
comment
Воспроизводится ли видео в браузере Safari на Mac? Если он не воспроизводится, попробуйте использовать элемент проверки, и он покажет вам точную ошибку. Если он играет в Mac Safari, перейдите на iPhone Safari и проверьте то же самое. Это может дать вам ключ к разгадке.   -  person Kautham Krishna    schedule 13.02.2020
comment
imgur.com/eyMAeZE похоже на проблему с этим диапазоном. Заголовок поменяли, но успеха все равно нет. {'content-type': 'video / mp4', 'content-range': 'bytes 0-1', 'accept-range': 'bytes', 'content-length': '5909110', 'last-modified ':' Пн, 10 фев 2020 21:23:10 GMT ',' etag ':' d4be0ee89866a2fdc6e2c2dc94c4bc21 '}   -  person Christian    schedule 13.02.2020
comment
Похоже, у нас есть эта проблема с uvicorn developer.apple.com/library/archive/documentation/   -  person Christian    schedule 13.02.2020
comment
Вы всегда можете прибегнуть к обслуживанию этих файлов через прокси, например nginx (который оптимизирован для обслуживания файлов).   -  person Hedde van der Heide    schedule 13.02.2020
comment
Да, просто реализуйте это с помощью этого: github.com/tiangolo/uwsgi-nginx-docker . Я дам отзыв, если это сработает.   -  person Christian    schedule 13.02.2020


Ответы (1)


Он работает с nginx, см. Здесь некоторые детали конфигурации:

https://gist.github.com/nnfuzzy/50151e817d752c9941f83c1770f74626

person Christian    schedule 23.02.2020