2

我想在我的移动应用程序中提供视频文件(使用 react-native-video 播放器的 React Native)。我关心的两件事是:

  1. 自适应比特率,因此带宽较慢(例如 LTE)的人仍然可以以最少的缓冲观看视频
  2. 快速寻道时间
  3. 低带宽消耗

似乎 HLS 流式传输(特别是 .m3u8 播放列表 + TS 文件)符合上述所有标准。

我使用ffmpeg-hls_time 6(Apple 推荐的 6 秒段长度)来生成文件。以下是主播放列表的示例:

# sample-30s.m3u8
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=1205600,RESOLUTION=1920x1080,CODECS="avc1.640032,mp4a.40.2"
sample-30s_0.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=105600,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
sample-30s_1.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=52800,RESOLUTION=854x480,CODECS="avc1.64001f,mp4a.40.2"
sample-30s_2.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=52800,RESOLUTION=640x360,CODECS="avc1.64001e,mp4a.40.2"
sample-30s_3.m3u8

然后我将它们存储在 DigitalOcean Spaces 上,并react-native-video通过主播放列表的 CDN 端点获取它们,例如:

https://onecoach-public.nyc3.cdn.digitaloceanspaces.com/classes/beginner-to-2.0/1-ball-control/1-why-ball-control/view0_hls/view0.m3u8

这一切都在我的 50Mb/s 下 Wifi 上运行良好,但当我切换到 LTE(从 DO 的 NYC1 数据中心约 5-10Mb/s)时,HLS 流似乎每 6 秒缓冲一次(在分段的边界上)。每个片段约为 800KB,因此 5Mb/s 应该足以及时下载每个片段。

我在这里做错了吗?

4

0 回答 0