https://developer.apple.com/videos/play/wwdc2018/502/#wwdc2018

  • How to improve the quality of streaming and how to evaluate it

  • 5 KPIs = evaluation criteria

    • Startup time (time to start playback)

      • Methods for improvement
      • If you want to play videos continuously, it’s good to preload the second video before going to it
      • Use AVQueuePlayer
      • Also, if you want to reduce buffering time, adjust the bitrate and other factors
        • Trade-off with initial video quality
      • This section wasn’t very helpful
    • Frequency of playback stalls

      • Can be measured using AVPlayerItemPlaybackStalled
      • To improve, make sure to have multiple bitrates available on the HLS server
      • ErrorLog and AccessLog can help identify issues
        • For example, if indicateBitrate is greater than observedBitrate, it means that data exceeding the bandwidth limit is being sent
    • Duration of playback stalls

      • Stall time per hour watched
      • Can be measured using playerItem.accessLog()
    • Video resolution

      • Look at the average bitrate
    • Streaming Error

      • The icon with a diagonal line on the play button
      • This can be addressed by examining the ErrorLog
  • How to write m3u8

    • “Tell us everything you can” by Apple
    • Include codes, bandwidth, resolution, and everything else
    • If you do that, AVPlayer will do its best
  • If you want to display thumbnails on the seek bar, you need to provide an I-frame playlist

  • They also talked about multichannel audio, but I skipped that part because I’m not interested

  • This talk seemed to focus more on playing existing videos rather than live streaming

  • However, the optimization of stall time was useful as a reference.