我在 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(由颤振 video_player 包使用)。
我发现这个线程iOS 10 AVPlayer will not stream video from URL without 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。我们使用颤振包 video_player 和 _controller.value.initialized 在 IOS 中始终为 false,但使用来自 AWS 的直接文件而不由 starlette 提供为 true:
_controller = VideoPlayerController.network('urlWithMp4StreamOrAttachment',);
在此先感谢,克里斯蒂安