【问题标题】:Flutter video_player (only IOS/AVPlayer) does not play mp4 files without extension using fastapiFlutter video_player(仅限IOS/AVPlayer)使用fastapi不播放无扩展名的mp4文件
【发布时间】:2020-05-28 08:03:22
【问题描述】:

我在 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 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。我们使用颤振包 video_player 和 _controller.value.initialized 在 IOS 中始终为 false,但使用来自 AWS 的直接文件而不由 starlette 提供为 true:

 _controller = VideoPlayerController.network('urlWithMp4StreamOrAttachment',);

提前致谢,克里斯蒂安

【问题讨论】:

  • 您是否尝试过传递内容类型标头并向 filename_out 变量添加扩展名
  • 谢谢,但没有运气见上文。
  • 视频是否在 mac 的 safari 浏览器中播放?如果它没有播放,请尝试使用检查元素,它会向您显示确切的错误。如果它在 mac safari 中播放,则转到 iPhone Safari 并检查相同的内容。它可以给你一些线索。
  • imgur.com/eyMAeZE 看起来这个范围的东西有问题。更改了标题,但仍然没有成功。 {'content-type': 'video/mp4', 'content-range': 'bytes 0-1', 'accept-ranges': 'bytes', 'content-length': '5909110', 'last-modified ':'格林威治标准时间 2020 年 2 月 10 日星期一 21:23:10','etag':'d4be0ee89866a2fdc6e2c2dc94c4bc21'}
  • 您可以随时通过代理来提供这些文件,例如 nginx(针对文件服务进行了优化)

标签: python ios flutter video fastapi


【解决方案1】:

它适用于 nginx,请参阅此处的一些配置详细信息:

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

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 2011-07-26
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多