【问题标题】:Vimeo offline video playback issueVimeo 离线视频播放问题
【发布时间】:2020-08-17 08:04:26
【问题描述】:

我使用了 fijkplayer 库,它可以在 Flutter 上播放 m3u8 视频。 无需下载即可正常播放,并且仅在我尝试播放下载的视频时才会出现此问题。另外,我尝试了其他库,例如 chewie、flutter_jikplayer、flutter_tencentplayer,但它们都不起作用。

此问题仅发生在 Vimeo 的 hls 链接上。我已经使用 Internet 上提供的公共 hls 链接实现了所有功能。之后,我发现了这个bug。

此输出似乎是协议相关问题。

xcode 输出是,

===== versions =====
ijkplayer    : f0.7.8
FFmpeg       : ff4.0--ijk0.8.25--20191031--001
libavutil    : 56.14.100
libavcodec   : 58.18.100
libavformat  : 58.12.100
libswscale   : 5.1.100
libswresample: 3.1.100
===== options =====
player-opts : overlay-format               = fcc-bgra
player-opts : videotoolbox                 = 1
player-opts : enable-position-notify       = 1
player-opts : start-on-prepared            = 1
format-opts : ijkapplication               = 4850081840
format-opts : ijkiomanager                 = 4849971424
===================
Opening 'https://46vod-adaptive.akamaized.net/exp=1597409385~acl=%2F04cf7e17-5507-416e-97c2-a26f6a27d395%2F%2A~hmac=2d7bd4c50e30032541752817b808bd618f7b0fff4a472e3d0b481f0aa2bd11f5/04cf7e17-5507-416e-97c2-a26f6a27d395/sep/audio/7724a1ec/playlist.m3u8' for reading
Protocol 'https' not on whitelist 'file,crypto'!

/var/mobile/Containers/Data/Application/0851E4DB-AA4C-4346-A6F2-5F2D00478D61/Documents/offline/+919744480203133/playlist.m3u8: Invalid argument

如果有什么需要请告诉我,会在这里更新。

【问题讨论】:

  • 不知道你有没有遇到过,请查看stackoverflow.com/questions/50455695/…
  • 我之前在flutter_jikplayer中做过这个,如下所示 var option1 = IjkOption(IjkOptionCategory.format, "protocol_whitelist", "concat,http,tcp,https,tls,file"); controller.setIjkPlayerOptions( [TargetPlatform.iOS, TargetPlatform.android], [option1].toSet(), );但不适合我
  • 我尝试访问该链接,它说权限被拒绝。您的错误消息还显示crypto,您可以使用其他客户端访问此 HLS 链接吗?
  • @BenButterworth 是的。它在 HTML5 播放器上运行良好,在 exoplayer 上也运行良好。
  • 在 dispose 或 state management 中使用chewie。

标签: android ios flutter dart vimeo


【解决方案1】:

HLS 文件在一定时间后过期。因此,如果您正在下载m3u8,您实际上并没有下载视频,只是一个指向播放列表/清单文件的链接,它告诉播放器从哪里拉出真实的(通常是mp4)视频文件。您可以使用 M3U 看到 similar examples(此示例链接到 mp3 文件,但 m3u8 通常链接到 mp4 文件)。

因此,您需要从 Vimeo 下载 实际 mp4 文件,然后将这些文件传递给您的播放器。我给出了一个答案here,它通过一种方法来做到这一点。 (Here's如何用 Flutter 下载)。

mp4 文件的链接也会过期。但如果您在它们过期之前下载它们,您可以随时从磁盘访问它们(使用本地文件 URL)。

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2018-09-13
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多